├── .gitignore
├── public
└── cm-indentation-markers.png
├── dev
├── vite.config.js
├── index.html
└── index.ts
├── .replit
├── tsconfig.json
├── pull_request_template.md
├── LICENSE
├── package.json
├── src
├── config.ts
├── utils.ts
├── index.ts
└── map.ts
├── README.md
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | .upm
4 | .config
5 | .cache
--------------------------------------------------------------------------------
/public/cm-indentation-markers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/codemirror-indentation-markers/HEAD/public/cm-indentation-markers.png
--------------------------------------------------------------------------------
/dev/vite.config.js:
--------------------------------------------------------------------------------
1 | const isReplit = Boolean(process.env.REPL_SLUG);
2 |
3 | export default {
4 | server: {
5 | host: '0.0.0.0',
6 |
7 | ...(isReplit
8 | ? {
9 | hmr: {
10 | clientPort: 443,
11 | },
12 | }
13 | : {}),
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/dev/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | CodeMirror Indentation Markers
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.replit:
--------------------------------------------------------------------------------
1 | run="yarn run dev"
2 |
3 | entrypoint = "src/index.ts"
4 | hidden = [".config", "package-lock.json"]
5 | modules = ["nodejs-20:v8-20230920-bd784b9"]
6 |
7 | [nix]
8 | channel = "stable-23_05"
9 |
10 | [gitHubImport]
11 | requiredFiles = [".replit", "replit.nix", "package.json", "package-lock.json"]
12 |
13 | [deployment]
14 | run = ["node", "index.js"]
15 | deploymentTarget = "cloudrun"
16 | ignorePorts = false
17 |
18 | [[ports]]
19 | localPort = 3000
20 | externalPort = 80
21 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "allowJs": false,
4 | "checkJs": false,
5 | "lib": ["es6", "dom", "scripthost"],
6 | "types": ["mocha"],
7 | "stripInternal": true,
8 | "typeRoots": ["./node_modules/@types"],
9 | "noUnusedLocals": true,
10 | "strict": true,
11 | "target": "es6",
12 | "module": "es2020",
13 | "newLine": "lf",
14 | "moduleResolution": "node",
15 | },
16 | "include": [
17 | "src/*.ts"
18 | ]
19 | }
--------------------------------------------------------------------------------
/pull_request_template.md:
--------------------------------------------------------------------------------
1 | # Why
2 |
3 |
7 |
8 | # What changed
9 |
10 |
16 |
17 | # Test plan
18 |
19 |
24 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Replit
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 |
--------------------------------------------------------------------------------
/dev/index.ts:
--------------------------------------------------------------------------------
1 | import { basicSetup } from 'codemirror';
2 | import { EditorView } from '@codemirror/view';
3 | import { Compartment, EditorState } from '@codemirror/state';
4 | import {getIndentUnit, indentUnit} from '@codemirror/language';
5 | import { python } from '@codemirror/lang-python';
6 | import { indentationMarkers } from '../src';
7 |
8 | const doc = `
9 | def read_file(path):
10 | with open(path, 'r') as file:
11 |
12 | print("opening file")
13 | text = file.read()
14 |
15 | file.close()
16 |
17 | if len(text) > 1000:
18 | print("thats a big file!")
19 |
20 | return text
21 |
22 | def main():
23 | read_file("notes.txt")
24 | `
25 |
26 | const indentConf = new Compartment()
27 |
28 | const view = new EditorView({
29 | state: EditorState.create({
30 | doc,
31 |
32 | extensions: [
33 | basicSetup,
34 | python(),
35 | indentConf.of(indentUnit.of(' ')),
36 | indentationMarkers(),
37 | ],
38 | }),
39 | parent: document.getElementById('editor'),
40 | });
41 |
42 | function toggleIndent() {
43 | const indent = (getIndentUnit(view.state) === 2) ? ' ' : ' '
44 | view.dispatch({ effects: indentConf.reconfigure(indentUnit.of(indent)) })
45 | }
46 |
47 | document.getElementById('toggleIndent').addEventListener('click', toggleIndent)
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@replit/codemirror-indentation-markers",
3 | "description": "Render indentation markers in CodeMirror",
4 | "version": "6.5.3",
5 | "author": {
6 | "name": "Sergei Chestakov",
7 | "email": "me@sergei.com"
8 | },
9 | "type": "module",
10 | "main": "dist/index.cjs",
11 | "exports": {
12 | "import": "./dist/index.js",
13 | "require": "./dist/index.cjs"
14 | },
15 | "types": "dist/index.d.ts",
16 | "module": "dist/index.js",
17 | "sideEffects": false,
18 | "license": "MIT",
19 | "scripts": {
20 | "dev": "vite ./dev",
21 | "build": "cm-buildhelper src/index.ts",
22 | "test": "cm-runtests",
23 | "prepare": "npm run build"
24 | },
25 | "peerDependencies": {
26 | "@codemirror/language": "^6.0.0",
27 | "@codemirror/state": "^6.0.0",
28 | "@codemirror/view": "^6.0.0"
29 | },
30 | "devDependencies": {
31 | "@codemirror/buildhelper": "^0.1.16",
32 | "@codemirror/commands": "^6.0.0",
33 | "@codemirror/lang-css": "^6.0.0",
34 | "@codemirror/lang-python": "^6.1.1",
35 | "@codemirror/language": "^6.0.0",
36 | "@codemirror/state": "^6.0.0",
37 | "@codemirror/view": "^6.0.0",
38 | "codemirror": "^6.0.0",
39 | "vite": "^2.3.8"
40 | },
41 | "repository": {
42 | "type": "git",
43 | "url": "https://github.com/replit/codemirror-indentation-markers.git"
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/config.ts:
--------------------------------------------------------------------------------
1 | import { combineConfig, Facet } from '@codemirror/state';
2 |
3 | export interface IndentationMarkerConfiguration {
4 | /**
5 | * Determines whether active block marker is styled differently.
6 | */
7 | highlightActiveBlock?: boolean
8 |
9 | /**
10 | * Determines whether markers in the first column are omitted.
11 | */
12 | hideFirstIndent?: boolean
13 |
14 | /**
15 | * Determines the type of indentation marker.
16 | */
17 | markerType?: "fullScope" | "codeOnly"
18 |
19 | /**
20 | * Determines the thickness of marker (in pixels).
21 | */
22 | thickness?: number
23 |
24 | /**
25 | * Determines the thickness of active marker (in pixels).
26 | *
27 | * If undefined or null, then regular thickness will be used.
28 | */
29 | activeThickness?: number
30 |
31 | /**
32 | * Determines the color of marker.
33 | */
34 | colors?: {
35 | /**
36 | * Color of inactive indent markers when using a light theme.
37 | */
38 | light?: string
39 |
40 | /**
41 | * Color of inactive indent markers when using a dark theme.
42 | */
43 | dark?: string
44 |
45 | /**
46 | * Color of active indent markers when using a light theme.
47 | */
48 | activeLight?: string
49 |
50 | /**
51 | * Color of active indent markers when using a dark theme.
52 | */
53 | activeDark?: string
54 | }
55 | }
56 |
57 | export const indentationMarkerConfig = Facet.define>({
58 | combine(configs) {
59 | return combineConfig(configs, {
60 | highlightActiveBlock: true,
61 | hideFirstIndent: false,
62 | markerType: "fullScope",
63 | thickness: 1,
64 | });
65 | }
66 | });
67 |
--------------------------------------------------------------------------------
/src/utils.ts:
--------------------------------------------------------------------------------
1 | import { EditorState, Line } from '@codemirror/state';
2 | import { EditorView } from '@codemirror/view';
3 |
4 | /**
5 | * Gets the visible lines in the editor. Lines will not be repeated.
6 | *
7 | * @param view - The editor view to get the visible lines from.
8 | * @param state - The editor state. Defaults to the view's current one.
9 | */
10 | export function getVisibleLines(view: EditorView, state = view.state) {
11 | const lines = new Set();
12 |
13 | for (const { from, to } of view.visibleRanges) {
14 | let pos = from;
15 |
16 | while (pos <= to) {
17 | const line = state.doc.lineAt(pos);
18 |
19 | if (!lines.has(line)) {
20 | lines.add(line);
21 | }
22 |
23 | pos = line.to + 1;
24 | }
25 | }
26 |
27 | return lines;
28 | }
29 |
30 | /**
31 | * Gets the line at the position of the primary cursor.
32 | *
33 | * @param state - The editor state from which to extract the line.
34 | */
35 | export function getCurrentLine(state: EditorState) {
36 | const currentPos = state.selection.main.head;
37 | return state.doc.lineAt(currentPos);
38 | }
39 |
40 | /**
41 | * Returns the number of columns that a string is indented, controlling for
42 | * tabs. This is useful for determining the indentation level of a line.
43 | *
44 | * Note that this only returns the number of _visible_ columns, not the number
45 | * of whitespace characters at the start of the string.
46 | *
47 | * @param str - The string to check.
48 | * @param tabSize - The size of a tab character. Usually 2 or 4.
49 | */
50 | export function numColumns(str: string, tabSize: number) {
51 | // as far as I can tell, this is pretty much the fastest way to do this,
52 | // at least involving iteration. `str.length - str.trimStart().length` is
53 | // much faster, but it has some edge cases that are hard to deal with.
54 |
55 | let col = 0;
56 |
57 | // eslint-disable-next-line no-restricted-syntax
58 | loop: for (let i = 0; i < str.length; i++) {
59 | switch (str[i]) {
60 | case ' ':
61 | case '\u00A0': {
62 | col += 1;
63 | continue loop;
64 | }
65 |
66 | case '\t': {
67 | // if the current column is a multiple of the tab size, we can just
68 | // add the tab size to the column. otherwise, we need to add the
69 | // difference between the tab size and the current column.
70 | col += tabSize - (col % tabSize);
71 | continue loop;
72 | }
73 |
74 | case '\r': {
75 | continue loop;
76 | }
77 |
78 | default: {
79 | break loop;
80 | }
81 | }
82 | }
83 |
84 | return col;
85 | }
86 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CodeMirror Indentation Markers
2 |
3 |
4 |
5 |
6 | A CodeMirror extension that renders indentation markers using a
7 | heuristic similar to what other popular editors, like Ace and Monaco, use.
8 |
9 | 
10 |
11 | ### Usage
12 |
13 | ```ts
14 | import { basicSetup } from 'codemirror';
15 | import { EditorState } from '@codemirror/state';
16 | import { EditorView } from '@codemirror/view';
17 | import { indentationMarkers } from '@replit/codemirror-indentation-markers';
18 |
19 | const doc = `
20 | def max(a, b):
21 | if a > b:
22 | return a
23 | else:
24 | return b
25 | `
26 |
27 | new EditorView({
28 | state: EditorState.create({
29 | doc,
30 | extensions: [basicSetup, indentationMarkers()],
31 | }),
32 | parent: document.querySelector('#editor'),
33 | });
34 |
35 | ```
36 |
37 | ### Options
38 |
39 | You can provide an options object to `indentationMarkers()` with the following
40 | optional properties:
41 |
42 | - `highlightActiveBlock`
43 |
44 | Boolean that determines whether the active block marker is styled
45 | differently. Setting this to `false` provides a significant performance
46 | enhancement because it means that markers do not need to be regenerated
47 | when the selection changes. Defaults to `true`.
48 |
49 | - `hideFirstIndent`
50 |
51 | Boolean that determines whether markers in the first column are omitted.
52 | Defaults to `false`.
53 |
54 | - `markerType`
55 |
56 | String that determines how far the indentation markers extend. `"fullScope"` indicates that the markers extend down the full height of a scope. With the `"codeOnly"` option, indentation markers terminate at the last nonempty line in a scope. Defaults to `"fullScope"`.
57 |
58 | - `thickness`
59 |
60 | Integer that determines the thickness in pixels of the indentation markers. Defaults to `1`.
61 |
62 | - `activeThickness`
63 |
64 | Integer that determines the thickness in pixels of the active indentation markers. If `undefined` or `null` then `thickness` will be used. Defaults to `undefined`.
65 |
66 | - `colors`
67 |
68 | Object that determines the colors of the indentation markers.
69 |
70 | - `light`
71 |
72 | String that determines the color of the markers when the editor has a light theme. Defaults to `#F0F1F2`.
73 |
74 | - `dark`
75 |
76 | String that determines the color of the markers when the editor has a dark theme. Defaults to `#2B3245`.
77 |
78 | - `activeLight`
79 |
80 | String that determines the color of the active block marker when the editor has a light theme. Only applies if `highlightActiveBlock` is `true`. Defaults to `#E4E5E6`.
81 |
82 | - `activeDark`
83 |
84 | String that determines the color of the active block marker when the editor has a dark theme. Only applies if `highlightActiveBlock` is `true`. Defaults to `#3C445C`.
85 |
86 | #### Example
87 |
88 | ```ts
89 | new EditorView({
90 | state: EditorState.create({
91 | doc,
92 | extensions: [
93 | basicSetup,
94 | indentationMarkers({
95 | highlightActiveBlock: false,
96 | hideFirstIndent: true,
97 | markerType: "codeOnly",
98 | thickness: 2,
99 | colors: {
100 | light: 'LightBlue',
101 | dark: 'DarkBlue',
102 | activeLight: 'LightGreen',
103 | activeDark: 'DarkGreen',
104 | }
105 | })
106 | ],
107 | }),
108 | parent: document.querySelector('#editor'),
109 | });
110 | ```
111 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import { getIndentUnit } from '@codemirror/language';
2 | import { EditorState, RangeSetBuilder } from '@codemirror/state';
3 | import {
4 | Decoration,
5 | ViewPlugin,
6 | DecorationSet,
7 | EditorView,
8 | ViewUpdate,
9 | PluginValue,
10 | } from '@codemirror/view';
11 | import { getCurrentLine, getVisibleLines } from './utils';
12 | import { IndentEntry, IndentationMap } from './map';
13 | import { IndentationMarkerConfiguration, indentationMarkerConfig } from "./config";
14 |
15 | // CSS classes:
16 | // - .cm-indent-markers
17 |
18 | function indentTheme(colorOptions: IndentationMarkerConfiguration['colors']) {
19 | const defaultColors = {
20 | light: '#F0F1F2',
21 | dark: '#2B3245',
22 | activeLight: '#E4E5E6',
23 | activeDark: '#3C445C',
24 | };
25 |
26 | let colors = defaultColors;
27 | if (colorOptions) {
28 | colors = {...defaultColors, ...colorOptions};
29 | }
30 |
31 | return EditorView.baseTheme({
32 | '&light': {
33 | '--indent-marker-bg-color': colors.light,
34 | '--indent-marker-active-bg-color': colors.activeLight,
35 | },
36 |
37 | '&dark': {
38 | '--indent-marker-bg-color': colors.dark,
39 | '--indent-marker-active-bg-color': colors.activeDark,
40 | },
41 |
42 | '.cm-line': {
43 | position: 'relative',
44 | },
45 |
46 | // this pseudo-element is used to draw the indent markers,
47 | // while still allowing the line to have its own background.
48 | '.cm-indent-markers::before': {
49 | content: '""',
50 | position: 'absolute',
51 | top: 0,
52 | // .cm-line has a padding of 2px
53 | // https://github.com/codemirror/view/blob/1c0a0880fc904714339f059658f3ba3a88bb8e6e/src/theme.ts#L85
54 | left: `2px`,
55 | right: 0,
56 | bottom: 0,
57 | background: 'var(--indent-markers)',
58 | pointerEvents: 'none',
59 | zIndex: '-1',
60 | },
61 | });
62 | }
63 |
64 | function createGradient(markerCssProperty: string, thickness: number, indentWidth: number, startOffset: number, columns: number) {
65 | const gradient = `repeating-linear-gradient(to right, var(${markerCssProperty}) 0 ${thickness}px, transparent ${thickness}px ${indentWidth}ch)`
66 | // Subtract one pixel from the background width to get rid of artifacts of pixel rounding
67 | return `${gradient} ${startOffset * indentWidth}.5ch/calc(${indentWidth * columns}ch - 1px) no-repeat`
68 | }
69 |
70 | function makeBackgroundCSS(entry: IndentEntry, indentWidth: number, hideFirstIndent: boolean, thickness: number, activeThickness: number) {
71 | const { level, active } = entry;
72 | activeThickness = activeThickness ?? thickness;
73 | if (hideFirstIndent && level === 0) {
74 | return [];
75 | }
76 | const startAt = hideFirstIndent ? 1 : 0;
77 | const backgrounds = [];
78 |
79 | if (active !== undefined) {
80 | const markersBeforeActive = active - startAt - 1;
81 | if (markersBeforeActive > 0) {
82 | backgrounds.push(
83 | createGradient('--indent-marker-bg-color', thickness, indentWidth, startAt, markersBeforeActive),
84 | );
85 | }
86 | backgrounds.push(
87 | createGradient('--indent-marker-active-bg-color', activeThickness, indentWidth, active - 1, 1),
88 | );
89 | if (active !== level) {
90 | backgrounds.push(
91 | createGradient('--indent-marker-bg-color', thickness, indentWidth, active, level - active)
92 | );
93 | }
94 | } else {
95 | backgrounds.push(
96 | createGradient('--indent-marker-bg-color', thickness, indentWidth, startAt, level - startAt)
97 | );
98 | }
99 |
100 | return backgrounds.join(',');
101 | }
102 |
103 | class IndentMarkersClass implements PluginValue {
104 | view: EditorView;
105 | decorations!: DecorationSet;
106 |
107 | private unitWidth: number;
108 | private currentLineNumber: number;
109 |
110 | constructor(view: EditorView) {
111 | this.view = view;
112 | this.unitWidth = getIndentUnit(view.state);
113 | this.currentLineNumber = getCurrentLine(view.state).number;
114 | this.generate(view.state);
115 | }
116 |
117 | update(update: ViewUpdate) {
118 | const unitWidth = getIndentUnit(update.state);
119 | const unitWidthChanged = unitWidth !== this.unitWidth;
120 | if (unitWidthChanged) {
121 | this.unitWidth = unitWidth;
122 | }
123 | const lineNumber = getCurrentLine(update.state).number;
124 | const lineNumberChanged = lineNumber !== this.currentLineNumber;
125 | this.currentLineNumber = lineNumber;
126 | const activeBlockUpdateRequired = update.state.facet(indentationMarkerConfig).highlightActiveBlock && lineNumberChanged;
127 | if (
128 | update.docChanged ||
129 | update.viewportChanged ||
130 | unitWidthChanged ||
131 | activeBlockUpdateRequired
132 | ) {
133 | this.generate(update.state);
134 | }
135 | }
136 |
137 | private generate(state: EditorState) {
138 | const builder = new RangeSetBuilder();
139 |
140 | const lines = getVisibleLines(this.view, state);
141 | const { hideFirstIndent, markerType, thickness, activeThickness } = state.facet(indentationMarkerConfig);
142 | const map = new IndentationMap(lines, state, this.unitWidth, markerType);
143 |
144 |
145 | for (const line of lines) {
146 | const entry = map.get(line.number);
147 |
148 | if (!entry?.level) {
149 | continue;
150 | }
151 |
152 | const backgrounds = makeBackgroundCSS(entry, this.unitWidth, hideFirstIndent, thickness, activeThickness);
153 |
154 | builder.add(
155 | line.from,
156 | line.from,
157 | Decoration.line({
158 | class: 'cm-indent-markers',
159 | attributes: {
160 | style: `--indent-markers: ${backgrounds}`,
161 | },
162 | }),
163 | );
164 | }
165 |
166 | this.decorations = builder.finish();
167 | }
168 | }
169 |
170 | export function indentationMarkers(config: IndentationMarkerConfiguration = {}) {
171 | return [
172 | indentationMarkerConfig.of(config),
173 | indentTheme(config.colors),
174 | ViewPlugin.fromClass(IndentMarkersClass, {
175 | decorations: (v) => v.decorations,
176 | }),
177 | ];
178 | }
179 |
--------------------------------------------------------------------------------
/src/map.ts:
--------------------------------------------------------------------------------
1 | import { EditorState, Line } from '@codemirror/state';
2 | import { getCurrentLine, numColumns } from './utils';
3 | import {indentationMarkerConfig} from "./config";
4 |
5 | export interface IndentEntry {
6 | line: Line;
7 | col: number;
8 | level: number;
9 | empty: boolean;
10 | active?: number;
11 | }
12 |
13 | /**
14 | * Indentation map for a set of lines.
15 | *
16 | * This map will contain the indentation for lines that are not a part of the given set,
17 | * but this is because calculating the indentation for those lines was necessary to
18 | * calculate the indentation for the lines provided to the constructor.
19 | *
20 | * @see {@link IndentEntry}
21 | */
22 | export class IndentationMap {
23 | /** The {@link EditorState} indentation is derived from. */
24 | private state: EditorState;
25 |
26 | /** The set of lines that are used as an entrypoint. */
27 | private lines: Set;
28 |
29 | /** The internal mapping of line numbers to {@link IndentEntry} objects. */
30 | private map: Map;
31 |
32 | /** The width of the editor's indent unit. */
33 | private unitWidth: number;
34 |
35 | /** The type of indentation to use (terminate at end of scope vs last non-empty line in scope) */
36 | private markerType: "fullScope" | "codeOnly";
37 |
38 | /**
39 | * @param lines - The set of lines to get the indentation map for.
40 | * @param state - The {@link EditorState} to derive the indentation map from.
41 | * @param unitWidth - The width of the editor's indent unit.
42 | * @param markerType - The type of indentation to use (terminate at end of scope vs last line of code in scope)
43 | */
44 | constructor(lines: Set, state: EditorState, unitWidth: number, markerType: "fullScope" | "codeOnly") {
45 | this.lines = lines;
46 | this.state = state;
47 | this.map = new Map();
48 | this.unitWidth = unitWidth;
49 | this.markerType = markerType;
50 |
51 | for (const line of this.lines) {
52 | this.add(line);
53 | }
54 |
55 | if (this.state.facet(indentationMarkerConfig).highlightActiveBlock) {
56 | this.findAndSetActiveLines();
57 | }
58 | }
59 |
60 | /**
61 | * Checks if the indentation map has an entry for the given line.
62 | *
63 | * @param line - The {@link Line} or line number to check for.
64 | */
65 | has(line: Line | number) {
66 | return this.map.has(typeof line === 'number' ? line : line.number);
67 | }
68 |
69 | /**
70 | * Returns the {@link IndentEntry} for the given line.
71 | *
72 | * Note that this function will throw an error if the line does not exist in the map.
73 | *
74 | * @param line - The {@link Line} or line number to get the entry for.
75 | */
76 | get(line: Line | number) {
77 | const entry = this.map.get(typeof line === 'number' ? line : line.number);
78 |
79 | if (!entry) {
80 | throw new Error('Line not found in indentation map');
81 | }
82 |
83 | return entry;
84 | }
85 |
86 | /**
87 | * Sets the {@link IndentEntry} for the given line.
88 | *
89 | * @param line - The {@link Line} to set the entry for.
90 | * @param col - The visual beginning whitespace width of the line.
91 | * @param level - The indentation level of the line.
92 | */
93 | private set(line: Line, col: number, level: number) {
94 | const empty = !line.text.trim().length;
95 | const entry: IndentEntry = { line, col, level, empty };
96 | this.map.set(entry.line.number, entry);
97 |
98 | return entry;
99 | }
100 |
101 | /**
102 | * Adds a line to the indentation map.
103 | *
104 | * @param line - The {@link Line} to add to the map.
105 | */
106 | private add(line: Line) {
107 | if (this.has(line)) {
108 | return this.get(line);
109 | }
110 |
111 | // empty lines continue their indentation from surrounding lines
112 | if (!line.length || !line.text.trim().length) {
113 | // the very first line, if empty, is just ignored and set as a 0 indent level
114 | if (line.number === 1) {
115 | return this.set(line, 0, 0);
116 | }
117 |
118 | // if we're at the end, we'll just use the previous line's indentation
119 | if (line.number === this.state.doc.lines) {
120 | const prev = this.closestNonEmpty(line, -1);
121 |
122 | return this.set(line, 0, prev.level);
123 | }
124 |
125 | const prev = this.closestNonEmpty(line, -1);
126 | const next = this.closestNonEmpty(line, 1);
127 |
128 | // if the next line ends the block and the marker type is not set to codeOnly,
129 | // we'll just use the previous line's indentation
130 | if (prev.level >= next.level && this.markerType !== "codeOnly" ) {
131 | return this.set(line, 0, prev.level);
132 | }
133 |
134 | // having an indent marker that starts from an empty line looks weird
135 | if (prev.empty && prev.level === 0 && next.level !== 0) {
136 | return this.set(line, 0, 0);
137 | }
138 |
139 | // if the next indentation level is greater than the previous,
140 | // we'll only increment up to the next indentation level. this prevents
141 | // a weirdly "backwards propagating" indentation.
142 | if (next.level > prev.level) {
143 | return this.set(line, 0, prev.level + 1);
144 | }
145 |
146 | // else, we default to the next line's indentation
147 | return this.set(line, 0, next.level);
148 | }
149 |
150 | const col = numColumns(line.text, this.state.tabSize);
151 | const level = Math.floor(col / this.unitWidth);
152 |
153 | return this.set(line, col, level);
154 | }
155 |
156 | /**
157 | * Finds the closest non-empty line, starting from the given line.
158 | *
159 | * @param from - The {@link Line} to start from.
160 | * @param dir - The direction to search in. Either `1` or `-1`.
161 | */
162 | private closestNonEmpty(from: Line, dir: -1 | 1) {
163 | let lineNo = from.number + dir;
164 |
165 | while (dir === -1 ? lineNo >= 1 : lineNo <= this.state.doc.lines) {
166 | if (this.has(lineNo)) {
167 | const entry = this.get(lineNo);
168 | if (!entry.empty) {
169 | return entry;
170 | }
171 | }
172 |
173 | // we can check if the line is empty, if it's not, we can
174 | // just create a new entry for it and return it.
175 | // this prevents us from hitting the beginning/end of the document unnecessarily.
176 |
177 | const line = this.state.doc.line(lineNo);
178 |
179 | if (line.text.trim().length) {
180 | const col = numColumns(line.text, this.state.tabSize);
181 | const level = Math.floor(col / this.unitWidth);
182 |
183 | return this.set(line, col, level);
184 | }
185 |
186 | lineNo += dir;
187 | }
188 |
189 | // if we're here, we didn't find anything.
190 | // that means we're at the beginning/end of the document,
191 | // and the first/last line is empty.
192 |
193 | const line = this.state.doc.line(dir === -1 ? 1 : this.state.doc.lines);
194 |
195 | return this.set(line, 0, 0);
196 | }
197 |
198 | /**
199 | * Finds the state's active block (via the current selection) and sets all
200 | * the active indent level for the lines in the block.
201 | */
202 | private findAndSetActiveLines() {
203 | const currentLine = getCurrentLine(this.state);
204 |
205 | if (!this.has(currentLine)) {
206 | return;
207 | }
208 |
209 | let current = this.get(currentLine);
210 |
211 | // check if the current line is starting a new block, if yes, we want to
212 | // start from inside the block.
213 | if (this.has(current.line.number + 1)) {
214 | const next = this.get(current.line.number + 1);
215 | if (next.level > current.level) {
216 | current = next;
217 | }
218 | }
219 |
220 | // same, but if the current line is ending a block
221 | if (this.has(current.line.number - 1)) {
222 | const prev = this.get(current.line.number - 1);
223 | if (prev.level > current.level) {
224 | current = prev;
225 | }
226 | }
227 |
228 | if (current.level === 0) {
229 | return;
230 | }
231 |
232 | current.active = current.level;
233 |
234 | let start: number;
235 | let end: number;
236 |
237 | // iterate to the start of the block
238 | for (start = current.line.number; start > 1; start--) {
239 | if (!this.has(start - 1)) {
240 | continue;
241 | }
242 |
243 | const prev = this.get(start - 1);
244 |
245 | if (prev.level < current.level) {
246 | break;
247 | }
248 |
249 | prev.active = current.level;
250 | }
251 |
252 | // iterate to the end of the block
253 | for (end = current.line.number; end < this.state.doc.lines; end++) {
254 | if (!this.has(end + 1)) {
255 | continue;
256 | }
257 |
258 | const next = this.get(end + 1);
259 |
260 | if (next.level < current.level) {
261 | break;
262 | }
263 |
264 | next.active = current.level;
265 | }
266 | }
267 | }
268 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@^7.12.13":
6 | version "7.18.6"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
8 | integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==
9 | dependencies:
10 | "@babel/highlight" "^7.18.6"
11 |
12 | "@babel/helper-validator-identifier@^7.18.6":
13 | version "7.19.1"
14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
15 | integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
16 |
17 | "@babel/highlight@^7.18.6":
18 | version "7.18.6"
19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
20 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
21 | dependencies:
22 | "@babel/helper-validator-identifier" "^7.18.6"
23 | chalk "^2.0.0"
24 | js-tokens "^4.0.0"
25 |
26 | "@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.3.2":
27 | version "6.4.0"
28 | resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.4.0.tgz#76ac9a2a411a4cc6e13103014dba5e0fe601da5a"
29 | integrity sha512-HLF2PnZAm1s4kGs30EiqKMgD7XsYaQ0XJnMR0rofEWQ5t5D60SfqpDIkIh1ze5tiEbyUWm8+VJ6W1/erVvBMIA==
30 | dependencies:
31 | "@codemirror/language" "^6.0.0"
32 | "@codemirror/state" "^6.0.0"
33 | "@codemirror/view" "^6.6.0"
34 | "@lezer/common" "^1.0.0"
35 |
36 | "@codemirror/buildhelper@^0.1.16":
37 | version "0.1.16"
38 | resolved "https://registry.yarnpkg.com/@codemirror/buildhelper/-/buildhelper-0.1.16.tgz#bda138522fdade53d63f457c440b64be48c7fa71"
39 | integrity sha512-b88pPVoLoBp3DHe+CK5p/1t/WFGYRGxn69d9Efp/cEP3uF91hXTIKOimaL3IyVhm9q6ILjKzn8q8MFUUy7GvwA==
40 | dependencies:
41 | "@lezer/generator" "^1.0.0"
42 | "@types/mocha" "^9.1.1"
43 | acorn "^8.1.0"
44 | acorn-walk "^8.0.2"
45 | esmoduleserve "^0.2.0"
46 | ist "^1.1.7"
47 | mocha "^10.0.0"
48 | rollup "^2.35.1"
49 | rollup-plugin-dts "^3.0.0"
50 | selenium-webdriver "^4.0.0-beta.3"
51 | serve-static "^1.14.1"
52 | typescript "^4.2.3"
53 |
54 | "@codemirror/commands@^6.0.0":
55 | version "6.2.0"
56 | resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.2.0.tgz#e575b7542406be8bc61efb56f1827c71587bb5f8"
57 | integrity sha512-+00smmZBradoGFEkRjliN7BjqPh/Hx0KCHWOEibUmflUqZz2RwBTU0MrVovEEHozhx3AUSGcO/rl3/5f9e9Biw==
58 | dependencies:
59 | "@codemirror/language" "^6.0.0"
60 | "@codemirror/state" "^6.2.0"
61 | "@codemirror/view" "^6.0.0"
62 | "@lezer/common" "^1.0.0"
63 |
64 | "@codemirror/lang-css@^6.0.0":
65 | version "6.0.2"
66 | resolved "https://registry.yarnpkg.com/@codemirror/lang-css/-/lang-css-6.0.2.tgz#b286d0226755a751f60599e1e2969d351aebbd4c"
67 | integrity sha512-4V4zmUOl2Glx0GWw0HiO1oGD4zvMlIQ3zx5hXOE6ipCjhohig2bhWRAasrZylH9pRNTcl1VMa59Lsl8lZWlTzw==
68 | dependencies:
69 | "@codemirror/autocomplete" "^6.0.0"
70 | "@codemirror/language" "^6.0.0"
71 | "@codemirror/state" "^6.0.0"
72 | "@lezer/css" "^1.0.0"
73 |
74 | "@codemirror/lang-python@^6.1.1":
75 | version "6.1.1"
76 | resolved "https://registry.yarnpkg.com/@codemirror/lang-python/-/lang-python-6.1.1.tgz#378c69199da41e0b09eaadc56f6d70ad6001fd34"
77 | integrity sha512-AddGMIKUssUAqaDKoxKWA5GAzy/CVE0eSY7/ANgNzdS1GYBkp6N49XKEyMElkuN04UsZ+bTIQdj+tVV75NMwJw==
78 | dependencies:
79 | "@codemirror/autocomplete" "^6.3.2"
80 | "@codemirror/language" "^6.0.0"
81 | "@lezer/python" "^1.0.0"
82 |
83 | "@codemirror/language@^6.0.0":
84 | version "6.5.0"
85 | resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.5.0.tgz#08f4e1599d3c21acb7f78f99aa253c842d308e3c"
86 | integrity sha512-dI+dV/u2klIt0Y9kE3TH9vuBidAB3xuuDPofwzvnW8ZKqJnKTbT3EjyV7DeKcmrRgXMhlPTL7AdH1V5KOCYuHQ==
87 | dependencies:
88 | "@codemirror/state" "^6.0.0"
89 | "@codemirror/view" "^6.0.0"
90 | "@lezer/common" "^1.0.0"
91 | "@lezer/highlight" "^1.0.0"
92 | "@lezer/lr" "^1.0.0"
93 | style-mod "^4.0.0"
94 |
95 | "@codemirror/lint@^6.0.0":
96 | version "6.1.0"
97 | resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.1.0.tgz#f006142d3a580fdb8ffc2faa3361b2232c08e079"
98 | integrity sha512-mdvDQrjRmYPvQ3WrzF6Ewaao+NWERYtpthJvoQ3tK3t/44Ynhk8ZGjTSL9jMEv8CgSMogmt75X8ceOZRDSXHtQ==
99 | dependencies:
100 | "@codemirror/state" "^6.0.0"
101 | "@codemirror/view" "^6.0.0"
102 | crelt "^1.0.5"
103 |
104 | "@codemirror/search@^6.0.0":
105 | version "6.2.3"
106 | resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-6.2.3.tgz#fab933fef1b1de8ef40cda275c73d9ac7a1ff40f"
107 | integrity sha512-V9n9233lopQhB1dyjsBK2Wc1i+8hcCqxl1wQ46c5HWWLePoe4FluV3TGHoZ04rBRlGjNyz9DTmpJErig8UE4jw==
108 | dependencies:
109 | "@codemirror/state" "^6.0.0"
110 | "@codemirror/view" "^6.0.0"
111 | crelt "^1.0.5"
112 |
113 | "@codemirror/state@^6.0.0", "@codemirror/state@^6.1.4", "@codemirror/state@^6.2.0":
114 | version "6.2.0"
115 | resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.2.0.tgz#a0fb08403ced8c2a68d1d0acee926bd20be922f2"
116 | integrity sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==
117 |
118 | "@codemirror/view@^6.0.0", "@codemirror/view@^6.6.0":
119 | version "6.8.1"
120 | resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.8.1.tgz#6d4796344edd62670d1f202f9f014959f53242b5"
121 | integrity sha512-bXWs42i1mnBexaktPABaEpYbt4FbJMnlesObDLF0GE8poRiNaRgm7H/2NfXfD5Swas1ULdFgONLLs4ncwHuz8g==
122 | dependencies:
123 | "@codemirror/state" "^6.1.4"
124 | style-mod "^4.0.0"
125 | w3c-keyname "^2.2.4"
126 |
127 | "@esbuild/linux-loong64@0.14.54":
128 | version "0.14.54"
129 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
130 | integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
131 |
132 | "@lezer/common@^1.0.0", "@lezer/common@^1.0.2":
133 | version "1.0.2"
134 | resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.0.2.tgz#8fb9b86bdaa2ece57e7d59e5ffbcb37d71815087"
135 | integrity sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==
136 |
137 | "@lezer/css@^1.0.0":
138 | version "1.1.1"
139 | resolved "https://registry.yarnpkg.com/@lezer/css/-/css-1.1.1.tgz#c36dcb0789317cb80c3740767dd3b85e071ad082"
140 | integrity sha512-mSjx+unLLapEqdOYDejnGBokB5+AiJKZVclmud0MKQOKx3DLJ5b5VTCstgDDknR6iIV4gVrN6euzsCnj0A2gQA==
141 | dependencies:
142 | "@lezer/highlight" "^1.0.0"
143 | "@lezer/lr" "^1.0.0"
144 |
145 | "@lezer/generator@^1.0.0":
146 | version "1.2.2"
147 | resolved "https://registry.yarnpkg.com/@lezer/generator/-/generator-1.2.2.tgz#2fa388f607e9d19ae99ba9a4246c1d6ada71903e"
148 | integrity sha512-O//eH9jTPM1GnbZruuD23xU68Pkuragonn1DEIom4Kt/eJN/QFt7Vzvp1YjV/XBmoUKC+2ySPgrA5fMF9FMM2g==
149 | dependencies:
150 | "@lezer/common" "^1.0.2"
151 | "@lezer/lr" "^1.3.0"
152 |
153 | "@lezer/highlight@^1.0.0":
154 | version "1.1.3"
155 | resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.1.3.tgz#bf5a36c2ee227f526d74997ac91f7777e29bd25d"
156 | integrity sha512-3vLKLPThO4td43lYRBygmMY18JN3CPh9w+XS2j8WC30vR4yZeFG4z1iFe4jXE43NtGqe//zHW5q8ENLlHvz9gw==
157 | dependencies:
158 | "@lezer/common" "^1.0.0"
159 |
160 | "@lezer/lr@^1.0.0", "@lezer/lr@^1.3.0":
161 | version "1.3.3"
162 | resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.3.3.tgz#0ac6c889f1235874f33c45a1b9785d7054f60708"
163 | integrity sha512-JPQe3mwJlzEVqy67iQiiGozhcngbO8QBgpqZM6oL1Wj/dXckrEexpBLeFkq0edtW5IqnPRFxA24BHJni8Js69w==
164 | dependencies:
165 | "@lezer/common" "^1.0.0"
166 |
167 | "@lezer/python@^1.0.0":
168 | version "1.1.2"
169 | resolved "https://registry.yarnpkg.com/@lezer/python/-/python-1.1.2.tgz#1db9faf182ca04815b2c7e0f1ce37104b2564ec5"
170 | integrity sha512-ukm4VhDasFX7/9BUYHTyUNXH0xQ5B7/QBlZD8P51+dh6GtXRSCQqNxloez5d+MxVb2Sg+31S8E/33qoFREfkpA==
171 | dependencies:
172 | "@lezer/highlight" "^1.0.0"
173 | "@lezer/lr" "^1.0.0"
174 |
175 | "@types/mocha@^9.1.1":
176 | version "9.1.1"
177 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4"
178 | integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==
179 |
180 | acorn-walk@^8.0.0, acorn-walk@^8.0.2:
181 | version "8.2.0"
182 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
183 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
184 |
185 | acorn@^8.0.4, acorn@^8.1.0:
186 | version "8.8.2"
187 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
188 | integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
189 |
190 | ansi-colors@4.1.1:
191 | version "4.1.1"
192 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
193 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
194 |
195 | ansi-regex@^5.0.1:
196 | version "5.0.1"
197 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
198 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
199 |
200 | ansi-styles@^3.2.1:
201 | version "3.2.1"
202 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
203 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
204 | dependencies:
205 | color-convert "^1.9.0"
206 |
207 | ansi-styles@^4.0.0, ansi-styles@^4.1.0:
208 | version "4.3.0"
209 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
210 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
211 | dependencies:
212 | color-convert "^2.0.1"
213 |
214 | anymatch@~3.1.2:
215 | version "3.1.3"
216 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
217 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
218 | dependencies:
219 | normalize-path "^3.0.0"
220 | picomatch "^2.0.4"
221 |
222 | argparse@^2.0.1:
223 | version "2.0.1"
224 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
225 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
226 |
227 | balanced-match@^1.0.0:
228 | version "1.0.2"
229 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
230 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
231 |
232 | binary-extensions@^2.0.0:
233 | version "2.2.0"
234 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
235 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
236 |
237 | brace-expansion@^1.1.7:
238 | version "1.1.11"
239 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
240 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
241 | dependencies:
242 | balanced-match "^1.0.0"
243 | concat-map "0.0.1"
244 |
245 | brace-expansion@^2.0.1:
246 | version "2.0.1"
247 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
248 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
249 | dependencies:
250 | balanced-match "^1.0.0"
251 |
252 | braces@~3.0.2:
253 | version "3.0.2"
254 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
255 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
256 | dependencies:
257 | fill-range "^7.0.1"
258 |
259 | browser-stdout@1.3.1:
260 | version "1.3.1"
261 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
262 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
263 |
264 | camelcase@^6.0.0:
265 | version "6.3.0"
266 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
267 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
268 |
269 | chalk@^2.0.0:
270 | version "2.4.2"
271 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
272 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
273 | dependencies:
274 | ansi-styles "^3.2.1"
275 | escape-string-regexp "^1.0.5"
276 | supports-color "^5.3.0"
277 |
278 | chalk@^4.1.0:
279 | version "4.1.2"
280 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
281 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
282 | dependencies:
283 | ansi-styles "^4.1.0"
284 | supports-color "^7.1.0"
285 |
286 | chokidar@3.5.3:
287 | version "3.5.3"
288 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
289 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
290 | dependencies:
291 | anymatch "~3.1.2"
292 | braces "~3.0.2"
293 | glob-parent "~5.1.2"
294 | is-binary-path "~2.1.0"
295 | is-glob "~4.0.1"
296 | normalize-path "~3.0.0"
297 | readdirp "~3.6.0"
298 | optionalDependencies:
299 | fsevents "~2.3.2"
300 |
301 | cliui@^7.0.2:
302 | version "7.0.4"
303 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
304 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
305 | dependencies:
306 | string-width "^4.2.0"
307 | strip-ansi "^6.0.0"
308 | wrap-ansi "^7.0.0"
309 |
310 | codemirror@^6.0.0:
311 | version "6.0.1"
312 | resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-6.0.1.tgz#62b91142d45904547ee3e0e0e4c1a79158035a29"
313 | integrity sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==
314 | dependencies:
315 | "@codemirror/autocomplete" "^6.0.0"
316 | "@codemirror/commands" "^6.0.0"
317 | "@codemirror/language" "^6.0.0"
318 | "@codemirror/lint" "^6.0.0"
319 | "@codemirror/search" "^6.0.0"
320 | "@codemirror/state" "^6.0.0"
321 | "@codemirror/view" "^6.0.0"
322 |
323 | color-convert@^1.9.0:
324 | version "1.9.3"
325 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
326 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
327 | dependencies:
328 | color-name "1.1.3"
329 |
330 | color-convert@^2.0.1:
331 | version "2.0.1"
332 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
333 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
334 | dependencies:
335 | color-name "~1.1.4"
336 |
337 | color-name@1.1.3:
338 | version "1.1.3"
339 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
340 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
341 |
342 | color-name@~1.1.4:
343 | version "1.1.4"
344 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
345 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
346 |
347 | concat-map@0.0.1:
348 | version "0.0.1"
349 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
350 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
351 |
352 | core-util-is@~1.0.0:
353 | version "1.0.3"
354 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
355 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
356 |
357 | crelt@^1.0.5:
358 | version "1.0.5"
359 | resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94"
360 | integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==
361 |
362 | debug@2.6.9:
363 | version "2.6.9"
364 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
365 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
366 | dependencies:
367 | ms "2.0.0"
368 |
369 | debug@4.3.4:
370 | version "4.3.4"
371 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
372 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
373 | dependencies:
374 | ms "2.1.2"
375 |
376 | decamelize@^4.0.0:
377 | version "4.0.0"
378 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837"
379 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==
380 |
381 | depd@2.0.0:
382 | version "2.0.0"
383 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
384 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
385 |
386 | destroy@1.2.0:
387 | version "1.2.0"
388 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
389 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
390 |
391 | diff@5.0.0:
392 | version "5.0.0"
393 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
394 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
395 |
396 | ee-first@1.1.1:
397 | version "1.1.1"
398 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
399 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
400 |
401 | emoji-regex@^8.0.0:
402 | version "8.0.0"
403 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
404 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
405 |
406 | encodeurl@~1.0.2:
407 | version "1.0.2"
408 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
409 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
410 |
411 | esbuild-android-64@0.14.54:
412 | version "0.14.54"
413 | resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be"
414 | integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==
415 |
416 | esbuild-android-arm64@0.14.54:
417 | version "0.14.54"
418 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771"
419 | integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==
420 |
421 | esbuild-darwin-64@0.14.54:
422 | version "0.14.54"
423 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25"
424 | integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==
425 |
426 | esbuild-darwin-arm64@0.14.54:
427 | version "0.14.54"
428 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73"
429 | integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==
430 |
431 | esbuild-freebsd-64@0.14.54:
432 | version "0.14.54"
433 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d"
434 | integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==
435 |
436 | esbuild-freebsd-arm64@0.14.54:
437 | version "0.14.54"
438 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48"
439 | integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==
440 |
441 | esbuild-linux-32@0.14.54:
442 | version "0.14.54"
443 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5"
444 | integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==
445 |
446 | esbuild-linux-64@0.14.54:
447 | version "0.14.54"
448 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652"
449 | integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==
450 |
451 | esbuild-linux-arm64@0.14.54:
452 | version "0.14.54"
453 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b"
454 | integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==
455 |
456 | esbuild-linux-arm@0.14.54:
457 | version "0.14.54"
458 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59"
459 | integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==
460 |
461 | esbuild-linux-mips64le@0.14.54:
462 | version "0.14.54"
463 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34"
464 | integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==
465 |
466 | esbuild-linux-ppc64le@0.14.54:
467 | version "0.14.54"
468 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e"
469 | integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==
470 |
471 | esbuild-linux-riscv64@0.14.54:
472 | version "0.14.54"
473 | resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8"
474 | integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==
475 |
476 | esbuild-linux-s390x@0.14.54:
477 | version "0.14.54"
478 | resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6"
479 | integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==
480 |
481 | esbuild-netbsd-64@0.14.54:
482 | version "0.14.54"
483 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81"
484 | integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==
485 |
486 | esbuild-openbsd-64@0.14.54:
487 | version "0.14.54"
488 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b"
489 | integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==
490 |
491 | esbuild-sunos-64@0.14.54:
492 | version "0.14.54"
493 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da"
494 | integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==
495 |
496 | esbuild-windows-32@0.14.54:
497 | version "0.14.54"
498 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31"
499 | integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==
500 |
501 | esbuild-windows-64@0.14.54:
502 | version "0.14.54"
503 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4"
504 | integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==
505 |
506 | esbuild-windows-arm64@0.14.54:
507 | version "0.14.54"
508 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982"
509 | integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==
510 |
511 | esbuild@^0.14.27:
512 | version "0.14.54"
513 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2"
514 | integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==
515 | optionalDependencies:
516 | "@esbuild/linux-loong64" "0.14.54"
517 | esbuild-android-64 "0.14.54"
518 | esbuild-android-arm64 "0.14.54"
519 | esbuild-darwin-64 "0.14.54"
520 | esbuild-darwin-arm64 "0.14.54"
521 | esbuild-freebsd-64 "0.14.54"
522 | esbuild-freebsd-arm64 "0.14.54"
523 | esbuild-linux-32 "0.14.54"
524 | esbuild-linux-64 "0.14.54"
525 | esbuild-linux-arm "0.14.54"
526 | esbuild-linux-arm64 "0.14.54"
527 | esbuild-linux-mips64le "0.14.54"
528 | esbuild-linux-ppc64le "0.14.54"
529 | esbuild-linux-riscv64 "0.14.54"
530 | esbuild-linux-s390x "0.14.54"
531 | esbuild-netbsd-64 "0.14.54"
532 | esbuild-openbsd-64 "0.14.54"
533 | esbuild-sunos-64 "0.14.54"
534 | esbuild-windows-32 "0.14.54"
535 | esbuild-windows-64 "0.14.54"
536 | esbuild-windows-arm64 "0.14.54"
537 |
538 | escalade@^3.1.1:
539 | version "3.1.1"
540 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
541 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
542 |
543 | escape-html@~1.0.3:
544 | version "1.0.3"
545 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
546 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
547 |
548 | escape-string-regexp@4.0.0:
549 | version "4.0.0"
550 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
551 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
552 |
553 | escape-string-regexp@^1.0.5:
554 | version "1.0.5"
555 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
556 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
557 |
558 | esmoduleserve@^0.2.0:
559 | version "0.2.0"
560 | resolved "https://registry.yarnpkg.com/esmoduleserve/-/esmoduleserve-0.2.0.tgz#01ed56cbee408f624641dab0b2916a54407c891e"
561 | integrity sha512-vg1j7fzKZUFR5TCsYQ3PABfBRMRi6V9K7mxcRh2MftO3gwAHBwYaPHtLHFDsKVSxdHmpu/GgT37lsRT+vezaKQ==
562 | dependencies:
563 | acorn "^8.0.4"
564 | acorn-walk "^8.0.0"
565 | resolve "^1.15.1"
566 | serve-static "^1.14.1"
567 |
568 | etag@~1.8.1:
569 | version "1.8.1"
570 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
571 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
572 |
573 | fill-range@^7.0.1:
574 | version "7.0.1"
575 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
576 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
577 | dependencies:
578 | to-regex-range "^5.0.1"
579 |
580 | find-up@5.0.0:
581 | version "5.0.0"
582 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
583 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
584 | dependencies:
585 | locate-path "^6.0.0"
586 | path-exists "^4.0.0"
587 |
588 | flat@^5.0.2:
589 | version "5.0.2"
590 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
591 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
592 |
593 | fresh@0.5.2:
594 | version "0.5.2"
595 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
596 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
597 |
598 | fs.realpath@^1.0.0:
599 | version "1.0.0"
600 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
601 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
602 |
603 | fsevents@~2.3.2:
604 | version "2.3.2"
605 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
606 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
607 |
608 | function-bind@^1.1.1:
609 | version "1.1.1"
610 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
611 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
612 |
613 | get-caller-file@^2.0.5:
614 | version "2.0.5"
615 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
616 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
617 |
618 | glob-parent@~5.1.2:
619 | version "5.1.2"
620 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
621 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
622 | dependencies:
623 | is-glob "^4.0.1"
624 |
625 | glob@7.2.0:
626 | version "7.2.0"
627 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
628 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
629 | dependencies:
630 | fs.realpath "^1.0.0"
631 | inflight "^1.0.4"
632 | inherits "2"
633 | minimatch "^3.0.4"
634 | once "^1.3.0"
635 | path-is-absolute "^1.0.0"
636 |
637 | glob@^7.1.3:
638 | version "7.2.3"
639 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
640 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
641 | dependencies:
642 | fs.realpath "^1.0.0"
643 | inflight "^1.0.4"
644 | inherits "2"
645 | minimatch "^3.1.1"
646 | once "^1.3.0"
647 | path-is-absolute "^1.0.0"
648 |
649 | has-flag@^3.0.0:
650 | version "3.0.0"
651 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
652 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
653 |
654 | has-flag@^4.0.0:
655 | version "4.0.0"
656 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
657 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
658 |
659 | has@^1.0.3:
660 | version "1.0.3"
661 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
662 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
663 | dependencies:
664 | function-bind "^1.1.1"
665 |
666 | he@1.2.0:
667 | version "1.2.0"
668 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
669 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
670 |
671 | http-errors@2.0.0:
672 | version "2.0.0"
673 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
674 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
675 | dependencies:
676 | depd "2.0.0"
677 | inherits "2.0.4"
678 | setprototypeof "1.2.0"
679 | statuses "2.0.1"
680 | toidentifier "1.0.1"
681 |
682 | immediate@~3.0.5:
683 | version "3.0.6"
684 | resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
685 | integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
686 |
687 | inflight@^1.0.4:
688 | version "1.0.6"
689 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
690 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
691 | dependencies:
692 | once "^1.3.0"
693 | wrappy "1"
694 |
695 | inherits@2, inherits@2.0.4, inherits@~2.0.3:
696 | version "2.0.4"
697 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
698 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
699 |
700 | is-binary-path@~2.1.0:
701 | version "2.1.0"
702 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
703 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
704 | dependencies:
705 | binary-extensions "^2.0.0"
706 |
707 | is-core-module@^2.9.0:
708 | version "2.11.0"
709 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
710 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
711 | dependencies:
712 | has "^1.0.3"
713 |
714 | is-extglob@^2.1.1:
715 | version "2.1.1"
716 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
717 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
718 |
719 | is-fullwidth-code-point@^3.0.0:
720 | version "3.0.0"
721 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
722 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
723 |
724 | is-glob@^4.0.1, is-glob@~4.0.1:
725 | version "4.0.3"
726 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
727 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
728 | dependencies:
729 | is-extglob "^2.1.1"
730 |
731 | is-number@^7.0.0:
732 | version "7.0.0"
733 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
734 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
735 |
736 | is-plain-obj@^2.1.0:
737 | version "2.1.0"
738 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
739 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
740 |
741 | is-unicode-supported@^0.1.0:
742 | version "0.1.0"
743 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
744 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
745 |
746 | isarray@~1.0.0:
747 | version "1.0.0"
748 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
749 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
750 |
751 | ist@^1.1.7:
752 | version "1.1.7"
753 | resolved "https://registry.yarnpkg.com/ist/-/ist-1.1.7.tgz#64161305bca42937d8e05394a2883c3431c5f7ff"
754 | integrity sha512-ex9JyqY+tCjBlxN1pXlqxEgtGGUGp1TG83ll1xpu8SfPgOhfAhEGCuepNHlB+d7Le+hLoBcfCu/G0ZQaFbi9hA==
755 |
756 | js-tokens@^4.0.0:
757 | version "4.0.0"
758 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
759 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
760 |
761 | js-yaml@4.1.0:
762 | version "4.1.0"
763 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
764 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
765 | dependencies:
766 | argparse "^2.0.1"
767 |
768 | jszip@^3.10.0:
769 | version "3.10.1"
770 | resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2"
771 | integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==
772 | dependencies:
773 | lie "~3.3.0"
774 | pako "~1.0.2"
775 | readable-stream "~2.3.6"
776 | setimmediate "^1.0.5"
777 |
778 | lie@~3.3.0:
779 | version "3.3.0"
780 | resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a"
781 | integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==
782 | dependencies:
783 | immediate "~3.0.5"
784 |
785 | locate-path@^6.0.0:
786 | version "6.0.0"
787 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
788 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
789 | dependencies:
790 | p-locate "^5.0.0"
791 |
792 | log-symbols@4.1.0:
793 | version "4.1.0"
794 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
795 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
796 | dependencies:
797 | chalk "^4.1.0"
798 | is-unicode-supported "^0.1.0"
799 |
800 | magic-string@^0.25.7:
801 | version "0.25.9"
802 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
803 | integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
804 | dependencies:
805 | sourcemap-codec "^1.4.8"
806 |
807 | mime@1.6.0:
808 | version "1.6.0"
809 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
810 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
811 |
812 | minimatch@5.0.1:
813 | version "5.0.1"
814 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b"
815 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==
816 | dependencies:
817 | brace-expansion "^2.0.1"
818 |
819 | minimatch@^3.0.4, minimatch@^3.1.1:
820 | version "3.1.2"
821 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
822 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
823 | dependencies:
824 | brace-expansion "^1.1.7"
825 |
826 | mocha@^10.0.0:
827 | version "10.2.0"
828 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8"
829 | integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==
830 | dependencies:
831 | ansi-colors "4.1.1"
832 | browser-stdout "1.3.1"
833 | chokidar "3.5.3"
834 | debug "4.3.4"
835 | diff "5.0.0"
836 | escape-string-regexp "4.0.0"
837 | find-up "5.0.0"
838 | glob "7.2.0"
839 | he "1.2.0"
840 | js-yaml "4.1.0"
841 | log-symbols "4.1.0"
842 | minimatch "5.0.1"
843 | ms "2.1.3"
844 | nanoid "3.3.3"
845 | serialize-javascript "6.0.0"
846 | strip-json-comments "3.1.1"
847 | supports-color "8.1.1"
848 | workerpool "6.2.1"
849 | yargs "16.2.0"
850 | yargs-parser "20.2.4"
851 | yargs-unparser "2.0.0"
852 |
853 | ms@2.0.0:
854 | version "2.0.0"
855 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
856 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
857 |
858 | ms@2.1.2:
859 | version "2.1.2"
860 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
861 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
862 |
863 | ms@2.1.3:
864 | version "2.1.3"
865 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
866 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
867 |
868 | nanoid@3.3.3:
869 | version "3.3.3"
870 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25"
871 | integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==
872 |
873 | nanoid@^3.3.4:
874 | version "3.3.4"
875 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
876 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
877 |
878 | normalize-path@^3.0.0, normalize-path@~3.0.0:
879 | version "3.0.0"
880 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
881 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
882 |
883 | on-finished@2.4.1:
884 | version "2.4.1"
885 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
886 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
887 | dependencies:
888 | ee-first "1.1.1"
889 |
890 | once@^1.3.0:
891 | version "1.4.0"
892 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
893 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
894 | dependencies:
895 | wrappy "1"
896 |
897 | p-limit@^3.0.2:
898 | version "3.1.0"
899 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
900 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
901 | dependencies:
902 | yocto-queue "^0.1.0"
903 |
904 | p-locate@^5.0.0:
905 | version "5.0.0"
906 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
907 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
908 | dependencies:
909 | p-limit "^3.0.2"
910 |
911 | pako@~1.0.2:
912 | version "1.0.11"
913 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
914 | integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
915 |
916 | parseurl@~1.3.3:
917 | version "1.3.3"
918 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
919 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
920 |
921 | path-exists@^4.0.0:
922 | version "4.0.0"
923 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
924 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
925 |
926 | path-is-absolute@^1.0.0:
927 | version "1.0.1"
928 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
929 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
930 |
931 | path-parse@^1.0.7:
932 | version "1.0.7"
933 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
934 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
935 |
936 | picocolors@^1.0.0:
937 | version "1.0.0"
938 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
939 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
940 |
941 | picomatch@^2.0.4, picomatch@^2.2.1:
942 | version "2.3.1"
943 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
944 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
945 |
946 | postcss@^8.4.13:
947 | version "8.4.21"
948 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4"
949 | integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==
950 | dependencies:
951 | nanoid "^3.3.4"
952 | picocolors "^1.0.0"
953 | source-map-js "^1.0.2"
954 |
955 | process-nextick-args@~2.0.0:
956 | version "2.0.1"
957 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
958 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
959 |
960 | randombytes@^2.1.0:
961 | version "2.1.0"
962 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
963 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
964 | dependencies:
965 | safe-buffer "^5.1.0"
966 |
967 | range-parser@~1.2.1:
968 | version "1.2.1"
969 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
970 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
971 |
972 | readable-stream@~2.3.6:
973 | version "2.3.7"
974 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
975 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
976 | dependencies:
977 | core-util-is "~1.0.0"
978 | inherits "~2.0.3"
979 | isarray "~1.0.0"
980 | process-nextick-args "~2.0.0"
981 | safe-buffer "~5.1.1"
982 | string_decoder "~1.1.1"
983 | util-deprecate "~1.0.1"
984 |
985 | readdirp@~3.6.0:
986 | version "3.6.0"
987 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
988 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
989 | dependencies:
990 | picomatch "^2.2.1"
991 |
992 | require-directory@^2.1.1:
993 | version "2.1.1"
994 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
995 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
996 |
997 | resolve@^1.15.1, resolve@^1.22.0:
998 | version "1.22.1"
999 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
1000 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
1001 | dependencies:
1002 | is-core-module "^2.9.0"
1003 | path-parse "^1.0.7"
1004 | supports-preserve-symlinks-flag "^1.0.0"
1005 |
1006 | rimraf@^3.0.0:
1007 | version "3.0.2"
1008 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
1009 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
1010 | dependencies:
1011 | glob "^7.1.3"
1012 |
1013 | rollup-plugin-dts@^3.0.0:
1014 | version "3.0.2"
1015 | resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-3.0.2.tgz#2b628d88f864d271d6eaec2e4c2a60ae4e944c5c"
1016 | integrity sha512-hswlsdWu/x7k5pXzaLP6OvKRKcx8Bzprksz9i9mUe72zvt8LvqAb/AZpzs6FkLgmyRaN8B6rUQOVtzA3yEt9Yw==
1017 | dependencies:
1018 | magic-string "^0.25.7"
1019 | optionalDependencies:
1020 | "@babel/code-frame" "^7.12.13"
1021 |
1022 | "rollup@>=2.59.0 <2.78.0":
1023 | version "2.77.3"
1024 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.3.tgz#8f00418d3a2740036e15deb653bed1a90ee0cc12"
1025 | integrity sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==
1026 | optionalDependencies:
1027 | fsevents "~2.3.2"
1028 |
1029 | rollup@^2.35.1:
1030 | version "2.79.1"
1031 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
1032 | integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
1033 | optionalDependencies:
1034 | fsevents "~2.3.2"
1035 |
1036 | safe-buffer@^5.1.0:
1037 | version "5.2.1"
1038 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1039 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1040 |
1041 | safe-buffer@~5.1.0, safe-buffer@~5.1.1:
1042 | version "5.1.2"
1043 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
1044 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
1045 |
1046 | selenium-webdriver@^4.0.0-beta.3:
1047 | version "4.8.0"
1048 | resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.8.0.tgz#386d57f23fe8edf5178f5bd06aae9ffaffbcb692"
1049 | integrity sha512-s/HL8WNwy1ggHR244+tAhjhyKMJnZLt1HKJ6Gn7nQgVjB/ybDF+46Uui0qI2J7AjPNJzlUmTncdC/jg/kKkn0A==
1050 | dependencies:
1051 | jszip "^3.10.0"
1052 | tmp "^0.2.1"
1053 | ws ">=8.11.0"
1054 |
1055 | send@0.18.0:
1056 | version "0.18.0"
1057 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
1058 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
1059 | dependencies:
1060 | debug "2.6.9"
1061 | depd "2.0.0"
1062 | destroy "1.2.0"
1063 | encodeurl "~1.0.2"
1064 | escape-html "~1.0.3"
1065 | etag "~1.8.1"
1066 | fresh "0.5.2"
1067 | http-errors "2.0.0"
1068 | mime "1.6.0"
1069 | ms "2.1.3"
1070 | on-finished "2.4.1"
1071 | range-parser "~1.2.1"
1072 | statuses "2.0.1"
1073 |
1074 | serialize-javascript@6.0.0:
1075 | version "6.0.0"
1076 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
1077 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
1078 | dependencies:
1079 | randombytes "^2.1.0"
1080 |
1081 | serve-static@^1.14.1:
1082 | version "1.15.0"
1083 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
1084 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
1085 | dependencies:
1086 | encodeurl "~1.0.2"
1087 | escape-html "~1.0.3"
1088 | parseurl "~1.3.3"
1089 | send "0.18.0"
1090 |
1091 | setimmediate@^1.0.5:
1092 | version "1.0.5"
1093 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
1094 | integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
1095 |
1096 | setprototypeof@1.2.0:
1097 | version "1.2.0"
1098 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
1099 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
1100 |
1101 | source-map-js@^1.0.2:
1102 | version "1.0.2"
1103 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
1104 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
1105 |
1106 | sourcemap-codec@^1.4.8:
1107 | version "1.4.8"
1108 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
1109 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
1110 |
1111 | statuses@2.0.1:
1112 | version "2.0.1"
1113 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
1114 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
1115 |
1116 | string-width@^4.1.0, string-width@^4.2.0:
1117 | version "4.2.3"
1118 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
1119 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
1120 | dependencies:
1121 | emoji-regex "^8.0.0"
1122 | is-fullwidth-code-point "^3.0.0"
1123 | strip-ansi "^6.0.1"
1124 |
1125 | string_decoder@~1.1.1:
1126 | version "1.1.1"
1127 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
1128 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
1129 | dependencies:
1130 | safe-buffer "~5.1.0"
1131 |
1132 | strip-ansi@^6.0.0, strip-ansi@^6.0.1:
1133 | version "6.0.1"
1134 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
1135 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
1136 | dependencies:
1137 | ansi-regex "^5.0.1"
1138 |
1139 | strip-json-comments@3.1.1:
1140 | version "3.1.1"
1141 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
1142 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
1143 |
1144 | style-mod@^4.0.0:
1145 | version "4.0.0"
1146 | resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.0.0.tgz#97e7c2d68b592975f2ca7a63d0dd6fcacfe35a01"
1147 | integrity sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==
1148 |
1149 | supports-color@8.1.1:
1150 | version "8.1.1"
1151 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
1152 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
1153 | dependencies:
1154 | has-flag "^4.0.0"
1155 |
1156 | supports-color@^5.3.0:
1157 | version "5.5.0"
1158 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
1159 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
1160 | dependencies:
1161 | has-flag "^3.0.0"
1162 |
1163 | supports-color@^7.1.0:
1164 | version "7.2.0"
1165 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
1166 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
1167 | dependencies:
1168 | has-flag "^4.0.0"
1169 |
1170 | supports-preserve-symlinks-flag@^1.0.0:
1171 | version "1.0.0"
1172 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
1173 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
1174 |
1175 | tmp@^0.2.1:
1176 | version "0.2.1"
1177 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
1178 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
1179 | dependencies:
1180 | rimraf "^3.0.0"
1181 |
1182 | to-regex-range@^5.0.1:
1183 | version "5.0.1"
1184 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1185 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1186 | dependencies:
1187 | is-number "^7.0.0"
1188 |
1189 | toidentifier@1.0.1:
1190 | version "1.0.1"
1191 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
1192 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
1193 |
1194 | typescript@^4.2.3:
1195 | version "4.9.5"
1196 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
1197 | integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
1198 |
1199 | util-deprecate@~1.0.1:
1200 | version "1.0.2"
1201 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1202 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
1203 |
1204 | vite@^2.3.8:
1205 | version "2.9.16"
1206 | resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.16.tgz#daf7ba50f5cc37a7bf51b118ba06bc36e97898e9"
1207 | integrity sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==
1208 | dependencies:
1209 | esbuild "^0.14.27"
1210 | postcss "^8.4.13"
1211 | resolve "^1.22.0"
1212 | rollup ">=2.59.0 <2.78.0"
1213 | optionalDependencies:
1214 | fsevents "~2.3.2"
1215 |
1216 | w3c-keyname@^2.2.4:
1217 | version "2.2.6"
1218 | resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz#8412046116bc16c5d73d4e612053ea10a189c85f"
1219 | integrity sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==
1220 |
1221 | workerpool@6.2.1:
1222 | version "6.2.1"
1223 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"
1224 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==
1225 |
1226 | wrap-ansi@^7.0.0:
1227 | version "7.0.0"
1228 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
1229 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
1230 | dependencies:
1231 | ansi-styles "^4.0.0"
1232 | string-width "^4.1.0"
1233 | strip-ansi "^6.0.0"
1234 |
1235 | wrappy@1:
1236 | version "1.0.2"
1237 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1238 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
1239 |
1240 | ws@>=8.11.0:
1241 | version "8.12.0"
1242 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8"
1243 | integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==
1244 |
1245 | y18n@^5.0.5:
1246 | version "5.0.8"
1247 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
1248 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
1249 |
1250 | yargs-parser@20.2.4:
1251 | version "20.2.4"
1252 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
1253 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
1254 |
1255 | yargs-parser@^20.2.2:
1256 | version "20.2.9"
1257 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
1258 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
1259 |
1260 | yargs-unparser@2.0.0:
1261 | version "2.0.0"
1262 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
1263 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
1264 | dependencies:
1265 | camelcase "^6.0.0"
1266 | decamelize "^4.0.0"
1267 | flat "^5.0.2"
1268 | is-plain-obj "^2.1.0"
1269 |
1270 | yargs@16.2.0:
1271 | version "16.2.0"
1272 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
1273 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
1274 | dependencies:
1275 | cliui "^7.0.2"
1276 | escalade "^3.1.1"
1277 | get-caller-file "^2.0.5"
1278 | require-directory "^2.1.1"
1279 | string-width "^4.2.0"
1280 | y18n "^5.0.5"
1281 | yargs-parser "^20.2.2"
1282 |
1283 | yocto-queue@^0.1.0:
1284 | version "0.1.0"
1285 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
1286 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
1287 |
--------------------------------------------------------------------------------