├── .npmignore
├── .gitignore
├── src
├── syntax.grammar.d.ts
├── tokens.ts
├── index.ts
└── syntax.grammar
├── dev
├── vite.config.js
├── watch.cjs
├── index.html
├── print-lezer-tree.ts
└── index.ts
├── replit.nix
├── .replit
├── README.md
├── LICENSE
├── package.json
└── yarn.lock
/.npmignore:
--------------------------------------------------------------------------------
1 | example.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
--------------------------------------------------------------------------------
/src/syntax.grammar.d.ts:
--------------------------------------------------------------------------------
1 | import { Parser } from "@lezer/common";
2 |
3 | export declare const parser: Parser;
4 |
--------------------------------------------------------------------------------
/dev/vite.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: [],
3 | root: "dev",
4 | server: {
5 | host: '0.0.0.0',
6 | hmr: {
7 | clientPort: 443,
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/replit.nix:
--------------------------------------------------------------------------------
1 | { pkgs }: {
2 | deps = [
3 | pkgs.nodePackages.prettier
4 | pkgs.nodejs-16_x
5 | pkgs.nodePackages.yarn
6 | pkgs.nodePackages.typescript-language-server
7 | ];
8 | }
--------------------------------------------------------------------------------
/.replit:
--------------------------------------------------------------------------------
1 | run="yarn dev"
2 |
3 | [packager]
4 | language = "nodejs-yarn"
5 | [packager.features]
6 | packageSearch = true
7 |
8 | [languages.js]
9 | pattern = "**/*.ts"
10 | [languages.js.languageServer]
11 | start = ["typescript-language-server", "--stdio"]
--------------------------------------------------------------------------------
/dev/watch.cjs:
--------------------------------------------------------------------------------
1 | const {watch} = require("@codemirror/buildhelper")
2 | const {resolve} = require("path")
3 |
4 | let args = process.argv.slice(2)
5 |
6 | console.log(args)
7 |
8 | if (args.length != 1) {
9 | console.log("Usage: cm-buildhelper src/mainfile.ts")
10 | process.exit(1)
11 | }
12 |
13 | watch([resolve(args[0])])
--------------------------------------------------------------------------------
/dev/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Vite App
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CodeMirror C# Language Support
2 |
3 | A CodeMirror extension that provides C# syntax highlighting and language support.
4 |
5 |
6 | ### Usage
7 |
8 | ```ts
9 | import { EditorState } from '@codemirror/state';
10 | import { EditorView } from '@codemirror/view';
11 | import { csharp } from "@replit/codemirror-lang-csharp";
12 | import { basicSetup } from 'codemirror';
13 |
14 | new EditorView({
15 | state: EditorState.create({
16 | doc: `
17 | using System;
18 | namespace Test
19 | {
20 | class Program
21 | {
22 | public static void Main(string[] args)
23 | {
24 | Console.WriteLine("Hello, world!");
25 | }
26 | }
27 | }
28 | `,
29 | extensions: [basicSetup, csharp()],
30 | }),
31 | parent: document.querySelector('#editor'),
32 | });
33 | ```
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 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.
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@replit/codemirror-lang-csharp",
3 | "description": "A C# mode for CodeMirror 6",
4 | "version": "6.2.0",
5 | "author": {
6 | "name": "Alan Forshaw",
7 | "email": "alan@repl.it"
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": "npm run build && run-p dev-cm dev-vite",
21 | "dev-vite": "vite ./dev",
22 | "dev-cm": "node ./dev/watch.cjs src/index.ts",
23 | "build": "cm-buildhelper src/index.ts",
24 | "test": "cm-runtests",
25 | "publish": "npm run build && npm publish"
26 | },
27 | "peerDependencies": {
28 | "@codemirror/autocomplete": "^6.0.0",
29 | "@codemirror/language": "^6.0.0",
30 | "@codemirror/state": "^6.0.0",
31 | "@codemirror/view": "^6.0.0",
32 | "@lezer/common": "^1.0.0",
33 | "@lezer/highlight": "^1.0.0",
34 | "@lezer/lr": "^1.0.0"
35 | },
36 | "devDependencies": {
37 | "@codemirror/autocomplete": "^6.0.0",
38 | "@codemirror/buildhelper": "^0.1.16",
39 | "@codemirror/language": "^6.0.0",
40 | "@codemirror/state": "^6.0.0",
41 | "@codemirror/theme-one-dark": "^6.0.0",
42 | "@codemirror/view": "^6.0.0",
43 | "@lezer/generator": "^1.0.0",
44 | "@lezer/common": "^1.0.0",
45 | "@lezer/highlight": "^1.0.0",
46 | "@lezer/lr": "^1.0.0",
47 | "codemirror": "^6.0.0",
48 | "npm-run-all": "^4.1.5",
49 | "vite": "^2.3.8"
50 | },
51 | "repository": {
52 | "type": "git",
53 | "url": "https://github.com/replit/codemirror-lang-csharp.git"
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/tokens.ts:
--------------------------------------------------------------------------------
1 | import { ExternalTokenizer, ContextTracker } from "@lezer/lr";
2 | import {
3 | interpStringContent,
4 | interpStringBrace,
5 | interpStringEnd,
6 | interpVStringContent,
7 | interpVStringBrace,
8 | interpVStringEnd,
9 | } from "./syntax.grammar.terms";
10 |
11 | const
12 | quote = 34,
13 | backslash = 92,
14 | braceL = 123,
15 | braceR = 125;
16 |
17 | export const interpString = new ExternalTokenizer((input) => {
18 | for(let i = 0; ; i++) {
19 | switch(input.next) {
20 | case -1:
21 | if(i > 0) input.acceptToken(interpStringContent);
22 | return;
23 |
24 | case quote:
25 | if(i > 0) input.acceptToken(interpStringContent);
26 | else input.acceptToken(interpStringEnd, 1);
27 | return;
28 |
29 | case braceL:
30 | if(input.peek(1) === braceL) input.acceptToken(interpStringContent, 2)
31 | else input.acceptToken(interpStringBrace);
32 | return;
33 |
34 | case braceR:
35 | if(input.peek(1) === braceR) input.acceptToken(interpStringContent, 2)
36 | return;
37 |
38 | case backslash:
39 | const next = input.peek(1);
40 | if(next === braceL || next === braceR) return;
41 | input.advance();
42 | // FALLTHROUGH
43 |
44 | default:
45 | input.advance();
46 | }
47 | }
48 | });
49 |
50 | export const interpVString = new ExternalTokenizer((input) => {
51 | for(let i = 0; ; i++) {
52 | switch(input.next) {
53 | case -1:
54 | if(i > 0) input.acceptToken(interpVStringContent);
55 | return;
56 |
57 | case quote:
58 | if(input.peek(1) === quote) input.acceptToken(interpVStringContent, 2)
59 | else if(i > 0) input.acceptToken(interpVStringContent)
60 | else input.acceptToken(interpVStringEnd, 1);
61 | return;
62 |
63 | case braceL:
64 | if(input.peek(1) === braceL) input.acceptToken(interpVStringContent, 2)
65 | else input.acceptToken(interpVStringBrace);
66 | return;
67 |
68 | case braceR:
69 | if(input.peek(1) === braceR) input.acceptToken(interpVStringContent, 2)
70 | return;
71 |
72 | default:
73 | input.advance();
74 | }
75 | }
76 | });
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import { parser as csharpParser } from "./syntax.grammar";
2 | import {
3 | LRLanguage,
4 | LanguageSupport,
5 | indentNodeProp,
6 | foldNodeProp,
7 | foldInside,
8 | continuedIndent,
9 | } from "@codemirror/language";
10 | import { styleTags, tags as t } from "@lezer/highlight";
11 |
12 | export const parser = csharpParser;
13 |
14 | export const csharpLanguage = LRLanguage.define({
15 | parser: parser.configure({
16 | props: [
17 | indentNodeProp.add({
18 | Delim: continuedIndent({ except: /^\s*(?:case\b|default:)/ }),
19 | }),
20 | foldNodeProp.add({
21 | Delim: foldInside,
22 | }),
23 | styleTags({
24 | "Keyword ContextualKeyword SimpleType": t.keyword,
25 | "NullLiteral BooleanLiteral": t.bool,
26 | IntegerLiteral: t.integer,
27 | RealLiteral: t.float,
28 | 'StringLiteral CharacterLiteral InterpolatedRegularString InterpolatedVerbatimString $" @$" $@"':
29 | t.string,
30 | "LineComment BlockComment": t.comment,
31 |
32 | ". .. : Astrisk Slash % + - ++ -- Not ~ << & | ^ && || < > <= >= == NotEq = += -= *= SlashEq %= &= |= ^= ? ?? ??= =>":
33 | t.operator,
34 |
35 | PP_Directive: t.keyword,
36 |
37 | TypeIdentifier: t.typeName,
38 | "ArgumentName AttrsNamedArg": t.variableName,
39 | ConstName: t.constant(t.variableName),
40 |
41 | //Ident: t.name,
42 | MethodName: t.function(t.variableName),
43 | ParamName: [t.emphasis, t.variableName],
44 | VarName: t.variableName,
45 | "FieldName PropertyName": t.propertyName,
46 |
47 | "( )": t.paren,
48 | "{ }": t.brace,
49 | "[ ]": t.squareBracket,
50 | }),
51 | ],
52 | }),
53 | languageData: {
54 | commentTokens: { line: "//", block: { open: "/*", close: "*/" } },
55 | closeBrackets: { brackets: ["(", "[", "{", '"', "'"] },
56 | indentOnInput:
57 | /^\s*((\)|\]|\})$|(else|else\s+if|catch|finally|case)\b|default:)/,
58 | },
59 | });
60 |
61 | export function csharp() {
62 | return new LanguageSupport(csharpLanguage);
63 | }
64 |
--------------------------------------------------------------------------------
/dev/print-lezer-tree.ts:
--------------------------------------------------------------------------------
1 | // From: https://gist.github.com/msteen/e4828fbf25d6efef73576fc43ac479d2/
2 |
3 | import { Text } from "@codemirror/state"
4 | import { Input, NodeType, SyntaxNode, Tree, TreeCursor } from "@lezer/common"
5 |
6 | class StringInput implements Input {
7 | constructor(private readonly input: string) {}
8 |
9 | get length() {
10 | return this.input.length
11 | }
12 |
13 | chunk(from: number): string {
14 | return this.input.slice(from)
15 | }
16 |
17 | lineChunks = false
18 |
19 | read(from: number, to: number): string {
20 | return this.input.slice(from, to)
21 | }
22 | }
23 |
24 | export function sliceType(cursor: TreeCursor, input: Input, type: number): string | null {
25 | if (cursor.type.id === type) {
26 | const s = input.read(cursor.from, cursor.to)
27 | cursor.nextSibling()
28 | return s
29 | }
30 | return null
31 | }
32 |
33 | export function isType(cursor: TreeCursor, type: number): boolean {
34 | const cond = cursor.type.id === type
35 | if (cond) cursor.nextSibling()
36 | return cond
37 | }
38 |
39 | export type CursorNode = { type: NodeType; from: number; to: number; isLeaf: boolean }
40 |
41 | function cursorNode({ type, from, to }: TreeCursor, isLeaf = false): CursorNode {
42 | return { type, from, to, isLeaf }
43 | }
44 |
45 | export type TreeTraversal = {
46 | beforeEnter?: (cursor: TreeCursor) => void
47 | onEnter: (node: CursorNode) => false | void
48 | onLeave?: (node: CursorNode) => false | void
49 | }
50 |
51 | type TreeTraversalOptions = {
52 | from?: number
53 | to?: number
54 | includeParents?: boolean
55 | } & TreeTraversal
56 |
57 | export function traverseTree(
58 | cursor: TreeCursor | Tree | SyntaxNode,
59 | {
60 | from = -Infinity,
61 | to = Infinity,
62 | includeParents = false,
63 | beforeEnter,
64 | onEnter,
65 | onLeave,
66 | }: TreeTraversalOptions,
67 | ): void {
68 | if (!(cursor instanceof TreeCursor)) cursor = cursor.cursor()
69 | for (;;) {
70 | let node = cursorNode(cursor)
71 | let leave = false
72 | if (node.from <= to && node.to >= from) {
73 | const enter = !node.type.isAnonymous && (includeParents || (node.from >= from && node.to <= to))
74 | if (enter && beforeEnter) beforeEnter(cursor)
75 | node.isLeaf = !cursor.firstChild()
76 | if (enter) {
77 | leave = true
78 | if (onEnter(node) === false) return
79 | }
80 | if (!node.isLeaf) continue
81 | }
82 | for (;;) {
83 | node = cursorNode(cursor, node.isLeaf)
84 | if (leave && onLeave) if (onLeave(node) === false) return
85 | leave = cursor.type.isAnonymous
86 | node.isLeaf = false
87 | if (cursor.nextSibling()) break
88 | if (!cursor.parent()) return
89 | leave = true
90 | }
91 | }
92 | }
93 |
94 | function isChildOf(child: CursorNode, parent: CursorNode): boolean {
95 | return (
96 | child.from >= parent.from && child.from <= parent.to && child.to <= parent.to && child.to >= parent.from
97 | )
98 | }
99 |
100 | export function validatorTraversal(
101 | input: Input | string,
102 | { fullMatch = true }: { fullMatch?: boolean } = {},
103 | ) {
104 | if (typeof input === "string") input = new StringInput(input)
105 | const state = {
106 | valid: true,
107 | parentNodes: [] as CursorNode[],
108 | lastLeafTo: 0,
109 | }
110 | return {
111 | state,
112 | traversal: {
113 | onEnter(node) {
114 | state.valid = true
115 | if (!node.isLeaf) state.parentNodes.unshift(node)
116 | if (node.from > node.to || node.from < state.lastLeafTo) {
117 | state.valid = false
118 | } else if (node.isLeaf) {
119 | if (state.parentNodes.length && !isChildOf(node, state.parentNodes[0])) state.valid = false
120 | state.lastLeafTo = node.to
121 | } else {
122 | if (state.parentNodes.length) {
123 | if (!isChildOf(node, state.parentNodes[0])) state.valid = false
124 | } else if (fullMatch && (node.from !== 0 || node.to !== input.length)) {
125 | state.valid = false
126 | }
127 | }
128 | },
129 | onLeave(node) {
130 | if (!node.isLeaf) state.parentNodes.shift()
131 | },
132 | } as TreeTraversal,
133 | }
134 | }
135 |
136 | export function validateTree(
137 | tree: TreeCursor | Tree | SyntaxNode,
138 | input: Input | string,
139 | options?: { fullMatch?: boolean },
140 | ): boolean {
141 | const { state, traversal } = validatorTraversal(input, options)
142 | traverseTree(tree, traversal)
143 | return state.valid
144 | }
145 |
146 | enum Color {
147 | Red = 31,
148 | Green = 32,
149 | Yellow = 33,
150 | }
151 |
152 | function colorize(value: any, color: number): string {
153 | // return "\u001b[" + color + "m" + String(value) + "\u001b[39m"
154 | return String(value)
155 | }
156 |
157 | type PrintTreeOptions = { from?: number; to?: number; start?: number; includeParents?: boolean }
158 |
159 | export function printTree(
160 | cursor: TreeCursor | Tree | SyntaxNode,
161 | input: Input | string,
162 | { from, to, start = 0, includeParents }: PrintTreeOptions = {},
163 | ): string {
164 | const inp = typeof input === "string" ? new StringInput(input) : input
165 | const text = Text.of(inp.read(0, inp.length).split("\n"))
166 | const state = {
167 | output: "",
168 | prefixes: [] as string[],
169 | hasNextSibling: false,
170 | }
171 | const validator = validatorTraversal(inp)
172 | traverseTree(cursor, {
173 | from,
174 | to,
175 | includeParents,
176 | beforeEnter(cursor) {
177 | state.hasNextSibling = cursor.nextSibling() && cursor.prevSibling()
178 | },
179 | onEnter(node) {
180 | validator.traversal.onEnter(node)
181 | const isTop = state.output === ""
182 | const hasPrefix = !isTop || node.from > 0
183 | if (hasPrefix) {
184 | state.output += (!isTop ? "\n" : "") + state.prefixes.join("")
185 | if (state.hasNextSibling) {
186 | state.output += " ├─ "
187 | state.prefixes.push(" │ ")
188 | } else {
189 | state.output += " └─ "
190 | state.prefixes.push(" ")
191 | }
192 | }
193 | const hasRange = node.from !== node.to
194 | state.output +=
195 | (node.type.isError || !validator.state.valid ? colorize(node.type.name, Color.Red) : node.type.name) +
196 | " " +
197 | (hasRange
198 | ? "[" +
199 | colorize(locAt(text, start + node.from), Color.Yellow) +
200 | ".." +
201 | colorize(locAt(text, start + node.to), Color.Yellow) +
202 | "]"
203 | : colorize(locAt(text, start + node.from), Color.Yellow))
204 | if (hasRange && node.isLeaf) {
205 | state.output += ": " + colorize(JSON.stringify(inp.read(node.from, node.to)), Color.Green)
206 | }
207 | },
208 | onLeave(node) {
209 | validator.traversal.onLeave!(node)
210 | state.prefixes.pop()
211 | },
212 | })
213 | return state.output
214 | }
215 |
216 | function locAt(text: Text, pos: number): string {
217 | const line = text.lineAt(pos)
218 | return line.number + ":" + (pos - line.from)
219 | }
220 |
221 | export function logTree(
222 | tree: TreeCursor | Tree | SyntaxNode,
223 | input: string,
224 | options?: PrintTreeOptions,
225 | ): void {
226 | console.log(printTree(tree, input, options))
227 | }
228 |
--------------------------------------------------------------------------------
/dev/index.ts:
--------------------------------------------------------------------------------
1 | import { EditorState } from '@codemirror/state';
2 | import { EditorView } from '@codemirror/view';
3 | import { basicSetup } from 'codemirror';
4 | import { csharp, parser } from "../dist/";
5 | import { printTree } from "./print-lezer-tree";
6 | import { oneDark } from '@codemirror/theme-one-dark';
7 |
8 | const doc = /*`
9 | using System;
10 | using System.Reflection;
11 |
12 | public sealed class InterrogateHelpUrls
13 | {
14 | public static void Main(string[] args)
15 | {
16 | (Type a) helpType = typeof(HelpAttribute);
17 | string assemblyName = args[0];
18 | foreach (Type t in Assembly.Load(assemblyName).GetTypes())
19 | {
20 | Console.WriteLine($"Type : {t}");
21 | HelpAttribute[] helpers =
22 | (HelpAttribute[])t.GetCustomAttributes(helpType, false);
23 | for (int at = 0; at != helpers.Length; at++)
24 | {
25 | Console.WriteLine($"\tUrl : {helpers[at].Url}");
26 | }
27 | }
28 | }
29 | }
30 | `*/`
31 | // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
32 | // See the LICENCE file in the repository root for full licence text.
33 |
34 | using System;
35 | using System.Collections.Generic;
36 | using System.IO;
37 | using System.Linq;
38 | using System.Reflection;
39 | using osu.Framework;
40 | using osu.Framework.Logging;
41 | using osu.Framework.Platform;
42 |
43 | namespace osu.Game.Rulesets
44 | {
45 | public abstract class RulesetStore : IDisposable, IRulesetStore
46 | {
47 | private const string ruleset_library_prefix = @"osu.Game.Rulesets";
48 |
49 | protected readonly Dictionary LoadedAssemblies = new Dictionary();
50 |
51 | ///
52 | /// All available rulesets.
53 | ///
54 | public abstract IEnumerable AvailableRulesets { get; }
55 |
56 | protected RulesetStore(Storage? storage = null)
57 | {
58 | A.B c = 1;
59 | A.B(1);
60 | A.B c = 1;
61 | A.B(1);
62 | A.B c = 1;
63 | // On android in release configuration assemblies are loaded from the apk directly into memory.
64 | // We cannot read assemblies from cwd, so should check loaded assemblies instead.
65 | loadFromAppDomain();
66 | A.B c = 1;
67 | A.B(1);
68 | A.B c = 1;
69 | A.B(1);
70 | A.B c = 1;
71 | // This null check prevents Android from attempting to load the rulesets from disk,
72 | // as the underlying path "AppContext.BaseDirectory", despite being non-nullable, it returns null on android.
73 | // See https://github.com/xamarin/xamarin-android/issues/3489.
74 | if (RuntimeInfo.StartupDirectory is int (a, b, c) a)
75 | loadFromDisk();
76 |
77 | // the event handler contains code for resolving dependency on the game assembly for rulesets located outside the base game directory.
78 | // It needs to be attached to the assembly lookup event before the actual call to loadUserRulesets() else rulesets located out of the base game directory will fail
79 | // to load as unable to locate the game core assembly.
80 | AppDomain.CurrentDomain.AssemblyResolve += resolveRulesetDependencyAssembly;
81 |
82 | var rulesetStorage = storage?.GetStorageForDirectory(@"rulesets");
83 | if (rulesetStorage != null)
84 | loadUserRulesets(rulesetStorage);
85 | }
86 |
87 | ///
88 | /// Retrieve a ruleset using a known ID.
89 | ///
90 | /// The ruleset's internal ID.
91 | /// A ruleset, if available, else null.
92 | public RulesetInfo? GetRuleset(int id) => AvailableRulesets.FirstOrDefault(r => r.OnlineID == id);
93 |
94 | ///
95 | /// Retrieve a ruleset using a known short name.
96 | ///
97 | /// The ruleset's short name.
98 | /// A ruleset, if available, else null.
99 | public RulesetInfo? GetRuleset(string shortName) => AvailableRulesets.FirstOrDefault(r => r.ShortName == shortName);
100 |
101 | private Assembly? resolveRulesetDependencyAssembly(object? sender, ResolveEventArgs args)
102 | {
103 | var asm = new AssemblyName(args.Name);
104 |
105 | // the requesting assembly may be located out of the executable's base directory, thus requiring manual resolving of its dependencies.
106 | // this attempts resolving the ruleset dependencies on game core and framework assemblies by returning assemblies with the same assembly name
107 | // already loaded in the AppDomain.
108 | var domainAssembly = AppDomain.CurrentDomain.GetAssemblies()
109 | // Given name is always going to be equally-or-more qualified than the assembly name.
110 | .Where(a =>
111 | {
112 | string? name = a.GetName().Name;
113 | if (name == null)
114 | return false;
115 |
116 | return args.Name.Contains(name, StringComparison.Ordinal);
117 | })
118 | // Pick the greatest assembly version.
119 | .OrderByDescending(a => a.GetName().Version)
120 | .FirstOrDefault();
121 |
122 | if (domainAssembly != null)
123 | return domainAssembly;
124 |
125 | return LoadedAssemblies.Keys.FirstOrDefault(a => a.FullName == asm.FullName);
126 | }
127 |
128 | private void loadFromAppDomain()
129 | {
130 | foreach (var ruleset in AppDomain.CurrentDomain.GetAssemblies())
131 | {
132 | string? rulesetName = ruleset.GetName().Name;
133 |
134 | if (rulesetName == null)
135 | continue;
136 |
137 | if (!rulesetName.StartsWith(ruleset_library_prefix, StringComparison.InvariantCultureIgnoreCase) || rulesetName.Contains(@"Tests"))
138 | continue;
139 |
140 | addRuleset(ruleset);
141 | }
142 | }
143 |
144 | private void loadUserRulesets(Storage rulesetStorage)
145 | {
146 | var rulesets = rulesetStorage.GetFiles(@".", @$"{ruleset_library_prefix}.*.dll");
147 |
148 | foreach (string? ruleset in rulesets.Where(f => !f.Contains(@"Tests")))
149 | loadRulesetFromFile(rulesetStorage.GetFullPath(ruleset));
150 | }
151 |
152 | private void loadFromDisk()
153 | {
154 | try
155 | {
156 | string[] files = Directory.GetFiles(RuntimeInfo.StartupDirectory, @$"{ruleset_library_prefix}.*.dll");
157 |
158 | foreach (string file in files.Where(f => !Path.GetFileName(f).Contains("Tests")))
159 | loadRulesetFromFile(file);
160 | }
161 | catch (Exception e)
162 | {
163 | Logger.Error(e, $"Could not load rulesets from directory {RuntimeInfo.StartupDirectory}");
164 | }
165 | }
166 |
167 | private void loadRulesetFromFile(string file)
168 | {
169 | string? filename = Path.GetFileNameWithoutExtension(file);
170 |
171 | if (LoadedAssemblies.Values.Any(t => Path.GetFileNameWithoutExtension(t.Assembly.Location) == filename))
172 | return;
173 |
174 | try
175 | {
176 | addRuleset(Assembly.LoadFrom(file));
177 | }
178 | catch (Exception e)
179 | {
180 | LogFailedLoad(filename, e);
181 | }
182 | }
183 |
184 | private void addRuleset(Assembly assembly)
185 | {
186 | if (LoadedAssemblies.ContainsKey(assembly))
187 | return;
188 |
189 | // the same assembly may be loaded twice in the same AppDomain (currently a thing in certain Rider versions https://youtrack.jetbrains.com/issue/RIDER-48799).
190 | // as a failsafe, also compare by FullName.
191 | if (LoadedAssemblies.Any(a => a.Key.FullName == assembly.FullName))
192 | return;
193 |
194 | try
195 | {
196 | LoadedAssemblies[assembly] = assembly.GetTypes().First(t => t.IsPublic && t.IsSubclassOf(typeof(Ruleset)));
197 | }
198 | catch (Exception e)
199 | {
200 | LogFailedLoad(assembly.GetName().Name.Split('.').Last(), e);
201 | }
202 | }
203 |
204 | public void Dispose()
205 | {
206 | Dispose(true);
207 | GC.SuppressFinalize(this);
208 | }
209 |
210 | protected void Dispose(bool disposing)
211 | {
212 | AppDomain.CurrentDomain.AssemblyResolve -= resolveRulesetDependencyAssembly;
213 | }
214 |
215 | protected void LogFailedLoad(string name, Exception exception)
216 | {
217 | Logger.Log($"Could not load ruleset \\"{name}\\". Please check for an update from the developer.", level: LogLevel.Error);
218 | Logger.Log($"Ruleset load failed: {exception}");
219 | }
220 |
221 | #region Implementation of IRulesetStore
222 |
223 | IRulesetInfo? IRulesetStore.GetRuleset(int id) => GetRuleset(id);
224 | IRulesetInfo? IRulesetStore.GetRuleset(string shortName) => GetRuleset(shortName);
225 | IEnumerable IRulesetStore.AvailableRulesets => AvailableRulesets;
226 |
227 | #endregion
228 | }
229 | }
230 | `
231 |
232 | new EditorView({
233 | state: EditorState.create({
234 | doc,
235 | extensions: [basicSetup, csharp(), oneDark, EditorView.lineWrapping],
236 | }),
237 | parent: document.querySelector('#editor'),
238 | });
239 |
240 | console.log(printTree(parser.parse(doc), doc));
241 |
--------------------------------------------------------------------------------
/src/syntax.grammar:
--------------------------------------------------------------------------------
1 | @top Program { compilationUnit }
2 |
3 | @detectDelim
4 |
5 | @precedence {
6 | namedArg,
7 | typeParams,
8 | typeArgs,
9 | typeAccess @left,
10 | typeUnary2 @left, typeUnary @left,
11 | else @right,
12 | cast,
13 | new,
14 | memberCall @left,
15 | memberAccess @left,
16 | elementAccess @left,
17 | varDecl @left,
18 | call @left,
19 | unary @left,
20 | range @left,
21 | switch @left
22 | with @left,
23 | mul_div @left,
24 | add_sub @left,
25 | shift_lr @left,
26 | compare @left,
27 | equality @left,
28 | and @left,
29 | xor @left,
30 | or @left,
31 | c_and @left,
32 | c_or @left,
33 | nullcoal @right,
34 | ternary @right,
35 | params,
36 | arrow @right,
37 | assign @right,
38 | throw @left,
39 | q_into @right,
40 | comma @left
41 | }
42 |
43 | @external tokens interpString from "./tokens" {
44 | interpStringContent,
45 | interpStringBrace,
46 | interpStringEnd
47 | }
48 |
49 | @external tokens interpVString from "./tokens" {
50 | interpVStringContent,
51 | interpVStringBrace,
52 | interpVStringEnd
53 | }
54 |
55 | @skip { newline | whitespace | LineComment | BlockComment | PP_Directive }
56 |
57 | @tokens {
58 | // Line terminators
59 |
60 | newline
61 | { $[\r\n\u0085\u2028\u2029]
62 | | "\r\n"
63 | }
64 |
65 |
66 | // Comments
67 |
68 | LineComment { "//" ![\r\n\u0085\u2028\u2029]* }
69 |
70 | BlockComment { "/*" (![\*] | "*" ![/])* "*/"? }
71 |
72 |
73 | // Whitespace
74 |
75 | whitespace { $[\t\u000b\u000c \u00a0\u1680\u2000-\u200a\u202a\u205f\u3000] }
76 |
77 |
78 | // General
79 |
80 | identifier { simpleIdentifier }
81 |
82 | simpleIdentifier { "@"? $[a-zA-Z_] $[a-zA-Z0-9_]* } // \u{a1}-\u{10ffff}
83 |
84 |
85 | // Integer literals
86 |
87 | IntegerLiteral
88 | { decimalInteger
89 | | hexadecimalInteger
90 | | binaryInteger
91 | }
92 |
93 | decimalInteger { decimalDigit decoratedDigit* integerTypeSuffix? }
94 |
95 | decoratedDigit { '_'* digit }
96 |
97 | decimalDigit { $[0-9] }
98 |
99 | integerTypeSuffix
100 | { 'U' | 'u' | 'L' | 'l'
101 | | 'UL' | 'Ul' | 'uL' | 'ul' | 'LU' | 'Lu' | 'lU' | 'lu'
102 | }
103 |
104 | hexadecimalInteger { '0' $[xX] decoratedDigit+ integerTypeSuffix? }
105 |
106 | hexDigit { $[0-9A-Fa-f] }
107 |
108 | binaryInteger { '0' $[bB] decoratedDigit+ integerTypeSuffix? }
109 |
110 | binaryDigit { $[01] }
111 |
112 |
113 | // Real literals
114 |
115 | RealLiteral
116 | { decimalDigit decoratedDigit* '.' decimalDigit decoratedDigit* exponentPart? realTypeSuffix?
117 | | '.' decimalDigit decoratedDigit* exponentPart? realTypeSuffix?
118 | | decimalDigit decoratedDigit* exponentPart realTypeSuffix?
119 | | decimalDigit decoratedDigit* realTypeSuffix
120 | }
121 |
122 | exponentPart { $[eE] $[+\-]? decimalDigit decoratedDigit* }
123 |
124 | realTypeSuffix { $[FfDdMm] }
125 |
126 |
127 | // Character literals
128 |
129 | CharacterLiteral { "'" character "'" }
130 |
131 | character
132 | { singleCharacter
133 | | simpleEscapeSequence
134 | | hexadecimalEscapeSequence
135 | | unicodeEscapeSequence
136 | }
137 |
138 | singleCharacter { !['\\\r\n\u0085\u2028\u2029] }
139 |
140 | simpleEscapeSequence { "\\" $['"\\0abfnrtv] }
141 |
142 | hexadecimalEscapeSequence { "\\x" hexDigit hexDigit? hexDigit? hexDigit? }
143 |
144 | unicodeEscapeSequence
145 | { "\\u" hexDigit hexDigit hexDigit hexDigit
146 | | "\\U" hexDigit hexDigit hexDigit hexDigit hexDigit hexDigit hexDigit hexDigit
147 | }
148 |
149 |
150 | // String literals
151 |
152 | StringLiteral
153 | { regularString
154 | | verbatimString
155 | }
156 |
157 | regularString { '"' regularStringCharacter* '"' 'u8'? }
158 |
159 | regularStringCharacter
160 | { singleRegularStringCharacter
161 | | simpleEscapeSequence
162 | | hexadecimalEscapeSequence
163 | | unicodeEscapeSequence
164 | }
165 |
166 | singleRegularStringCharacter { !["\\\r\n\u0085\u2028\u2029] }
167 |
168 | verbatimString { '@"' verbatimStringCharacter* '"' 'u8'? }
169 |
170 | verbatimStringCharacter
171 | { !["]
172 | | '""'
173 | }
174 |
175 |
176 | // Operators and punctuators
177 |
178 | '{' '}' '[' ']' '(' ')' '.' ',' ':' ';'
179 | '+' '-' '*'[@name=Astrisk] '/'[@name=Slash] '%' '&' '|' '^' '!'[@name=Not] '~'
180 | '=' '<' '>' '?' '??' '::' '++' '--' '&&' '||'
181 | '->' '==' '!='[@name=NotEq] '<=' '>=' '+=' '-=' '*=' '/='[@name=SlashEq] '%='
182 | '&=' '|=' '^=' '<<' '<<=' '=>' '??='
183 | '$"' '@$"' '$@"'
184 | '..'
185 |
186 |
187 | // General
188 |
189 | PP_Directive { pp_start pp_kind /*...*/ }
190 |
191 | // TODO: make this detect beginning of line
192 | pp_start {
193 | '#' whitespace*
194 | }
195 |
196 | pp_kind
197 | { pp_declaration
198 | | pp_conditional
199 | | pp_line
200 | | pp_diagnostic
201 | | pp_region
202 | | pp_pragma
203 | }
204 |
205 | pp_declaration
206 | { 'define' whitespace+ identifier
207 | | 'undef' whitespace+ identifier
208 | }
209 |
210 | pp_conditional
211 | { 'if' whitespace+ ![\n]+
212 | | 'elif' whitespace+ ![\n]+
213 | | 'else'
214 | | 'endif'
215 | }
216 |
217 | pp_diagnostic
218 | { 'error' (whitespace+ ![\n]+)?
219 | | 'warning' (whitespace+ ![\n]+)?
220 | }
221 |
222 |
223 | pp_region
224 | { 'region' (whitespace+ ![\n]+)?
225 | | 'endregion' (whitespace+ ![\n]+)?
226 | }
227 |
228 | pp_line { 'line' whitespace+ ![\n]+ }
229 |
230 | pp_pragma { 'pragma' (whitespace+ ![\n]+)? }
231 |
232 |
233 | // Precedence
234 |
235 | @precedence { RealLiteral, IntegerLiteral }
236 |
237 | @precedence { '..', RealLiteral, '.' }
238 |
239 | @precedence { LineComment, BlockComment, '/=', '/' }
240 | }
241 |
242 |
243 | // Keywords
244 |
245 | new { kw<"new"> }
246 |
247 | ref { kw<"ref"> }
248 |
249 | scoped { kw<"scoped"> }
250 |
251 | readonly { kw<"readonly"> }
252 |
253 |
254 | // Boolean literals
255 |
256 | BooleanLiteral {
257 | @specialize
258 | }
259 |
260 |
261 | // The null literal
262 |
263 | NullLiteral {
264 | @specialize
265 | }
266 |
267 |
268 | // Operators and punctuators
269 |
270 | RightShift { '>' '>' }
271 |
272 | RightShiftAssignment { '>' '>=' }
273 |
274 |
275 | // General (Types)
276 |
277 | TypeIdentifier { identifier ~tid }
278 |
279 | namespaceName { namespaceOrTypeName }
280 |
281 | typeName { namespaceOrTypeName }
282 |
283 | namespaceOrTypeNameAccess
284 | { !typeAccess '.' TypeIdentifier typeArgumentList? namespaceOrTypeNameAccess
285 | | !typeAccess '.' TypeIdentifier typeArgumentList?
286 | }
287 |
288 | namespaceOrTypeName
289 | { TypeIdentifier typeArgumentList? namespaceOrTypeNameAccess?
290 | | QualifiedAliasMember namespaceOrTypeNameAccess?
291 | }
292 |
293 |
294 | type {
295 | (typeName | SimpleType | tupleType) (!typeUnary2 ~elementAccess rankSpecifier+ nullOrPtr? | nullOrPtr)
296 | }
297 |
298 | nonArrayType {
299 | (typeName | SimpleType | tupleType) nullOrPtr?
300 | }
301 |
302 | nullOrPtr {
303 | !typeUnary '*'+
304 | |
305 | !typeUnary '?'
306 | }
307 |
308 | arrayType { nonArrayType !typeUnary2 rankSpecifier+ }
309 |
310 | rankSpecifier { '[' ','* ']' }
311 |
312 | SimpleType {
313 | @specialize
334 | }
335 |
336 | tupleType//[@dynamicPrecedence=1]
337 | { delim<'(' ~tuple csep1<(type VarName)> ')'>
338 | | delim<'(' ~tuple type !comma ',' csep1 ')'>
339 | }
340 |
341 |
342 | // Type arguments
343 |
344 | typeArgumentList { !typeArgs '<' csep1 '>' }
345 |
346 |
347 | // General (Literals)
348 |
349 | literal
350 | { BooleanLiteral
351 | | IntegerLiteral
352 | | RealLiteral
353 | | CharacterLiteral
354 | | StringLiteral
355 | | NullLiteral
356 | }
357 |
358 |
359 | // General (Arguments)
360 |
361 | arguments { delim<'(' argumentList? ')'> }
362 |
363 | argumentList { csep1 }
364 |
365 | argument { ArgumentName? argumentValue }
366 |
367 | ArgumentName { identifier ~id ':' }
368 |
369 | argumentValue
370 | { expr
371 | | kw<'ref'> expr
372 | | kw<"in"> expr
373 | | kw<'out'> (scoped? localVarType)? VarName
374 | }
375 |
376 |
377 | // General (Expressions)
378 |
379 | primaryExpr
380 | { primaryNoArrayCreationExpr
381 | | ArrayCreationExpr
382 | }
383 |
384 | Ident/*[@dynamicPrecedence=1]*/ { identifier ~tid ~id }
385 |
386 | primaryNoArrayCreationExpr
387 | { literal
388 | | interpolatedStringExpr
389 | | Ident
390 | | ParenOrTupleExpr
391 | | memberAccess
392 | | nullableMemberAccess
393 | | callExpr
394 | | elementAccess
395 | | nullableElementAccess
396 | | thisAccess
397 | | baseAccess
398 | | postIncrementExpr
399 | | postDecrementExpr
400 | | nullCheckExpr
401 | | ObjectCreationExpr
402 | | anonObjectCreationExpr
403 | | typeofExpr
404 | | sizeofExpr
405 | | checkedExpr
406 | | uncheckedExpr
407 | | defaultValueExpr
408 | | nameofExpr
409 | | switchExpr
410 | | withExpr
411 | | anonMethodExpr
412 | | pointerMemberAccess
413 | | stackallocInit
414 | }
415 |
416 |
417 | // Interpolated string expressions
418 |
419 | interpolatedStringExpr { InterpolatedRegularString | InterpolatedVerbatimString }
420 |
421 | InterpolatedRegularString { '$"' interpStringParts* interpStringEnd }
422 |
423 | interpStringParts
424 | { interpStringContent
425 | | interpStringBrace expr (',' literal)? (':' identifier+)? '}'
426 | }
427 |
428 | InterpolatedVerbatimString { ('$@"' | '@$"') interpVStringParts* interpVStringEnd }
429 |
430 | interpVStringParts
431 | { interpVStringContent
432 | | interpVStringBrace expr (',' literal)? (':' identifier+)? '}'
433 | }
434 |
435 |
436 | // Simple names
437 |
438 | simpleName { identifier typeArgumentList? }
439 |
440 |
441 | // Paren/Tuple expressions
442 |
443 | ParenOrTupleExpr[@dynamicPrecedence=-1] { delim<'(' ~tuple csep1 ')'> }
444 |
445 |
446 | // Member access
447 |
448 | memberAccess
449 | { primaryExpr !memberAccess '.' VarName
450 | | primaryExpr !memberAccess memberCall
451 | | SimpleType !memberAccess '.' VarName
452 | | SimpleType !memberAccess memberCall
453 | | QualifiedAliasMember !memberAccess '.' VarName
454 | | QualifiedAliasMember !memberAccess memberCall
455 | }
456 |
457 | memberCall { '.' MethodName typeArgumentList? !memberCall arguments }
458 |
459 |
460 | nullableMemberAccess
461 | { primaryExpr !memberAccess '?' '.' VarName dependentAccess*
462 | | primaryExpr !memberAccess '?' memberCall dependentAccess*
463 | }
464 |
465 |
466 | dependentAccess
467 | { !memberAccess '.' VarName
468 | | memberCall
469 | | !elementAccess delim<'[' argumentList ']'>
470 | | typeArgumentList? !call arguments
471 | }
472 |
473 |
474 | // Call expression
475 |
476 | callExpr
477 | { MethodName typeArgumentList? !call arguments
478 | | primaryExpr typeArgumentList? !call arguments
479 | }
480 |
481 |
482 | // Element access
483 |
484 | elementAccess {
485 | primaryNoArrayCreationExpr !elementAccess ~elementAccess delim<'[' argumentList ']'>
486 | }
487 |
488 | nullableElementAccess {
489 | primaryNoArrayCreationExpr !elementAccess '?' delim<'[' argumentList ']'> dependentAccess*
490 | }
491 |
492 |
493 | // This access
494 |
495 | thisAccess { kw<"this"> }
496 |
497 |
498 | // Base access
499 |
500 | baseAccess
501 | { kw<"base"> !memberAccess '.' simpleName
502 | | kw<"base"> !elementAccess delim<'[' argumentList ']'>
503 | }
504 |
505 |
506 | // Incr/decr operators
507 |
508 | postIncrementExpr { primaryExpr !unary '++' }
509 |
510 | postDecrementExpr { primaryExpr !unary '--' }
511 |
512 | preIncrementExpr { !unary '++' primaryExpr }
513 |
514 | preDecrementExpr { !unary '--' primaryExpr }
515 |
516 |
517 | // Null-check expr
518 |
519 | nullCheckExpr { primaryExpr !unary '!' }
520 |
521 |
522 | // Object creation expr
523 |
524 | ObjectCreationExpr
525 | { !new new nonArrayType? arguments objectOrCollectionInit?
526 | | !new new nonArrayType objectOrCollectionInit
527 | }
528 |
529 | objectOrCollectionInit { objectInit | collectionInit }
530 |
531 |
532 | // Object initializers
533 |
534 | objectInit
535 | { delim<'{' csep1 '}'>
536 | | delim<'{' csep0 ',' '}'>
537 | }
538 |
539 | memberInit { InitializerTarget !assign '=' ref? initializerValue }
540 |
541 | InitializerTarget[@dynamicPrecedence=1]
542 | { identifier ~id
543 | | delim<'[' argumentList ']'>
544 | }
545 |
546 | initializerValue
547 | { nonAssignmentExpr
548 | | objectOrCollectionInit
549 | }
550 |
551 |
552 | // Collection initializers
553 |
554 | collectionInit { delim<'{' csep1 ','? '}'> }
555 |
556 | elementInit
557 | { ref? nonAssignmentExpr
558 | | delim<'{' csep1<(ref? expr)> '}'>
559 | }
560 |
561 | exprList { csep1 }
562 |
563 |
564 | // Array creation expr
565 |
566 | ArrayCreationExpr
567 | { !new new nonArrayType delim<'[' exprList ']'> rankSpecifier* arrayInit?
568 | | !new new arrayType arrayInit
569 | | !new new rankSpecifier arrayInit
570 | }
571 |
572 |
573 | // Anonymous object creation expr
574 |
575 | anonObjectCreationExpr { !new new anonObjectInit }
576 |
577 | anonObjectInit
578 | { delim<'{' csep0 '}'>
579 | | delim<'{' csep1 ',' '}'>
580 | }
581 |
582 | memberDeclarator
583 | { simpleName
584 | | memberAccess
585 | | primaryExpr !memberAccess '?' '.' simpleName
586 | | baseAccess
587 | | identifier !assign '=' ref? expr
588 | }
589 |
590 |
591 | // The typeof operator
592 |
593 | typeofExpr {
594 | kw<"typeof"> delim<'(' ( type | unboundTypeName ) ')'>
595 | }
596 |
597 | unboundTypeNameAccess
598 | { !typeAccess ('.' | '::') TypeIdentifier unboundTypeNameAccess
599 | | !typeArgs genericDimensionSpecifier unboundTypeNameAccess?
600 | }
601 |
602 | unboundTypeName { TypeIdentifier unboundTypeNameAccess }
603 |
604 | genericDimensionSpecifier { !typeArgs '<' ','* '>' }
605 |
606 |
607 | // The sizeof operator
608 |
609 | sizeofExpr { kw<"sizeof"> delim<'(' type ')'> }
610 |
611 |
612 | // The checked/unchecked operators
613 |
614 | checkedExpr { kw<"checked"> delim<'(' expr ')'> }
615 |
616 | uncheckedExpr { kw<"unchecked"> delim<'(' expr ')'> }
617 |
618 |
619 | // Default value expr
620 |
621 | defaultValueExpr { kw<"default"> ~default delim<'(' type ')'> }
622 |
623 |
624 | // Nameof expr
625 |
626 | nameofExpr { kw<"nameof"> delim<'(' namedEntity ')'> }
627 |
628 | namedEntity { namedEntityTarget ('.' simpleName)* }
629 |
630 | namedEntityTarget
631 | { simpleName
632 | | kw<"this">
633 | | kw<"base">
634 | | SimpleType
635 | | QualifiedAliasMember
636 | }
637 |
638 |
639 | // Pointer member access
640 |
641 | pointerMemberAccess { primaryExpr !memberAccess '->' simpleName }
642 |
643 |
644 | // Await expression
645 |
646 | awaitExpr { !unary kw<"await"> expr }
647 |
648 |
649 | // Switch expression
650 |
651 | switchExpr {
652 | primaryExpr !switch kw<"switch">
653 | delim<'{' csep0 ','? '}'>
654 | }
655 |
656 | switchExprBranch { pattern (kw<"when"> expr)? !arrow '=>' expr }
657 |
658 |
659 | // With expression
660 |
661 | withExpr { primaryExpr !with kw<"with"> objectInit }
662 |
663 |
664 | // General
665 |
666 | UnaryExpr
667 | { !unary ('+' | '-' | '!' | '~' | '&' | '*' | '^') expr
668 | | preIncrementExpr
669 | | preDecrementExpr
670 | | Cast[@dynamicPrecedence=1] { delim<'(' ~tuple type ')'> !cast expr }
671 | | awaitExpr
672 | | !throw kw<"throw"> expr
673 | }
674 |
675 |
676 | BinaryExpr
677 | { expr !mul_div ('*' | '/' | '%') expr
678 | | expr !add_sub ('+' | '-') expr
679 | | expr !shift_lr ('<<' | RightShift) expr
680 | | expr !compare ('<' | '>' | '<=' | '>=') expr
681 | | expr !compare kw<"as"> type
682 | | expr !compare kw<"is"> topPattern
683 | | expr !equality ('==' | '!=') expr
684 | | expr !and '&' expr
685 | | expr !xor '^' expr
686 | | expr !or '|' expr
687 | | expr !c_and '&&' expr
688 | | expr !c_or '||' expr
689 | | expr !nullcoal '??' expr
690 | | expr !ternary '?' expr ':' expr
691 | }
692 |
693 |
694 | RangeExpr
695 | { !range '..' expr?
696 | | expr !range '..' expr?
697 | }
698 |
699 |
700 | // Lambda expr
701 |
702 | LambdaExpr[@dynamicPrecedence=1] {
703 | (kw<"async"> | kw<"static">)? type? anonFuncSignature !arrow '=>' anonFuncBody
704 | }
705 |
706 | anonMethodExpr {
707 | kw<"async">? kw<"delegate"> explicitAnonFuncSignature? block
708 | }
709 |
710 | anonFuncSignature {
711 | explicitAnonFuncSignature | implicitAnonFuncSignature
712 | }
713 |
714 | explicitAnonFuncSignature { delim<'(' csep0 ')'> }
715 |
716 | explicitAnonFuncParam { (kw<"ref"> | kw<"out">)? type ParamName }
717 |
718 | implicitAnonFuncSignature
719 | { delim<'(' csep1 ')'>
720 | | ParamName ~id
721 | }
722 |
723 | anonFuncBody { expr | block }
724 |
725 |
726 | // Query expr
727 |
728 | queryExpr { fromClause queryBody }
729 |
730 | fromClause {
731 | ckw<"from"> type? identifier kw<"in"> expr
732 | }
733 |
734 | queryBody {
735 | queryBodyClauses? selectOrGroupClause queryContinuation?
736 | }
737 |
738 | queryBodyClauses
739 | { queryBodyClause
740 | | queryBodyClauses queryBodyClause
741 | }
742 |
743 | queryBodyClause
744 | { fromClause
745 | | letClause
746 | | whereClause
747 | | joinClause
748 | | orderbyClause
749 | }
750 |
751 | letClause { ckw<"let"> identifier !assign '=' expr }
752 |
753 | whereClause { kw<"where"> expr }
754 |
755 | joinClause {
756 | ckw<"join"> type? identifier
757 | kw<"in"> expr
758 | ckw<"on"> expr
759 | ckw<"equals"> expr
760 | (ckw<"into"> identifier)?
761 | }
762 |
763 | orderbyClause { ckw<"orderby"> csep1 }
764 |
765 | ordering { expr orderingDirection }
766 |
767 | orderingDirection { ckw<"ascending"> | ckw<"descending"> }
768 |
769 | selectOrGroupClause { selectClause | groupClause }
770 |
771 | selectClause { ckw<"select"> expr }
772 |
773 | groupClause { ckw<"group"> expr ckw<"by"> expr }
774 |
775 | queryContinuation { !q_into ckw<"into"> identifier queryBody }
776 |
777 |
778 | // Expressions
779 |
780 | assignment { (primaryExpr | UnaryExpr) !assign assignOp ref? expr }
781 |
782 | assignOp
783 | { '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<='
784 | | RightShiftAssignment | '??='
785 | }
786 |
787 |
788 | expr { nonAssignmentExpr | assignment }
789 |
790 | nonAssignmentExpr
791 | { primaryExpr
792 | | UnaryExpr
793 | | BinaryExpr
794 | | RangeExpr
795 | | LambdaExpr
796 | | queryExpr
797 | | kw<"default"> ~default
798 | }
799 |
800 |
801 | // Patterns
802 |
803 | /*topPatternType {
804 |
805 | }
806 |
807 | topPatternTupleType[@dynamicPrecedence=1]
808 | { '(' ~tuple topPatternType !comma ',' csep1 ')'
809 | }*/
810 |
811 | /*
812 | (typeName | SimpleType | TupleType) (!typeUnary2 ~elementAccess rankSpecifier+ nullOrPtr? | nullOrPtr)
813 | */
814 |
815 | topPattern
816 | { pattern
817 | //| type
818 | }
819 |
820 | pattern
821 | { literal
822 | | sep1
823 | | discard
824 | | varPattern
825 | | RelationalPattern
826 | | LogicalPattern
827 | | PropertyPattern
828 | | tuplePattern
829 | | ListPattern
830 | }
831 |
832 |
833 | discard { ckw<"_"> }
834 |
835 |
836 | varPattern
837 | { kw<"var"> varDesignation
838 | | type // BUGGY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
839 | PropertyPatternFields?
840 | varSimpleDesignation
841 | }
842 |
843 | varSimpleDesignation { !varDecl discard | !varDecl VarName }
844 |
845 | varDesignation
846 | { varSimpleDesignation
847 | | delim<'(' ~tuple csep0 ')'>
848 | }
849 |
850 |
851 | RelationalPattern {
852 | !unary ('<' | '>' | '<=' | '>=') pattern
853 | }
854 |
855 |
856 | LogicalPattern
857 | { !unary ckw<"not"> pattern
858 | | pattern !and ckw<"and"> pattern
859 | | pattern !or ckw<"or"> pattern
860 | }
861 |
862 |
863 | PropertyPattern {
864 | //(typeName | SimpleType | arrayType)?
865 | PropertyPatternFields
866 | varSimpleDesignation?
867 | }
868 |
869 | PropertyPatternFields { !new delim<'{' (csep1 ','?)? '}'> }
870 |
871 | PropertyPatternField { sep1 !assign ':' pattern }
872 |
873 |
874 | tuplePattern/*[@dynamicPrecedence=2]*/ {
875 | (typeName | SimpleType)?
876 | delim<'(' ~tuple csep1<(ArgumentName? pattern)> ')'> PropertyPatternFields?
877 | varSimpleDesignation?
878 | }
879 |
880 |
881 | ListPattern {
882 | delim<'[' (csep1<(slicePattern | pattern)> ','?)? ']'>
883 | varSimpleDesignation?
884 | }
885 |
886 | slicePattern {
887 | '..' pattern?
888 | }
889 |
890 |
891 | // General (Statements)
892 |
893 | stmt
894 | { labeledStmt
895 | | declStmt
896 | | embeddedStmt
897 | }
898 |
899 | embeddedStmt
900 | { block
901 | | emptyStmt
902 | | exprStmt
903 | | selectionStmt
904 | | iterationStmt
905 | | jumpStmt
906 | | tryStmt
907 | | checkedStmt
908 | | uncheckedStmt
909 | | lockStmt
910 | | usingStmt
911 | | yieldStmt
912 | | unsafeStmt
913 | | fixedStmt
914 | }
915 |
916 |
917 | // Block
918 |
919 | block { delim<'{' stmtList? '}'> }
920 |
921 |
922 | // Statement list
923 |
924 | stmtList { stmt+ }
925 |
926 |
927 | // Empty statement
928 |
929 | emptyStmt { ';' }
930 |
931 |
932 | // Labeled statement
933 |
934 | labeledStmt { identifier ':' stmt }
935 |
936 |
937 | // Declaration statement
938 |
939 | declStmt
940 | { LocalVarDecl
941 | | LocalConstDecl
942 | | LocalFuncDecl
943 | }
944 |
945 |
946 | // Local variable declaration
947 |
948 | LocalVarDecl
949 | { varRefModifier kw<"var"> csep1
950 | | varRefModifier type csep1
951 | | kw<"var"> varDesignation !assign '=' expr
952 | | kw<"var"> csep1
953 | // BUGGY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
954 | //| type !varDecl varDesignation !assign '=' expr
955 | | type !varDecl csep1
956 | }
957 |
958 | varRefModifier
959 | { scoped refReadonly?
960 | | refReadonly
961 | }
962 |
963 | refReadonly
964 | { readonly ref readonly
965 | | readonly ref
966 | | ref readonly
967 | | ref ~ref
968 | }
969 |
970 | localVarType { type | kw<"var"> }
971 |
972 | VarName { identifier ~tid }
973 |
974 | varDeclarator { VarName (!assign '=' ref? varInit)? }
975 |
976 | varInit
977 | { expr
978 | | arrayInit
979 | }
980 |
981 |
982 | // Local constant declaration
983 |
984 | LocalConstDecl {
985 | kw<"const"> type csep1
986 | }
987 |
988 | ConstName { identifier ~tid }
989 |
990 | constDeclarator { ConstName !assign '=' expr }
991 |
992 |
993 | // Local function declaration
994 |
995 | LocalFuncDecl { localFuncHeader localFuncBody }
996 |
997 | localFuncHeader {
998 | (kw<"async"> | kw<"unsafe"> | kw<"static"> | kw<"extern">)*
999 | (ref ~ref)? type MethodName
1000 | (!typeParams typeParamList)? !params formalParams
1001 | typeParamConstraintsClause*
1002 | }
1003 |
1004 | localFuncBody
1005 | { block
1006 | | '=>' ref? expr ';'
1007 | }
1008 |
1009 |
1010 | // Expression statement
1011 |
1012 | exprStmt { stmtExpr ';' }
1013 |
1014 | stmtExpr
1015 | { callExprStmt
1016 | | ObjectCreationExpr
1017 | | assignment
1018 | | postIncrementExpr
1019 | | postDecrementExpr
1020 | | preIncrementExpr
1021 | | preDecrementExpr
1022 | | awaitExpr
1023 | }
1024 |
1025 | callExprStmt
1026 | { MethodName typeArgumentList? !call arguments
1027 | | primaryExpr !memberAccess memberCall
1028 | | primaryExpr typeArgumentList? !call arguments
1029 | }
1030 |
1031 |
1032 | // Selection statement
1033 |
1034 | selectionStmt { ifStmt | switchStmt }
1035 |
1036 |
1037 | // If statement
1038 |
1039 | ifStmt {
1040 | kw<"if"> delim<'(' expr ')'> embeddedStmt
1041 | (!else kw<"else"> embeddedStmt)?
1042 | }
1043 |
1044 |
1045 | // Switch statement
1046 |
1047 | switchStmt { kw<"switch"> delim<'(' expr ')'> switchBlock }
1048 |
1049 | switchBlock { delim<'{' switchBodyStart? '}'> }
1050 |
1051 | switchBodyStart
1052 | { kw<"case"> pattern (kw<"when"> expr)? ':' switchBody?
1053 | | kw<"default"> ':' switchBody?
1054 | }
1055 |
1056 | switchBody
1057 | { kw<"case"> pattern (kw<"when"> expr)? ':' switchBody?
1058 | | kw<"default"> ~default ':' stmt*
1059 | | stmt switchBody?
1060 | }
1061 |
1062 |
1063 | // Iteration statement
1064 |
1065 | iterationStmt
1066 | { whileStmt
1067 | | doStmt
1068 | | forStmt
1069 | | foreachStmt
1070 | }
1071 |
1072 |
1073 | // While statement
1074 |
1075 | whileStmt { kw<"while"> delim<'(' expr ')'> embeddedStmt }
1076 |
1077 |
1078 | // Do statement
1079 |
1080 | doStmt { kw<"do"> embeddedStmt kw<"while"> delim<'(' expr ')'> ';' }
1081 |
1082 |
1083 | // For statement
1084 |
1085 | forStmt {
1086 | kw<"for"> delim<'(' forInit? ';' expr? ';' forIter? ')'> embeddedStmt
1087 | }
1088 |
1089 | forInit { LocalVarDecl | csep1 }
1090 |
1091 | forIter { csep1 }
1092 |
1093 |
1094 | // Foreach statement
1095 |
1096 | foreachStmt {
1097 | kw<"await">? kw<"foreach"> delim<'(' scoped? localVarType varDesignation kw<"in"> expr ')'>
1098 | embeddedStmt
1099 | }
1100 |
1101 |
1102 | // Control flow statement
1103 |
1104 | jumpStmt
1105 | { breakStmt
1106 | | continueStmt
1107 | | gotoStmt
1108 | | returnStmt
1109 | | throwStmt
1110 | }
1111 |
1112 | breakStmt { kw<"break"> ';' }
1113 |
1114 | continueStmt { kw<"continue"> ';' }
1115 |
1116 | gotoStmt
1117 | { kw<"goto"> identifier ';'
1118 | | kw<"goto"> kw<"case"> expr ';'
1119 | | kw<"goto"> kw<"default"> ';'
1120 | }
1121 |
1122 | returnStmt { kw<"return"> (ref? expr)? ';' }
1123 |
1124 | throwStmt { kw<"throw"> expr? ';' }
1125 |
1126 |
1127 | // Try statement
1128 |
1129 | tryStmt
1130 | { kw<"try"> block catchClauses
1131 | | kw<"try"> block catchClauses? finallyClause
1132 | }
1133 |
1134 | catchClauses
1135 | { specificCatchClause+
1136 | | specificCatchClause* generalCatchClause
1137 | }
1138 |
1139 | specificCatchClause
1140 | { kw<"catch"> exceptionSpecifier exceptionFilter? block
1141 | | kw<"catch"> exceptionFilter block
1142 | }
1143 |
1144 | exceptionSpecifier { delim<'(' type VarName? ')'> }
1145 |
1146 | exceptionFilter { kw<"when"> delim<'(' expr ')'> }
1147 |
1148 | generalCatchClause { kw<"catch"> block }
1149 |
1150 | finallyClause { kw<"finally"> block }
1151 |
1152 |
1153 | // Checked/Unchecked statement
1154 |
1155 | checkedStmt { kw<"checked"> block }
1156 |
1157 | uncheckedStmt { kw<"unchecked"> block }
1158 |
1159 |
1160 | // Lock statement
1161 |
1162 | lockStmt { kw<"lock"> delim<'(' expr ')'> embeddedStmt }
1163 |
1164 |
1165 | // Using statement
1166 |
1167 | usingStmt { kw<"using"> delim<'(' resourceAcquisition ')'> embeddedStmt }
1168 |
1169 | resourceAcquisition { LocalVarDecl | expr }
1170 |
1171 |
1172 | // Yield statement
1173 |
1174 | yieldStmt
1175 | { kw<"yield"> kw<"return"> expr ';'
1176 | | kw<"yield"> kw<"break"> ';'
1177 | }
1178 |
1179 |
1180 | // Unsafe statement
1181 |
1182 | unsafeStmt { kw<"unsafe"> block }
1183 |
1184 |
1185 | // Fixed statement
1186 |
1187 | fixedStmt {
1188 | kw<"fixed"> delim<'(' type csep1 ')'> embeddedStmt
1189 | }
1190 |
1191 | fixedPtrDeclarator { identifier '=' expr }
1192 |
1193 |
1194 | // Compilation unit
1195 |
1196 | compilationUnit {
1197 | externAliasDirective* usingDirective* /*globalAttrs?*/ namespaceMemberDecl*
1198 | }
1199 |
1200 |
1201 | // Namespace declaration
1202 |
1203 | namespaceDecl { kw<"namespace"> sep1 namespaceBody? ';'? }
1204 |
1205 | namespaceBody {
1206 | delim<'{' externAliasDirective* usingDirective* namespaceMemberDecl* '}'>
1207 | }
1208 |
1209 |
1210 | // Extern alias directive
1211 |
1212 | externAliasDirective { kw<"extern"> kw<"alias"> identifier ';' }
1213 |
1214 |
1215 | // Using directive
1216 |
1217 | usingDirective
1218 | { kw<"using"> TypeIdentifier '=' namespaceOrTypeName ';'
1219 | | kw<"global">? kw<"using"> namespaceName ';'
1220 | | kw<"global">? kw<"using"> kw<"static"> typeName ';'
1221 | }
1222 |
1223 |
1224 | // Namespace member declaration
1225 |
1226 | namespaceMemberDecl { namespaceDecl | typeDecl }
1227 |
1228 |
1229 | // Type declaration
1230 |
1231 | typeDecl
1232 | { classDecl
1233 | | structDecl
1234 | | interfaceDecl
1235 | | recordDecl
1236 | | enumDecl
1237 | | delegateDecl
1238 | }
1239 |
1240 |
1241 | // General
1242 |
1243 | QualifiedAliasMember { TypeIdentifier !typeAccess '::' TypeIdentifier typeArgumentList? }
1244 |
1245 |
1246 | // Modifiers
1247 |
1248 | modifier
1249 | { kw<'new'>
1250 | | kw<'public'>
1251 | | kw<'protected'>
1252 | | kw<'internal'>
1253 | | kw<'private'>
1254 | | kw<'static'>
1255 | | kw<'virtual'>
1256 | | kw<'sealed'>
1257 | | kw<'override'>
1258 | | kw<'abstract'>
1259 | | kw<'extern'>
1260 | | kw<'unsafe'>
1261 | | kw<'async'>
1262 | | kw<'readonly'>
1263 | | kw<'volatile'>
1264 | | kw<'partial'>
1265 | | kw<'ref'>
1266 | | kw<'required'>
1267 | | ckw<'file'>
1268 | }
1269 |
1270 |
1271 | // Type parameters
1272 |
1273 | typeParamList { '<' typeParams '>' }
1274 |
1275 | typeParams { csep1<(attrs? typeParam)> }
1276 |
1277 | typeParam { TypeIdentifier }
1278 |
1279 |
1280 | // Type parameter constraints
1281 |
1282 | typeParamConstraintsClause { kw<"where"> typeParam ':' typeParamConstraints }
1283 |
1284 | typeParamConstraints
1285 | { csep1 (',' ctorConstraint)?
1286 | | ctorConstraint
1287 | }
1288 |
1289 | primaryConstraint
1290 | { typeName '?'?
1291 | | kw<"class"> '?'?
1292 | | kw<"struct">
1293 | | kw<"notnull">
1294 | | kw<"default">
1295 | | kw<"unmanaged">
1296 | }
1297 |
1298 | ctorConstraint { new '(' ')' }
1299 |
1300 |
1301 | // Class declaration
1302 |
1303 | classDecl {
1304 | attrs? modifier* kw<"class">
1305 | TypeIdentifier typeParamList? classBase? typeParamConstraintsClause*
1306 | classBody ';'?
1307 | }
1308 |
1309 | classBase { ':' csep1 }
1310 |
1311 | classBody { delim<'{' classMemberDecl* '}'> }
1312 |
1313 | classMemberDecl
1314 | { constantDecl
1315 | | fieldDecl
1316 | | methodDecl
1317 | | propertyDecl
1318 | | eventDecl
1319 | | indexerDecl
1320 | | operatorDecl
1321 | | ctorDecl
1322 | | finalizerDecl
1323 | | typeDecl
1324 | }
1325 |
1326 |
1327 | // Constant declaration
1328 |
1329 | constantDecl {
1330 | attrs? modifier* kw<"const"> type csep1 ';'
1331 | }
1332 |
1333 |
1334 | // Field declaration
1335 |
1336 | fieldDecl {
1337 | attrs? modifier* type csep1 ';'
1338 | }
1339 |
1340 |
1341 | // Method declaration
1342 |
1343 | methodDecl { attrs? modifier* methodHeader typeParamConstraintsClause* methodBody }
1344 |
1345 | // BUGGY!!!!!!!!!!!!!!!!!!!!!!!!!!
1346 | // type args get confused with type params
1347 | memberTypeNameAccess
1348 | { !typeAccess '.' TypeIdentifier typeArgumentList? memberTypeNameAccess
1349 | | !typeAccess '.' end
1350 | }
1351 |
1352 | memberTypeName
1353 | { TypeIdentifier typeArgumentList? memberTypeNameAccess
1354 | | QualifiedAliasMember memberTypeNameAccess
1355 | | end
1356 | }
1357 |
1358 | MethodName { identifier ~tid }
1359 |
1360 | methodHeader {
1361 | type memberTypeName<(MethodName typeParamList?)> !params formalParams
1362 | }
1363 |
1364 | methodBody
1365 | { block
1366 | | '=>' ref? expr ';'
1367 | | ';'
1368 | }
1369 |
1370 |
1371 | // Parameters
1372 |
1373 | formalParams { delim<'(' formalParamList? ')'> }
1374 |
1375 | formalParamList
1376 | { attrs? paramModifier? type ParamName defaultArg? (!comma ',' formalParamList)?
1377 | | attrs? ckw<"params"> arrayType ParamName
1378 | }
1379 |
1380 | ParamName { identifier ~id ~tid }
1381 |
1382 | fixedParam {
1383 | attrs? paramModifier? type ParamName defaultArg?
1384 | }
1385 |
1386 | defaultArg { !assign '=' expr }
1387 |
1388 | paramModifier
1389 | { paramModeModifier
1390 | | scoped paramModeModifier?
1391 | | kw<"this"> scoped? paramModeModifier?
1392 | }
1393 |
1394 | paramModeModifier
1395 | { kw<"ref">
1396 | | kw<"out">
1397 | | kw<"in">
1398 | }
1399 |
1400 |
1401 | // Property declaration
1402 |
1403 | propertyDecl {
1404 | attrs? modifier* type propertyName propertyBody
1405 | }
1406 |
1407 | PropertyName { identifier ~tid }
1408 |
1409 | // TODO: fix `type A.B()` parsing `A.B` as full type
1410 | propertyName { memberTypeName }
1411 |
1412 | propertyBody
1413 | { delim<'{' accessorDecls '}'> propertyInit?
1414 | | '=>' ref? expr ';'
1415 | }
1416 |
1417 | propertyInit { '=' varInit ';' }
1418 |
1419 | accessorDecls
1420 | { getAccessorDecl setAccessorDecl?
1421 | | setAccessorDecl getAccessorDecl?
1422 | }
1423 |
1424 | getAccessorDecl { attrs? accessorModifier? kw<"get"> accessorBody }
1425 |
1426 | setAccessorDecl { attrs? accessorModifier? (kw<"set"> | kw<"init">) accessorBody }
1427 |
1428 | accessorModifier
1429 | { kw<'protected'>
1430 | | kw<'internal'>
1431 | | kw<'private'>
1432 | | kw<'protected'> kw<'internal'>
1433 | | kw<'internal'> kw<'protected'>
1434 | | kw<'protected'> kw<'private'>
1435 | | kw<'private'> kw<'protected'>
1436 | }
1437 |
1438 | accessorBody
1439 | { block
1440 | | '=>' ref? expr ';'
1441 | | ';'
1442 | }
1443 |
1444 |
1445 | // Event declaration
1446 |
1447 | eventDecl {
1448 | attrs? modifier* kw<"event"> type
1449 | ( csep1
1450 | | memberTypeName delim<'{' eventAccessorDecls '}'>
1451 | )
1452 | }
1453 |
1454 | eventAccessorDecls
1455 | { addAccessorDecl removeAccessorDecl
1456 | | removeAccessorDecl addAccessorDecl
1457 | }
1458 |
1459 | addAccessorDecl { attrs? ckw<"add"> block }
1460 |
1461 | removeAccessorDecl { attrs? ckw<"remove"> block }
1462 |
1463 |
1464 | // Indexer declaration
1465 |
1466 | indexerDecl {
1467 | attrs? modifier* indexerDeclarator indexerBody
1468 | }
1469 |
1470 | indexerDeclarator { type memberTypeName> delim<'[' formalParamList ']'> }
1471 |
1472 | indexerBody
1473 | { delim<'{' accessorDecls '}'>
1474 | | '=>' ref? expr ';'
1475 | }
1476 |
1477 |
1478 | // Operator declaration
1479 |
1480 | operatorDecl {
1481 | attrs? modifier+ operatorDeclarator operatorBody
1482 | }
1483 |
1484 | operatorDeclarator
1485 | { unaryOpDeclarator
1486 | | binaryOpDeclarator
1487 | | conversionOpDeclarator
1488 | }
1489 |
1490 | unaryOpDeclarator {
1491 | type kw<"operator">
1492 | ( '+' | '-' | '!' | '~' | '++' | '--' | BooleanLiteral )
1493 | delim<'(' fixedParam ')'>
1494 | }
1495 |
1496 | binaryOpDeclarator {
1497 | type kw<"operator">
1498 | ( '+' | '-' | '*' | '/' | '%' | '&' | '|' | '^' | '<<'
1499 | | RightShift | '==' | '!=' | '>' | '<' | '>=' | '<='
1500 | )
1501 | delim<'(' fixedParam ',' fixedParam ')'>
1502 | }
1503 |
1504 | conversionOpDeclarator {
1505 | (kw<"implicit"> | kw<"explicit">) kw<"operator"> type
1506 | delim<'(' fixedParam ')'>
1507 | }
1508 |
1509 | operatorBody
1510 | { block
1511 | | '=>' ref? expr ';'
1512 | | ';'
1513 | }
1514 |
1515 |
1516 | // Constructor declaration
1517 |
1518 | ctorDecl {
1519 | attrs? modifier* ctorDeclarator ctorBody
1520 | }
1521 |
1522 | ctorDeclarator {
1523 | TypeIdentifier formalParams ctorInit
1524 | }
1525 |
1526 | ctorInit { ':' (kw<"base"> | kw<"this">) arguments }
1527 |
1528 | ctorBody
1529 | { block
1530 | | '=>' expr ';'
1531 | | ';'
1532 | }
1533 |
1534 |
1535 | // Finalizer declaration
1536 |
1537 | finalizerDecl {
1538 | attrs? modifier* '~' TypeIdentifier '(' ')' finalizerBody
1539 | }
1540 |
1541 | finalizerBody
1542 | { block
1543 | | '=>' expr ';'
1544 | | ';'
1545 | }
1546 |
1547 |
1548 | // Struct declaration
1549 |
1550 | structDecl {
1551 | attrs? modifier* kw<"struct">
1552 | TypeIdentifier typeParamList? classBase? typeParamConstraintsClause*
1553 | structBody ';'?
1554 | }
1555 |
1556 | structBody { delim<'{' structMemberDecl* '}'> }
1557 |
1558 | structMemberDecl
1559 | { constantDecl
1560 | | fieldDecl
1561 | | methodDecl
1562 | | propertyDecl
1563 | | eventDecl
1564 | | indexerDecl
1565 | | operatorDecl
1566 | | ctorDecl
1567 | | typeDecl
1568 | | fixedSizeBufferDecl
1569 | }
1570 |
1571 |
1572 | // Array initializer
1573 |
1574 | arrayInit
1575 | { delim<'{' varInitList? '}'>
1576 | | delim<'{' varInitList ',' '}'>
1577 | }
1578 |
1579 | varInitList { csep1<(expr | arrayInit)> }
1580 |
1581 |
1582 | // Stackalloc initializer
1583 |
1584 | stackallocInit
1585 | { kw<"stackalloc"> nonArrayType delim<'[' expr ']'>
1586 | | kw<"stackalloc"> delim<'[' expr? ']'> delim<'{' csep1 '}'>
1587 | }
1588 |
1589 |
1590 | // Interface declaration
1591 |
1592 | interfaceDecl {
1593 | attrs? modifier* kw<"interface">
1594 | TypeIdentifier variantTypeParamList? classBase? typeParamConstraintsClause*
1595 | interfaceBody ';'?
1596 | }
1597 |
1598 | variantTypeParamList { '<' csep1 '>' }
1599 |
1600 | variantTypeParam { attrs? varianceAnnotation? typeParam }
1601 |
1602 | varianceAnnotation { kw<"in"> | kw<"out"> }
1603 |
1604 | interfaceBody { delim<'{' interfaceMemberDecl* '}'> }
1605 |
1606 | interfaceMemberDecl
1607 | { interfaceMethodDecl
1608 | | interfacePropertyDecl
1609 | | interfaceEventDecl
1610 | | interfaceIndexerDecl
1611 | }
1612 |
1613 |
1614 | // Interface method declaration
1615 |
1616 | interfaceMethodDecl {
1617 | attrs? new? type MethodName typeParamList?
1618 | formalParams typeParamConstraintsClause* ';'
1619 | }
1620 |
1621 |
1622 | // Interface property declaration
1623 |
1624 | interfacePropertyDecl {
1625 | attrs? new? type PropertyName delim<'{' interfaceAccessors '}'>
1626 | }
1627 |
1628 | interfaceAccessors
1629 | { attrs? kw<"get"> ';'
1630 | | attrs? kw<"set"> ';'
1631 | | attrs? kw<"get"> ';' attrs? kw<"set"> ';'
1632 | | attrs? kw<"set"> ';' attrs? kw<"get"> ';'
1633 | }
1634 |
1635 |
1636 | // Interface event declaration
1637 |
1638 | interfaceEventDecl {
1639 | attrs? new? kw<"event"> type MethodName ';'
1640 | }
1641 |
1642 |
1643 | // Interface indexer declaration
1644 |
1645 | interfaceIndexerDecl {
1646 | attrs? new? type kw<"this"> delim<'[' formalParamList ']'>
1647 | delim<'{' interfaceAccessors '}'>
1648 | }
1649 |
1650 |
1651 | // Record declaration
1652 |
1653 | recordDecl {
1654 | attrs? modifier* kw<"record"> kw<"struct">?
1655 | TypeIdentifier typeParamList? typeParamConstraintsClause*
1656 | formalParams? recordBase?
1657 | (classBody ';'? | ';')
1658 | }
1659 |
1660 | recordBase {
1661 | ':' typeName arguments? (',' typeName)*
1662 | }
1663 |
1664 |
1665 | // Enum declaration
1666 |
1667 | enumDecl {
1668 | attrs? modifier* kw<"enum"> TypeIdentifier enumBase? enumBody
1669 | }
1670 |
1671 | enumBase { ':' (SimpleType | typeName) }
1672 |
1673 | enumBody
1674 | { delim<'{' csep1 '}'>
1675 | | delim<'{' csep0 ',' '}'>
1676 | }
1677 |
1678 | enumMemberDecl {
1679 | attrs? ConstName ('=' expr)?
1680 | }
1681 |
1682 |
1683 | // Delegate declaration
1684 |
1685 | delegateDecl {
1686 | attrs? modifier* kw<"delegate"> type TypeIdentifier
1687 | variantTypeParamList? formalParams typeParamConstraintsClause*
1688 | ';'
1689 | }
1690 |
1691 |
1692 | // Fixed-size buffer declaration
1693 |
1694 | fixedSizeBufferDecl {
1695 | attrs? modifier* kw<"fixed"> type
1696 | csep1 ';'
1697 | }
1698 |
1699 | fixedSizeBufferDeclarator { identifier delim<'[' expr ']'> }
1700 |
1701 |
1702 | // Attributes
1703 |
1704 | /*globalAttrs { globalAttrSection+ }
1705 |
1706 | globalAttrSection {
1707 | '[' globalAttrTargetSpecifier csep1 ','? ']'
1708 | }
1709 |
1710 | globalAttrTargetSpecifier { globalAttrTarget ':' }
1711 |
1712 | globalAttrTarget { identifier }*/
1713 |
1714 | attrs { attrSection+ }
1715 |
1716 | attrSection {
1717 | delim<'[' attrTargetSpecifier? csep1 ','? ']'>
1718 | }
1719 |
1720 | attrTargetSpecifier { attrTarget ':' }
1721 |
1722 | attrTarget { identifier }
1723 |
1724 | attr { typeName attrArgs? }
1725 |
1726 | attrArgs { delim<'(' attrArgListPos? ')'> }
1727 |
1728 | attrArgListPos
1729 | { ArgumentName nonAssignmentExpr (!comma ',' attrArgListPos)?
1730 | | nonAssignmentExpr (!comma ',' attrArgListPos)?
1731 | | AttrsNamedArg !assign '=' nonAssignmentExpr (!comma ',' attrArgListNamed)
1732 | }
1733 |
1734 | attrArgListNamed {
1735 | AttrsNamedArg !assign '=' nonAssignmentExpr (!comma ',' attrArgListNamed)
1736 | }
1737 |
1738 | AttrsNamedArg[@dynamicPrecedence=1] { identifier ~id }
1739 |
1740 |
1741 | // Util
1742 |
1743 | kw { @specialize[@name=Keyword] }
1744 |
1745 | ckw { @extend[@name=ContextualKeyword] }
1746 |
1747 | delim { delim[@name=Delim] { contents } }
1748 |
1749 | sep1 { rule (by rule)* }
1750 |
1751 | //sep0 { sep1? }
1752 |
1753 | csep1 { sep1 }
1754 |
1755 | csep0 { csep1? }
1756 |
--------------------------------------------------------------------------------
/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.16.7"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
8 | integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
9 | dependencies:
10 | "@babel/highlight" "^7.16.7"
11 |
12 | "@babel/helper-validator-identifier@^7.16.7":
13 | version "7.16.7"
14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
15 | integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
16 |
17 | "@babel/highlight@^7.16.7":
18 | version "7.17.9"
19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3"
20 | integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==
21 | dependencies:
22 | "@babel/helper-validator-identifier" "^7.16.7"
23 | chalk "^2.0.0"
24 | js-tokens "^4.0.0"
25 |
26 | "@codemirror/autocomplete@^6.0.0":
27 | version "6.3.2"
28 | resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.3.2.tgz#cfd5d8eb2348dddf7b63098f9f09ff47b02f57db"
29 | integrity sha512-+VzxrHWkuvSSt0fw4I57SULo/NMrLnNgm6JHrkbIYfDw9jZJNTruCwkv32TCqSeC8xIXhYWMuxawwr/xOoHr8w==
30 | dependencies:
31 | "@codemirror/language" "^6.0.0"
32 | "@codemirror/state" "^6.0.0"
33 | "@codemirror/view" "^6.5.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.1.2"
56 | resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.1.2.tgz#84fb7d170047c3aeb7b0047ace59510bb19208de"
57 | integrity sha512-sO3jdX1s0pam6lIdeSJLMN3DQ6mPEbM4yLvyKkdqtmd/UDwhXA5+AwFJ89rRXm6vTeOXBsE5cAmlos/t7MJdgg==
58 | dependencies:
59 | "@codemirror/language" "^6.0.0"
60 | "@codemirror/state" "^6.0.0"
61 | "@codemirror/view" "^6.0.0"
62 | "@lezer/common" "^1.0.0"
63 |
64 | "@codemirror/language@^6.0.0":
65 | version "6.3.1"
66 | resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.3.1.tgz#1d61f33aa5de9aa74a713ee1f5ce600adc74df6b"
67 | integrity sha512-MK+G1QKaGfSEUg9YEFaBkMBI6j1ge4VMBPZv9fDYotw7w695c42x5Ba1mmwBkesYnzYFBfte6Hh9TDcKa6xORQ==
68 | dependencies:
69 | "@codemirror/state" "^6.0.0"
70 | "@codemirror/view" "^6.0.0"
71 | "@lezer/common" "^1.0.0"
72 | "@lezer/highlight" "^1.0.0"
73 | "@lezer/lr" "^1.0.0"
74 | style-mod "^4.0.0"
75 |
76 | "@codemirror/lint@^6.0.0":
77 | version "6.1.0"
78 | resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.1.0.tgz#f006142d3a580fdb8ffc2faa3361b2232c08e079"
79 | integrity sha512-mdvDQrjRmYPvQ3WrzF6Ewaao+NWERYtpthJvoQ3tK3t/44Ynhk8ZGjTSL9jMEv8CgSMogmt75X8ceOZRDSXHtQ==
80 | dependencies:
81 | "@codemirror/state" "^6.0.0"
82 | "@codemirror/view" "^6.0.0"
83 | crelt "^1.0.5"
84 |
85 | "@codemirror/search@^6.0.0":
86 | version "6.2.3"
87 | resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-6.2.3.tgz#fab933fef1b1de8ef40cda275c73d9ac7a1ff40f"
88 | integrity sha512-V9n9233lopQhB1dyjsBK2Wc1i+8hcCqxl1wQ46c5HWWLePoe4FluV3TGHoZ04rBRlGjNyz9DTmpJErig8UE4jw==
89 | dependencies:
90 | "@codemirror/state" "^6.0.0"
91 | "@codemirror/view" "^6.0.0"
92 | crelt "^1.0.5"
93 |
94 | "@codemirror/state@^6.0.0", "@codemirror/state@^6.1.4":
95 | version "6.1.4"
96 | resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.1.4.tgz#2b654ae233ac4f41ee89ce095509ea35ecdf1031"
97 | integrity sha512-g+3OJuRylV5qsXuuhrc6Cvs1NQluNioepYMM2fhnpYkNk7NgX+j0AFuevKSVKzTDmDyt9+Puju+zPdHNECzCNQ==
98 |
99 | "@codemirror/theme-one-dark@^6.0.0":
100 | version "6.1.0"
101 | resolved "https://registry.yarnpkg.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.0.tgz#6f8b3c7fc22e9fec59edd573f4ba9546db42e007"
102 | integrity sha512-AiTHtFRu8+vWT9wWUWDM+cog6ZwgivJogB1Tm/g40NIpLwph7AnmxrSzWfvJN5fBVufsuwBxecQCNmdcR5D7Aw==
103 | dependencies:
104 | "@codemirror/language" "^6.0.0"
105 | "@codemirror/state" "^6.0.0"
106 | "@codemirror/view" "^6.0.0"
107 | "@lezer/highlight" "^1.0.0"
108 |
109 | "@codemirror/view@^6.0.0", "@codemirror/view@^6.5.0":
110 | version "6.5.1"
111 | resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.5.1.tgz#f4533cd796f0569508822d0012bee9a15dc4b3f9"
112 | integrity sha512-xBKP8N3AXOs06VcKvIuvIQoUlGs7Hb78ftJWahLaRX909jKPMgGxR5XjvrawzTTZMSTU3DzdjDNPwG6fPM/ypQ==
113 | dependencies:
114 | "@codemirror/state" "^6.1.4"
115 | style-mod "^4.0.0"
116 | w3c-keyname "^2.2.4"
117 |
118 | "@esbuild/linux-loong64@0.14.54":
119 | version "0.14.54"
120 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
121 | integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
122 |
123 | "@lezer/common@^1.0.0":
124 | version "1.0.1"
125 | resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.0.1.tgz#d014fda6d582c24336fadf2715e76f02f73c8908"
126 | integrity sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==
127 |
128 | "@lezer/generator@^1.0.0":
129 | version "1.1.3"
130 | resolved "https://registry.yarnpkg.com/@lezer/generator/-/generator-1.1.3.tgz#ec57d5594142421d4f58637400486a43afb55ea5"
131 | integrity sha512-qGF0I2TTJ+VBjjsVX8FGqKJy3laALBnVbD5EbXEu13Sgszl/vjnxjcZ69O8w9IK8/WtVFQLspU4UjCCUNRlWzA==
132 | dependencies:
133 | "@lezer/common" "^1.0.0"
134 | "@lezer/lr" "^1.0.0"
135 |
136 | "@lezer/highlight@^1.0.0":
137 | version "1.1.2"
138 | resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.1.2.tgz#60cd6c2a0a2cf753b8a026b04feeb0ea8df326ea"
139 | integrity sha512-CAun1WR1glxG9ZdOokTZwXbcwB7PXkIEyZRUMFBVwSrhTcogWq634/ByNImrkUnQhjju6xsIaOBIxvcRJtplXQ==
140 | dependencies:
141 | "@lezer/common" "^1.0.0"
142 |
143 | "@lezer/lr@^1.0.0":
144 | version "1.2.4"
145 | resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.2.4.tgz#380b8586c5578ca5d1187afd2284d51af103951e"
146 | integrity sha512-L/52/oMJBFXXx8qBYF4UgktLP2geQ/qn5Fd8+5L/mqlLLCB9+qdKktFAtejd9FdFMaFx6lrP5rmLz4sN3Kplcg==
147 | dependencies:
148 | "@lezer/common" "^1.0.0"
149 |
150 | "@types/mocha@^9.1.1":
151 | version "9.1.1"
152 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4"
153 | integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==
154 |
155 | "@ungap/promise-all-settled@1.1.2":
156 | version "1.1.2"
157 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
158 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==
159 |
160 | acorn-walk@^8.0.0, acorn-walk@^8.0.2:
161 | version "8.2.0"
162 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
163 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
164 |
165 | acorn@^8.0.4, acorn@^8.1.0:
166 | version "8.7.0"
167 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
168 | integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
169 |
170 | ansi-colors@4.1.1:
171 | version "4.1.1"
172 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
173 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
174 |
175 | ansi-regex@^5.0.1:
176 | version "5.0.1"
177 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
178 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
179 |
180 | ansi-styles@^3.2.1:
181 | version "3.2.1"
182 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
183 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
184 | dependencies:
185 | color-convert "^1.9.0"
186 |
187 | ansi-styles@^4.0.0, ansi-styles@^4.1.0:
188 | version "4.3.0"
189 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
190 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
191 | dependencies:
192 | color-convert "^2.0.1"
193 |
194 | anymatch@~3.1.2:
195 | version "3.1.2"
196 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
197 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
198 | dependencies:
199 | normalize-path "^3.0.0"
200 | picomatch "^2.0.4"
201 |
202 | argparse@^2.0.1:
203 | version "2.0.1"
204 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
205 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
206 |
207 | balanced-match@^1.0.0:
208 | version "1.0.2"
209 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
210 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
211 |
212 | binary-extensions@^2.0.0:
213 | version "2.2.0"
214 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
215 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
216 |
217 | brace-expansion@^1.1.7:
218 | version "1.1.11"
219 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
220 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
221 | dependencies:
222 | balanced-match "^1.0.0"
223 | concat-map "0.0.1"
224 |
225 | brace-expansion@^2.0.1:
226 | version "2.0.1"
227 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
228 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
229 | dependencies:
230 | balanced-match "^1.0.0"
231 |
232 | braces@~3.0.2:
233 | version "3.0.2"
234 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
235 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
236 | dependencies:
237 | fill-range "^7.0.1"
238 |
239 | browser-stdout@1.3.1:
240 | version "1.3.1"
241 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
242 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
243 |
244 | call-bind@^1.0.0, call-bind@^1.0.2:
245 | version "1.0.2"
246 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
247 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
248 | dependencies:
249 | function-bind "^1.1.1"
250 | get-intrinsic "^1.0.2"
251 |
252 | camelcase@^6.0.0:
253 | version "6.3.0"
254 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
255 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
256 |
257 | chalk@^2.0.0, chalk@^2.4.1:
258 | version "2.4.2"
259 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
260 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
261 | dependencies:
262 | ansi-styles "^3.2.1"
263 | escape-string-regexp "^1.0.5"
264 | supports-color "^5.3.0"
265 |
266 | chalk@^4.1.0:
267 | version "4.1.2"
268 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
269 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
270 | dependencies:
271 | ansi-styles "^4.1.0"
272 | supports-color "^7.1.0"
273 |
274 | chokidar@3.5.3:
275 | version "3.5.3"
276 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
277 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
278 | dependencies:
279 | anymatch "~3.1.2"
280 | braces "~3.0.2"
281 | glob-parent "~5.1.2"
282 | is-binary-path "~2.1.0"
283 | is-glob "~4.0.1"
284 | normalize-path "~3.0.0"
285 | readdirp "~3.6.0"
286 | optionalDependencies:
287 | fsevents "~2.3.2"
288 |
289 | cliui@^7.0.2:
290 | version "7.0.4"
291 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
292 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
293 | dependencies:
294 | string-width "^4.2.0"
295 | strip-ansi "^6.0.0"
296 | wrap-ansi "^7.0.0"
297 |
298 | codemirror@^6.0.0:
299 | version "6.0.1"
300 | resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-6.0.1.tgz#62b91142d45904547ee3e0e0e4c1a79158035a29"
301 | integrity sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==
302 | dependencies:
303 | "@codemirror/autocomplete" "^6.0.0"
304 | "@codemirror/commands" "^6.0.0"
305 | "@codemirror/language" "^6.0.0"
306 | "@codemirror/lint" "^6.0.0"
307 | "@codemirror/search" "^6.0.0"
308 | "@codemirror/state" "^6.0.0"
309 | "@codemirror/view" "^6.0.0"
310 |
311 | color-convert@^1.9.0:
312 | version "1.9.3"
313 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
314 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
315 | dependencies:
316 | color-name "1.1.3"
317 |
318 | color-convert@^2.0.1:
319 | version "2.0.1"
320 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
321 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
322 | dependencies:
323 | color-name "~1.1.4"
324 |
325 | color-name@1.1.3:
326 | version "1.1.3"
327 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
328 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
329 |
330 | color-name@~1.1.4:
331 | version "1.1.4"
332 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
333 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
334 |
335 | concat-map@0.0.1:
336 | version "0.0.1"
337 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
338 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
339 |
340 | core-util-is@~1.0.0:
341 | version "1.0.3"
342 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
343 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
344 |
345 | crelt@^1.0.5:
346 | version "1.0.5"
347 | resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94"
348 | integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==
349 |
350 | cross-spawn@^6.0.5:
351 | version "6.0.5"
352 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
353 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
354 | dependencies:
355 | nice-try "^1.0.4"
356 | path-key "^2.0.1"
357 | semver "^5.5.0"
358 | shebang-command "^1.2.0"
359 | which "^1.2.9"
360 |
361 | debug@2.6.9:
362 | version "2.6.9"
363 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
364 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
365 | dependencies:
366 | ms "2.0.0"
367 |
368 | debug@4.3.4:
369 | version "4.3.4"
370 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
371 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
372 | dependencies:
373 | ms "2.1.2"
374 |
375 | decamelize@^4.0.0:
376 | version "4.0.0"
377 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837"
378 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==
379 |
380 | define-properties@^1.1.3, define-properties@^1.1.4:
381 | version "1.1.4"
382 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1"
383 | integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==
384 | dependencies:
385 | has-property-descriptors "^1.0.0"
386 | object-keys "^1.1.1"
387 |
388 | depd@2.0.0:
389 | version "2.0.0"
390 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
391 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
392 |
393 | destroy@1.2.0:
394 | version "1.2.0"
395 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
396 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
397 |
398 | diff@5.0.0:
399 | version "5.0.0"
400 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
401 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
402 |
403 | ee-first@1.1.1:
404 | version "1.1.1"
405 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
406 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
407 |
408 | emoji-regex@^8.0.0:
409 | version "8.0.0"
410 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
411 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
412 |
413 | encodeurl@~1.0.2:
414 | version "1.0.2"
415 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
416 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
417 |
418 | error-ex@^1.3.1:
419 | version "1.3.2"
420 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
421 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
422 | dependencies:
423 | is-arrayish "^0.2.1"
424 |
425 | es-abstract@^1.19.0, es-abstract@^1.20.4:
426 | version "1.20.4"
427 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861"
428 | integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==
429 | dependencies:
430 | call-bind "^1.0.2"
431 | es-to-primitive "^1.2.1"
432 | function-bind "^1.1.1"
433 | function.prototype.name "^1.1.5"
434 | get-intrinsic "^1.1.3"
435 | get-symbol-description "^1.0.0"
436 | has "^1.0.3"
437 | has-property-descriptors "^1.0.0"
438 | has-symbols "^1.0.3"
439 | internal-slot "^1.0.3"
440 | is-callable "^1.2.7"
441 | is-negative-zero "^2.0.2"
442 | is-regex "^1.1.4"
443 | is-shared-array-buffer "^1.0.2"
444 | is-string "^1.0.7"
445 | is-weakref "^1.0.2"
446 | object-inspect "^1.12.2"
447 | object-keys "^1.1.1"
448 | object.assign "^4.1.4"
449 | regexp.prototype.flags "^1.4.3"
450 | safe-regex-test "^1.0.0"
451 | string.prototype.trimend "^1.0.5"
452 | string.prototype.trimstart "^1.0.5"
453 | unbox-primitive "^1.0.2"
454 |
455 | es-to-primitive@^1.2.1:
456 | version "1.2.1"
457 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
458 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
459 | dependencies:
460 | is-callable "^1.1.4"
461 | is-date-object "^1.0.1"
462 | is-symbol "^1.0.2"
463 |
464 | esbuild-android-64@0.14.54:
465 | version "0.14.54"
466 | resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be"
467 | integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==
468 |
469 | esbuild-android-arm64@0.14.54:
470 | version "0.14.54"
471 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771"
472 | integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==
473 |
474 | esbuild-darwin-64@0.14.54:
475 | version "0.14.54"
476 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25"
477 | integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==
478 |
479 | esbuild-darwin-arm64@0.14.54:
480 | version "0.14.54"
481 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73"
482 | integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==
483 |
484 | esbuild-freebsd-64@0.14.54:
485 | version "0.14.54"
486 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d"
487 | integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==
488 |
489 | esbuild-freebsd-arm64@0.14.54:
490 | version "0.14.54"
491 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48"
492 | integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==
493 |
494 | esbuild-linux-32@0.14.54:
495 | version "0.14.54"
496 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5"
497 | integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==
498 |
499 | esbuild-linux-64@0.14.54:
500 | version "0.14.54"
501 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652"
502 | integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==
503 |
504 | esbuild-linux-arm64@0.14.54:
505 | version "0.14.54"
506 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b"
507 | integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==
508 |
509 | esbuild-linux-arm@0.14.54:
510 | version "0.14.54"
511 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59"
512 | integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==
513 |
514 | esbuild-linux-mips64le@0.14.54:
515 | version "0.14.54"
516 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34"
517 | integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==
518 |
519 | esbuild-linux-ppc64le@0.14.54:
520 | version "0.14.54"
521 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e"
522 | integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==
523 |
524 | esbuild-linux-riscv64@0.14.54:
525 | version "0.14.54"
526 | resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8"
527 | integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==
528 |
529 | esbuild-linux-s390x@0.14.54:
530 | version "0.14.54"
531 | resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6"
532 | integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==
533 |
534 | esbuild-netbsd-64@0.14.54:
535 | version "0.14.54"
536 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81"
537 | integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==
538 |
539 | esbuild-openbsd-64@0.14.54:
540 | version "0.14.54"
541 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b"
542 | integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==
543 |
544 | esbuild-sunos-64@0.14.54:
545 | version "0.14.54"
546 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da"
547 | integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==
548 |
549 | esbuild-windows-32@0.14.54:
550 | version "0.14.54"
551 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31"
552 | integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==
553 |
554 | esbuild-windows-64@0.14.54:
555 | version "0.14.54"
556 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4"
557 | integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==
558 |
559 | esbuild-windows-arm64@0.14.54:
560 | version "0.14.54"
561 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982"
562 | integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==
563 |
564 | esbuild@^0.14.27:
565 | version "0.14.54"
566 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2"
567 | integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==
568 | optionalDependencies:
569 | "@esbuild/linux-loong64" "0.14.54"
570 | esbuild-android-64 "0.14.54"
571 | esbuild-android-arm64 "0.14.54"
572 | esbuild-darwin-64 "0.14.54"
573 | esbuild-darwin-arm64 "0.14.54"
574 | esbuild-freebsd-64 "0.14.54"
575 | esbuild-freebsd-arm64 "0.14.54"
576 | esbuild-linux-32 "0.14.54"
577 | esbuild-linux-64 "0.14.54"
578 | esbuild-linux-arm "0.14.54"
579 | esbuild-linux-arm64 "0.14.54"
580 | esbuild-linux-mips64le "0.14.54"
581 | esbuild-linux-ppc64le "0.14.54"
582 | esbuild-linux-riscv64 "0.14.54"
583 | esbuild-linux-s390x "0.14.54"
584 | esbuild-netbsd-64 "0.14.54"
585 | esbuild-openbsd-64 "0.14.54"
586 | esbuild-sunos-64 "0.14.54"
587 | esbuild-windows-32 "0.14.54"
588 | esbuild-windows-64 "0.14.54"
589 | esbuild-windows-arm64 "0.14.54"
590 |
591 | escalade@^3.1.1:
592 | version "3.1.1"
593 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
594 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
595 |
596 | escape-html@~1.0.3:
597 | version "1.0.3"
598 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
599 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
600 |
601 | escape-string-regexp@4.0.0:
602 | version "4.0.0"
603 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
604 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
605 |
606 | escape-string-regexp@^1.0.5:
607 | version "1.0.5"
608 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
609 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
610 |
611 | esmoduleserve@^0.2.0:
612 | version "0.2.0"
613 | resolved "https://registry.yarnpkg.com/esmoduleserve/-/esmoduleserve-0.2.0.tgz#01ed56cbee408f624641dab0b2916a54407c891e"
614 | integrity sha512-vg1j7fzKZUFR5TCsYQ3PABfBRMRi6V9K7mxcRh2MftO3gwAHBwYaPHtLHFDsKVSxdHmpu/GgT37lsRT+vezaKQ==
615 | dependencies:
616 | acorn "^8.0.4"
617 | acorn-walk "^8.0.0"
618 | resolve "^1.15.1"
619 | serve-static "^1.14.1"
620 |
621 | etag@~1.8.1:
622 | version "1.8.1"
623 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
624 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
625 |
626 | fill-range@^7.0.1:
627 | version "7.0.1"
628 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
629 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
630 | dependencies:
631 | to-regex-range "^5.0.1"
632 |
633 | find-up@5.0.0:
634 | version "5.0.0"
635 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
636 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
637 | dependencies:
638 | locate-path "^6.0.0"
639 | path-exists "^4.0.0"
640 |
641 | flat@^5.0.2:
642 | version "5.0.2"
643 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
644 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
645 |
646 | fresh@0.5.2:
647 | version "0.5.2"
648 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
649 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
650 |
651 | fs.realpath@^1.0.0:
652 | version "1.0.0"
653 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
654 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
655 |
656 | fsevents@~2.3.2:
657 | version "2.3.2"
658 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
659 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
660 |
661 | function-bind@^1.1.1:
662 | version "1.1.1"
663 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
664 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
665 |
666 | function.prototype.name@^1.1.5:
667 | version "1.1.5"
668 | resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621"
669 | integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==
670 | dependencies:
671 | call-bind "^1.0.2"
672 | define-properties "^1.1.3"
673 | es-abstract "^1.19.0"
674 | functions-have-names "^1.2.2"
675 |
676 | functions-have-names@^1.2.2:
677 | version "1.2.3"
678 | resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
679 | integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
680 |
681 | get-caller-file@^2.0.5:
682 | version "2.0.5"
683 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
684 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
685 |
686 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3:
687 | version "1.1.3"
688 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385"
689 | integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==
690 | dependencies:
691 | function-bind "^1.1.1"
692 | has "^1.0.3"
693 | has-symbols "^1.0.3"
694 |
695 | get-symbol-description@^1.0.0:
696 | version "1.0.0"
697 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
698 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
699 | dependencies:
700 | call-bind "^1.0.2"
701 | get-intrinsic "^1.1.1"
702 |
703 | glob-parent@~5.1.2:
704 | version "5.1.2"
705 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
706 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
707 | dependencies:
708 | is-glob "^4.0.1"
709 |
710 | glob@7.2.0, glob@^7.1.3:
711 | version "7.2.0"
712 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
713 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
714 | dependencies:
715 | fs.realpath "^1.0.0"
716 | inflight "^1.0.4"
717 | inherits "2"
718 | minimatch "^3.0.4"
719 | once "^1.3.0"
720 | path-is-absolute "^1.0.0"
721 |
722 | graceful-fs@^4.1.2:
723 | version "4.2.10"
724 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
725 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
726 |
727 | has-bigints@^1.0.1, has-bigints@^1.0.2:
728 | version "1.0.2"
729 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
730 | integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
731 |
732 | has-flag@^3.0.0:
733 | version "3.0.0"
734 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
735 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
736 |
737 | has-flag@^4.0.0:
738 | version "4.0.0"
739 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
740 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
741 |
742 | has-property-descriptors@^1.0.0:
743 | version "1.0.0"
744 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861"
745 | integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==
746 | dependencies:
747 | get-intrinsic "^1.1.1"
748 |
749 | has-symbols@^1.0.2, has-symbols@^1.0.3:
750 | version "1.0.3"
751 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
752 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
753 |
754 | has-tostringtag@^1.0.0:
755 | version "1.0.0"
756 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
757 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
758 | dependencies:
759 | has-symbols "^1.0.2"
760 |
761 | has@^1.0.3:
762 | version "1.0.3"
763 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
764 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
765 | dependencies:
766 | function-bind "^1.1.1"
767 |
768 | he@1.2.0:
769 | version "1.2.0"
770 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
771 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
772 |
773 | hosted-git-info@^2.1.4:
774 | version "2.8.9"
775 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
776 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
777 |
778 | http-errors@2.0.0:
779 | version "2.0.0"
780 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
781 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
782 | dependencies:
783 | depd "2.0.0"
784 | inherits "2.0.4"
785 | setprototypeof "1.2.0"
786 | statuses "2.0.1"
787 | toidentifier "1.0.1"
788 |
789 | immediate@~3.0.5:
790 | version "3.0.6"
791 | resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
792 | integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=
793 |
794 | inflight@^1.0.4:
795 | version "1.0.6"
796 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
797 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
798 | dependencies:
799 | once "^1.3.0"
800 | wrappy "1"
801 |
802 | inherits@2, inherits@2.0.4, inherits@~2.0.3:
803 | version "2.0.4"
804 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
805 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
806 |
807 | internal-slot@^1.0.3:
808 | version "1.0.3"
809 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
810 | integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
811 | dependencies:
812 | get-intrinsic "^1.1.0"
813 | has "^1.0.3"
814 | side-channel "^1.0.4"
815 |
816 | is-arrayish@^0.2.1:
817 | version "0.2.1"
818 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
819 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
820 |
821 | is-bigint@^1.0.1:
822 | version "1.0.4"
823 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
824 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
825 | dependencies:
826 | has-bigints "^1.0.1"
827 |
828 | is-binary-path@~2.1.0:
829 | version "2.1.0"
830 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
831 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
832 | dependencies:
833 | binary-extensions "^2.0.0"
834 |
835 | is-boolean-object@^1.1.0:
836 | version "1.1.2"
837 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
838 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
839 | dependencies:
840 | call-bind "^1.0.2"
841 | has-tostringtag "^1.0.0"
842 |
843 | is-callable@^1.1.4, is-callable@^1.2.7:
844 | version "1.2.7"
845 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
846 | integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
847 |
848 | is-core-module@^2.9.0:
849 | version "2.11.0"
850 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
851 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
852 | dependencies:
853 | has "^1.0.3"
854 |
855 | is-date-object@^1.0.1:
856 | version "1.0.5"
857 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
858 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
859 | dependencies:
860 | has-tostringtag "^1.0.0"
861 |
862 | is-extglob@^2.1.1:
863 | version "2.1.1"
864 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
865 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
866 |
867 | is-fullwidth-code-point@^3.0.0:
868 | version "3.0.0"
869 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
870 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
871 |
872 | is-glob@^4.0.1, is-glob@~4.0.1:
873 | version "4.0.3"
874 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
875 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
876 | dependencies:
877 | is-extglob "^2.1.1"
878 |
879 | is-negative-zero@^2.0.2:
880 | version "2.0.2"
881 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
882 | integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
883 |
884 | is-number-object@^1.0.4:
885 | version "1.0.7"
886 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc"
887 | integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
888 | dependencies:
889 | has-tostringtag "^1.0.0"
890 |
891 | is-number@^7.0.0:
892 | version "7.0.0"
893 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
894 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
895 |
896 | is-plain-obj@^2.1.0:
897 | version "2.1.0"
898 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
899 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
900 |
901 | is-regex@^1.1.4:
902 | version "1.1.4"
903 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
904 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
905 | dependencies:
906 | call-bind "^1.0.2"
907 | has-tostringtag "^1.0.0"
908 |
909 | is-shared-array-buffer@^1.0.2:
910 | version "1.0.2"
911 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79"
912 | integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
913 | dependencies:
914 | call-bind "^1.0.2"
915 |
916 | is-string@^1.0.5, is-string@^1.0.7:
917 | version "1.0.7"
918 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
919 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
920 | dependencies:
921 | has-tostringtag "^1.0.0"
922 |
923 | is-symbol@^1.0.2, is-symbol@^1.0.3:
924 | version "1.0.4"
925 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
926 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
927 | dependencies:
928 | has-symbols "^1.0.2"
929 |
930 | is-unicode-supported@^0.1.0:
931 | version "0.1.0"
932 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
933 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
934 |
935 | is-weakref@^1.0.2:
936 | version "1.0.2"
937 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
938 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
939 | dependencies:
940 | call-bind "^1.0.2"
941 |
942 | isarray@~1.0.0:
943 | version "1.0.0"
944 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
945 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
946 |
947 | isexe@^2.0.0:
948 | version "2.0.0"
949 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
950 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
951 |
952 | ist@^1.1.7:
953 | version "1.1.7"
954 | resolved "https://registry.yarnpkg.com/ist/-/ist-1.1.7.tgz#64161305bca42937d8e05394a2883c3431c5f7ff"
955 | integrity sha512-ex9JyqY+tCjBlxN1pXlqxEgtGGUGp1TG83ll1xpu8SfPgOhfAhEGCuepNHlB+d7Le+hLoBcfCu/G0ZQaFbi9hA==
956 |
957 | js-tokens@^4.0.0:
958 | version "4.0.0"
959 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
960 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
961 |
962 | js-yaml@4.1.0:
963 | version "4.1.0"
964 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
965 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
966 | dependencies:
967 | argparse "^2.0.1"
968 |
969 | json-parse-better-errors@^1.0.1:
970 | version "1.0.2"
971 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
972 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
973 |
974 | jszip@^3.6.0:
975 | version "3.9.1"
976 | resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.9.1.tgz#784e87f328450d1e8151003a9c67733e2b901051"
977 | integrity sha512-H9A60xPqJ1CuC4Ka6qxzXZeU8aNmgOeP5IFqwJbQQwtu2EUYxota3LdsiZWplF7Wgd9tkAd0mdu36nceSaPuYw==
978 | dependencies:
979 | lie "~3.3.0"
980 | pako "~1.0.2"
981 | readable-stream "~2.3.6"
982 | set-immediate-shim "~1.0.1"
983 |
984 | lie@~3.3.0:
985 | version "3.3.0"
986 | resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a"
987 | integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==
988 | dependencies:
989 | immediate "~3.0.5"
990 |
991 | load-json-file@^4.0.0:
992 | version "4.0.0"
993 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
994 | integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==
995 | dependencies:
996 | graceful-fs "^4.1.2"
997 | parse-json "^4.0.0"
998 | pify "^3.0.0"
999 | strip-bom "^3.0.0"
1000 |
1001 | locate-path@^6.0.0:
1002 | version "6.0.0"
1003 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
1004 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
1005 | dependencies:
1006 | p-locate "^5.0.0"
1007 |
1008 | log-symbols@4.1.0:
1009 | version "4.1.0"
1010 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
1011 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
1012 | dependencies:
1013 | chalk "^4.1.0"
1014 | is-unicode-supported "^0.1.0"
1015 |
1016 | magic-string@^0.25.7:
1017 | version "0.25.9"
1018 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
1019 | integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
1020 | dependencies:
1021 | sourcemap-codec "^1.4.8"
1022 |
1023 | memorystream@^0.3.1:
1024 | version "0.3.1"
1025 | resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
1026 | integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==
1027 |
1028 | mime@1.6.0:
1029 | version "1.6.0"
1030 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
1031 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
1032 |
1033 | minimatch@5.0.1:
1034 | version "5.0.1"
1035 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b"
1036 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==
1037 | dependencies:
1038 | brace-expansion "^2.0.1"
1039 |
1040 | minimatch@^3.0.4:
1041 | version "3.1.2"
1042 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
1043 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
1044 | dependencies:
1045 | brace-expansion "^1.1.7"
1046 |
1047 | mocha@^10.0.0:
1048 | version "10.0.0"
1049 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.0.0.tgz#205447d8993ec755335c4b13deba3d3a13c4def9"
1050 | integrity sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==
1051 | dependencies:
1052 | "@ungap/promise-all-settled" "1.1.2"
1053 | ansi-colors "4.1.1"
1054 | browser-stdout "1.3.1"
1055 | chokidar "3.5.3"
1056 | debug "4.3.4"
1057 | diff "5.0.0"
1058 | escape-string-regexp "4.0.0"
1059 | find-up "5.0.0"
1060 | glob "7.2.0"
1061 | he "1.2.0"
1062 | js-yaml "4.1.0"
1063 | log-symbols "4.1.0"
1064 | minimatch "5.0.1"
1065 | ms "2.1.3"
1066 | nanoid "3.3.3"
1067 | serialize-javascript "6.0.0"
1068 | strip-json-comments "3.1.1"
1069 | supports-color "8.1.1"
1070 | workerpool "6.2.1"
1071 | yargs "16.2.0"
1072 | yargs-parser "20.2.4"
1073 | yargs-unparser "2.0.0"
1074 |
1075 | ms@2.0.0:
1076 | version "2.0.0"
1077 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1078 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
1079 |
1080 | ms@2.1.2:
1081 | version "2.1.2"
1082 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1083 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1084 |
1085 | ms@2.1.3:
1086 | version "2.1.3"
1087 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
1088 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1089 |
1090 | nanoid@3.3.3:
1091 | version "3.3.3"
1092 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25"
1093 | integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==
1094 |
1095 | nanoid@^3.3.4:
1096 | version "3.3.4"
1097 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
1098 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
1099 |
1100 | nice-try@^1.0.4:
1101 | version "1.0.5"
1102 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
1103 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
1104 |
1105 | normalize-package-data@^2.3.2:
1106 | version "2.5.0"
1107 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
1108 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
1109 | dependencies:
1110 | hosted-git-info "^2.1.4"
1111 | resolve "^1.10.0"
1112 | semver "2 || 3 || 4 || 5"
1113 | validate-npm-package-license "^3.0.1"
1114 |
1115 | normalize-path@^3.0.0, normalize-path@~3.0.0:
1116 | version "3.0.0"
1117 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
1118 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
1119 |
1120 | npm-run-all@^4.1.5:
1121 | version "4.1.5"
1122 | resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
1123 | integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
1124 | dependencies:
1125 | ansi-styles "^3.2.1"
1126 | chalk "^2.4.1"
1127 | cross-spawn "^6.0.5"
1128 | memorystream "^0.3.1"
1129 | minimatch "^3.0.4"
1130 | pidtree "^0.3.0"
1131 | read-pkg "^3.0.0"
1132 | shell-quote "^1.6.1"
1133 | string.prototype.padend "^3.0.0"
1134 |
1135 | object-inspect@^1.12.2, object-inspect@^1.9.0:
1136 | version "1.12.2"
1137 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
1138 | integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
1139 |
1140 | object-keys@^1.1.1:
1141 | version "1.1.1"
1142 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
1143 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
1144 |
1145 | object.assign@^4.1.4:
1146 | version "4.1.4"
1147 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
1148 | integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
1149 | dependencies:
1150 | call-bind "^1.0.2"
1151 | define-properties "^1.1.4"
1152 | has-symbols "^1.0.3"
1153 | object-keys "^1.1.1"
1154 |
1155 | on-finished@2.4.1:
1156 | version "2.4.1"
1157 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
1158 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
1159 | dependencies:
1160 | ee-first "1.1.1"
1161 |
1162 | once@^1.3.0:
1163 | version "1.4.0"
1164 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1165 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
1166 | dependencies:
1167 | wrappy "1"
1168 |
1169 | p-limit@^3.0.2:
1170 | version "3.1.0"
1171 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1172 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1173 | dependencies:
1174 | yocto-queue "^0.1.0"
1175 |
1176 | p-locate@^5.0.0:
1177 | version "5.0.0"
1178 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
1179 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
1180 | dependencies:
1181 | p-limit "^3.0.2"
1182 |
1183 | pako@~1.0.2:
1184 | version "1.0.11"
1185 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
1186 | integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
1187 |
1188 | parse-json@^4.0.0:
1189 | version "4.0.0"
1190 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
1191 | integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==
1192 | dependencies:
1193 | error-ex "^1.3.1"
1194 | json-parse-better-errors "^1.0.1"
1195 |
1196 | parseurl@~1.3.3:
1197 | version "1.3.3"
1198 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
1199 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
1200 |
1201 | path-exists@^4.0.0:
1202 | version "4.0.0"
1203 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1204 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1205 |
1206 | path-is-absolute@^1.0.0:
1207 | version "1.0.1"
1208 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1209 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
1210 |
1211 | path-key@^2.0.1:
1212 | version "2.0.1"
1213 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
1214 | integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
1215 |
1216 | path-parse@^1.0.7:
1217 | version "1.0.7"
1218 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1219 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1220 |
1221 | path-type@^3.0.0:
1222 | version "3.0.0"
1223 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
1224 | integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
1225 | dependencies:
1226 | pify "^3.0.0"
1227 |
1228 | picocolors@^1.0.0:
1229 | version "1.0.0"
1230 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
1231 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
1232 |
1233 | picomatch@^2.0.4, picomatch@^2.2.1:
1234 | version "2.3.1"
1235 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1236 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
1237 |
1238 | pidtree@^0.3.0:
1239 | version "0.3.1"
1240 | resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
1241 | integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==
1242 |
1243 | pify@^3.0.0:
1244 | version "3.0.0"
1245 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
1246 | integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==
1247 |
1248 | postcss@^8.4.13:
1249 | version "8.4.19"
1250 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc"
1251 | integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==
1252 | dependencies:
1253 | nanoid "^3.3.4"
1254 | picocolors "^1.0.0"
1255 | source-map-js "^1.0.2"
1256 |
1257 | process-nextick-args@~2.0.0:
1258 | version "2.0.1"
1259 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
1260 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
1261 |
1262 | randombytes@^2.1.0:
1263 | version "2.1.0"
1264 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
1265 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
1266 | dependencies:
1267 | safe-buffer "^5.1.0"
1268 |
1269 | range-parser@~1.2.1:
1270 | version "1.2.1"
1271 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
1272 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
1273 |
1274 | read-pkg@^3.0.0:
1275 | version "3.0.0"
1276 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
1277 | integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==
1278 | dependencies:
1279 | load-json-file "^4.0.0"
1280 | normalize-package-data "^2.3.2"
1281 | path-type "^3.0.0"
1282 |
1283 | readable-stream@~2.3.6:
1284 | version "2.3.7"
1285 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
1286 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
1287 | dependencies:
1288 | core-util-is "~1.0.0"
1289 | inherits "~2.0.3"
1290 | isarray "~1.0.0"
1291 | process-nextick-args "~2.0.0"
1292 | safe-buffer "~5.1.1"
1293 | string_decoder "~1.1.1"
1294 | util-deprecate "~1.0.1"
1295 |
1296 | readdirp@~3.6.0:
1297 | version "3.6.0"
1298 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
1299 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
1300 | dependencies:
1301 | picomatch "^2.2.1"
1302 |
1303 | regexp.prototype.flags@^1.4.3:
1304 | version "1.4.3"
1305 | resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac"
1306 | integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==
1307 | dependencies:
1308 | call-bind "^1.0.2"
1309 | define-properties "^1.1.3"
1310 | functions-have-names "^1.2.2"
1311 |
1312 | require-directory@^2.1.1:
1313 | version "2.1.1"
1314 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
1315 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
1316 |
1317 | resolve@^1.10.0, resolve@^1.15.1, resolve@^1.22.0:
1318 | version "1.22.1"
1319 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
1320 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
1321 | dependencies:
1322 | is-core-module "^2.9.0"
1323 | path-parse "^1.0.7"
1324 | supports-preserve-symlinks-flag "^1.0.0"
1325 |
1326 | rimraf@^3.0.0:
1327 | version "3.0.2"
1328 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
1329 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
1330 | dependencies:
1331 | glob "^7.1.3"
1332 |
1333 | rollup-plugin-dts@^3.0.0:
1334 | version "3.0.2"
1335 | resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-3.0.2.tgz#2b628d88f864d271d6eaec2e4c2a60ae4e944c5c"
1336 | integrity sha512-hswlsdWu/x7k5pXzaLP6OvKRKcx8Bzprksz9i9mUe72zvt8LvqAb/AZpzs6FkLgmyRaN8B6rUQOVtzA3yEt9Yw==
1337 | dependencies:
1338 | magic-string "^0.25.7"
1339 | optionalDependencies:
1340 | "@babel/code-frame" "^7.12.13"
1341 |
1342 | "rollup@>=2.59.0 <2.78.0", rollup@^2.35.1:
1343 | version "2.77.3"
1344 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.3.tgz#8f00418d3a2740036e15deb653bed1a90ee0cc12"
1345 | integrity sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==
1346 | optionalDependencies:
1347 | fsevents "~2.3.2"
1348 |
1349 | safe-buffer@^5.1.0:
1350 | version "5.2.1"
1351 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1352 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1353 |
1354 | safe-buffer@~5.1.0, safe-buffer@~5.1.1:
1355 | version "5.1.2"
1356 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
1357 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
1358 |
1359 | safe-regex-test@^1.0.0:
1360 | version "1.0.0"
1361 | resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295"
1362 | integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==
1363 | dependencies:
1364 | call-bind "^1.0.2"
1365 | get-intrinsic "^1.1.3"
1366 | is-regex "^1.1.4"
1367 |
1368 | selenium-webdriver@^4.0.0-beta.3:
1369 | version "4.1.1"
1370 | resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.1.1.tgz#da083177d811f36614950e809e2982570f67d02e"
1371 | integrity sha512-Fr9e9LC6zvD6/j7NO8M1M/NVxFX67abHcxDJoP5w2KN/Xb1SyYLjMVPGgD14U2TOiKe4XKHf42OmFw9g2JgCBQ==
1372 | dependencies:
1373 | jszip "^3.6.0"
1374 | tmp "^0.2.1"
1375 | ws ">=7.4.6"
1376 |
1377 | "semver@2 || 3 || 4 || 5", semver@^5.5.0:
1378 | version "5.7.2"
1379 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
1380 | integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
1381 |
1382 | send@0.18.0:
1383 | version "0.18.0"
1384 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
1385 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
1386 | dependencies:
1387 | debug "2.6.9"
1388 | depd "2.0.0"
1389 | destroy "1.2.0"
1390 | encodeurl "~1.0.2"
1391 | escape-html "~1.0.3"
1392 | etag "~1.8.1"
1393 | fresh "0.5.2"
1394 | http-errors "2.0.0"
1395 | mime "1.6.0"
1396 | ms "2.1.3"
1397 | on-finished "2.4.1"
1398 | range-parser "~1.2.1"
1399 | statuses "2.0.1"
1400 |
1401 | serialize-javascript@6.0.0:
1402 | version "6.0.0"
1403 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
1404 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
1405 | dependencies:
1406 | randombytes "^2.1.0"
1407 |
1408 | serve-static@^1.14.1:
1409 | version "1.15.0"
1410 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
1411 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
1412 | dependencies:
1413 | encodeurl "~1.0.2"
1414 | escape-html "~1.0.3"
1415 | parseurl "~1.3.3"
1416 | send "0.18.0"
1417 |
1418 | set-immediate-shim@~1.0.1:
1419 | version "1.0.1"
1420 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
1421 | integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
1422 |
1423 | setprototypeof@1.2.0:
1424 | version "1.2.0"
1425 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
1426 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
1427 |
1428 | shebang-command@^1.2.0:
1429 | version "1.2.0"
1430 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
1431 | integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
1432 | dependencies:
1433 | shebang-regex "^1.0.0"
1434 |
1435 | shebang-regex@^1.0.0:
1436 | version "1.0.0"
1437 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
1438 | integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
1439 |
1440 | shell-quote@^1.6.1:
1441 | version "1.7.4"
1442 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8"
1443 | integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==
1444 |
1445 | side-channel@^1.0.4:
1446 | version "1.0.4"
1447 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
1448 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
1449 | dependencies:
1450 | call-bind "^1.0.0"
1451 | get-intrinsic "^1.0.2"
1452 | object-inspect "^1.9.0"
1453 |
1454 | source-map-js@^1.0.2:
1455 | version "1.0.2"
1456 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
1457 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
1458 |
1459 | sourcemap-codec@^1.4.8:
1460 | version "1.4.8"
1461 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
1462 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
1463 |
1464 | spdx-correct@^3.0.0:
1465 | version "3.1.1"
1466 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
1467 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
1468 | dependencies:
1469 | spdx-expression-parse "^3.0.0"
1470 | spdx-license-ids "^3.0.0"
1471 |
1472 | spdx-exceptions@^2.1.0:
1473 | version "2.3.0"
1474 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
1475 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
1476 |
1477 | spdx-expression-parse@^3.0.0:
1478 | version "3.0.1"
1479 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
1480 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
1481 | dependencies:
1482 | spdx-exceptions "^2.1.0"
1483 | spdx-license-ids "^3.0.0"
1484 |
1485 | spdx-license-ids@^3.0.0:
1486 | version "3.0.12"
1487 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779"
1488 | integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==
1489 |
1490 | statuses@2.0.1:
1491 | version "2.0.1"
1492 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
1493 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
1494 |
1495 | string-width@^4.1.0, string-width@^4.2.0:
1496 | version "4.2.3"
1497 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
1498 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
1499 | dependencies:
1500 | emoji-regex "^8.0.0"
1501 | is-fullwidth-code-point "^3.0.0"
1502 | strip-ansi "^6.0.1"
1503 |
1504 | string.prototype.padend@^3.0.0:
1505 | version "3.1.4"
1506 | resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz#2c43bb3a89eb54b6750de5942c123d6c98dd65b6"
1507 | integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==
1508 | dependencies:
1509 | call-bind "^1.0.2"
1510 | define-properties "^1.1.4"
1511 | es-abstract "^1.20.4"
1512 |
1513 | string.prototype.trimend@^1.0.5:
1514 | version "1.0.6"
1515 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533"
1516 | integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==
1517 | dependencies:
1518 | call-bind "^1.0.2"
1519 | define-properties "^1.1.4"
1520 | es-abstract "^1.20.4"
1521 |
1522 | string.prototype.trimstart@^1.0.5:
1523 | version "1.0.6"
1524 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4"
1525 | integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==
1526 | dependencies:
1527 | call-bind "^1.0.2"
1528 | define-properties "^1.1.4"
1529 | es-abstract "^1.20.4"
1530 |
1531 | string_decoder@~1.1.1:
1532 | version "1.1.1"
1533 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
1534 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
1535 | dependencies:
1536 | safe-buffer "~5.1.0"
1537 |
1538 | strip-ansi@^6.0.0, strip-ansi@^6.0.1:
1539 | version "6.0.1"
1540 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
1541 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
1542 | dependencies:
1543 | ansi-regex "^5.0.1"
1544 |
1545 | strip-bom@^3.0.0:
1546 | version "3.0.0"
1547 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
1548 | integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
1549 |
1550 | strip-json-comments@3.1.1:
1551 | version "3.1.1"
1552 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
1553 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
1554 |
1555 | style-mod@^4.0.0:
1556 | version "4.0.0"
1557 | resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.0.0.tgz#97e7c2d68b592975f2ca7a63d0dd6fcacfe35a01"
1558 | integrity sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==
1559 |
1560 | supports-color@8.1.1:
1561 | version "8.1.1"
1562 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
1563 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
1564 | dependencies:
1565 | has-flag "^4.0.0"
1566 |
1567 | supports-color@^5.3.0:
1568 | version "5.5.0"
1569 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
1570 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
1571 | dependencies:
1572 | has-flag "^3.0.0"
1573 |
1574 | supports-color@^7.1.0:
1575 | version "7.2.0"
1576 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
1577 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
1578 | dependencies:
1579 | has-flag "^4.0.0"
1580 |
1581 | supports-preserve-symlinks-flag@^1.0.0:
1582 | version "1.0.0"
1583 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
1584 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
1585 |
1586 | tmp@^0.2.1:
1587 | version "0.2.1"
1588 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
1589 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
1590 | dependencies:
1591 | rimraf "^3.0.0"
1592 |
1593 | to-regex-range@^5.0.1:
1594 | version "5.0.1"
1595 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1596 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1597 | dependencies:
1598 | is-number "^7.0.0"
1599 |
1600 | toidentifier@1.0.1:
1601 | version "1.0.1"
1602 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
1603 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
1604 |
1605 | typescript@^4.2.3:
1606 | version "4.6.3"
1607 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c"
1608 | integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==
1609 |
1610 | unbox-primitive@^1.0.2:
1611 | version "1.0.2"
1612 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
1613 | integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
1614 | dependencies:
1615 | call-bind "^1.0.2"
1616 | has-bigints "^1.0.2"
1617 | has-symbols "^1.0.3"
1618 | which-boxed-primitive "^1.0.2"
1619 |
1620 | util-deprecate@~1.0.1:
1621 | version "1.0.2"
1622 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1623 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
1624 |
1625 | validate-npm-package-license@^3.0.1:
1626 | version "3.0.4"
1627 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
1628 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
1629 | dependencies:
1630 | spdx-correct "^3.0.0"
1631 | spdx-expression-parse "^3.0.0"
1632 |
1633 | vite@^2.3.8:
1634 | version "2.9.16"
1635 | resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.16.tgz#daf7ba50f5cc37a7bf51b118ba06bc36e97898e9"
1636 | integrity sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==
1637 | dependencies:
1638 | esbuild "^0.14.27"
1639 | postcss "^8.4.13"
1640 | resolve "^1.22.0"
1641 | rollup ">=2.59.0 <2.78.0"
1642 | optionalDependencies:
1643 | fsevents "~2.3.2"
1644 |
1645 | w3c-keyname@^2.2.4:
1646 | version "2.2.6"
1647 | resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz#8412046116bc16c5d73d4e612053ea10a189c85f"
1648 | integrity sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==
1649 |
1650 | which-boxed-primitive@^1.0.2:
1651 | version "1.0.2"
1652 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
1653 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
1654 | dependencies:
1655 | is-bigint "^1.0.1"
1656 | is-boolean-object "^1.1.0"
1657 | is-number-object "^1.0.4"
1658 | is-string "^1.0.5"
1659 | is-symbol "^1.0.3"
1660 |
1661 | which@^1.2.9:
1662 | version "1.3.1"
1663 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
1664 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
1665 | dependencies:
1666 | isexe "^2.0.0"
1667 |
1668 | workerpool@6.2.1:
1669 | version "6.2.1"
1670 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"
1671 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==
1672 |
1673 | wrap-ansi@^7.0.0:
1674 | version "7.0.0"
1675 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
1676 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
1677 | dependencies:
1678 | ansi-styles "^4.0.0"
1679 | string-width "^4.1.0"
1680 | strip-ansi "^6.0.0"
1681 |
1682 | wrappy@1:
1683 | version "1.0.2"
1684 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1685 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1686 |
1687 | ws@>=7.4.6:
1688 | version "8.5.0"
1689 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
1690 | integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
1691 |
1692 | y18n@^5.0.5:
1693 | version "5.0.8"
1694 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
1695 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
1696 |
1697 | yargs-parser@20.2.4:
1698 | version "20.2.4"
1699 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
1700 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
1701 |
1702 | yargs-parser@^20.2.2:
1703 | version "20.2.9"
1704 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
1705 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
1706 |
1707 | yargs-unparser@2.0.0:
1708 | version "2.0.0"
1709 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
1710 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
1711 | dependencies:
1712 | camelcase "^6.0.0"
1713 | decamelize "^4.0.0"
1714 | flat "^5.0.2"
1715 | is-plain-obj "^2.1.0"
1716 |
1717 | yargs@16.2.0:
1718 | version "16.2.0"
1719 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
1720 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
1721 | dependencies:
1722 | cliui "^7.0.2"
1723 | escalade "^3.1.1"
1724 | get-caller-file "^2.0.5"
1725 | require-directory "^2.1.1"
1726 | string-width "^4.2.0"
1727 | y18n "^5.0.5"
1728 | yargs-parser "^20.2.2"
1729 |
1730 | yocto-queue@^0.1.0:
1731 | version "0.1.0"
1732 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
1733 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
1734 |
--------------------------------------------------------------------------------