diff --git a/.vscode/settings.json b/.vscode/settings.json index 3ae2b9e688..5ff0444d09 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -32,6 +32,10 @@ "directory": "packages/memo", "changeProcessCWD": true }, + { + "directory": "packages/message-parser", + "changeProcessCWD": true + }, { "directory": "packages/mp3-encoder", "changeProcessCWD": true @@ -53,8 +57,11 @@ "source.fixAll.eslint": true }, "eslint.options": { - "extensions": [".js", ".jsx", ".md", ".mdx", ".ts", ".tsx"] + "extensions": [".js", ".jsx", ".md", ".mdx", ".ts", ".tsx", ".pegjs"] }, "editor.formatOnSave": true, - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "esbenp.prettier-vscode", + "[pegjs]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + } } diff --git a/README.md b/README.md index 01190e77c4..4566177447 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Package | [`@rocket.chat/fuselage-ui-kit`](/packages/@rocket.chat/fuselage-ui-kit) | UiKit elements for Rocket.Chat Apps built under Fuselage design system | [![npm](https://img.shields.io/npm/v/@rocket.chat/fuselage-ui-kit.svg)](https://www.npmjs.com/package/@rocket.chat/fuselage-ui-kit) | [![David Peer](https://img.shields.io/david/peer/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/fuselage-ui-kit)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/fuselage-ui-kit&type=peer) | [![David Dev](https://img.shields.io/david/dev/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/fuselage-ui-kit)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/fuselage-ui-kit&type=dev) | [![David](https://img.shields.io/david/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/fuselage-ui-kit)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/fuselage-ui-kit) [`@rocket.chat/icons`](/packages/@rocket.chat/icons) | | [![npm](https://img.shields.io/npm/v/@rocket.chat/icons.svg)](https://www.npmjs.com/package/@rocket.chat/icons) | [![David Peer](https://img.shields.io/david/peer/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/icons)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/icons&type=peer) | [![David Dev](https://img.shields.io/david/dev/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/icons)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/icons&type=dev) | [![David](https://img.shields.io/david/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/icons)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/icons) [`@rocket.chat/memo`](/packages/@rocket.chat/memo) | Memoization utilities | [![npm](https://img.shields.io/npm/v/@rocket.chat/memo.svg)](https://www.npmjs.com/package/@rocket.chat/memo) | [![David Peer](https://img.shields.io/david/peer/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/memo)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/memo&type=peer) | [![David Dev](https://img.shields.io/david/dev/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/memo)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/memo&type=dev) | [![David](https://img.shields.io/david/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/memo)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/memo) +[`@rocket.chat/message-parser`](/packages/@rocket.chat/message-parser) | Rocket.Chat parser for messages | [![npm](https://img.shields.io/npm/v/@rocket.chat/message-parser.svg)](https://www.npmjs.com/package/@rocket.chat/message-parser) | [![David Peer](https://img.shields.io/david/peer/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/message-parser)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/message-parser&type=peer) | [![David Dev](https://img.shields.io/david/dev/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/message-parser)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/message-parser&type=dev) | [![David](https://img.shields.io/david/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/message-parser)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/message-parser) [`@rocket.chat/mp3-encoder`](/packages/@rocket.chat/mp3-encoder) | A LAME encoder to be used in web workers | [![npm](https://img.shields.io/npm/v/@rocket.chat/mp3-encoder.svg)](https://www.npmjs.com/package/@rocket.chat/mp3-encoder) | [![David Peer](https://img.shields.io/david/peer/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/mp3-encoder)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/mp3-encoder&type=peer) | [![David Dev](https://img.shields.io/david/dev/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/mp3-encoder)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/mp3-encoder&type=dev) | [![David](https://img.shields.io/david/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/mp3-encoder)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/mp3-encoder) [`@rocket.chat/prettier-config`](/packages/@rocket.chat/prettier-config) | Prettier configuration for Rocket.Chat repositories | [![npm](https://img.shields.io/npm/v/@rocket.chat/prettier-config.svg)](https://www.npmjs.com/package/@rocket.chat/prettier-config) | [![David Peer](https://img.shields.io/david/peer/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/prettier-config)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/prettier-config&type=peer) | [![David Dev](https://img.shields.io/david/dev/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/prettier-config)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/prettier-config&type=dev) | [![David](https://img.shields.io/david/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/prettier-config)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/prettier-config) [`@rocket.chat/string-helpers`](/packages/@rocket.chat/string-helpers) | Helper functions for string manipulation | [![npm](https://img.shields.io/npm/v/@rocket.chat/string-helpers.svg)](https://www.npmjs.com/package/@rocket.chat/string-helpers) | [![David Peer](https://img.shields.io/david/peer/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/string-helpers)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/string-helpers&type=peer) | [![David Dev](https://img.shields.io/david/dev/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/string-helpers)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/string-helpers&type=dev) | [![David](https://img.shields.io/david/RocketChat/Rocket.Chat.Fuselage.svg?path=packages/string-helpers)](https://david-dm.org/RocketChat/Rocket.Chat.Fuselage?path=packages/string-helpers) diff --git a/packages/css-in-js/package.json b/packages/css-in-js/package.json index f52afd3941..8eb984ea6a 100644 --- a/packages/css-in-js/package.json +++ b/packages/css-in-js/package.json @@ -45,7 +45,7 @@ "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^11.0.1", "@rollup/plugin-typescript": "^8.1.0", - "@types/jest": "^26.0.22", + "@types/jest": "^26.0.23", "@types/stylis": "^4.0.0", "documentation": "^13.2.1", "eslint": "^7.24.0", diff --git a/packages/emitter/package.json b/packages/emitter/package.json index bbfcc2e418..6dcf774079 100644 --- a/packages/emitter/package.json +++ b/packages/emitter/package.json @@ -51,7 +51,7 @@ "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^11.0.1", "@rollup/plugin-typescript": "^8.1.0", - "@types/jest": "^26.0.22", + "@types/jest": "^26.0.23", "documentation": "^13.2.1", "eslint": "^7.24.0", "jest": "^26.6.3", diff --git a/packages/fuselage-hooks/package.json b/packages/fuselage-hooks/package.json index 530521bafe..2868d9da0f 100644 --- a/packages/fuselage-hooks/package.json +++ b/packages/fuselage-hooks/package.json @@ -57,7 +57,7 @@ "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^9.0.0", "@rollup/plugin-typescript": "^6.0.0", - "@types/jest": "^26.0.22", + "@types/jest": "^26.0.23", "@types/react": "^17.0.3", "@types/react-dom": "^17.0.3", "@types/resize-observer-browser": "^0.1.5", diff --git a/packages/fuselage/package.json b/packages/fuselage/package.json index 6be30488ed..bc92609d8d 100644 --- a/packages/fuselage/package.json +++ b/packages/fuselage/package.json @@ -83,7 +83,7 @@ "@storybook/react": "^6.1.11", "@storybook/source-loader": "^6.1.11", "@storybook/theming": "^6.1.11", - "@types/jest": "^26.0.22", + "@types/jest": "^26.0.23", "autoprefixer": "^10.0.1", "babel-loader": "^8.1.0", "caniuse-lite": "^1.0.30001151", diff --git a/packages/message-parser/.eslintignore b/packages/message-parser/.eslintignore new file mode 100644 index 0000000000..8225baa4a7 --- /dev/null +++ b/packages/message-parser/.eslintignore @@ -0,0 +1,2 @@ +/node_modules +/dist diff --git a/packages/message-parser/.eslintrc.js b/packages/message-parser/.eslintrc.js new file mode 100644 index 0000000000..25536891d7 --- /dev/null +++ b/packages/message-parser/.eslintrc.js @@ -0,0 +1,12 @@ +module.exports = { + extends: '@rocket.chat/eslint-config-alt/minimal', + env: { + jest: true, + }, + overrides: [ + { + files: ['**/*.ts', '**/*.tsx'], + extends: '@rocket.chat/eslint-config-alt/typescript', + }, + ], +}; diff --git a/packages/message-parser/.gitignore b/packages/message-parser/.gitignore new file mode 100644 index 0000000000..8225baa4a7 --- /dev/null +++ b/packages/message-parser/.gitignore @@ -0,0 +1,2 @@ +/node_modules +/dist diff --git a/packages/message-parser/.prettierrc.js b/packages/message-parser/.prettierrc.js new file mode 100644 index 0000000000..b57f474edb --- /dev/null +++ b/packages/message-parser/.prettierrc.js @@ -0,0 +1 @@ +module.exports = require('@rocket.chat/prettier-config/fuselage'); diff --git a/packages/message-parser/README.md b/packages/message-parser/README.md new file mode 100644 index 0000000000..850955b994 --- /dev/null +++ b/packages/message-parser/README.md @@ -0,0 +1,34 @@ +# @rocket.chat/message-parser + +## Description + +Rocket.Chat grammar with the purpose of parsing the messages of the rocket chat, converting text to an AST tree. + +The grammar provides support for markdown, mentions and emojis. + +## Supported markup + +- quotes +- bold/italic/strike +- ordered lists +- unordered lists +- task lists +- phone numbers +- mentions +- emoji +- colors +- URI's +- mentions users/channels + +## Contributing + +Contributions, issues and feature requests are welcome!
Feel free to check [issues page](https://github.com/RocketChat/Rocket.Chat.Fuselage/issues). + +Whenever you find a grammar-related bug, start by inserting the test case. + +We are open to other tags/markups, as long as they don't generate unexpected behavior. + +## Observations and known issues + +- Nested lists are unsupported +- `URL` rule doesn't allow ` `, `(`, or `)` diff --git a/packages/message-parser/babel.config.js b/packages/message-parser/babel.config.js new file mode 100644 index 0000000000..8456c19127 --- /dev/null +++ b/packages/message-parser/babel.config.js @@ -0,0 +1,18 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { + browsers: [ + 'Chrome >= 59', + 'FireFox >= 44', + 'Safari >= 7', + 'Explorer 11', + 'last 4 Edge versions', + ], + }, + }, + ], + ], +}; diff --git a/packages/message-parser/jest.config.js b/packages/message-parser/jest.config.js new file mode 100644 index 0000000000..114260f819 --- /dev/null +++ b/packages/message-parser/jest.config.js @@ -0,0 +1,12 @@ +const path = require('path'); + +module.exports = { + coverageReporters: [], + transform: { + '\\.pegjs$': path.resolve(__dirname, './loaders/pegtransform.js'), + }, + preset: 'ts-jest', + errorOnDeprecated: true, + testMatch: ['/tests/**/*.(spec|test).ts'], + moduleFileExtensions: ['js', 'ts', 'pegjs'], +}; diff --git a/packages/message-parser/loaders/pegloader.js b/packages/message-parser/loaders/pegloader.js new file mode 100644 index 0000000000..3262456a75 --- /dev/null +++ b/packages/message-parser/loaders/pegloader.js @@ -0,0 +1,7 @@ +const pegjs = require('peggy'); + +module.exports = (content) => + pegjs.generate(content, { + output: 'source', + format: 'commonjs', + }); diff --git a/packages/message-parser/loaders/pegtransform.js b/packages/message-parser/loaders/pegtransform.js new file mode 100644 index 0000000000..c2fe75e5c7 --- /dev/null +++ b/packages/message-parser/loaders/pegtransform.js @@ -0,0 +1,9 @@ +const pegjs = require('peggy'); + +module.exports = { + process: (content) => + pegjs.generate(content, { + output: 'source', + format: 'commonjs', + }), +}; diff --git a/packages/message-parser/messageParser.js b/packages/message-parser/messageParser.js new file mode 100644 index 0000000000..c1dc1bda94 --- /dev/null +++ b/packages/message-parser/messageParser.js @@ -0,0 +1,7 @@ +/* eslint-disable import/no-unresolved */ + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/messageParser.production.js'); +} else { + module.exports = require('./dist/messageParser.development.js'); +} diff --git a/packages/message-parser/package.json b/packages/message-parser/package.json new file mode 100644 index 0000000000..54301bf3cd --- /dev/null +++ b/packages/message-parser/package.json @@ -0,0 +1,77 @@ +{ + "name": "@rocket.chat/message-parser", + "description": "Rocket.Chat parser for messages", + "version": "0.23.0", + "author": { + "name": "Rocket.Chat", + "url": "https://rocket.chat/" + }, + "license": "MIT", + "homepage": "https://github.com/RocketChat/Rocket.Chat.Fuselage#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/RocketChat/Rocket.Chat.Fuselage.git", + "directory": "packages/message-parser" + }, + "bugs": { + "url": "https://github.com/RocketChat/Rocket.Chat.Fuselage/issues" + }, + "main": "messageParser.js", + "exports": { + ".": { + "default": "./messageParser.js" + }, + "./index": { + "default": "./messageParser.js" + } + }, + "module": "dist/messageParser.mjs", + "unpkg": "dist/messageParser.umd.js", + "types": "dist/index.d.ts", + "files": [ + "/dist", + "/messageParser.js" + ], + "directories": { + "test": "test" + }, + "devDependencies": { + "@babel/core": "^7.14.0", + "@babel/eslint-parser": "^7.13.14", + "@babel/preset-env": "^7.14.1", + "@rocket.chat/eslint-config-alt": "workspace:packages/eslint-config-alt", + "@rocket.chat/prettier-config": "workspace:packages/prettier-config", + "@types/jest": "^26.0.23", + "@types/node": "^14.14.43", + "@typescript-eslint/parser": "^4.22.0", + "babel-loader": "^8.2.2", + "eslint": "^7.25.0", + "jest": "^26.6.3", + "lint-staged": "^10.5.4", + "npm-run-all": "^4.1.5", + "peggy": "^1.1.0", + "prettier": "^2.2.1", + "prettier-plugin-pegjs": "^0.3.2", + "rimraf": "^3.0.2", + "ts-jest": "^26.5.5", + "ts-loader": "^9.1.1", + "typescript": "^4.2.4", + "webpack": "^5.36.2", + "webpack-cli": "^4.6.0" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "build": "run-s .:build:clean .:build:bundle", + ".:build:clean": "rimraf dist", + ".:build:bundle": "webpack", + "test": "jest --runInBand --coverage", + "watch": "jest --watch", + "lint": "eslint .", + "lint-fix": "run-p .:lint-fix:eslint .:lint-fix:prettier", + ".:lint-fix:eslint": "eslint --fix .", + ".:lint-fix:prettier": "prettier --write '**/*.pegjs'", + "lint-staged": "lint-staged" + } +} diff --git a/packages/message-parser/src/definitions.ts b/packages/message-parser/src/definitions.ts new file mode 100644 index 0000000000..0aa231f76b --- /dev/null +++ b/packages/message-parser/src/definitions.ts @@ -0,0 +1,185 @@ +export type Blockquote = { + type: 'BLOCKQUOTE'; + value: Paragraph[]; +}; + +export type OrderedList = { + type: 'ORDERED_LIST'; + value: ListItem[]; +}; + +export type UnorderedList = { + type: 'ORDERED_LIST'; + value: ListItem[]; +}; + +export type ListItem = { + type: 'LIST_ITEM'; + value: Inlines[]; +}; + +export type Tasks = { + type: 'TASKS'; + value: Task[]; +}; +export type Task = { + type: 'TASK'; + status: boolean; + value: Inlines[]; +}; + +export type CodeLine = { + type: 'CODE_LINE'; + value: Plain; +}; + +export type Color = { + type: 'COLOR'; + value: { + r: number; + g: number; + b: number; + a: number; + }; +}; + +export type BigEmoji = { + type: 'BIG_EMOJI'; + value: [Emoji] | [Emoji, Emoji] | [Emoji, Emoji, Emoji]; +}; + +export type Emoji = { + type: 'EMOJI'; + value: Plain; +}; + +export type Code = { + type: 'CODE'; + language: string | undefined; + value: CodeLine[]; +}; + +export type InlineCode = { + type: 'INLINE_CODE'; + value: Plain; +}; + +export type Heading = { + type: 'HEADING'; + level: 1 | 2 | 3 | 4; + value: Plain[]; +}; + +export type Quote = { + type: 'QUOTE'; + value: Paragraph[]; +}; + +export type Blocks = Code | Heading | Quote | Paragraph; + +export type Markup = Italic | Strike | Bold | Plain; +export type MarkupExcluding = Exclude; + +export type Bold = { + type: 'BOLD'; + value: Array>; +}; + +export type Italic = { + type: 'ITALIC'; + value: Array>; +}; + +export type Strike = { + type: 'STRIKE'; + value: Array>; +}; + +export type Plain = { + type: 'PLAIN_TEXT'; + value: string; +}; + +export type Paragraph = { + type: 'PARAGRAPH'; + value: Array>; +}; + +export type Link = { + type: 'LINK'; + value: { + src: Plain; + label: Markup; + }; +}; + +export type UserMention = { + type: 'MENTION_USER'; + value: Plain; +}; + +export type ChannelMention = { + type: 'MENTION_CHANNEL'; + value: Plain; +}; + +export type Types = { + BOLD: Bold; + PARAGRAPH: Paragraph; + PLAIN_TEXT: Plain; + ITALIC: Italic; + STRIKE: Strike; + CODE: Code; + CODE_LINE: CodeLine; + INLINE_CODE: InlineCode; + HEADING: Heading; + QUOTE: Quote; + LINK: Link; + MENTION_USER: UserMention; + MENTION_CHANNEL: ChannelMention; + EMOJI: Emoji; + BIG_EMOJI: BigEmoji; + COLOR: Color; + TASKS: Tasks; + TASK: Task; + UNORDERED_LIST: UnorderedList; + ORDERED_LIST: OrderedList; + LIST_ITEM: ListItem; +}; + +export type ASTNode = + | BigEmoji + | Bold + | Paragraph + | Plain + | Italic + | Strike + | Code + | CodeLine + | InlineCode + | Heading + | Quote + | Link + | UserMention + | ChannelMention + | Emoji + | Color + | Tasks; + +export type TypesKeys = keyof Types; + +export type Inlines = + | Bold + | Plain + | Italic + | Strike + | InlineCode + | Link + | UserMention + | ChannelMention + | Emoji + | Color; + +export type Markdown = Array | [BigEmoji]; + +export type ASTMessage = Blocks[]; diff --git a/packages/message-parser/src/grammar.pegjs b/packages/message-parser/src/grammar.pegjs new file mode 100644 index 0000000000..522aafd9bb --- /dev/null +++ b/packages/message-parser/src/grammar.pegjs @@ -0,0 +1,610 @@ +{ + const { + paragraph, + bold, + plain, + italic, + strike, + code, + link, + heading, + inlineCode, + quote, + reducePlainTexts, + codeLine, + mentionChannel, + mentionUser, + emoji, + color, + bigEmoji, + tasks, + task, + orderedList, + listItem, + unorderedList + } = require('./utils'); +} + +start + = EndOfLine? b:BigEmoji EndOfLine? { return b; } + / (Blocks / Paragraph / EndOfLine { return paragraph([plain('')]); })+ + +BigEmoji + = Space* e1:Emoji Space* e2:Emoji? Space* e3:Emoji? Space* { + return [bigEmoji([e1, e2, e3].filter(Boolean))]; + } + +Blocks + = Blockquote + / MultiplelLineCode + / Heading + / TaskList + / OrderedList + / UnorderedList + // / Section + +Emphasis + = Bold + / Italic + / Strikethrough + + +Paragraph += value: + ( Whitespace + / Emoji + / References + / InlineCode + / AutolinkedPhone + / AutolinkedURL + / AutolinkedEmail + / Emphasis + / Color + / UserMention + / ChannelMention + / Any + + )+ + EndOfLine? { return paragraph(reducePlainTexts(value)); } + +Inline + = value: + ( Whitespace + / Emoji + / References + / InlineCode + / AutolinkedPhone + / AutolinkedURL + / AutolinkedEmail + / Emphasis + / Color + / UserMention + / ChannelMention + / Any + )+ + EndOfLine? { return reducePlainTexts(value); } + +Whitespace = w:" "+ { return plain(w.join('')); } + +Any = !EndOfLine t:any { return plain(t); } + +any = $. + +Extra = e:extra { return plain(e); } + +// = Line + +Line = t:line { return plain(t); } + +Text = text:anyText { return plain(text); } + +line + = head:Space* text:anyText+ tail:Space* { + return head.join('') + text.join('') + tail.join(''); + } + +EOF = !. + +crlf + = "\r\n" + / "\r" + / "\n" + +EatLine = (!crlf !EOF .)* + +EndOfLine + = "\r\n" + / "\n" + / "\r" + +Space + = " "+ + / "\t" + +anyText + = [\x20-\x27] /* ! " # $ % & ' ( ) */ + / [\x2B-\x40] + / [\x41-\x5A] + / [\x61-\x7A] + / nonascii + +anyText2 + = [\x20-\x40] + / [\x41-\x60] + / [\x61-\xFFFF] + / nonascii + +ListText + = [\x20-\x27] + / [\x2B-\x40] + / [\x41-\x5A] + / [\x60-\x7A] + / nonascii + +LinkText + = [\x20-\x2A] + / [\x2B-\x40] + / [\x41-\x5B] + / [\x61-\x7A] + / nonascii + +CodeText + = [\x20-\x2A] + / [\x2B-\x40] + / [\x41-\x5F] + / [\x61-\x7E] + / nonascii + / EndOfLine + / Space + +SectionText + = [-]+ + / [\x20-\x40] + / [\x41-\x60] + / [\x61-\x7A] + / nonascii + +Heading + = "# "+ text:Line { return heading([text], 1); } + / "## "+ text:Line { return heading([text], 2); } + / "### "+ text:Line { return heading([text], 3); } + / "#### "+ text:Line { return heading([text], 4); } + +utf8_names_validation = text:[0-9a-zA-Z-_.]+ { return text.join(''); } + +UserMention + = t:Text "@"+ user:utf8_names_validation { + return reducePlainTexts([t, plain('@' + user)])[0]; + } + / "@"+ user:utf8_names_validation { return mentionUser(user); } + +ChannelMention + = t:Text "#" channel:utf8_names_validation { + return reducePlainTexts([t, plain('#' + channel)])[0]; + } + / "#" channel:utf8_names_validation { return mentionChannel(channel); } + +Emoji = ":" text:utf8_names_validation ":" { return emoji(text); } + +/* Sceenshot ------------- */ +Section + = text:SectionText+ ("\r\n" / "\n" / "\r") [-]+ EndOfLine? { + return { + section: text.join(''), + }; + } + +/* __Italic__ */ +/* _Italic_ */ +Italic + = t:[a-zA-Z0-9]+ tail:([\x5F] [\x5F]?) { + return plain(t.join('') + tail.join('')); + } + / [\x5F] [\x5F] i:italic_Content [\x5F] [\x5F] t:[a-zA-Z0-9]+ { + return reducePlainTexts([ + plain('__'), + ...i, + plain('__'), + plain(t.join('')), + ])[0]; + } + / [\x5F] i:italic_Content [\x5F] t:[a-zA-Z]+ { + return reducePlainTexts([ + plain('_'), + ...i, + plain('_'), + plain(t.join('')), + ])[0]; + } + / [\x5F] [\x5F] i:Italic_Content [\x5F] [\x5F] { return i; } + / [\x5F] i:Italic_Content [\x5F] { return i; } + +Italic_Content = text:italic_Content { return italic(text); } + +italic_Content + = text:(Bold / Strikethrough / Line / AnyItalic)+ { + return reducePlainTexts(text); + } + +/* **Bold** */ +/* *Bold* */ +Bold + = [\x2A] [\x2A] b:Bold_Content [\x2A] [\x2A] { return b; } + / [\x2A] b:Bold_Content [\x2A] { return b; } + +Bold_Content + = text:(Italic / Strikethrough / Line / AnyBold)+ { + return bold(reducePlainTexts(text)); + } + +/* ~~Mistaken text.~~ */ +/* ~Mistaken text.~ */ +Strikethrough + = [\x7E] [\x7E] s:Strikethrough_Content [\x7E] [\x7E] { return s; } + / [\x7E] s:Strikethrough_Content [\x7E] { return s; } + +Strikethrough_Content + = text:(Italic / Bold / Line / AnyStrike)+ { + return strike(reducePlainTexts(text)); + } + +AnyBold = t:[^\x0a\* ] { return plain(t); } + +AnyStrike = t:[^\x0a\~ ] { return plain(t); } + +AnyItalic = t:[^\x0a\_ ] { return plain(t); } + +ListItem + = ("\x2A " / "\x2D ") text:ListText+ Space? { return text.join('').trim(); } + +Lists + = lists:ListItem+ { + return { + lists: lists, + }; + } + +Blockquote = b:BlockquoteItem+ { + return quote(b) +} + +BlockquoteItem = "> " p:Paragraph { return p } + +// - [ ] this is an incomplete item +// - [x] this is a complete item +TaskList + = t:TaskItem+ { + return tasks(t); + } + +TaskItem = "- [x] " text:Inline { return task(text, true); } + / "- [ ] " text:Inline { return task(text, false); } + + +UnorderedList = UnorderedList_ / UnorderedList__ + + +UnorderedList_ = lists:UnorderedListItem_+ { + return unorderedList(lists) +} + +UnorderedList__ = lists:UnorderedListItem__+ { + return unorderedList(lists) +} + +UnorderedListItem_ + = ("- ") text:Inline { return listItem(text, true); } + +UnorderedListItem__ + = ("* ") text:UnorderedListItem__Inline { return listItem(text, true); } + +UnorderedListItem__Inline + = value: + ( Whitespace + / Emoji + / References + / InlineCode + / AutolinkedPhone + / AutolinkedURL + / AutolinkedEmail + / Emphasis + / Color + / UserMention + / ChannelMention + / !'*' a:Any { return a } + )+ + !'*' EndOfLine? { return reducePlainTexts(value); } + +OrderedList + = lists:OrderedListItem+ { + return orderedList(lists) + } +OrderedListItem + = (digit1_9+ "\x2E ") text:Inline { return listItem(text, true); } + +Codetype = t:[a-zA-Z0-9 \_\-.]+ { return t.join(''); } + +InlineCode = "`" text:Line "`" { return inlineCode(text); } + +LineCode "LineCode" + = text:[^"\n"\`]+ "`"? { return codeLine(plain(text.join(''))); } + / "\n"+ text:[^"\n"\`]+ "`"? { return codeLine(plain(text.join(''))); } + +MultiplelLineCode + = "```" t:Codetype? "\n" value:LineCode+ "\n"+ "```" { + return code(value, t); + } + +// [Visit GitHub!](www.github.com) +LinkTitle = "[" text:(Emphasis / Line) "]" { return text; } + +LinkRef + = "(" text:(URL / p:Phone { return 'tel:' + p.number; }) ")" { return text; } + +References = title:LinkTitle href:LinkRef { return link(href, title); } + +/* Macros */ + +h = [0-9a-f]i + +nonascii = [\x80-\uFFFF] + +unicode + = "\\" digits:$(h h? h? h? h? h?) ("\r\n" / [ \t\r\n\f])? { + return String.fromCharCode(parseInt(digits, 16)); + } + +escape + = unicode + / "\\" ch:[^\r\n\f0-9a-f]i { return ch; } + +nmstart + = [_a-z]i + / nonascii + / escape + +nmchar + = [_a-z0-9-]i + / nonascii + / escape + +string1 + = "\"" chars:([^\n\r\f\\"] / "\\" nl:nl { return ''; } / escape)* "\"" { + return chars.join(''); + } + +string2 + = "'" chars:([^\n\r\f\\'] / "\\" nl:nl { return ''; } / escape)* "'" { + return chars.join(''); + } + +string = chars:(string1 / [_a-zA-Z0-9-\n]+) { return chars.join(''); } + +comment = "/*" [^*]* "*"+ ([^/*] [^*]* "*"+)* "/" + +ident + = prefix:$"-"? start:nmstart chars:nmchar* { + return prefix + start + chars.join(''); + } + +name = chars:nmchar+ { return chars.join(''); } + +num + = [+-]? ([0-9]+ / [0-9]* "." [0-9]+) ("e" [+-]? [0-9]+)? { + return parseFloat(text()); + } + +s = [ \t\r\n\f]+ + +w = s? + +nl + = "\n" + / "\r\n" + / "\r" + / "\f" + +AutolinkedPhone = p:Phone { return link('tel:' + p.number, plain(p.text)); } + +AutolinkedURL = u:URL { return link(u); } + +AutolinkedEmail = e:Email { return link('mailto:' + e, plain(e)); } + +alpha = [a-zA-Z] + +digit = [0-9] + +digit1_9 = [1-9] + +digits = d:digit+ { return d.join(''); } + +safe + = "$" + / "-" + / "\_" + / "@" + / "." + / "&" + / "=" + +extra + = "!" + / "*" + / "\"" + / "'" + / ":" + / ";" + / "," + / " " + / "(" + / ")" + / "?" + / "#" + / "=" + +hexdigit = [0-9A-Fa-f] + +hexNible = a:hexdigit { return parseInt(a + a, 16); } + +hexByte = a:hexdigit b:hexdigit { return parseInt(a + b, 16); } + +domainName + = "localhost" + / $(domainNameLabel ("." domainNameLabel)+) + +domainNameLabel = $(domainChar domainChar+ $("-" domainChar+)*) + +domainChar = !safe !extra !EndOfLine !Space . + +/** + * + * Color + * + */ + +Color = "color:#" rgba:colorRGBATuple !anyText { return color(...rgba); } + +colorRGBATuple + = r:hexByte g:hexByte b:hexByte a:hexByte { return [r, g, b, a]; } + / r:hexByte g:hexByte b:hexByte { return [r, g, b]; } + / r:hexNible g:hexNible b:hexNible a:hexNible { return [r, g, b, a]; } + / r:hexNible g:hexNible b:hexNible { return [r, g, b]; } + +/** + * + * Phone + * + */ + +Phone = "+" p:phoneNumber { return { text: '+' + p.text, number: p.number }; } + +phoneNumber + = p:phonePrefix "-" d:digits { + return { text: p.text + '-' + d, number: p.number + d }; + } + / p:phonePrefix d:digits { + return { text: p.text + d, number: p.number + d }; + } + / d:digits { return { text: d, number: d }; } + +phonePrefix + = d:digits { return { text: d, number: d }; } + / "(" d:digits ")" { return { text: '(' + d + ')', number: d }; } + +/** + * + * URL + * + */ + +URL + = s:urlScheme a:urlAuthority p:urlPath? q:urlQuery? f:urlFragment? { + const href = [s, a, p, q, f].filter(Boolean).join(''); + // const url = { + // href, + // scheme: s, + // authority: a, + // path: p, + // query: q, + // fragment: f, + // }; + + return href; + } + +urlScheme + = $( + [A-Za-z] + [A-Za-z0-9+.-] + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? + [A-Za-z0-9+.-]? // up to 32 characters + ":" + ) + +urlAuthority = $("//" urlAuthorityUserInfo? urlAuthorityHost) + +urlAuthorityUserInfo = $(urlAuthorityUser (":" urlAuthorityPassword)? "@") + +urlAuthorityUser = $(alpha / digit / "$" / "-" / "_" / "." / "&" / "=")+ + +urlAuthorityPassword = $(alpha / digit / "$" / "-" / "_" / "." / "&" / "=")+ + +urlAuthorityHost = urlAuthorityHostName (":" urlAuthorityPort)? + +urlAuthorityHostName + = domainName + / $(digits "." digits "." digits "." digits) // TODO: IPv4 and IPv6 + +urlAuthorityPort + = digits // TODO: from "0" to "65535" + +urlPath = $("/" $(alpha / digit / safe)+ urlPath*) + +urlQuery = $("?" $(alpha / digit / safe)+) + +urlFragment = $("#" $(alpha / digit / safe)+) + +/** + * + * Email + * + */ + +Email + = "mailto:" e:$(localPart "@" domainName) { return e; } + / $(localPart "@" domainName) + +localPart = $(localPartChar+ $("." localPartChar+)*) + +alphaChar + = [A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC] + +emojiChar + = [\u2700-\u27bf\udde6-\uddff\ud800-\udbff\udc00-\udfff\ufe0e\ufe0f\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0\ud83c\udffb-\udfff\u200d\u3299\u3297\u303d\u3030\u24c2\ud83c\udd70-\udd71\udd7e-\udd7f\udd8e\udd91-\udd9a\udde6-\uddff\ude01-\ude02\ude1a\ude2f\ude32-\ude3a\ude50-\ude51\u203c\u2049\u25aa-\u25ab\u25b6\u25c0\u25fb-\u25fe\u00a9\u00ae\u2122\u2139\udc04\u2600-\u26FF\u2b05\u2b06\u2b07\u2b1b\u2b1c\u2b50\u2b55\u231a\u231b\u2328\u23cf\u23e9-\u23f3\u23f8-\u23fa\udccf\u2935\u2934\u2190-\u21ff] + +markChar + = [\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F] + +alphaOrMarkChar + = alphaChar + / emojiChar + / markChar + +decimalNumberChar + = [0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19] + +alphaNumericOrMarkChar + = alphaOrMarkChar + / decimalNumberChar + +localPartChar + = alphaNumericOrMarkChar + / [!#$%&'*+/=?^_\`{|}~-] diff --git a/packages/message-parser/src/guards.ts b/packages/message-parser/src/guards.ts new file mode 100644 index 0000000000..2f9503bd7b --- /dev/null +++ b/packages/message-parser/src/guards.ts @@ -0,0 +1,10 @@ +import { ASTNode } from './definitions'; + +export const isNodeOfType = ( + value: unknown, + type: N['type'] +): value is N => + typeof value === 'object' && + value !== null && + 'type' in value && + (value as { type: unknown }).type === type; diff --git a/packages/message-parser/src/index.ts b/packages/message-parser/src/index.ts new file mode 100644 index 0000000000..66e47f9be9 --- /dev/null +++ b/packages/message-parser/src/index.ts @@ -0,0 +1,8 @@ +import { ASTMessage } from './definitions'; +import { parse } from './grammar.pegjs'; + +export * from './definitions'; + +export { isNodeOfType } from './guards'; + +export const parser = (input: string): ASTMessage => parse(input); diff --git a/packages/message-parser/src/typings/peg.d.ts b/packages/message-parser/src/typings/peg.d.ts new file mode 100644 index 0000000000..0c441c3a5a --- /dev/null +++ b/packages/message-parser/src/typings/peg.d.ts @@ -0,0 +1,6 @@ +declare module '*.pegjs' { + export const parse: ( + input: string, + options?: import('peggy').ParserOptions + ) => import('../definitions').ASTMessage; +} diff --git a/packages/message-parser/src/utils.ts b/packages/message-parser/src/utils.ts new file mode 100644 index 0000000000..8fe1b3de45 --- /dev/null +++ b/packages/message-parser/src/utils.ts @@ -0,0 +1,105 @@ +import { + BigEmoji, + Code, + Color, + Heading, + Markup, + Paragraph, + Types, + Task, +} from './definitions'; + +const generate = (type: Type) => ( + value: Types[Type]['value'] +): Types[Type] => ({ type, value } as any); + +export const paragraph = generate('PARAGRAPH'); + +export const bold = generate('BOLD'); + +export const color = (r: number, g: number, b: number, a = 255): Color => ({ + type: 'COLOR', + value: { r, g, b, a }, +}); + +export const emoji = (() => { + const fn = generate('EMOJI'); + return (value: string) => fn(plain(value)); +})(); + +export const heading = ( + value: Heading['value'], + level: Heading['level'] = 1 +): Heading => ({ + type: 'HEADING', + level, + value, +}); + +export const code = ( + value: Code['value'], + language?: Code['language'] +): Code => ({ + type: 'CODE', + language: language || 'none', + value, +}); + +export const bigEmoji = (value: BigEmoji['value']): BigEmoji => ({ + type: 'BIG_EMOJI', + value, +}); + +export const task = (value: Task['value'], status: boolean): Task => ({ + type: 'TASK', + status, + value, +}); + +export const inlineCode = generate('INLINE_CODE'); +export const tasks = generate('TASKS'); + +export const italic = generate('ITALIC'); + +export const plain = generate('PLAIN_TEXT'); +export const strike = generate('STRIKE'); +export const codeLine = generate('CODE_LINE'); +export const link = (() => { + const fn = generate('LINK'); + return (src: string, label?: Markup) => + fn({ src: plain(src), label: label || plain(src) }); +})(); +export const quote = generate('QUOTE'); + +export const mentionChannel = (() => { + const fn = generate('MENTION_CHANNEL'); + return (value: string) => fn(plain(value)); +})(); + +export const orderedList = generate('ORDERED_LIST'); + +export const unorderedList = generate('UNORDERED_LIST'); + +export const listItem = generate('LIST_ITEM'); + +export const list = generate('ORDERED_LIST'); + +export const mentionUser = (() => { + const fn = generate('MENTION_USER'); + return (value: string) => fn(plain(value)); +})(); + +export const reducePlainTexts = ( + values: Paragraph['value'] +): Paragraph['value'] => + values.reduce((result, item, index) => { + if (index > 0) { + const previous = result[result.length - 1]; + if (item.type === 'PLAIN_TEXT' && item.type === previous.type) { + previous.value += item.value; + return result; + } + } + + return [...result, item]; + }, [] as Paragraph['value']); diff --git a/packages/message-parser/tests/any.test.ts b/packages/message-parser/tests/any.test.ts new file mode 100644 index 0000000000..936154932b --- /dev/null +++ b/packages/message-parser/tests/any.test.ts @@ -0,0 +1,13 @@ +import { parser } from '../src'; +import { paragraph, plain } from '../src/utils'; + +test.each([ + ['free text', [paragraph([plain('free text')])]], + ['free text, with comma', [paragraph([plain('free text, with comma')])]], + [ + 'free text with unxpected/unfinished blocks *bold_', + [paragraph([plain('free text with unxpected/unfinished blocks *bold_')])], + ], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/blockquotes.test.ts b/packages/message-parser/tests/blockquotes.test.ts new file mode 100644 index 0000000000..15726125a2 --- /dev/null +++ b/packages/message-parser/tests/blockquotes.test.ts @@ -0,0 +1,29 @@ +import { parser } from '../src'; +import { paragraph, plain, quote, bold } from '../src/utils'; + +test.each([ + [ + ` +As Rocket Cat said: +> meowww +> grr. +`.trim(), + [ + paragraph([plain('As Rocket Cat said:')]), + quote([paragraph([plain('meowww')]), paragraph([plain('grr.')])]), + ], + ], + [ + ` +As Rocket Cat said: +> *meowww* +> grr. +`.trim(), + [ + paragraph([plain('As Rocket Cat said:')]), + quote([paragraph([bold([plain('meowww')])]), paragraph([plain('grr.')])]), + ], + ], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/codeFence.test.ts b/packages/message-parser/tests/codeFence.test.ts new file mode 100644 index 0000000000..17160b0135 --- /dev/null +++ b/packages/message-parser/tests/codeFence.test.ts @@ -0,0 +1,49 @@ +import { parser } from '../src'; +import { paragraph, plain, codeLine, code } from '../src/utils'; + +test.each([ + [ + `\`\`\` +code +\`\`\``, + [code([codeLine(plain('code'))])], + ], + [ + `\`\`\`javascript +code +\`\`\``, + [code([codeLine(plain('code'))], 'javascript')], + ], + [ + `\`\`\`bash c +code +\`\`\``, + [code([codeLine(plain('code'))], 'bash c')], + ], + [ + ` \`\`\` +code +\`\`\``, + [ + paragraph([plain(` \`\`\``)]), + paragraph([plain(`code`)]), + paragraph([plain(`\`\`\``)]), + ], + ], + [ + `\`\`\` +code +code +\`\`\``, + [code([codeLine(plain(`code`)), codeLine(plain(`code`))])], + ], + [ + `\`\`\` +# code +**code** +\`\`\``, + [code([codeLine(plain(`# code`)), codeLine(plain(`**code**`))])], + ], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/color.test.ts b/packages/message-parser/tests/color.test.ts new file mode 100644 index 0000000000..1a99ec4945 --- /dev/null +++ b/packages/message-parser/tests/color.test.ts @@ -0,0 +1,14 @@ +import { parser } from '../src'; +import { color, paragraph, plain } from '../src/utils'; + +test.each([ + ['color:#ccc', [paragraph([color(0xcc, 0xcc, 0xcc)])]], + ['color:#cccc', [paragraph([color(0xcc, 0xcc, 0xcc, 0xcc)])]], + ['color:#c7c7c7', [paragraph([color(0xc7, 0xc7, 0xc7)])]], + ['color:#c7c7c7c7', [paragraph([color(0xc7, 0xc7, 0xc7, 0xc7)])]], + ['color:#c7c7c7c7c7', [paragraph([plain('color:#c7c7c7c7c7')])]], + ['color:#c7', [paragraph([plain('color:#c7')])]], + ['color:#zzz', [paragraph([plain('color:#zzz')])]], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/email.test.ts b/packages/message-parser/tests/email.test.ts new file mode 100644 index 0000000000..a35ef8c4ab --- /dev/null +++ b/packages/message-parser/tests/email.test.ts @@ -0,0 +1,154 @@ +import { parser } from '../src'; +import { link, paragraph, plain } from '../src/utils'; + +test.each([ + [ + 'joe@joe.com', + [paragraph([link('mailto:joe@joe.com', plain('joe@joe.com'))])], + ], + [ + "joe@joe.com is Joe's email", + [ + paragraph([ + link('mailto:joe@joe.com', plain('joe@joe.com')), + plain(" is Joe's email"), + ]), + ], + ], + [ + "joe@joe.com is Joe's email", + [ + paragraph([ + link('mailto:joe@joe.com', plain('joe@joe.com')), + plain(" is Joe's email"), + ]), + ], + ], + [ + "Joe's email is joe@joe.com because it is", + [ + paragraph([ + plain("Joe's email is "), + link('mailto:joe@joe.com', plain('joe@joe.com')), + plain(' because it is'), + ]), + ], + ], + [ + "Joe's email is joe@joe.com", + [ + paragraph([ + plain("Joe's email is "), + link('mailto:joe@joe.com', plain('joe@joe.com')), + ]), + ], + ], + [ + "Joe's email is joe@joe.com. Try emailing him", + [ + paragraph([ + plain("Joe's email is "), + link('mailto:joe@joe.com', plain('joe@joe.com')), + plain('. Try emailing him'), + ]), + ], + ], + [ + "Joe's email is joe.smith@joe.com", + [ + paragraph([ + plain("Joe's email is "), + link('mailto:joe.smith@joe.com', plain('joe.smith@joe.com')), + ]), + ], + ], + [ + "Joe's email is JOE@JOE.COM", + [ + paragraph([ + plain("Joe's email is "), + link('mailto:JOE@JOE.COM', plain('JOE@JOE.COM')), + ]), + ], + ], + [ + "Joe's email is (joe@joe.com)", + [ + paragraph([ + plain("Joe's email is ("), + link('mailto:joe@joe.com', plain('joe@joe.com')), + plain(')'), + ]), + ], + ], + [ + "Joe's email is (joe_roe@joe.com)", + [ + paragraph([ + plain("Joe's email is ("), + link('mailto:joe_roe@joe.com', plain('joe_roe@joe.com')), + plain(')'), + ]), + ], + ], + [ + "Joe's email is (joe'roe@joe.com)", + [ + paragraph([ + plain("Joe's email is ("), + link("mailto:joe'roe@joe.com", plain("joe'roe@joe.com")), + plain(')'), + ]), + ], + ], + [ + "Joe's email is mañana@mañana.com", + [ + paragraph([ + plain("Joe's email is "), + link('mailto:mañana@mañana.com', plain('mañana@mañana.com')), + ]), + ], + ], + [ + "Joe's email is Кириллица@Кириллица.com", + [ + paragraph([ + plain("Joe's email is "), + link( + 'mailto:Кириллица@Кириллица.com', + plain('Кириллица@Кириллица.com') + ), + ]), + ], + ], + ['Hi there@stuff', [paragraph([plain('Hi there@stuff')])]], + [ + 'My email is busueng.kim@aaa.com', + [ + paragraph([ + plain('My email is '), + link('mailto:busueng.kim@aaa.com', plain('busueng.kim@aaa.com')), + ]), + ], + ], + [ + 'My email is mailto:asdf@asdf.com', + [ + paragraph([ + plain('My email is '), + link('mailto:asdf@asdf.com', plain('asdf@asdf.com')), + ]), + ], + ], + [ + 'My email is fake@gmail.c', + [paragraph([plain('My email is fake@gmail.c')])], + ], + // [ + // 'My email is fake@gmail.comf', + // [paragraph([plain('My email is fake@gmail.comf')])], + // ], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/emoji.test.ts b/packages/message-parser/tests/emoji.test.ts new file mode 100644 index 0000000000..fe676dc0a4 --- /dev/null +++ b/packages/message-parser/tests/emoji.test.ts @@ -0,0 +1,36 @@ +import { parser } from '../src'; +import { emoji, bigEmoji, paragraph, plain } from '../src/utils'; + +test.each([ + [ + 'normal emojis :smile::smile::smile:', + [ + paragraph([ + plain('normal emojis '), + emoji('smile'), + emoji('smile'), + emoji('smile'), + ]), + ], + ], + [ + ':smile::smile::smile:', + [bigEmoji([emoji('smile'), emoji('smile'), emoji('smile')])], + ], + [ + ' :smile::smile::smile: ', + [bigEmoji([emoji('smile'), emoji('smile'), emoji('smile')])], + ], + [ + '\n :smile::smile::smile: \n', + [bigEmoji([emoji('smile'), emoji('smile'), emoji('smile')])], + ], + [ + ':smile: :smile: :smile:', + [bigEmoji([emoji('smile'), emoji('smile'), emoji('smile')])], + ], + [':smile::smile:', [bigEmoji([emoji('smile'), emoji('smile')])]], + [':smile:', [bigEmoji([emoji('smile')])]], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/emphasis.test.ts b/packages/message-parser/tests/emphasis.test.ts new file mode 100644 index 0000000000..3b06d281d9 --- /dev/null +++ b/packages/message-parser/tests/emphasis.test.ts @@ -0,0 +1,87 @@ +import { parser } from '../src'; +import { + italic, + paragraph, + plain, + strike, + bold, + emoji, + bigEmoji, +} from '../src/utils'; + +test.each([ + ['__italic__', [paragraph([italic([plain('italic')])])]], + ['pre__italic__post', [paragraph([plain('pre__italic__post')])]], + [' pre__italic__post', [paragraph([plain(' pre__italic__post')])]], + [ + ' pre__**~~boldstrikeitalic~~**__post ', + [ + paragraph([ + plain(' pre__'), + bold([strike([plain('boldstrikeitalic')])]), + plain('__post '), + ]), + ], + ], + ['__', [paragraph([plain('__')])]], + ['_ _', [paragraph([plain('_ _')])]], + ['__ _', [paragraph([plain('__ _')])]], + ['__ __', [paragraph([plain('__ __')])]], + ['_ Hello_', [paragraph([italic([plain(' Hello')])])]], + ['_Hello _', [paragraph([italic([plain('Hello ')])])]], + [':custom_emoji_case:', [bigEmoji([emoji('custom_emoji_case')])]], + ['_Hel lo_', [paragraph([italic([plain('Hel lo')])])]], + ['_Hello_', [paragraph([italic([plain('Hello')])])]], + ['__Hello__', [paragraph([italic([plain('Hello')])])]], + ['__Hello_', [paragraph([plain('_'), italic([plain('Hello')])])]], + ['_Hello__', [paragraph([italic([plain('Hello')]), plain('_')])]], + ['_Hello', [paragraph([plain('_Hello')])]], + ['Hello_', [paragraph([plain('Hello_')])]], + ['He_llo', [paragraph([plain('He_llo')])]], + [ + '___Hello___', + [paragraph([plain('_'), italic([plain('Hello')]), plain('_')])], + ], + ['___Hello__', [paragraph([plain('_'), italic([plain('Hello')])])]], + [ + '_Hello_ this is dog', + [paragraph([italic([plain('Hello')]), plain(` this is dog`)])], + ], + [ + 'Rocket cat says _Hello_', + [paragraph([plain(`Rocket cat says `), italic([plain('Hello')])])], + ], + [ + 'He said _Hello_ to her', + [ + paragraph([ + plain(`He said `), + italic([plain('Hello')]), + plain(` to her`), + ]), + ], + ], + [ + '__Hello__ this is dog', + [paragraph([italic([plain('Hello')]), plain(` this is dog`)])], + ], + [ + 'Rocket cat says __Hello__', + [paragraph([plain(`Rocket cat says `), italic([plain('Hello')])])], + ], + [ + 'He said __Hello__ to her', + [ + paragraph([ + plain(`He said `), + italic([plain('Hello')]), + plain(` to her`), + ]), + ], + ], + ['text_hello_text', [paragraph([plain('text_hello_text')])]], + ['_hello_text', [paragraph([plain('_hello_text')])]], + ['text_hello_', [paragraph([plain('text_hello_')])]], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/heading.test.ts b/packages/message-parser/tests/heading.test.ts new file mode 100644 index 0000000000..2d23137725 --- /dev/null +++ b/packages/message-parser/tests/heading.test.ts @@ -0,0 +1,50 @@ +import { parser } from '../src'; +import { heading, mentionChannel, paragraph, plain } from '../src/utils'; + +test.each([ + ['# h1', [heading([plain('h1')], 1)]], + ['# Hello', [heading([plain('Hello')], 1)]], + ['# Rocket.Cat', [heading([plain('Rocket.Cat')], 1)]], + ['# Hi', [heading([plain('Hi')], 1)]], + ['# Hello this is dog', [heading([plain('Hello this is dog')], 1)]], + ['# Rocket cat says Hello', [heading([plain('Rocket cat says Hello')], 1)]], + ['# He said Hello to her', [heading([plain('He said Hello to her')], 1)]], + ['#Hello', [paragraph([mentionChannel('Hello')])]], + ['#Hello#', [paragraph([mentionChannel('Hello'), plain('#')])]], + ['He#llo', [paragraph([plain('He#llo')])]], + + ['## Hello', [heading([plain('Hello')], 2)]], + ['## Rocket.Cat', [heading([plain('Rocket.Cat')], 2)]], + ['## Hi', [heading([plain('Hi')], 2)]], + ['## Hello this is dog', [heading([plain('Hello this is dog')], 2)]], + ['## Rocket cat says Hello', [heading([plain('Rocket cat says Hello')], 2)]], + ['## He said Hello to her', [heading([plain('He said Hello to her')], 2)]], + ['##Hello', [paragraph([plain('##Hello')])]], + ['##Hello##', [paragraph([plain('##Hello##')])]], + ['He##llo', [paragraph([plain('He##llo')])]], + + ['### Hello', [heading([plain('Hello')], 3)]], + ['### Rocket.Cat', [heading([plain('Rocket.Cat')], 3)]], + ['### Hi', [heading([plain('Hi')], 3)]], + ['### Hello this is dog', [heading([plain('Hello this is dog')], 3)]], + ['### Rocket cat says Hello', [heading([plain('Rocket cat says Hello')], 3)]], + ['### He said Hello to her', [heading([plain('He said Hello to her')], 3)]], + ['###Hello', [paragraph([plain('###Hello')])]], + ['###Hello###', [paragraph([plain('###Hello###')])]], + ['He###llo', [paragraph([plain('He###llo')])]], + + ['#### Hello', [heading([plain('Hello')], 4)]], + ['#### Rocket.Cat', [heading([plain('Rocket.Cat')], 4)]], + ['#### Hi', [heading([plain('Hi')], 4)]], + ['#### Hello this is dog', [heading([plain('Hello this is dog')], 4)]], + [ + '#### Rocket cat says Hello', + [heading([plain('Rocket cat says Hello')], 4)], + ], + ['#### He said Hello to her', [heading([plain('He said Hello to her')], 4)]], + ['####Hello', [paragraph([plain('####Hello')])]], + ['####Hello####', [paragraph([plain('####Hello####')])]], + ['He####llo', [paragraph([plain('He####llo')])]], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/inlineCode.test.ts b/packages/message-parser/tests/inlineCode.test.ts new file mode 100644 index 0000000000..df6e557fc9 --- /dev/null +++ b/packages/message-parser/tests/inlineCode.test.ts @@ -0,0 +1,9 @@ +import { parser } from '../src'; +import { inlineCode, paragraph, plain } from '../src/utils'; + +test.each([[`\`code\``, [paragraph([inlineCode(plain('code'))])]]])( + 'parses %p', + (input, output) => { + expect(parser(input)).toMatchObject(output); + } +); diff --git a/packages/message-parser/tests/link.test.ts b/packages/message-parser/tests/link.test.ts new file mode 100644 index 0000000000..2fb8444d3a --- /dev/null +++ b/packages/message-parser/tests/link.test.ts @@ -0,0 +1,39 @@ +import { parser } from '../src'; +import { link, paragraph, plain, bold, strike, italic } from '../src/utils'; + +test.each([ + [ + '[title](https://rocket.chat)', + [paragraph([link('https://rocket.chat', plain('title'))])], + ], + [ + '[title](http://localhost)', + [paragraph([link('http://localhost', plain('title'))])], + ], + [ + '[title](http://localhost?testing=true)', + [paragraph([link('http://localhost?testing=true', plain('title'))])], + ], + [ + '[**title**](https://rocket.chat)', + [paragraph([link('https://rocket.chat', bold([plain('title')]))])], + ], + [ + '[~~title~~](https://rocket.chat)', + [paragraph([link('https://rocket.chat', strike([plain('title')]))])], + ], + [ + '[__title__](https://rocket.chat)', + [paragraph([link('https://rocket.chat', italic([plain('title')]))])], + ], + [ + '[__**~~title~~**__](https://rocket.chat)', + [ + paragraph([ + link('https://rocket.chat', italic([bold([strike([plain('title')])])])), + ]), + ], + ], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/mention.test.ts b/packages/message-parser/tests/mention.test.ts new file mode 100644 index 0000000000..10ce86921f --- /dev/null +++ b/packages/message-parser/tests/mention.test.ts @@ -0,0 +1,13 @@ +import { parser } from '../src'; +import { paragraph, plain, mentionUser, mentionChannel } from '../src/utils'; + +test.each([ + ['@guilherme.gazzo', [paragraph([mentionUser('guilherme.gazzo')])]], + [ + '@guilherme.gazzo. ', + [paragraph([mentionUser('guilherme.gazzo.'), plain(' ')])], + ], + ['#GENERAL', [paragraph([mentionChannel('GENERAL')])]], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/orderedList.test.ts b/packages/message-parser/tests/orderedList.test.ts new file mode 100644 index 0000000000..119ed9f8e4 --- /dev/null +++ b/packages/message-parser/tests/orderedList.test.ts @@ -0,0 +1,42 @@ +import { parser } from '../src'; +import { bold, plain, orderedList, listItem } from '../src/utils'; + +test.each([ + [ + ` +1. First item +2. Second item +3. Third item +4. *Fourth item* +`.trim(), + [ + orderedList([ + listItem([plain('First item')]), + listItem([plain('Second item')]), + listItem([plain('Third item')]), + listItem([bold([plain('Fourth item')])]), + ]), + ], + ], + + // [ + // ` + // 1. First item + // 2. Second item + // 3. Third item + // 1. First item + // 2. Second item + // 4. *Fourth item* + // `.trim(), + // [ + // orderedList([ + // listItem([plain('First item')]), + // listItem([plain('Second item')]), + // listItem([plain('Third item')]), + // listItem([bold([plain('Fourth item')])]), + // ]), + // ], + // ], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/phoneNumber.test.ts b/packages/message-parser/tests/phoneNumber.test.ts new file mode 100644 index 0000000000..b77b138ad2 --- /dev/null +++ b/packages/message-parser/tests/phoneNumber.test.ts @@ -0,0 +1,31 @@ +import { parser } from '../src'; +import { link, paragraph, plain, bold } from '../src/utils'; + +test.each([ + [ + '+07563546725', + [paragraph([link('tel:07563546725', plain('+07563546725'))])], + ], + [ + '+075-63546725', + [paragraph([link('tel:07563546725', plain('+075-63546725'))])], + ], + [ + '+(075)-63546725', + [paragraph([link('tel:07563546725', plain('+(075)-63546725'))])], + ], + [ + '+(075)63546725', + [paragraph([link('tel:07563546725', plain('+(075)63546725'))])], + ], + [ + '[here](+(075)63546725)', + [paragraph([link('tel:07563546725', plain('here'))])], + ], + [ + '[**here**](+(075)63546725)', + [paragraph([link('tel:07563546725', bold([plain('here')]))])], + ], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/strikethrough.test.ts b/packages/message-parser/tests/strikethrough.test.ts new file mode 100644 index 0000000000..5c947a330c --- /dev/null +++ b/packages/message-parser/tests/strikethrough.test.ts @@ -0,0 +1,82 @@ +import { parser } from '../src'; +import { strike, paragraph, plain } from '../src/utils'; + +test.each([ + ['__test__test__', [paragraph([plain('__test__test__')])]], + ['~~strike~~', [paragraph([strike([plain('strike')])])]], + [ + 'pre~~strike~~post', + [paragraph([plain('pre'), strike([plain('strike')]), plain('post')])], + ], + [ + ' pre~~strike~~post ', + [paragraph([plain(' pre'), strike([plain('strike')]), plain('post ')])], + ], + ['~~', [paragraph([plain('~~')])]], + ['~ ~', [paragraph([plain('~ ~')])]], + ['~~ ~', [paragraph([plain('~~ ~')])]], + ['~~ ~~', [paragraph([plain('~~ ~~')])]], + ['~ Hello~', [paragraph([strike([plain(' Hello')])])]], + ['~Hello ~', [paragraph([strike([plain('Hello ')])])]], + [ + ':custom~emoji~case:', + [paragraph([plain(`:custom`), strike([plain('emoji')]), plain(`case:`)])], + ], + [ + 'text~hello~text', + [paragraph([plain(`text`), strike([plain('hello')]), plain(`text`)])], + ], + ['~hello~text', [paragraph([strike([plain('hello')]), plain(`text`)])]], + ['text~hello~', [paragraph([plain(`text`), strike([plain('hello')])])]], + ['~Hel lo~', [paragraph([strike([plain('Hel lo')])])]], + ['~Hello~', [paragraph([strike([plain('Hello')])])]], + ['~~Hello~~', [paragraph([strike([plain('Hello')])])]], + ['~~Hello~', [paragraph([plain(`~`), strike([plain('Hello')])])]], + ['~Hello~~', [paragraph([strike([plain('Hello')]), plain(`~`)])]], + ['~Hello', [paragraph([plain('~Hello')])]], + ['Hello~', [paragraph([plain('Hello~')])]], + ['He~llo', [paragraph([plain('He~llo')])]], + [ + '~~~Hello~~~', + [paragraph([plain(`~`), strike([plain('Hello')]), plain(`~`)])], + ], + ['~~~Hello~~', [paragraph([plain(`~`), strike([plain('Hello')])])]], + [ + '~Hello~ this is dog', + [paragraph([strike([plain('Hello')]), plain(` this is dog`)])], + ], + [ + 'Rocket cat says ~Hello~', + [paragraph([plain(`Rocket cat says `), strike([plain('Hello')])])], + ], + [ + 'He said ~Hello~ to her', + [ + paragraph([ + plain(`He said `), + strike([plain('Hello')]), + plain(` to her`), + ]), + ], + ], + [ + '~~Hello~~ this is dog', + [paragraph([strike([plain('Hello')]), plain(` this is dog`)])], + ], + [ + 'Rocket cat says ~~Hello~~', + [paragraph([plain(`Rocket cat says `), strike([plain('Hello')])])], + ], + [ + 'He said ~~Hello~~ to her', + [ + paragraph([ + plain(`He said `), + strike([plain('Hello')]), + plain(` to her`), + ]), + ], + ], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/strongEmphasis.test.ts b/packages/message-parser/tests/strongEmphasis.test.ts new file mode 100644 index 0000000000..6c0dde9fb5 --- /dev/null +++ b/packages/message-parser/tests/strongEmphasis.test.ts @@ -0,0 +1,116 @@ +import { parser } from '../src'; +import { bold, paragraph, plain, italic, strike } from '../src/utils'; + +test.each([ + ['**bold**', [paragraph([bold([plain('bold')])])]], + ['** bold**', [paragraph([bold([plain(' bold')])])]], + ['** bold **', [paragraph([bold([plain(' bold ')])])]], + ['** bo ld **', [paragraph([bold([plain(' bo ld ')])])]], + ['pre**bold**', [paragraph([plain('pre'), bold([plain('bold')])])]], + ['**bold**pos', [paragraph([bold([plain('bold')]), plain('pos')])]], + [ + '**bold****bold**', + [paragraph([bold([plain('bold')]), bold([plain('bold')])])], + ], + [ + '**bold** **bold**', + [paragraph([bold([plain('bold')]), plain(' '), bold([plain('bold')])])], + ], + [ + '**bold** __italic__', + [paragraph([bold([plain('bold')]), plain(' '), italic([plain('italic')])])], + ], + ['**__italicbold__**', [paragraph([bold([italic([plain('italicbold')])])])]], + [ + 'plain **__italicbold__**', + [paragraph([plain('plain '), bold([italic([plain('italicbold')])])])], + ], + [ + 'plain **__~~strikeitalicbold~~__**', + [ + paragraph([ + plain('plain '), + bold([italic([strike([plain('strikeitalicbold')])])]), + ]), + ], + ], + ['**', [paragraph([plain('**')])]], + ['* *', [paragraph([plain('* *')])]], + ['** *', [paragraph([plain('** *')])]], + ['** **', [paragraph([plain('** **')])]], + ['** **', [paragraph([plain('** **')])]], + ['* Hello*', [paragraph([bold([plain(' Hello')])])]], + ['*Hello *', [paragraph([bold([plain('Hello ')])])]], + [ + ':custom*emoji*case:', + [paragraph([plain(':custom'), bold([plain('emoji')]), plain('case:')])], + ], + [ + 'text*hello*text', + [paragraph([plain('text'), bold([plain('hello')]), plain('text')])], + ], + ['*hello*text', [paragraph([bold([plain('hello')]), plain('text')])]], + ['text*hello*', [paragraph([plain('text'), bold([plain('hello')])])]], + ['*Hel lo*', [paragraph([bold([plain('Hel lo')])])]], + ['*Hello*', [paragraph([bold([plain('Hello')])])]], + ['**Hello*', [paragraph([plain('*'), bold([plain('Hello')])])]], + ['*Hello**', [paragraph([bold([plain('Hello')]), plain('*')])]], + ['*Hello', [paragraph([plain('*Hello')])]], + ['Hello*', [paragraph([plain('Hello*')])]], + ['He*llo', [paragraph([plain('He*llo')])]], + [ + '***Hello***', + [paragraph([plain('*'), bold([plain('Hello')]), plain('*')])], + ], + ['***Hello**', [paragraph([plain('*'), bold([plain('Hello')])])]], + [ + '*Hello* this is dog', + [paragraph([bold([plain('Hello')]), plain(' this is dog')])], + ], + [ + 'Rocket cat says *Hello*', + [paragraph([plain('Rocket cat says '), bold([plain('Hello')])])], + ], + [ + 'He said *Hello* to her', + [paragraph([plain('He said '), bold([plain('Hello')]), plain(' to her')])], + ], + [ + '**Hello** this is dog', + [paragraph([bold([plain('Hello')]), plain(' this is dog')])], + ], + [ + 'Rocket cat says **Hello**', + [paragraph([plain('Rocket cat says '), bold([plain('Hello')])])], + ], + [ + 'He said **Hello** to her', + [paragraph([plain('He said '), bold([plain('Hello')]), plain(' to her')])], + ], + [ + 'He was a**nn**oyed', + [paragraph([plain('He was a'), bold([plain('nn')]), plain('oyed')])], + ], + [ + 'There are two o in f*oo*tball', + [ + paragraph([ + plain('There are two o in f'), + bold([plain('oo')]), + plain('tball'), + ]), + ], + ], + ['*(teste*', [paragraph([bold([plain('(teste')])])]], + ['*(teste)*', [paragraph([bold([plain('(teste)')])])]], + [ + '*__~bolditalicstrike~_*', + [ + paragraph([ + bold([plain('_'), italic([strike([plain('bolditalicstrike')])])]), + ]), + ], + ], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/taskList.test.ts b/packages/message-parser/tests/taskList.test.ts new file mode 100644 index 0000000000..a4d6fc0399 --- /dev/null +++ b/packages/message-parser/tests/taskList.test.ts @@ -0,0 +1,49 @@ +import { parser } from '../src'; +import { + plain, + tasks, + task, + mentionUser, + mentionChannel, + link, + bold, +} from '../src/utils'; + +test.each([ + [ + ` +- [ ] this is an incomplete item +- [x] this is a complete item +- [x] @mentions, #refs, [links](http://localhost), **formatting** +- [x] list syntax required (any unordered or ordered list supported) +`.trim(), + [ + tasks([ + task([plain('this is an incomplete item')], false), + task([plain('this is a complete item')], true), + task( + [ + mentionUser('mentions'), + plain(', '), + mentionChannel('refs'), + plain(', '), + link('http://localhost', plain('links')), + plain(', '), + bold([plain('formatting')]), + ], + true + ), + task( + [ + plain( + 'list syntax required (any unordered or ordered list supported)' + ), + ], + true + ), + ]), + ], + ], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/unorderedList.test.ts b/packages/message-parser/tests/unorderedList.test.ts new file mode 100644 index 0000000000..f481acf33d --- /dev/null +++ b/packages/message-parser/tests/unorderedList.test.ts @@ -0,0 +1,78 @@ +import { parser } from '../src'; +import { unorderedList, plain, listItem, bold } from '../src/utils'; + +test.each([ + [ + ` +- First item +- Second item +- Third item +- *Fourth item* +`.trim(), + [ + unorderedList([ + listItem([plain('First item')]), + listItem([plain('Second item')]), + listItem([plain('Third item')]), + listItem([bold([plain('Fourth item')])]), + ]), + ], + ], + [ + ` +* First item +* Second item +* Third item +* *Fourth item* +`.trim(), + [ + unorderedList([ + listItem([plain('First item')]), + listItem([plain('Second item')]), + listItem([plain('Third item')]), + listItem([bold([plain('Fourth item')])]), + ]), + ], + ], + + [ + ` +- First item +* Second item +* Third item +* *Fourth item* +`.trim(), + [ + unorderedList([listItem([plain('First item')])]), + unorderedList([ + listItem([plain('Second item')]), + listItem([plain('Third item')]), + listItem([bold([plain('Fourth item')])]), + ]), + ], + ], + // [ + // ` + // * First item + // * Second item + // * Third item + // * Indented item + // * Indented item + // * Fourth item + // `.trim(), + // [paragraph([])], + // ], + // [ + // ` + // - First item + // - Second item + // - Third item + // - Indented item + // - Indented item + // - Fourth item + // `.trim(), + // [paragraph([])], + // ], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tests/url.test.ts b/packages/message-parser/tests/url.test.ts new file mode 100644 index 0000000000..45c8821d14 --- /dev/null +++ b/packages/message-parser/tests/url.test.ts @@ -0,0 +1,36 @@ +import { parser } from '../src'; +import { link, paragraph, plain } from '../src/utils'; + +test.each([ + ['https://test', [paragraph([plain('https://test')])]], + ['http:/rocket.chat/teste', [paragraph([plain('http:/rocket.chat/teste')])]], + [ + 'httpsss://rocket.chat/test', + [paragraph([link('httpsss://rocket.chat/test')])], + ], + [ + 'https://rocket.chat:3000/test', + [paragraph([link('https://rocket.chat:3000/test')])], + ], + [ + 'https://rocket.chat/test?search', + [paragraph([link('https://rocket.chat/test?search')])], + ], + [ + 'https://rocket.chat/test?search=test', + [paragraph([link('https://rocket.chat/test?search=test')])], + ], + ['https://rocket.chat', [paragraph([link('https://rocket.chat')])]], + ['https://localhost', [paragraph([link('https://localhost')])]], + ['https://localhost:3000', [paragraph([link('https://localhost:3000')])]], + [ + 'https://localhost:3000#fragment', + [paragraph([link('https://localhost:3000#fragment')])], + ], + [ + 'ftp://user:pass@localhost:21/etc/hosts', + [paragraph([link('ftp://user:pass@localhost:21/etc/hosts')])], + ], +])('parses %p', (input, output) => { + expect(parser(input)).toMatchObject(output); +}); diff --git a/packages/message-parser/tsconfig-bundle.json b/packages/message-parser/tsconfig-bundle.json new file mode 100644 index 0000000000..77caa2b8f6 --- /dev/null +++ b/packages/message-parser/tsconfig-bundle.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "rootDir": "./src" + }, + "include": ["./src"] +} diff --git a/packages/message-parser/tsconfig.json b/packages/message-parser/tsconfig.json new file mode 100644 index 0000000000..3e59aeae89 --- /dev/null +++ b/packages/message-parser/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "rootDir": ".", + "target": "es5", + "module": "ESNext", + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "./dist", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "moduleResolution": "node", + "noImplicitThis": true, + "alwaysStrict": true + } +} diff --git a/packages/message-parser/webpack.config.js b/packages/message-parser/webpack.config.js new file mode 100644 index 0000000000..1a05d27f85 --- /dev/null +++ b/packages/message-parser/webpack.config.js @@ -0,0 +1,89 @@ +const path = require('path'); + +const config = (outputDeclarations = false) => ({ + entry: './src/index.ts', + module: { + rules: [ + { + test: /\.ts$/, + use: { + loader: 'ts-loader', + options: { + configFile: path.resolve(__dirname, './tsconfig-bundle.json'), + ...(!outputDeclarations && { + compilerOptions: { + declaration: false, + declarationMap: undefined, + }, + }), + }, + }, + include: [path.resolve(__dirname, './src')], + exclude: [path.resolve(__dirname, './tests')], + }, + { + test: /\.pegjs$/, + use: [ + 'babel-loader', + path.resolve(__dirname, './loaders/pegloader.js'), + ], + }, + ], + }, + resolve: { + extensions: ['.ts', '.js', '.pegjs'], + }, +}); + +module.exports = [ + { + ...config(), + mode: 'development', + output: { + path: path.resolve(__dirname, './dist'), + filename: 'messageParser.development.js', + library: { + type: 'commonjs2', + }, + }, + }, + { + ...config(), + mode: 'production', + output: { + path: path.resolve(__dirname, './dist'), + filename: 'messageParser.production.js', + library: { + type: 'commonjs2', + }, + }, + }, + { + ...config(), + mode: 'production', + experiments: { + outputModule: true, + }, + output: { + path: path.resolve(__dirname, './dist'), + filename: 'messageParser.mjs', + library: { + type: 'module', + }, + }, + }, + { + ...config(true), + mode: 'production', + output: { + path: path.resolve(__dirname, './dist'), + filename: 'messageParser.umd.js', + library: { + type: 'umd', + name: 'RocketChatMessageParser', + umdNamedDefine: true, + }, + globalObject: 'this', + }, + }, +]; diff --git a/packages/mp3-encoder/package.json b/packages/mp3-encoder/package.json index 91aea1f73e..fd5dbb981f 100644 --- a/packages/mp3-encoder/package.json +++ b/packages/mp3-encoder/package.json @@ -53,7 +53,7 @@ "@rollup/plugin-commonjs": "^17.0.0", "@rollup/plugin-node-resolve": "^11.0.1", "@rollup/plugin-typescript": "^8.1.0", - "@types/jest": "^26.0.22", + "@types/jest": "^26.0.23", "documentation": "^13.2.1", "eslint": "^7.24.0", "jest": "^26.6.3", diff --git a/packages/string-helpers/package.json b/packages/string-helpers/package.json index 7c2d83452a..f36bec3b04 100644 --- a/packages/string-helpers/package.json +++ b/packages/string-helpers/package.json @@ -50,7 +50,7 @@ "devDependencies": { "@rocket.chat/eslint-config-alt": "^0.24.0", "@rocket.chat/prettier-config": "^0.24.0", - "@types/jest": "^26.0.22", + "@types/jest": "^26.0.23", "downlevel-dts": "^0.7.0", "eslint": "^7.24.0", "jest": "^26.6.3", diff --git a/packages/ui-kit/package.json b/packages/ui-kit/package.json index 1258f4382e..c21918f015 100644 --- a/packages/ui-kit/package.json +++ b/packages/ui-kit/package.json @@ -41,7 +41,7 @@ "@babel/preset-env": "^7.12.11", "@rocket.chat/eslint-config-alt": "^0.24.0", "@rocket.chat/prettier-config": "^0.24.0", - "@types/jest": "^26.0.22", + "@types/jest": "^26.0.23", "babel-loader": "^8.1.0", "documentation": "^13.2.1", "eslint": "^7.24.0", diff --git a/scripts/package.json b/scripts/package.json index fd06093da8..09b1905e22 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -13,7 +13,7 @@ "devDependencies": { "@rocket.chat/eslint-config-alt": "^0.24.0", "@rocket.chat/prettier-config": "^0.24.0", - "@types/node": "^14.14.41", + "@types/node": "^14.14.43", "@typescript-eslint/parser": "^4.22.0", "eslint": "^7.24.0", "fast-glob": "^3.2.5", diff --git a/yarn.lock b/yarn.lock index 99775cfba2..48cd1e5e00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,6 +23,15 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/code-frame@npm:7.12.13" + dependencies: + "@babel/highlight": ^7.12.13 + checksum: 471532bb7cb4a300bd1a3201e75e7c0c83ebfb4e0e6610fdb53270521505d7efe0961258de61e7b1970ef3092a97ed675248ee1a44597912a1f61f903d85ef41 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.5.5": version: 7.10.4 resolution: "@babel/code-frame@npm:7.10.4" @@ -39,6 +48,13 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.13.11, @babel/compat-data@npm:^7.13.15, @babel/compat-data@npm:^7.13.8, @babel/compat-data@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/compat-data@npm:7.14.0" + checksum: d2d9de745e7a6f83ddf699865656e9298025bda5d350497845c57af440685723de28e7c1f34315e0028c6ad08bca0173436252ada7ac38eb2227c069d40916dd + languageName: node + linkType: hard + "@babel/core@npm:7.10.5": version: 7.10.5 resolution: "@babel/core@npm:7.10.5" @@ -111,6 +127,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:7.14.0, @babel/core@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/core@npm:7.14.0" + dependencies: + "@babel/code-frame": ^7.12.13 + "@babel/generator": ^7.14.0 + "@babel/helper-compilation-targets": ^7.13.16 + "@babel/helper-module-transforms": ^7.14.0 + "@babel/helpers": ^7.14.0 + "@babel/parser": ^7.14.0 + "@babel/template": ^7.12.13 + "@babel/traverse": ^7.14.0 + "@babel/types": ^7.14.0 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.1.2 + semver: ^6.3.0 + source-map: ^0.5.0 + checksum: eccd8c6acf33a2782b9213bffc0e766857c9b690649512c3a525a02bb212301c6fdf314d6e7f7404479dc9631beb58a8f5e673ea9f3c1964853a3c65b045a382 + languageName: node + linkType: hard + "@babel/core@npm:>=7.9.0, @babel/core@npm:^7.1.0, @babel/core@npm:^7.11.5, @babel/core@npm:^7.12.1, @babel/core@npm:^7.12.10, @babel/core@npm:^7.12.3, @babel/core@npm:^7.7.5": version: 7.12.10 resolution: "@babel/core@npm:7.12.10" @@ -219,6 +258,17 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.14.0": + version: 7.14.1 + resolution: "@babel/generator@npm:7.14.1" + dependencies: + "@babel/types": ^7.14.1 + jsesc: ^2.5.1 + source-map: ^0.5.0 + checksum: 28a56cbd4688c3c6020ac53f3ec607613f135bfaf52717ddbca02ee146b1ed4ea2a4490b6e4d3bc1fd0f0515031242183211438d7502ddaacdcf3a7713414d9a + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.10.4, @babel/helper-annotate-as-pure@npm:^7.12.10": version: 7.12.10 resolution: "@babel/helper-annotate-as-pure@npm:7.12.10" @@ -228,6 +278,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-annotate-as-pure@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/helper-annotate-as-pure@npm:7.12.13" + dependencies: + "@babel/types": ^7.12.13 + checksum: e82f457eb92080bba1e0d59386af32596fdf7aa3fd5aa557ef7fab2e1833f45c8818873f135294ee95210856103ae10a6e86789ca72e259a98ee8b6745e70319 + languageName: node + linkType: hard + "@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.10.4": version: 7.10.4 resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.10.4" @@ -238,6 +297,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.12.13" + dependencies: + "@babel/helper-explode-assignable-expression": ^7.12.13 + "@babel/types": ^7.12.13 + checksum: 38bd626f3893fa82267c9e5fa43353c897b75dc18259ffdc1c81b0fa5ac26284a4aaca465550fff14daed159f4d1502c4c95028740dacef1018d787d58173e2b + languageName: node + linkType: hard + "@babel/helper-builder-react-jsx-experimental@npm:^7.12.10, @babel/helper-builder-react-jsx-experimental@npm:^7.12.4": version: 7.12.10 resolution: "@babel/helper-builder-react-jsx-experimental@npm:7.12.10" @@ -273,6 +342,20 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.13.16, @babel/helper-compilation-targets@npm:^7.13.8": + version: 7.13.16 + resolution: "@babel/helper-compilation-targets@npm:7.13.16" + dependencies: + "@babel/compat-data": ^7.13.15 + "@babel/helper-validator-option": ^7.12.17 + browserslist: ^4.14.5 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: baa1e4cdd562996c6af0a8cedb097cd72f67c44577faf4b657015f477d4930ebcc40ca21dc1e5fcffe91a1517de6e4114bc21f805ca701dfac2ddd2e9b006228 + languageName: node + linkType: hard + "@babel/helper-create-class-features-plugin@npm:^7.12.1": version: 7.12.1 resolution: "@babel/helper-create-class-features-plugin@npm:7.12.1" @@ -288,6 +371,22 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-class-features-plugin@npm:^7.13.0, @babel/helper-create-class-features-plugin@npm:^7.14.0": + version: 7.14.1 + resolution: "@babel/helper-create-class-features-plugin@npm:7.14.1" + dependencies: + "@babel/helper-annotate-as-pure": ^7.12.13 + "@babel/helper-function-name": ^7.12.13 + "@babel/helper-member-expression-to-functions": ^7.13.12 + "@babel/helper-optimise-call-expression": ^7.12.13 + "@babel/helper-replace-supers": ^7.13.12 + "@babel/helper-split-export-declaration": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: b01c89d5ecd50e05aae511d22ed514f7510c1680e74a88b9c8847bf03ba5e9c9e20020446b2b26d682d968bdaafcef268d4ac88d1751e23a3fa5b0680bddd5cd + languageName: node + linkType: hard + "@babel/helper-create-regexp-features-plugin@npm:^7.12.1": version: 7.12.7 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.12.7" @@ -300,6 +399,18 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-regexp-features-plugin@npm:^7.12.13": + version: 7.12.17 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.12.17" + dependencies: + "@babel/helper-annotate-as-pure": ^7.12.13 + regexpu-core: ^4.7.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: ffb4fbca4026ac733bc43e1e6751120fecd377476373ad6bafb3eb653431beaee1de1664293f9233921f96db56c489175c162b70002237f1dc235e12b9111a93 + languageName: node + linkType: hard + "@babel/helper-define-map@npm:^7.10.4": version: 7.10.5 resolution: "@babel/helper-define-map@npm:7.10.5" @@ -311,6 +422,24 @@ __metadata: languageName: node linkType: hard +"@babel/helper-define-polyfill-provider@npm:^0.2.0": + version: 0.2.0 + resolution: "@babel/helper-define-polyfill-provider@npm:0.2.0" + dependencies: + "@babel/helper-compilation-targets": ^7.13.0 + "@babel/helper-module-imports": ^7.12.13 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/traverse": ^7.13.0 + debug: ^4.1.1 + lodash.debounce: ^4.0.8 + resolve: ^1.14.2 + semver: ^6.1.2 + peerDependencies: + "@babel/core": ^7.4.0-0 + checksum: 575785f62b10ee5cd9d8c092b6077f8bad8eed42ac50a8d55b82430c6958f94da11f5b20de650e31b400f7c7a0af08b6e4476669fd2a3b24414d1a9db89d531f + languageName: node + linkType: hard + "@babel/helper-explode-assignable-expression@npm:^7.10.4": version: 7.12.1 resolution: "@babel/helper-explode-assignable-expression@npm:7.12.1" @@ -320,6 +449,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-explode-assignable-expression@npm:^7.12.13": + version: 7.13.0 + resolution: "@babel/helper-explode-assignable-expression@npm:7.13.0" + dependencies: + "@babel/types": ^7.13.0 + checksum: 7379d0f0e9448da9c446c867413e23da7c17a5efa6e7dac8803d491b16c61854e8c1cc4f01c0c65030c0ae96542df7d3977825f834c70a3beef8016c3466c4fe + languageName: node + linkType: hard + "@babel/helper-function-name@npm:^7.10.4, @babel/helper-function-name@npm:^7.12.11": version: 7.12.11 resolution: "@babel/helper-function-name@npm:7.12.11" @@ -331,6 +469,17 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/helper-function-name@npm:7.12.13" + dependencies: + "@babel/helper-get-function-arity": ^7.12.13 + "@babel/template": ^7.12.13 + "@babel/types": ^7.12.13 + checksum: 25f03f303be790618437dc49c6df758d362112a564361d2eae66b58fda4f5ec09e62875473b18090b939c8d3d60b36aa7c9f688768b7fade511512d02ac9d3d0 + languageName: node + linkType: hard + "@babel/helper-get-function-arity@npm:^7.12.10": version: 7.12.10 resolution: "@babel/helper-get-function-arity@npm:7.12.10" @@ -340,6 +489,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-get-function-arity@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/helper-get-function-arity@npm:7.12.13" + dependencies: + "@babel/types": ^7.12.13 + checksum: cfb5c39959ea9f1cc21ee0f4a23054be66a615fa5392f25763ea98f0c690a5b47500af9a63f28a42a2fb3f699684c113c45a95c4ce6303dfecb3358e32e56c76 + languageName: node + linkType: hard + "@babel/helper-hoist-variables@npm:^7.10.4": version: 7.10.4 resolution: "@babel/helper-hoist-variables@npm:7.10.4" @@ -349,6 +507,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-hoist-variables@npm:^7.13.0": + version: 7.13.16 + resolution: "@babel/helper-hoist-variables@npm:7.13.16" + dependencies: + "@babel/traverse": ^7.13.15 + "@babel/types": ^7.13.16 + checksum: 5a0c74c19e1b3dd1c90619eb6088c4fae0b1a35b77479beaa294fd132a51b2d699ebadb05bca7ebff26b9d305f057341d4efc5caff118efde55a73a92321688a + languageName: node + linkType: hard + "@babel/helper-member-expression-to-functions@npm:^7.12.1, @babel/helper-member-expression-to-functions@npm:^7.12.7": version: 7.12.7 resolution: "@babel/helper-member-expression-to-functions@npm:7.12.7" @@ -358,6 +526,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-member-expression-to-functions@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/helper-member-expression-to-functions@npm:7.13.12" + dependencies: + "@babel/types": ^7.13.12 + checksum: 2c075f72e5bda1432c74484548272577485d45c4d6c7cc9e84c5d053eaa6e0890e93c9b018bab97f65cbb81ac04dd9cdca73d5ae0e94b03cfc00d10972b99185 + languageName: node + linkType: hard + "@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.12.1, @babel/helper-module-imports@npm:^7.12.5": version: 7.12.5 resolution: "@babel/helper-module-imports@npm:7.12.5" @@ -367,6 +544,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/helper-module-imports@npm:7.13.12" + dependencies: + "@babel/types": ^7.13.12 + checksum: 4d1d3364bec0820e50c782b5a5c81e7987c260c14772bc594ca8dbfdb3b6e43bd9b4e5071fd2a5f777c822dc7440781fa904f643e2069755db9ba5033cb2beac + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.10.5, @babel/helper-module-transforms@npm:^7.11.0, @babel/helper-module-transforms@npm:^7.12.1": version: 7.12.1 resolution: "@babel/helper-module-transforms@npm:7.12.1" @@ -384,6 +570,22 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.13.0, @babel/helper-module-transforms@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/helper-module-transforms@npm:7.14.0" + dependencies: + "@babel/helper-module-imports": ^7.13.12 + "@babel/helper-replace-supers": ^7.13.12 + "@babel/helper-simple-access": ^7.13.12 + "@babel/helper-split-export-declaration": ^7.12.13 + "@babel/helper-validator-identifier": ^7.14.0 + "@babel/template": ^7.12.13 + "@babel/traverse": ^7.14.0 + "@babel/types": ^7.14.0 + checksum: 1049a94cc74247c8ae4f5a804b4a0713ab4ad8f69eb412ea99ac1d03b4a9b9df3d1481286fa5e503239473ffb81dbb4f029d05cc681eff4d5380ae67161ac916 + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.10.4, @babel/helper-optimise-call-expression@npm:^7.12.10": version: 7.12.10 resolution: "@babel/helper-optimise-call-expression@npm:7.12.10" @@ -393,6 +595,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-optimise-call-expression@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/helper-optimise-call-expression@npm:7.12.13" + dependencies: + "@babel/types": ^7.12.13 + checksum: 5e4df5da4a45d7b7c100307efdc11f9fb460f943b4db1c60ddbdf57c3a7cbeecc8dea8980f4a9d4f3c38071b04d0e7c95af213229bcc1c13f17eb7293a6298a9 + languageName: node + linkType: hard + "@babel/helper-plugin-utils@npm:7.10.4, @babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.10.4 resolution: "@babel/helper-plugin-utils@npm:7.10.4" @@ -400,6 +611,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/helper-plugin-utils@npm:7.13.0" + checksum: 229ac1917b43ad38732d2d4a9a826f87d8945719249efe1d6191f3e25ba6027a289af70380d82d62a03fc9e82558a0ea6f12739cbb55b64bb280d6b511b4ca65 + languageName: node + linkType: hard + "@babel/helper-remap-async-to-generator@npm:^7.12.1": version: 7.12.1 resolution: "@babel/helper-remap-async-to-generator@npm:7.12.1" @@ -411,6 +629,17 @@ __metadata: languageName: node linkType: hard +"@babel/helper-remap-async-to-generator@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/helper-remap-async-to-generator@npm:7.13.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.12.13 + "@babel/helper-wrap-function": ^7.13.0 + "@babel/types": ^7.13.0 + checksum: d4211801d482dd4ad48273a7500fcdadc3eb71f44c4d647a3cf5fbe1bc7486abb011976e8842fb8b8374b50d64bae20639a1092e84c2bcd566dfb9f033151b53 + languageName: node + linkType: hard + "@babel/helper-replace-supers@npm:^7.12.1": version: 7.12.11 resolution: "@babel/helper-replace-supers@npm:7.12.11" @@ -423,6 +652,18 @@ __metadata: languageName: node linkType: hard +"@babel/helper-replace-supers@npm:^7.12.13, @babel/helper-replace-supers@npm:^7.13.0, @babel/helper-replace-supers@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/helper-replace-supers@npm:7.13.12" + dependencies: + "@babel/helper-member-expression-to-functions": ^7.13.12 + "@babel/helper-optimise-call-expression": ^7.12.13 + "@babel/traverse": ^7.13.0 + "@babel/types": ^7.13.12 + checksum: 38b79cb56a9a5324e32567660fcafbac4efae6f2c2c2ef048deb2d022476fc1c7acfda5ab841f7135d07b4f39e62142f9d253cfe824232030432c86f94d226f1 + languageName: node + linkType: hard + "@babel/helper-simple-access@npm:^7.12.1": version: 7.12.1 resolution: "@babel/helper-simple-access@npm:7.12.1" @@ -432,6 +673,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-simple-access@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/helper-simple-access@npm:7.13.12" + dependencies: + "@babel/types": ^7.13.12 + checksum: eff532a1572a4ac562c5918a409871ddf9baee9ece197b98a54622184d3b9e01bdd465597f27ca3d452e71638c913a14819cf261dc095a466032dfd92a88bc73 + languageName: node + linkType: hard + "@babel/helper-skip-transparent-expression-wrappers@npm:^7.12.1": version: 7.12.1 resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.12.1" @@ -459,6 +709,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-split-export-declaration@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/helper-split-export-declaration@npm:7.12.13" + dependencies: + "@babel/types": ^7.12.13 + checksum: c8d529558c45855542b7094de7b08e6c6de34922037a71596545dbb7a3be6ebf61b8b3193afe85fa5c9c35bcb0cc94110866deab8028f73e500bdc62427532c9 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.10.4, @babel/helper-validator-identifier@npm:^7.12.11": version: 7.12.11 resolution: "@babel/helper-validator-identifier@npm:7.12.11" @@ -466,6 +725,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/helper-validator-identifier@npm:7.14.0" + checksum: bd67b4a1a49eba151aa0fe95508579638287fee0a3e7a3bf8c5ab480de8eaad4b4231c523d7db401eb0cecc7cf03b76ee72453fab53bab8cb8ccd154bb67feb7 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.12.1": version: 7.12.1 resolution: "@babel/helper-validator-option@npm:7.12.1" @@ -480,6 +746,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-option@npm:^7.12.17": + version: 7.12.17 + resolution: "@babel/helper-validator-option@npm:7.12.17" + checksum: 9201d17a5634b05a6f3d561b95e73a4e4f9ba2e56c55cfc3b9a2a9618c4090b4b507720ac7a2e77209e68dc9bdc00a59b5ba7ad9ecbca3fb2c9217e814b7b5a5 + languageName: node + linkType: hard + "@babel/helper-wrap-function@npm:^7.10.4": version: 7.12.3 resolution: "@babel/helper-wrap-function@npm:7.12.3" @@ -492,6 +765,18 @@ __metadata: languageName: node linkType: hard +"@babel/helper-wrap-function@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/helper-wrap-function@npm:7.13.0" + dependencies: + "@babel/helper-function-name": ^7.12.13 + "@babel/template": ^7.12.13 + "@babel/traverse": ^7.13.0 + "@babel/types": ^7.13.0 + checksum: 89426304e5409454fe3a5082becb434152820d04b3de0687c8478ea15248a646a1598bc725659dd22d7ae651558fae65f9c352914a3562a4e657ba28195fcea9 + languageName: node + linkType: hard + "@babel/helpers@npm:^7.10.4, @babel/helpers@npm:^7.12.1, @babel/helpers@npm:^7.12.5": version: 7.12.5 resolution: "@babel/helpers@npm:7.12.5" @@ -503,6 +788,17 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/helpers@npm:7.14.0" + dependencies: + "@babel/template": ^7.12.13 + "@babel/traverse": ^7.14.0 + "@babel/types": ^7.14.0 + checksum: 0ac7e775b54cebf4b5c027e9ca00a1027f3c7d96e924583d028b6e86bb775652701ba9d48257db8352fce4612566d8a4f1fd8723502d940a77571145af603956 + languageName: node + linkType: hard + "@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.8.3": version: 7.10.4 resolution: "@babel/highlight@npm:7.10.4" @@ -514,6 +810,17 @@ __metadata: languageName: node linkType: hard +"@babel/highlight@npm:^7.12.13": + version: 7.14.0 + resolution: "@babel/highlight@npm:7.14.0" + dependencies: + "@babel/helper-validator-identifier": ^7.14.0 + chalk: ^2.0.0 + js-tokens: ^4.0.0 + checksum: 0122fcd3cd6e81bfa002227d6c9dfff91d388d48dc188cd13e3f60c46e5450ebad65aa133ac8f525cb3cfa3b70766484e4a93c40b2837ce16f12083ebd2b0824 + languageName: node + linkType: hard + "@babel/parser@npm:7.12.3, @babel/parser@npm:^7.10.5": version: 7.12.3 resolution: "@babel/parser@npm:7.12.3" @@ -550,6 +857,28 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.12.13, @babel/parser@npm:^7.14.0": + version: 7.14.1 + resolution: "@babel/parser@npm:7.14.1" + bin: + parser: ./bin/babel-parser.js + checksum: 64db8689201b9607c2952604fc8e87af219befeec519ca80191daaeafa7373c483dd00dcb0540e29cb8564d998f241c3fcd7ef4aec115930f7874d85f48621a8 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.13.12" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/helper-skip-transparent-expression-wrappers": ^7.12.1 + "@babel/plugin-proposal-optional-chaining": ^7.13.12 + peerDependencies: + "@babel/core": ^7.13.0 + checksum: ad0b508a5c3f3436ff0ff598b7aad63686bfe7f846b19c862c09397bc987ab9244b866204440496cf6d1b7ec07ea01a6fe95fd3067dbdf58ec48d9d4d4d9a440 + languageName: node + linkType: hard + "@babel/plugin-proposal-async-generator-functions@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.12.1" @@ -563,6 +892,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-async-generator-functions@npm:^7.13.15": + version: 7.13.15 + resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.13.15" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/helper-remap-async-to-generator": ^7.13.0 + "@babel/plugin-syntax-async-generators": ^7.8.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cfef2d2d97f4dee2930278ff8596940d3fef07522cf88b6635dd671cee055d23bd196eeba731600f7edb950e65ba915e363e5555982598087561e276a4fe6fce + languageName: node + linkType: hard + "@babel/plugin-proposal-class-properties@npm:^7.10.4, @babel/plugin-proposal-class-properties@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-class-properties@npm:7.12.1" @@ -575,6 +917,30 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-class-properties@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/plugin-proposal-class-properties@npm:7.13.0" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.13.0 + "@babel/helper-plugin-utils": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c96bd172765edf25ec821f5b4d0620d26bd94f8a4cce9614458f7b3626d5ef8933b20cf031263fb4672ad1d5d72f3cd87fd65cc3c621846d179a1fb7acd65a20 + languageName: node + linkType: hard + +"@babel/plugin-proposal-class-static-block@npm:^7.13.11": + version: 7.13.11 + resolution: "@babel/plugin-proposal-class-static-block@npm:7.13.11" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/plugin-syntax-class-static-block": ^7.12.13 + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 0d1a09a2229cde662649938b808a249bc77767362480428e5bc00d152c97f04eee2a5f8d38b7b8295053cd7bbfef4412c5b58ee1acc19a164fb44508b48838fa + languageName: node + linkType: hard + "@babel/plugin-proposal-decorators@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-decorators@npm:7.12.1" @@ -612,6 +978,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-dynamic-import@npm:^7.13.8": + version: 7.13.8 + resolution: "@babel/plugin-proposal-dynamic-import@npm:7.13.8" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 47ff82e3e3731f93a9e51a7f16f1807ee5fbd627df67b423bcf9bb206ae9230385d62c7310e41ec6ef732f01f0af81061bbbf5f6cbfe6b95aa8fa01571166c9e + languageName: node + linkType: hard + "@babel/plugin-proposal-export-default-from@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-export-default-from@npm:7.12.1" @@ -636,6 +1014,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-export-namespace-from@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 831dcc6711b9181978a62a5955104ef3f23de0c9a6740af0ca7395153cd4d481665fd557aa178ac53146cdbf49cf95f3ab06e51f2c79343a69639ed09877f7db + languageName: node + linkType: hard + "@babel/plugin-proposal-function-bind@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-function-bind@npm:7.12.1" @@ -673,6 +1063,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-json-strings@npm:^7.13.8": + version: 7.13.8 + resolution: "@babel/plugin-proposal-json-strings@npm:7.13.8" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/plugin-syntax-json-strings": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 54f950f8824e4dd1a9a8b621507e0b3764a5d3a3b816231c70fdc18be42ed7e500a73c51da19a7a7503a50bd1e7227d71edff0999c189c9b1c20c90525b84552 + languageName: node + linkType: hard + "@babel/plugin-proposal-logical-assignment-operators@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.12.1" @@ -685,6 +1087,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-logical-assignment-operators@npm:^7.13.8": + version: 7.13.8 + resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.13.8" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e0bed6050b35e0b89fc4bbc8e934bafc14fec0192105c4ace15a244ba3d2ba2dc1bb682e9529328aa7350712c0fbde2ae8a3c4cd1b3ec04458eeb3916ccbea49 + languageName: node + linkType: hard + "@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.12.1" @@ -697,6 +1111,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8": + version: 7.13.8 + resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.13.8" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 19c0e20a9d3fb3fc689432c87ce53709220a6556b633396f8a35b3c0967b4a32f200805fe5602908a8ca2130d531769ba321ea61d0361c82b99ccf87dea356e5 + languageName: node + linkType: hard + "@babel/plugin-proposal-numeric-separator@npm:^7.12.1, @babel/plugin-proposal-numeric-separator@npm:^7.12.7": version: 7.12.7 resolution: "@babel/plugin-proposal-numeric-separator@npm:7.12.7" @@ -709,6 +1135,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-numeric-separator@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-proposal-numeric-separator@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d0480be4c7cc4f7c98bcdfa541cc25d878e70f9f1d37097b9846f1ff8e48756b5015f0f230b794c1b808b4e064606d074c53cb12875111ad080b9d30d2e2adf5 + languageName: node + linkType: hard + "@babel/plugin-proposal-object-rest-spread@npm:7.10.4": version: 7.10.4 resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.10.4" @@ -735,6 +1173,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-object-rest-spread@npm:^7.13.8": + version: 7.13.8 + resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.13.8" + dependencies: + "@babel/compat-data": ^7.13.8 + "@babel/helper-compilation-targets": ^7.13.8 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-transform-parameters": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e560572e0090a229596e9b42e33f6767194bf3f1a410757286cd55d2bdc7de7a0b073e888089f4b0a81d25f6cca1a249442ea7daf1a0ef0fb89810c7440091e5 + languageName: node + linkType: hard + "@babel/plugin-proposal-object-rest-spread@npm:^7.5.5": version: 7.11.0 resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.11.0" @@ -760,6 +1213,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-optional-catch-binding@npm:^7.13.8": + version: 7.13.8 + resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.13.8" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a91f361d3df099b79206f11b55800a8d4974c6b63d26a2af841da79e8ee7636383e650bb016198e35cbc5d9e9bd70189cc1b84702b12111165ebd27e0be7d998 + languageName: node + linkType: hard + "@babel/plugin-proposal-optional-chaining@npm:^7.12.1, @babel/plugin-proposal-optional-chaining@npm:^7.12.7": version: 7.12.7 resolution: "@babel/plugin-proposal-optional-chaining@npm:7.12.7" @@ -773,6 +1238,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-optional-chaining@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/plugin-proposal-optional-chaining@npm:7.13.12" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/helper-skip-transparent-expression-wrappers": ^7.12.1 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8663cfbf5cdfe41f8765976b94de9525c223085d53bb48bd481a03539a7680f2aa3b3fd525d80144e1c1c646cbad817fea7ef8da573bbf0600ddde32fab7420b + languageName: node + linkType: hard + "@babel/plugin-proposal-pipeline-operator@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-pipeline-operator@npm:7.12.1" @@ -797,6 +1275,32 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-private-methods@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/plugin-proposal-private-methods@npm:7.13.0" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.13.0 + "@babel/helper-plugin-utils": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cc074c97ae3b1446722a2c4735d8bee188aa4f5ff390929a85e766cac006389bc254f30dcbeea93e869cf632c7096f808b830f73cb6e2743cda5dab8905fccbb + languageName: node + linkType: hard + +"@babel/plugin-proposal-private-property-in-object@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.14.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.12.13 + "@babel/helper-create-class-features-plugin": ^7.14.0 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/plugin-syntax-private-property-in-object": ^7.14.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2074d2a818ad64f186f940ca518e967c42dad04306c58189f1f1a8aad8f3dfac7474dd51c33330a61ca2eed68f769f871e7f7066e23d00f1e0296e2bc0797474 + languageName: node + linkType: hard + "@babel/plugin-proposal-throw-expressions@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-throw-expressions@npm:7.12.1" @@ -821,6 +1325,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-unicode-property-regex@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.12.13" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.12.13 + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4877865ea8482c467e7ba527014e346680d7e391a4f426e398d738fd1ce33c28f97012a07d1d47103e678e78c26a21961bc59719bfef2a295fb087c761e09988 + languageName: node + linkType: hard + "@babel/plugin-syntax-async-generators@npm:^7.8.0, @babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -854,6 +1370,28 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3023dec8acd42e0b691d9cdf21bc6931fe3e3d53c2231bdfe3eca3afeab168723f7315991550a163748bc49dbcd3c95632b77ec56f5e1d89bc5029cfeb7f0f7b + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d5c08078f5b00295ab06e8a8d85c362b3752871d7bfd6b23d9b0bf492e33e796a8d5007ba35745ae07bb0cc79d08089913913f97b68c53a3395959d0347a5e98 + languageName: node + linkType: hard + "@babel/plugin-syntax-decorators@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-syntax-decorators@npm:7.12.1" @@ -1063,6 +1601,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.0" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5c79999ceb73dc7d596a75d86b16db2be0f313c53354e237903eed8f7844a26e76888fa8b45ddaae590cf6bb92988644c6ee64a51a46220ab03f6930914f5b08 + languageName: node + linkType: hard + "@babel/plugin-syntax-throw-expressions@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-syntax-throw-expressions@npm:7.12.1" @@ -1085,6 +1634,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-top-level-await@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5bd0a65b01a39e5636169f830ade7511d046f2db63831e226fa99139d97aa30ee6958ac04a1e114954ace8c64875269fc450ed3304a4204f4be82c1b8aa21be7 + languageName: node + linkType: hard + "@babel/plugin-syntax-typescript@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-syntax-typescript@npm:7.12.1" @@ -1107,6 +1667,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-arrow-functions@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.13.0" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 26edbba649037ff59dbebba9479e7598c69b108200e1e6f39650ef9339d73d595d62716f45b38caac211800134f3ebba7960ea5bf4f43d6143cd9518d3f5c697 + languageName: node + linkType: hard + "@babel/plugin-transform-async-to-generator@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-async-to-generator@npm:7.12.1" @@ -1120,6 +1691,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-async-to-generator@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.13.0" + dependencies: + "@babel/helper-module-imports": ^7.12.13 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/helper-remap-async-to-generator": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 32d484b30f658c1a9470305c6db04f5297ebd20e83486cc596cc52253b04fab7b75c1fe0fceef271622b91e61321906c94d37d1913dfacb7b5396fd6a8979de2 + languageName: node + linkType: hard + "@babel/plugin-transform-block-scoped-functions@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.12.1" @@ -1131,6 +1715,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-block-scoped-functions@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c914fa2874ccee83a03d5323dee942b90b42a3ff57fa92703ffc14e9c3feabccf30225766db2977bdcde49c487118f1e6bd19dd284a97a527f8fcd30a1003933 + languageName: node + linkType: hard + "@babel/plugin-transform-block-scoping@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-block-scoping@npm:7.12.1" @@ -1153,6 +1748,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-block-scoping@npm:^7.14.1": + version: 7.14.1 + resolution: "@babel/plugin-transform-block-scoping@npm:7.14.1" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 33b12be483e61dbadf604f5dca3437d5a1742696afe2088eb4f72f0d911906274c345e7bedbc28b1ba00a573b04d363cf86407f46e352487252089499801c4b6 + languageName: node + linkType: hard + "@babel/plugin-transform-classes@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-classes@npm:7.12.1" @@ -1171,6 +1777,23 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-classes@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/plugin-transform-classes@npm:7.13.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.12.13 + "@babel/helper-function-name": ^7.12.13 + "@babel/helper-optimise-call-expression": ^7.12.13 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/helper-replace-supers": ^7.13.0 + "@babel/helper-split-export-declaration": ^7.12.13 + globals: ^11.1.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: dffa76e8ba757cee8c031ab40aca14cfcafae9c329db1bf82977e7f20fbb3ce1d8c625666ec4ec75baf1b95c7f3bc72d014a1437b7d0cafaa08f1fd9ed0695e6 + languageName: node + linkType: hard + "@babel/plugin-transform-computed-properties@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-computed-properties@npm:7.12.1" @@ -1182,6 +1805,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-computed-properties@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/plugin-transform-computed-properties@npm:7.13.0" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 83d9d2e776c8617ba53d562da6d8fb859902158115c600f7abeeb9cea2b949a1b71883d8003698093c758cee016b1194af14b7af7c983c39f3fb669550f0cf55 + languageName: node + linkType: hard + "@babel/plugin-transform-destructuring@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-destructuring@npm:7.12.1" @@ -1193,6 +1827,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-destructuring@npm:^7.13.17": + version: 7.13.17 + resolution: "@babel/plugin-transform-destructuring@npm:7.13.17" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 16c08ecaf55d02754a5e0a33a766798362b5489c1632ce62bbef0624c0227f6cfa6b4066bf51efad0fac5655f34c1c9e7b06c631b31c13c1c55c3bfe39490d7c + languageName: node + linkType: hard + "@babel/plugin-transform-destructuring@npm:^7.5.0": version: 7.10.4 resolution: "@babel/plugin-transform-destructuring@npm:7.10.4" @@ -1216,6 +1861,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-dotall-regex@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.12.13" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.12.13 + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cd33e1adfb1e081468dbf72bbfa310490abafc9a4f87d50b1d084c10655669494554d0e2695578954e710642b52e1869916680fa90e4caf8408ffa507c99d4d6 + languageName: node + linkType: hard + "@babel/plugin-transform-duplicate-keys@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-duplicate-keys@npm:7.12.1" @@ -1227,6 +1884,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-duplicate-keys@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7565f2dc697006edcfe50c02f2c0f18c71aa9e4c68dd2d3b663781054e680b70c78f616ee1a2c2349099797175e426d6d6086f3cfbe547fd4f0adfe9e3c3f9fb + languageName: node + linkType: hard + "@babel/plugin-transform-exponentiation-operator@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.12.1" @@ -1239,6 +1907,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-exponentiation-operator@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.12.13" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor": ^7.12.13 + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cbe6a6bb2b9a54c687e9364c876afb31f75fa21b1409a78bb7f405100a082f7dce5255d2cd2937c8b0d2c6040b9a10c67ed80a98b4684eee0b939c9d2c65b35a + languageName: node + linkType: hard + "@babel/plugin-transform-flow-strip-types@npm:^7.12.1": version: 7.12.10 resolution: "@babel/plugin-transform-flow-strip-types@npm:7.12.10" @@ -1262,6 +1942,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-for-of@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/plugin-transform-for-of@npm:7.13.0" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 86f725a86084f9ba9291a67c25c4e9be1555cf690fd28a5bfb75d2d694d39fe0703beb551f7d0608b03a16bb3c863e8672c00f0723f116dec6573b4a4c0d1531 + languageName: node + linkType: hard + "@babel/plugin-transform-function-name@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-function-name@npm:7.12.1" @@ -1274,6 +1965,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-function-name@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-function-name@npm:7.12.13" + dependencies: + "@babel/helper-function-name": ^7.12.13 + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 26b8af8882dc7684e124ba88494cafbdf8252768eac351b0b7913578dee4e906a8ecc7c1cc2d53ae5c6f1e241bfbaede40cb28d38d4312770b22842bdd7943cb + languageName: node + linkType: hard + "@babel/plugin-transform-literals@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-literals@npm:7.12.1" @@ -1285,6 +1988,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-literals@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-literals@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8dbc807354a81339a0161676c3daae619277797a7181b94bef013360aa3d6003603717cf2380aa6ee062f75f39e69a36803bdd3b39c530ebbca368cf7b8dc0d4 + languageName: node + linkType: hard + "@babel/plugin-transform-member-expression-literals@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-member-expression-literals@npm:7.12.1" @@ -1296,6 +2010,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-member-expression-literals@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d8f20320680c042cde2a6328d002e924b3e8fa6ff481d5002a331146a5a092e5ec0797a7c63de4ee1de9c2731eba2f7da220a29f9bf83673f6572d28a8b5bd6d + languageName: node + linkType: hard + "@babel/plugin-transform-modules-amd@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-modules-amd@npm:7.12.1" @@ -1309,6 +2034,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-amd@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/plugin-transform-modules-amd@npm:7.14.0" + dependencies: + "@babel/helper-module-transforms": ^7.14.0 + "@babel/helper-plugin-utils": ^7.13.0 + babel-plugin-dynamic-import-node: ^2.3.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d93ed99aa4d8a71a388bc8ff0b4d16408a7781e01a963593857c697dc0362c23a37c8929a73d8a1cedfd3045ecba1f6ed457232efc05b61da52c4173d7152ab6 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-commonjs@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.12.1" @@ -1323,6 +2061,20 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-commonjs@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.14.0" + dependencies: + "@babel/helper-module-transforms": ^7.14.0 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/helper-simple-access": ^7.13.12 + babel-plugin-dynamic-import-node: ^2.3.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 61d9f7a8a1386863f61848f7f52180789295ffb3319ccea4079f61bf1d5c9be5cd996ce57b0273861f2dfc88e63f0e23e34acc386ca13a9a56e22b1392c6ad60 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-systemjs@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.12.1" @@ -1338,6 +2090,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-systemjs@npm:^7.13.8": + version: 7.13.8 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.13.8" + dependencies: + "@babel/helper-hoist-variables": ^7.13.0 + "@babel/helper-module-transforms": ^7.13.0 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/helper-validator-identifier": ^7.12.11 + babel-plugin-dynamic-import-node: ^2.3.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4d654938e59e5856bda301e35d07085b481a5cfb454a50c14e0be258232165cb6b8e3e4684125dcdf30ba58a22d5340e112bb082cd25234d5fc4a5b0a8778c60 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-umd@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-modules-umd@npm:7.12.1" @@ -1350,6 +2117,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-umd@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/plugin-transform-modules-umd@npm:7.14.0" + dependencies: + "@babel/helper-module-transforms": ^7.14.0 + "@babel/helper-plugin-utils": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 44c830a945c225e107f60a61b457274f931845623306c9bcd04c23958085477a820ebfe15ee4c7861a84eb986668ddc38c1797e733b8e2327702dcee1ca0bb21 + languageName: node + linkType: hard + "@babel/plugin-transform-named-capturing-groups-regex@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.12.1" @@ -1361,6 +2140,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.12.13" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 67680cf0b171040eaf42679c6beb3ea264bfde31ecb7cc1d9f06bea3bb85e2b90b8d96f32c5e8f5995a2f4ac64a185c380531bd10c3d4e5c14ea773c6102d4e4 + languageName: node + linkType: hard + "@babel/plugin-transform-new-target@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-new-target@npm:7.12.1" @@ -1372,6 +2162,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-new-target@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-new-target@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7f72f3d80a1764258203e5e0298abab3f323c108dd3d026d0eb8f40eb361b3344027489f5e6dbcfeff2ee9065ae3eed678ec852d6ab8fb91bcbd1e89ac829808 + languageName: node + linkType: hard + "@babel/plugin-transform-object-super@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-object-super@npm:7.12.1" @@ -1384,6 +2185,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-object-super@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-object-super@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + "@babel/helper-replace-supers": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: abcba36ad6ae028ac008e71195dd7fecabcf5e9a5d9bcc736cc8cdc5ea2bdf0acae78562f18d6619cd551238520b1d1997f3d85d03508a91372379352dd66a4b + languageName: node + linkType: hard + "@babel/plugin-transform-parameters@npm:^7.10.4, @babel/plugin-transform-parameters@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-parameters@npm:7.12.1" @@ -1395,6 +2208,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-parameters@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/plugin-transform-parameters@npm:7.13.0" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f23977501cac4712bb0fdadc5e5c394d69ca67a111e337dce7c2e92e3bf2cd47fe23f7b5a316c0b175e14725c7554b8c044bff8af690a6188e80b16ae7a10935 + languageName: node + linkType: hard + "@babel/plugin-transform-property-literals@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-property-literals@npm:7.12.1" @@ -1406,6 +2230,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-property-literals@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-property-literals@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2f09b697b23717adb4e2fc4b819a41bdf3dab91b8f4a0787b9d7eb62e8a15a2671aec3cd0c97971f5cd6b30514d7cb398535811c0a69866ec86f53823ba9b1f2 + languageName: node + linkType: hard + "@babel/plugin-transform-react-display-name@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-react-display-name@npm:7.12.1" @@ -1467,6 +2302,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-regenerator@npm:^7.13.15": + version: 7.13.15 + resolution: "@babel/plugin-transform-regenerator@npm:7.13.15" + dependencies: + regenerator-transform: ^0.14.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ac1f6bda7e72c073b0957c543cba8a29a40d561582c17d938d4cd36ff0c441adfa2caa21dd80cf3be1674f18cca4cd936be29f8df659fbfb020b58f45c7787fa + languageName: node + linkType: hard + "@babel/plugin-transform-reserved-words@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-reserved-words@npm:7.12.1" @@ -1478,6 +2324,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-reserved-words@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-reserved-words@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fc6015094759a40b6b9a75fffdac970c78b54bed285cbd8c39f3ec52fe7fe35713e5885501f8d63f33531aa75e85dc0972bb7dc9e87a284e48414abb0fe803ca + languageName: node + linkType: hard + "@babel/plugin-transform-runtime@npm:^7.11.5, @babel/plugin-transform-runtime@npm:^7.12.10": version: 7.12.10 resolution: "@babel/plugin-transform-runtime@npm:7.12.10" @@ -1502,6 +2359,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-shorthand-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fdfa295fa70ce7e54e265c48b0cde3058bb71b656f6acaca46f8b94f56609215947b4750257ac50d6af38a0128c557a5fa5c8fadfb0dbf916f1efe8f3c1d4dbf + languageName: node + linkType: hard + "@babel/plugin-transform-spread@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-spread@npm:7.12.1" @@ -1514,6 +2382,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-spread@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/plugin-transform-spread@npm:7.13.0" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/helper-skip-transparent-expression-wrappers": ^7.12.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f84c6c4d738dae17fb85bbd269c3986667a5604ada4585d88bab3237c961e0df03b60a07f8800607b130459abeee74b7fa575319b1a7fef331d6aebd13aaae29 + languageName: node + linkType: hard + "@babel/plugin-transform-sticky-regex@npm:^7.12.1, @babel/plugin-transform-sticky-regex@npm:^7.12.7": version: 7.12.7 resolution: "@babel/plugin-transform-sticky-regex@npm:7.12.7" @@ -1525,6 +2405,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-sticky-regex@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 21cf8495cf1f7de1993472de0c9a25f7b108fa2ff43ae1945d65b175d2c0d54c4894206f07ef05fc4a55b82658cee88c6ca335562762f0e1488e653c8551808b + languageName: node + linkType: hard + "@babel/plugin-transform-template-literals@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-template-literals@npm:7.12.1" @@ -1536,6 +2427,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-template-literals@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/plugin-transform-template-literals@npm:7.13.0" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 91303124717ff251d291e60127c7c75c3b9b971f5ecd297aec6d043fc77cb562fec4f7c2e6ab4f50d1969d3a2ef33f0116ac101939637a32598d14e6b7e3bdae + languageName: node + linkType: hard + "@babel/plugin-transform-typeof-symbol@npm:^7.12.1, @babel/plugin-transform-typeof-symbol@npm:^7.12.10": version: 7.12.10 resolution: "@babel/plugin-transform-typeof-symbol@npm:7.12.10" @@ -1547,6 +2449,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typeof-symbol@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1eefed57583f34899cc81d5ad3ebef38fb4839d2d1b9bddac0401e21784ffdb0aa470c6fb2f2fa841629b992cfac65a2f0123c01ef1938b08fa99bc48af30dac + languageName: node + linkType: hard + "@babel/plugin-transform-typescript@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-typescript@npm:7.12.1" @@ -1571,6 +2484,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-escapes@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d5f4aa6f54cd616a799b313c5a351cff6be8345f836060d9de836eb7fe614f1f8b128a2ea556f0ea314546e59e8ea9686293900ea268af308b78c078b3e5e714 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-regex@npm:^7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-unicode-regex@npm:7.12.1" @@ -1583,6 +2507,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-regex@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.12.13" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.12.13 + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b6b173ce4f7cef453eac612cc9c393592ddd4940bea7805fa645c3e79cd9ad37f34c076390e6b6a66054e03e6e2a9273e2cc0451c00317d69914584890dffafa + languageName: node + linkType: hard + "@babel/preset-env@npm:^7.11.5": version: 7.12.10 resolution: "@babel/preset-env@npm:7.12.10" @@ -1807,7 +2743,90 @@ __metadata: semver: ^5.5.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2811bbf697d86d2d7d972215cf07e4b153cb667eefa2ca3521e0eb34c20d3f2643c44ed31734e1db35675267f5a3de284b87e543132f075c28c979b34af6472c + checksum: 2811bbf697d86d2d7d972215cf07e4b153cb667eefa2ca3521e0eb34c20d3f2643c44ed31734e1db35675267f5a3de284b87e543132f075c28c979b34af6472c + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.14.1": + version: 7.14.1 + resolution: "@babel/preset-env@npm:7.14.1" + dependencies: + "@babel/compat-data": ^7.14.0 + "@babel/helper-compilation-targets": ^7.13.16 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/helper-validator-option": ^7.12.17 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.13.12 + "@babel/plugin-proposal-async-generator-functions": ^7.13.15 + "@babel/plugin-proposal-class-properties": ^7.13.0 + "@babel/plugin-proposal-class-static-block": ^7.13.11 + "@babel/plugin-proposal-dynamic-import": ^7.13.8 + "@babel/plugin-proposal-export-namespace-from": ^7.12.13 + "@babel/plugin-proposal-json-strings": ^7.13.8 + "@babel/plugin-proposal-logical-assignment-operators": ^7.13.8 + "@babel/plugin-proposal-nullish-coalescing-operator": ^7.13.8 + "@babel/plugin-proposal-numeric-separator": ^7.12.13 + "@babel/plugin-proposal-object-rest-spread": ^7.13.8 + "@babel/plugin-proposal-optional-catch-binding": ^7.13.8 + "@babel/plugin-proposal-optional-chaining": ^7.13.12 + "@babel/plugin-proposal-private-methods": ^7.13.0 + "@babel/plugin-proposal-private-property-in-object": ^7.14.0 + "@babel/plugin-proposal-unicode-property-regex": ^7.12.13 + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.12.13 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.0 + "@babel/plugin-syntax-top-level-await": ^7.12.13 + "@babel/plugin-transform-arrow-functions": ^7.13.0 + "@babel/plugin-transform-async-to-generator": ^7.13.0 + "@babel/plugin-transform-block-scoped-functions": ^7.12.13 + "@babel/plugin-transform-block-scoping": ^7.14.1 + "@babel/plugin-transform-classes": ^7.13.0 + "@babel/plugin-transform-computed-properties": ^7.13.0 + "@babel/plugin-transform-destructuring": ^7.13.17 + "@babel/plugin-transform-dotall-regex": ^7.12.13 + "@babel/plugin-transform-duplicate-keys": ^7.12.13 + "@babel/plugin-transform-exponentiation-operator": ^7.12.13 + "@babel/plugin-transform-for-of": ^7.13.0 + "@babel/plugin-transform-function-name": ^7.12.13 + "@babel/plugin-transform-literals": ^7.12.13 + "@babel/plugin-transform-member-expression-literals": ^7.12.13 + "@babel/plugin-transform-modules-amd": ^7.14.0 + "@babel/plugin-transform-modules-commonjs": ^7.14.0 + "@babel/plugin-transform-modules-systemjs": ^7.13.8 + "@babel/plugin-transform-modules-umd": ^7.14.0 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.12.13 + "@babel/plugin-transform-new-target": ^7.12.13 + "@babel/plugin-transform-object-super": ^7.12.13 + "@babel/plugin-transform-parameters": ^7.13.0 + "@babel/plugin-transform-property-literals": ^7.12.13 + "@babel/plugin-transform-regenerator": ^7.13.15 + "@babel/plugin-transform-reserved-words": ^7.12.13 + "@babel/plugin-transform-shorthand-properties": ^7.12.13 + "@babel/plugin-transform-spread": ^7.13.0 + "@babel/plugin-transform-sticky-regex": ^7.12.13 + "@babel/plugin-transform-template-literals": ^7.13.0 + "@babel/plugin-transform-typeof-symbol": ^7.12.13 + "@babel/plugin-transform-unicode-escapes": ^7.12.13 + "@babel/plugin-transform-unicode-regex": ^7.12.13 + "@babel/preset-modules": ^0.1.4 + "@babel/types": ^7.14.1 + babel-plugin-polyfill-corejs2: ^0.2.0 + babel-plugin-polyfill-corejs3: ^0.2.0 + babel-plugin-polyfill-regenerator: ^0.2.0 + core-js-compat: ^3.9.0 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0fbef490fdd5435727268c729e0371ec8ec95349e5a00f919ba0c142e06d95c48512fec10d6404c89c297c597ae1c45a687fa40eec33e70b97131b0c4b5355c0 languageName: node linkType: hard @@ -1823,7 +2842,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-modules@npm:^0.1.3": +"@babel/preset-modules@npm:^0.1.3, @babel/preset-modules@npm:^0.1.4": version: 0.1.4 resolution: "@babel/preset-modules@npm:0.1.4" dependencies: @@ -1908,6 +2927,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/template@npm:7.12.13" + dependencies: + "@babel/code-frame": ^7.12.13 + "@babel/parser": ^7.12.13 + "@babel/types": ^7.12.13 + checksum: 665977068a7036233b017396c0cd4856b6bb2ad9759e95e2325cbd198b98d2e26796f25977c8e12b5936d7d94f49cf883df9cffa3c91c797abdf27fc9b6bec65 + languageName: node + linkType: hard + "@babel/template@npm:^7.3.3": version: 7.10.4 resolution: "@babel/template@npm:7.10.4" @@ -1987,6 +3017,22 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.13.15, @babel/traverse@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/traverse@npm:7.14.0" + dependencies: + "@babel/code-frame": ^7.12.13 + "@babel/generator": ^7.14.0 + "@babel/helper-function-name": ^7.12.13 + "@babel/helper-split-export-declaration": ^7.12.13 + "@babel/parser": ^7.14.0 + "@babel/types": ^7.14.0 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: f2fb957d616c242d8ccd25fbebadebc25aa2df8ea82d7cacb2b09285743a682f72beb6fb2acef01a7a98f141c3e36d19300ebde2dd78c780c5e3dc7692c5f6f2 + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3": version: 7.12.6 resolution: "@babel/types@npm:7.12.6" @@ -2020,6 +3066,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.12.13, @babel/types@npm:^7.13.0, @babel/types@npm:^7.13.12, @babel/types@npm:^7.13.16, @babel/types@npm:^7.14.0, @babel/types@npm:^7.14.1": + version: 7.14.1 + resolution: "@babel/types@npm:7.14.1" + dependencies: + "@babel/helper-validator-identifier": ^7.14.0 + to-fast-properties: ^2.0.0 + checksum: 27965ef192ded329d8ae28ccd5e5addd02dc477ec46e54145e5cf0d054ad65b2fc760736865295c1819d502ec9598883c17f25efdbe896ad77b400136a1aa971 + languageName: node + linkType: hard + "@babel/types@npm:^7.8.3": version: 7.13.0 resolution: "@babel/types@npm:7.13.0" @@ -3975,19 +5031,19 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/css-in-js@^0.23.0, @rocket.chat/css-in-js@workspace:packages/css-in-js": +"@rocket.chat/css-in-js@^0.24.0, @rocket.chat/css-in-js@workspace:packages/css-in-js": version: 0.0.0-use.local resolution: "@rocket.chat/css-in-js@workspace:packages/css-in-js" dependencies: "@emotion/hash": ^0.8.0 - "@rocket.chat/eslint-config-alt": ^0.23.0 - "@rocket.chat/memo": ^0.23.0 - "@rocket.chat/prettier-config": ^0.23.0 + "@rocket.chat/eslint-config-alt": ^0.24.0 + "@rocket.chat/memo": ^0.24.0 + "@rocket.chat/prettier-config": ^0.24.0 "@rollup/plugin-commonjs": ^17.0.0 "@rollup/plugin-json": ^4.1.0 "@rollup/plugin-node-resolve": ^11.0.1 "@rollup/plugin-typescript": ^8.1.0 - "@types/jest": ^26.0.22 + "@types/jest": ^26.0.23 "@types/stylis": ^4.0.0 documentation: ^13.2.1 eslint: ^7.24.0 @@ -4008,13 +5064,13 @@ __metadata: dependencies: "@microsoft/api-documenter": ^7.12.1 "@microsoft/api-extractor": ^7.12.1 - "@rocket.chat/eslint-config-alt": ^0.23.0 - "@rocket.chat/prettier-config": ^0.23.0 + "@rocket.chat/eslint-config-alt": ^0.24.0 + "@rocket.chat/prettier-config": ^0.24.0 "@rollup/plugin-commonjs": ^17.0.0 "@rollup/plugin-json": ^4.1.0 "@rollup/plugin-node-resolve": ^11.0.1 "@rollup/plugin-typescript": ^8.1.0 - "@types/jest": ^26.0.22 + "@types/jest": ^26.0.23 documentation: ^13.2.1 eslint: ^7.24.0 jest: ^26.6.3 @@ -4029,13 +5085,13 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/eslint-config-alt@^0.23.0, @rocket.chat/eslint-config-alt@workspace:packages/eslint-config-alt": +"@rocket.chat/eslint-config-alt@^0.24.0, @rocket.chat/eslint-config-alt@workspace:packages/eslint-config-alt": version: 0.0.0-use.local resolution: "@rocket.chat/eslint-config-alt@workspace:packages/eslint-config-alt" dependencies: "@babel/eslint-parser": ^7.13.14 "@rocket.chat/eslint-config": ^0.4.0 - "@rocket.chat/prettier-config": ^0.23.0 + "@rocket.chat/prettier-config": ^0.24.0 "@typescript-eslint/eslint-plugin": ^4.22.0 "@typescript-eslint/parser": ^4.22.0 eslint: ^7.24.0 @@ -4066,20 +5122,20 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/fuselage-hooks@^0.23.0, @rocket.chat/fuselage-hooks@workspace:packages/fuselage-hooks": +"@rocket.chat/fuselage-hooks@^0.24.0, @rocket.chat/fuselage-hooks@workspace:packages/fuselage-hooks": version: 0.0.0-use.local resolution: "@rocket.chat/fuselage-hooks@workspace:packages/fuselage-hooks" dependencies: "@microsoft/api-documenter": ^7.8.21 "@microsoft/api-extractor": ^7.9.2 - "@rocket.chat/eslint-config-alt": ^0.23.0 - "@rocket.chat/fuselage-tokens": ^0.23.0 - "@rocket.chat/prettier-config": ^0.23.0 + "@rocket.chat/eslint-config-alt": ^0.24.0 + "@rocket.chat/fuselage-tokens": ^0.24.0 + "@rocket.chat/prettier-config": ^0.24.0 "@rollup/plugin-commonjs": ^15.1.0 "@rollup/plugin-json": ^4.1.0 "@rollup/plugin-node-resolve": ^9.0.0 "@rollup/plugin-typescript": ^6.0.0 - "@types/jest": ^26.0.22 + "@types/jest": ^26.0.23 "@types/react": ^17.0.3 "@types/react-dom": ^17.0.3 "@types/resize-observer-browser": ^0.1.5 @@ -4106,13 +5162,13 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/fuselage-polyfills@^0.23.0, @rocket.chat/fuselage-polyfills@workspace:packages/fuselage-polyfills": +"@rocket.chat/fuselage-polyfills@^0.24.0, @rocket.chat/fuselage-polyfills@workspace:packages/fuselage-polyfills": version: 0.0.0-use.local resolution: "@rocket.chat/fuselage-polyfills@workspace:packages/fuselage-polyfills" dependencies: "@juggle/resize-observer": ^3.2.0 - "@rocket.chat/eslint-config-alt": ^0.23.0 - "@rocket.chat/prettier-config": ^0.23.0 + "@rocket.chat/eslint-config-alt": ^0.24.0 + "@rocket.chat/prettier-config": ^0.24.0 clipboard-polyfill: ^3.0.1 element-closest-polyfill: ^1.0.2 eslint: ^7.24.0 @@ -4124,12 +5180,12 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/fuselage-tokens@^0.23.0, @rocket.chat/fuselage-tokens@workspace:packages/fuselage-tokens": +"@rocket.chat/fuselage-tokens@^0.24.0, @rocket.chat/fuselage-tokens@workspace:packages/fuselage-tokens": version: 0.0.0-use.local resolution: "@rocket.chat/fuselage-tokens@workspace:packages/fuselage-tokens" dependencies: - "@rocket.chat/eslint-config-alt": ^0.23.0 - "@rocket.chat/prettier-config": ^0.23.0 + "@rocket.chat/eslint-config-alt": ^0.24.0 + "@rocket.chat/prettier-config": ^0.24.0 eslint: ^7.24.0 eslint-config-prettier: ^8.2.0 eslint-plugin-import: ^2.22.1 @@ -4151,13 +5207,13 @@ __metadata: "@babel/preset-env": ^7.11.5 "@babel/preset-react": ^7.10.4 "@rocket.chat/apps-engine": ^1.17.0 - "@rocket.chat/eslint-config-alt": ^0.23.0 - "@rocket.chat/fuselage": ^0.23.0 - "@rocket.chat/fuselage-hooks": ^0.23.0 - "@rocket.chat/fuselage-polyfills": ^0.23.0 - "@rocket.chat/icons": ^0.23.0 - "@rocket.chat/prettier-config": ^0.23.0 - "@rocket.chat/ui-kit": ^0.23.0 + "@rocket.chat/eslint-config-alt": ^0.24.0 + "@rocket.chat/fuselage": ^0.24.0 + "@rocket.chat/fuselage-hooks": ^0.24.0 + "@rocket.chat/fuselage-polyfills": ^0.24.0 + "@rocket.chat/icons": ^0.24.0 + "@rocket.chat/prettier-config": ^0.24.0 + "@rocket.chat/ui-kit": ^0.24.0 "@storybook/addon-essentials": ^6.1.11 "@storybook/addons": ^6.1.11 "@storybook/react": ^6.1.11 @@ -4188,7 +5244,7 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/fuselage@^0.23.0, @rocket.chat/fuselage@workspace:packages/fuselage": +"@rocket.chat/fuselage@^0.24.0, @rocket.chat/fuselage@workspace:packages/fuselage": version: 0.0.0-use.local resolution: "@rocket.chat/fuselage@workspace:packages/fuselage" dependencies: @@ -4198,15 +5254,15 @@ __metadata: "@babel/plugin-transform-runtime": ^7.11.5 "@babel/preset-env": ^7.11.5 "@babel/preset-react": ^7.10.4 - "@rocket.chat/css-in-js": ^0.23.0 + "@rocket.chat/css-in-js": ^0.24.0 "@rocket.chat/eslint-config": ^0.4.0 - "@rocket.chat/eslint-config-alt": ^0.23.0 - "@rocket.chat/fuselage-hooks": ^0.23.0 - "@rocket.chat/fuselage-polyfills": ^0.23.0 - "@rocket.chat/fuselage-tokens": ^0.23.0 - "@rocket.chat/icons": ^0.23.0 - "@rocket.chat/memo": ^0.23.0 - "@rocket.chat/prettier-config": ^0.23.0 + "@rocket.chat/eslint-config-alt": ^0.24.0 + "@rocket.chat/fuselage-hooks": ^0.24.0 + "@rocket.chat/fuselage-polyfills": ^0.24.0 + "@rocket.chat/fuselage-tokens": ^0.24.0 + "@rocket.chat/icons": ^0.24.0 + "@rocket.chat/memo": ^0.24.0 + "@rocket.chat/prettier-config": ^0.24.0 "@storybook/addon-essentials": ^6.1.11 "@storybook/addon-jest": ^6.1.11 "@storybook/addon-links": ^6.1.11 @@ -4214,7 +5270,7 @@ __metadata: "@storybook/react": ^6.1.11 "@storybook/source-loader": ^6.1.11 "@storybook/theming": ^6.1.11 - "@types/jest": ^26.0.22 + "@types/jest": ^26.0.23 autoprefixer: ^10.0.1 babel-loader: ^8.1.0 caniuse-lite: ^1.0.30001151 @@ -4265,12 +5321,12 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/icons@^0.23.0, @rocket.chat/icons@workspace:packages/icons": +"@rocket.chat/icons@^0.24.0, @rocket.chat/icons@workspace:packages/icons": version: 0.0.0-use.local resolution: "@rocket.chat/icons@workspace:packages/icons" dependencies: - "@rocket.chat/eslint-config-alt": ^0.23.0 - "@rocket.chat/prettier-config": ^0.23.0 + "@rocket.chat/eslint-config-alt": ^0.24.0 + "@rocket.chat/prettier-config": ^0.24.0 eslint: ^7.24.0 glob: ^7.1.6 lint-staged: ^10.5.4 @@ -4287,12 +5343,12 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/memo@^0.23.0, @rocket.chat/memo@workspace:packages/memo": +"@rocket.chat/memo@^0.24.0, @rocket.chat/memo@workspace:packages/memo": version: 0.0.0-use.local resolution: "@rocket.chat/memo@workspace:packages/memo" dependencies: - "@rocket.chat/eslint-config-alt": ^0.23.0 - "@rocket.chat/prettier-config": ^0.23.0 + "@rocket.chat/eslint-config-alt": ^0.24.0 + "@rocket.chat/prettier-config": ^0.24.0 eslint: ^7.18.0 eslint-config-prettier: ^7.2.0 eslint-plugin-import: ^2.22.1 @@ -4305,6 +5361,35 @@ __metadata: languageName: unknown linkType: soft +"@rocket.chat/message-parser@workspace:packages/message-parser": + version: 0.0.0-use.local + resolution: "@rocket.chat/message-parser@workspace:packages/message-parser" + dependencies: + "@babel/core": ^7.14.0 + "@babel/eslint-parser": ^7.13.14 + "@babel/preset-env": ^7.14.1 + "@rocket.chat/eslint-config-alt": "workspace:packages/eslint-config-alt" + "@rocket.chat/prettier-config": "workspace:packages/prettier-config" + "@types/jest": ^26.0.23 + "@types/node": ^14.14.43 + "@typescript-eslint/parser": ^4.22.0 + babel-loader: ^8.2.2 + eslint: ^7.25.0 + jest: ^26.6.3 + lint-staged: ^10.5.4 + npm-run-all: ^4.1.5 + peggy: ^1.1.0 + prettier: ^2.2.1 + prettier-plugin-pegjs: ^0.3.2 + rimraf: ^3.0.2 + ts-jest: ^26.5.5 + ts-loader: ^9.1.1 + typescript: ^4.2.4 + webpack: ^5.36.2 + webpack-cli: ^4.6.0 + languageName: unknown + linkType: soft + "@rocket.chat/mp3-encoder@workspace:packages/mp3-encoder": version: 0.0.0-use.local resolution: "@rocket.chat/mp3-encoder@workspace:packages/mp3-encoder" @@ -4313,12 +5398,12 @@ __metadata: "@babel/plugin-transform-runtime": ^7.12.10 "@babel/preset-env": ^7.12.11 "@babel/preset-typescript": ^7.12.7 - "@rocket.chat/eslint-config-alt": ^0.23.0 - "@rocket.chat/prettier-config": ^0.23.0 + "@rocket.chat/eslint-config-alt": ^0.24.0 + "@rocket.chat/prettier-config": ^0.24.0 "@rollup/plugin-commonjs": ^17.0.0 "@rollup/plugin-node-resolve": ^11.0.1 "@rollup/plugin-typescript": ^8.1.0 - "@types/jest": ^26.0.22 + "@types/jest": ^26.0.23 documentation: ^13.2.1 eslint: ^7.24.0 jest: ^26.6.3 @@ -4330,12 +5415,12 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/prettier-config@^0.23.0, @rocket.chat/prettier-config@workspace:packages/prettier-config": +"@rocket.chat/prettier-config@^0.24.0, @rocket.chat/prettier-config@workspace:packages/prettier-config": version: 0.0.0-use.local resolution: "@rocket.chat/prettier-config@workspace:packages/prettier-config" dependencies: "@rocket.chat/eslint-config": ^0.4.0 - "@rocket.chat/eslint-config-alt": ^0.23.0 + "@rocket.chat/eslint-config-alt": ^0.24.0 eslint: ^7.24.0 eslint-config-prettier: ^8.2.0 eslint-plugin-import: ^2.22.1 @@ -4351,9 +5436,9 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/string-helpers@workspace:packages/string-helpers" dependencies: - "@rocket.chat/eslint-config-alt": ^0.23.0 - "@rocket.chat/prettier-config": ^0.23.0 - "@types/jest": ^26.0.22 + "@rocket.chat/eslint-config-alt": ^0.24.0 + "@rocket.chat/prettier-config": ^0.24.0 + "@types/jest": ^26.0.23 downlevel-dts: ^0.7.0 eslint: ^7.24.0 jest: ^26.6.3 @@ -4367,7 +5452,7 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/ui-kit@^0.23.0, @rocket.chat/ui-kit@workspace:packages/ui-kit": +"@rocket.chat/ui-kit@^0.24.0, @rocket.chat/ui-kit@workspace:packages/ui-kit": version: 0.0.0-use.local resolution: "@rocket.chat/ui-kit@workspace:packages/ui-kit" dependencies: @@ -4375,9 +5460,9 @@ __metadata: "@babel/eslint-parser": ^7.12.1 "@babel/plugin-transform-runtime": ^7.12.10 "@babel/preset-env": ^7.12.11 - "@rocket.chat/eslint-config-alt": ^0.23.0 - "@rocket.chat/prettier-config": ^0.23.0 - "@types/jest": ^26.0.22 + "@rocket.chat/eslint-config-alt": ^0.24.0 + "@rocket.chat/prettier-config": ^0.24.0 + "@types/jest": ^26.0.23 babel-loader: ^8.1.0 documentation: ^13.2.1 eslint: ^7.24.0 @@ -5568,6 +6653,13 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:^0.0.47": + version: 0.0.47 + resolution: "@types/estree@npm:0.0.47" + checksum: 28cba548c7b61855f4ff0c20146512e71fb578253e3cb24baf1acf660c626a8a271f99848e8a8c4e0e87f177cfce28e8d1fcecb65a4aad4a92ba48fd73179289 + languageName: node + linkType: hard + "@types/glob-base@npm:^0.3.0": version: 0.3.0 resolution: "@types/glob-base@npm:0.3.0" @@ -5659,13 +6751,13 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^26.0.22": - version: 26.0.22 - resolution: "@types/jest@npm:26.0.22" +"@types/jest@npm:^26.0.23": + version: 26.0.23 + resolution: "@types/jest@npm:26.0.23" dependencies: jest-diff: ^26.0.0 pretty-format: ^26.0.0 - checksum: 4c98ed058522f6cc74bcb47b8b7b104b77b2d4e42e087171f3d2d3ae5338c21f43ec26f2a186bc229c1bd72c3f776ad07faba837f0ec27f22cf94e154516c0b3 + checksum: a015676b78bdc51be6f6315acef10d9106ea8064e3e49143bca3c75b834b61285b45c5f5ccfd049a80107f1e2869a9183cdb5be85816c073ea8dd05852fafdc6 languageName: node linkType: hard @@ -5762,10 +6854,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^14.14.41": - version: 14.14.41 - resolution: "@types/node@npm:14.14.41" - checksum: 37dfb639644c8ee9b9846106834983f590d494b855e74645a4f169ea24199f7559366d25f6e72e83ba940b59eb6370e002bd53963d098d6d9fdf935a37011417 +"@types/node@npm:^14.14.43": + version: 14.14.43 + resolution: "@types/node@npm:14.14.43" + checksum: b7a9e6df7c2a6f90e783bfe6ef358cc2c3ff4e1dfcea56b83349cd3feefd02a9b6fa54b443983694b4398a06257d871c947abeae03bd0d39fd71981161d61765 languageName: node linkType: hard @@ -6471,6 +7563,16 @@ __metadata: languageName: node linkType: hard +"@webpack-cli/configtest@npm:^1.0.2": + version: 1.0.2 + resolution: "@webpack-cli/configtest@npm:1.0.2" + peerDependencies: + webpack: 4.x.x || 5.x.x + webpack-cli: 4.x.x + checksum: 98edc004536d7fd212386a759b738f78f71dc24a7c10fa5245d3c4d2b33e47e9076c132d25aa94c291848ccf47e8986b71244785c95fbacf770a5d9f54dc8586 + languageName: node + linkType: hard + "@webpack-cli/info@npm:^1.1.0": version: 1.1.0 resolution: "@webpack-cli/info@npm:1.1.0" @@ -6493,6 +7595,17 @@ __metadata: languageName: node linkType: hard +"@webpack-cli/info@npm:^1.2.3": + version: 1.2.3 + resolution: "@webpack-cli/info@npm:1.2.3" + dependencies: + envinfo: ^7.7.3 + peerDependencies: + webpack-cli: 4.x.x + checksum: 0499e93583176fe0d3f1f8a2022f460c8177cf24e07d7b6110de4ac89dab42115d898095c856ede4cf2b4c1c36a4a6e0230658480fae341119d20e25d28f3e35 + languageName: node + linkType: hard + "@webpack-cli/serve@npm:^1.1.0": version: 1.1.0 resolution: "@webpack-cli/serve@npm:1.1.0" @@ -6517,6 +7630,18 @@ __metadata: languageName: node linkType: hard +"@webpack-cli/serve@npm:^1.3.1": + version: 1.3.1 + resolution: "@webpack-cli/serve@npm:1.3.1" + peerDependencies: + webpack-cli: 4.x.x + peerDependenciesMeta: + webpack-dev-server: + optional: true + checksum: 8a734da3451268d5d2ae24b57c7f824b452fb2eba8ea41f7b8830eb3f322a9649cc3d40a6dbb6f19017748bbdbf24cf459ad0ac27289b723d9b132b946c168c7 + languageName: node + linkType: hard + "@xtuc/ieee754@npm:^1.2.0": version: 1.2.0 resolution: "@xtuc/ieee754@npm:1.2.0" @@ -6642,6 +7767,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.2.1": + version: 8.2.2 + resolution: "acorn@npm:8.2.2" + bin: + acorn: bin/acorn + checksum: 9e509a7a99e4e65cbfe48395f2d5576a7dbd30078ae95ea28f771921667c102b092d79994c20658ae98506ed4f2e86b5e6fcdbba3e6f8e18eda195568942cfe9 + languageName: node + linkType: hard + "add-stream@npm:^1.0.0": version: 1.0.0 resolution: "add-stream@npm:1.0.0" @@ -7434,7 +8568,7 @@ __metadata: languageName: node linkType: hard -"babel-loader@npm:^8.0.6": +"babel-loader@npm:^8.0.6, babel-loader@npm:^8.2.2": version: 8.2.2 resolution: "babel-loader@npm:8.2.2" dependencies: @@ -7663,6 +8797,42 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-corejs2@npm:^0.2.0": + version: 0.2.0 + resolution: "babel-plugin-polyfill-corejs2@npm:0.2.0" + dependencies: + "@babel/compat-data": ^7.13.11 + "@babel/helper-define-polyfill-provider": ^0.2.0 + semver: ^6.1.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5d2825a9f28b322956da8941b069c3e4130478bc3620ab20e4b680671b31ad95d1c69514c58df9d5e2d54c87aba9ca92df5a7dbad54005b25ac9587af252db07 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.2.0": + version: 0.2.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.2.0" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.2.0 + core-js-compat: ^3.9.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ae25400dd8764f737ecbd02f9aa3f35df62d3d239ad269edebab195551686b020d4b9b957cc303c6fbf9497c214e7b2f7fa3eee460d00b569d0d6f634ef3d5aa + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.2.0": + version: 0.2.0 + resolution: "babel-plugin-polyfill-regenerator@npm:0.2.0" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.2.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 538ab98e3062fb4ef4eae09587292513c03917902fe6d8c90b49001b26d41ffc3cd2da34b3b999b12e501cde1233e356af9f33f898c623720c94c6d9022d998c + languageName: node + linkType: hard + "babel-plugin-react-docgen@npm:^4.2.1": version: 4.2.1 resolution: "babel-plugin-react-docgen@npm:4.2.1" @@ -8205,6 +9375,21 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.16.6": + version: 4.16.6 + resolution: "browserslist@npm:4.16.6" + dependencies: + caniuse-lite: ^1.0.30001219 + colorette: ^1.2.2 + electron-to-chromium: ^1.3.723 + escalade: ^3.1.1 + node-releases: ^1.1.71 + bin: + browserslist: cli.js + checksum: ebb0ab279c5e61f882467f7ccd7d22c0edfcc01201eba06e85e835ca4d355e682f9aa3310bfa18c3a23bb244f0b8e498b3113dae3e9b0fa4908c5ffb4a26b3a2 + languageName: node + linkType: hard + "bs-logger@npm:0.x": version: 0.2.6 resolution: "bs-logger@npm:0.2.6" @@ -8602,6 +9787,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001219": + version: 1.0.30001221 + resolution: "caniuse-lite@npm:1.0.30001221" + checksum: 38d436b0636bd0f26cef1f322d261b04e337bb3930e2ea9daaa0479719463187c456d004865bb2a70ef733b9c4970693a985175695383ef1038f5e687437dcfa + languageName: node + linkType: hard + "capture-exit@npm:^2.0.0": version: 2.0.0 resolution: "capture-exit@npm:2.0.0" @@ -9795,6 +10987,16 @@ __metadata: languageName: node linkType: hard +"core-js-compat@npm:^3.9.0, core-js-compat@npm:^3.9.1": + version: 3.11.2 + resolution: "core-js-compat@npm:3.11.2" + dependencies: + browserslist: ^4.16.6 + semver: 7.0.0 + checksum: ddcc0d1672d1f03ab21d279281a6beadce8e4cb7a8106664eaf0d080b52ea2325d85f449f59f851537ccfd0ba309d97059aa71bf756f2b3e3059342080bbd92d + languageName: node + linkType: hard + "core-js-pure@npm:^3.0.1": version: 3.8.1 resolution: "core-js-pure@npm:3.8.1" @@ -11142,6 +12344,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.3.723": + version: 1.3.726 + resolution: "electron-to-chromium@npm:1.3.726" + checksum: 031fb7d794021b2c7200e74c830a033a2ee12a2a547751d399c499a2022c0b0dbe1deae1396995cb2ef48830d441a36190b7fa6465af19562e0b849a00d88b39 + languageName: node + linkType: hard + "element-closest-polyfill@npm:^1.0.2": version: 1.0.2 resolution: "element-closest-polyfill@npm:1.0.2" @@ -11276,6 +12485,16 @@ __metadata: languageName: node linkType: hard +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.8.0": + version: 5.8.0 + resolution: "enhanced-resolve@npm:5.8.0" + dependencies: + graceful-fs: ^4.2.4 + tapable: ^2.2.0 + checksum: a3e1131c9ba0dd6f8276f068ddac4e6469d824ee8132f748e2734722b9f25360f4cb5a7fbec1cab8cd56815a6762e0bb1b8d088cbdf2a276d30d573ac5528bbb + languageName: node + linkType: hard + "enhanced-resolve@npm:^5.3.1": version: 5.3.1 resolution: "enhanced-resolve@npm:5.3.1" @@ -11932,6 +13151,53 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^7.25.0": + version: 7.25.0 + resolution: "eslint@npm:7.25.0" + dependencies: + "@babel/code-frame": 7.12.11 + "@eslint/eslintrc": ^0.4.0 + ajv: ^6.10.0 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.0.1 + doctrine: ^3.0.0 + enquirer: ^2.3.5 + eslint-scope: ^5.1.1 + eslint-utils: ^2.1.0 + eslint-visitor-keys: ^2.0.0 + espree: ^7.3.1 + esquery: ^1.4.0 + esutils: ^2.0.2 + file-entry-cache: ^6.0.1 + functional-red-black-tree: ^1.0.1 + glob-parent: ^5.0.0 + globals: ^13.6.0 + ignore: ^4.0.6 + import-fresh: ^3.0.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + js-yaml: ^3.13.1 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash: ^4.17.21 + minimatch: ^3.0.4 + natural-compare: ^1.4.0 + optionator: ^0.9.1 + progress: ^2.0.0 + regexpp: ^3.1.0 + semver: ^7.2.1 + strip-ansi: ^6.0.0 + strip-json-comments: ^3.1.0 + table: ^6.0.4 + text-table: ^0.2.0 + v8-compile-cache: ^2.0.3 + bin: + eslint: bin/eslint.js + checksum: 6e1782e2264ebf987504746ee82e996bf0ef2c29a2eaea869b54cb8aa1eaf10945b1d563618515e65ac934ca626f3609282127773f45868ad4a98744458a3c62 + languageName: node + linkType: hard + "espree@npm:^7.2.0": version: 7.3.0 resolution: "espree@npm:7.3.0" @@ -12989,7 +14255,7 @@ fsevents@~2.1.2: languageName: node linkType: hard -"gensync@npm:^1.0.0-beta.1": +"gensync@npm:^1.0.0-beta.1, gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" checksum: d523437689c97b3aba9c5cdeca4677d5fff9a29d620db693fea40d852bad63563110f16979d0170248439dbcd2ecee0780fb2533d3f0519f019081aa10767c60 @@ -16569,6 +17835,13 @@ fsevents@~2.1.2: languageName: node linkType: hard +"lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "lodash.debounce@npm:4.0.8" + checksum: b6042bd8c09ff1961c9127d32266316bc21f946ece5e3464a663ec61fadb98e7d56ec0ef7e23b47d393695310c19cf24e651c1756be6da91ac02c72be7f79465 + languageName: node + linkType: hard + "lodash.get@npm:^4.0.0, lodash.get@npm:^4.4.2": version: 4.4.2 resolution: "lodash.get@npm:4.4.2" @@ -17995,6 +19268,13 @@ fsevents@~2.1.2: languageName: node linkType: hard +"node-releases@npm:^1.1.71": + version: 1.1.71 + resolution: "node-releases@npm:1.1.71" + checksum: 9e283003f1deafd0ca7f9bbde9c4b5b05d880ca165217f5227b37406626d6689a246a5c4c72f9a8512be65cd51b13cc7d0f5d8bc68ad36089b620f1810292340 + languageName: node + linkType: hard + "nopt@npm:^4.0.1": version: 4.0.3 resolution: "nopt@npm:4.0.3" @@ -19100,6 +20380,15 @@ fsevents@~2.1.2: languageName: node linkType: hard +"peggy@npm:^1.1.0": + version: 1.1.0 + resolution: "peggy@npm:1.1.0" + bin: + peggy: bin/peggy + checksum: 83004c3b42ca6bb089d22fa9444942ee26ab42557db2348a245bc90946e26b8c736caf1872e25bbaa428106a706ed8730c9e37c8720bfc10cb107f795a36802c + languageName: node + linkType: hard + "performance-now@npm:^2.1.0": version: 2.1.0 resolution: "performance-now@npm:2.1.0" @@ -19946,7 +21235,16 @@ fsevents@~2.1.2: languageName: node linkType: hard -"prettier@npm:^2.1.2, prettier@npm:^2.2.1": +"prettier-plugin-pegjs@npm:^0.3.2": + version: 0.3.2 + resolution: "prettier-plugin-pegjs@npm:0.3.2" + dependencies: + prettier: ^2.0.5 + checksum: d645d79d6498ee685b68a4e458ffe18371ae7a4790fd5d4317a6248b624111674f93d1b9651d7e63942fad99000290792eb43c648f2ed95537abdfbdd606b564 + languageName: node + linkType: hard + +"prettier@npm:^2.0.5, prettier@npm:^2.1.2, prettier@npm:^2.2.1": version: 2.2.1 resolution: "prettier@npm:2.2.1" bin: @@ -21661,6 +22959,16 @@ resolve@1.1.7: languageName: node linkType: hard +resolve@^1.14.2: + version: 1.20.0 + resolution: "resolve@npm:1.20.0" + dependencies: + is-core-module: ^2.2.0 + path-parse: ^1.0.6 + checksum: 0f5206d454b30e74d9b2d575b5f8aedf443c4d8b90b84cdf79474ade29bb459075220da3127b682896872a16022ed65cc4db09e0f23849654144d3d75c65cd1b + languageName: node + linkType: hard + resolve@^2.0.0-next.3: version: 2.0.0-next.3 resolution: "resolve@npm:2.0.0-next.3" @@ -21698,6 +23006,16 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard +"resolve@patch:resolve@^1.14.2#builtin": + version: 1.20.0 + resolution: "resolve@patch:resolve@npm%3A1.20.0#builtin::version=1.20.0&hash=3388aa" + dependencies: + is-core-module: ^2.2.0 + path-parse: ^1.0.6 + checksum: c4a515b76026806b5b26513fc7bdb80458c532bc91c02ef45ac928d1025585f93bec0b904be39c02131118a37ff7e3f9258f1526850b025d2ec0948bb5fd03d0 + languageName: node + linkType: hard + "resolve@patch:resolve@^2.0.0-next.3#builtin": version: 2.0.0-next.3 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.3#builtin::version=2.0.0-next.3&hash=3388aa" @@ -22075,9 +23393,9 @@ resolve@~1.17.0: version: 0.0.0-use.local resolution: "scripts@workspace:scripts" dependencies: - "@rocket.chat/eslint-config-alt": ^0.23.0 - "@rocket.chat/prettier-config": ^0.23.0 - "@types/node": ^14.14.41 + "@rocket.chat/eslint-config-alt": ^0.24.0 + "@rocket.chat/prettier-config": ^0.24.0 + "@types/node": ^14.14.43 "@typescript-eslint/parser": ^4.22.0 eslint: ^7.24.0 fast-glob: ^3.2.5 @@ -22129,7 +23447,7 @@ resolve@~1.17.0: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.2.0, semver@npm:^6.3.0": +"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.2.0, semver@npm:^6.3.0": version: 6.3.0 resolution: "semver@npm:6.3.0" bin: @@ -24309,6 +25627,21 @@ resolve@~1.17.0: languageName: node linkType: hard +"ts-loader@npm:^9.1.1": + version: 9.1.1 + resolution: "ts-loader@npm:9.1.1" + dependencies: + chalk: ^4.1.0 + enhanced-resolve: ^5.0.0 + micromatch: ^4.0.0 + semver: ^7.3.4 + peerDependencies: + typescript: "*" + webpack: "*" + checksum: d74d6fa6846b27763ae5927dc0f07d156909e8d5302e1514668da7404c89ad0494b656b6a971a89c344d34d419b5b63db24346cfea1a4b03a2ee539b66d10629 + languageName: node + linkType: hard + "ts-node@npm:^9.1.1": version: 9.1.1 resolution: "ts-node@npm:9.1.1" @@ -25754,6 +27087,41 @@ typescript@~4.0.5: languageName: node linkType: hard +"webpack-cli@npm:^4.6.0": + version: 4.6.0 + resolution: "webpack-cli@npm:4.6.0" + dependencies: + "@discoveryjs/json-ext": ^0.5.0 + "@webpack-cli/configtest": ^1.0.2 + "@webpack-cli/info": ^1.2.3 + "@webpack-cli/serve": ^1.3.1 + colorette: ^1.2.1 + commander: ^7.0.0 + enquirer: ^2.3.6 + execa: ^5.0.0 + fastest-levenshtein: ^1.0.12 + import-local: ^3.0.2 + interpret: ^2.2.0 + rechoir: ^0.7.0 + v8-compile-cache: ^2.2.0 + webpack-merge: ^5.7.3 + peerDependencies: + webpack: 4.x.x || 5.x.x + peerDependenciesMeta: + "@webpack-cli/generators": + optional: true + "@webpack-cli/migrate": + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + bin: + webpack-cli: bin/cli.js + checksum: 5818245d609bfe677a84c14ebb7177590a511a871ce877803c14ba948dc603c15637fdfc1346726480d26b97ba4a55785a211e584d0dd098ec767927f244f9b9 + languageName: node + linkType: hard + "webpack-dev-middleware@npm:^3.7.0": version: 3.7.2 resolution: "webpack-dev-middleware@npm:3.7.2" @@ -25959,6 +27327,42 @@ typescript@~4.0.5: languageName: node linkType: hard +"webpack@npm:^5.36.2": + version: 5.36.2 + resolution: "webpack@npm:5.36.2" + dependencies: + "@types/eslint-scope": ^3.7.0 + "@types/estree": ^0.0.47 + "@webassemblyjs/ast": 1.11.0 + "@webassemblyjs/wasm-edit": 1.11.0 + "@webassemblyjs/wasm-parser": 1.11.0 + acorn: ^8.2.1 + browserslist: ^4.14.5 + chrome-trace-event: ^1.0.2 + enhanced-resolve: ^5.8.0 + es-module-lexer: ^0.4.0 + eslint-scope: ^5.1.1 + events: ^3.2.0 + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.2.4 + json-parse-better-errors: ^1.0.2 + loader-runner: ^4.2.0 + mime-types: ^2.1.27 + neo-async: ^2.6.2 + schema-utils: ^3.0.0 + tapable: ^2.1.1 + terser-webpack-plugin: ^5.1.1 + watchpack: ^2.0.0 + webpack-sources: ^2.1.1 + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 221f75148a40809ce4c8c2f51e3510d716a75ba086ddd18f4d8313f2f18f18efce74b55bfee58223b8ae2d8bcab035d07d2a8f5690c3f3f6a4ce59d015879179 + languageName: node + linkType: hard + "websocket-driver@npm:>=0.5.1": version: 0.7.4 resolution: "websocket-driver@npm:0.7.4"