diff --git a/.eslintrc.yml b/.eslintrc.yml
index 551f906e..53b67bed 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -1,15 +1,3 @@
-parser: '@typescript-eslint/parser'
-parserOptions:
- project:
- - tsconfig.json
- - '*/tsconfig.typings.json'
-extends:
- - 'plugin:@typescript-eslint/all'
- - plugin:import/recommended
- - plugin:import/typescript
-plugins:
- - '@typescript-eslint'
- - 'import'
settings:
import/resolver:
typescript: true
@@ -19,126 +7,148 @@ env:
es6: true
node: true
commonjs: true
-rules:
- '@typescript-eslint/semi':
- - error
- - never
- '@typescript-eslint/indent':
- - error
- - 4
- '@typescript-eslint/explicit-member-accessibility':
- - error
- - accessibility: no-public
- overrides:
- parameterProperties: explicit
- '@typescript-eslint/no-require-imports': off
- '@typescript-eslint/no-parameter-properties': off
- '@typescript-eslint/explicit-function-return-type': off
- '@typescript-eslint/no-explicit-any': off
- '@typescript-eslint/no-magic-numbers': off
- '@typescript-eslint/member-delimiter-style': off
- '@typescript-eslint/promise-function-async': off
- '@typescript-eslint/require-array-sort-compare': off
- '@typescript-eslint/no-floating-promises': off
- '@typescript-eslint/prefer-readonly': off
- '@typescript-eslint/require-await': off
- '@typescript-eslint/strict-boolean-expressions': off
- '@typescript-eslint/no-misused-promises':
- - error
- - checksVoidReturn: false
- '@typescript-eslint/typedef': off
- '@typescript-eslint/consistent-type-imports': off
- '@typescript-eslint/sort-type-union-intersection-members': off
- '@typescript-eslint/no-use-before-define':
- - error
- - classes: false
- no-duplicate-imports: error
- array-bracket-spacing:
- - error
- - never
- block-scoped-var: error
- brace-style: off
- '@typescript-eslint/brace-style':
- - error
- - 1tbs
- - allowSingleLine: true
- computed-property-spacing:
- - error
- - never
- comma-dangle: off
- '@typescript-eslint/comma-dangle':
- - error
- - always-multiline
- curly: error
- eol-last: error
- eqeqeq:
- - error
- - smart
- max-depth:
- - 1
- - 5
- max-statements:
- - 1
- - 80
- no-multiple-empty-lines: error
- no-mixed-spaces-and-tabs: error
- no-trailing-spaces: error
- '@typescript-eslint/no-unused-vars':
+
+overrides:
+- files: '*.mjs'
+ plugins:
+ - 'import'
+ parserOptions:
+ sourceType: module
+ ecmaVersion: latest
+
+- files: '*.ts'
+ parser: '@typescript-eslint/parser'
+ parserOptions:
+ project:
+ - tsconfig.json
+ - '*/tsconfig.typings.json'
+ extends:
+ - 'plugin:@typescript-eslint/all'
+ - plugin:import/recommended
+ - plugin:import/typescript
+ plugins:
+ - '@typescript-eslint'
+ - 'import'
+ rules:
+ '@typescript-eslint/semi':
- error
- - vars: all
- args: after-used
- argsIgnorePattern: ^_
- no-undef: error
- no-var: error
- object-curly-spacing: off
- '@typescript-eslint/object-curly-spacing':
- - error
- - always
- quote-props:
- - warn
- - as-needed
- - keywords: true
- numbers: true
- quotes: off
- '@typescript-eslint/quotes':
- - error
- - single
- - allowTemplateLiterals: true
- '@typescript-eslint/no-confusing-void-expression':
- - error
- - ignoreArrowShorthand: true
- '@typescript-eslint/no-non-null-assertion': off
- '@typescript-eslint/no-unnecessary-condition':
- - error
- - allowConstantLoopConditions: true
- '@typescript-eslint/restrict-template-expressions': off
- '@typescript-eslint/prefer-readonly-parameter-types': off
- '@typescript-eslint/no-unsafe-member-access': off
- '@typescript-eslint/no-unsafe-call': off
- '@typescript-eslint/no-unsafe-return': off
- '@typescript-eslint/no-unsafe-assignment': off
- '@typescript-eslint/naming-convention': off
- '@typescript-eslint/lines-between-class-members':
- - error
- - exceptAfterSingleLine: true
- '@typescript-eslint/dot-notation': off
- '@typescript-eslint/no-implicit-any-catch': off
- '@typescript-eslint/member-ordering': off
- '@typescript-eslint/no-var-requires': off
- '@typescript-eslint/no-unsafe-argument': off
- '@typescript-eslint/restrict-plus-operands': off
- '@typescript-eslint/space-infix-ops': off
- '@typescript-eslint/no-type-alias':
- - error
- - allowAliases: in-unions-and-intersections
- allowLiterals: always
- allowCallbacks: always
- '@typescript-eslint/sort-type-constituents': off
- '@typescript-eslint/parameter-properties':
- - error
- - prefer: parameter-property
- 'import/no-named-as-default-member': off
- '@typescript-eslint/consistent-type-exports': off
- '@typescript-eslint/consistent-generic-constructors': off
- 'keyword-spacing': off
- '@typescript-eslint/keyword-spacing': off
+ - never
+ '@typescript-eslint/indent':
+ - error
+ - 4
+ '@typescript-eslint/explicit-member-accessibility':
+ - error
+ - accessibility: no-public
+ overrides:
+ parameterProperties: explicit
+ '@typescript-eslint/no-require-imports': off
+ '@typescript-eslint/no-parameter-properties': off
+ '@typescript-eslint/explicit-function-return-type': off
+ '@typescript-eslint/no-explicit-any': off
+ '@typescript-eslint/no-magic-numbers': off
+ '@typescript-eslint/member-delimiter-style': off
+ '@typescript-eslint/promise-function-async': off
+ '@typescript-eslint/require-array-sort-compare': off
+ '@typescript-eslint/no-floating-promises': off
+ '@typescript-eslint/prefer-readonly': off
+ '@typescript-eslint/require-await': off
+ '@typescript-eslint/strict-boolean-expressions': off
+ '@typescript-eslint/no-misused-promises':
+ - error
+ - checksVoidReturn: false
+ '@typescript-eslint/typedef': off
+ '@typescript-eslint/consistent-type-imports': off
+ '@typescript-eslint/sort-type-union-intersection-members': off
+ '@typescript-eslint/no-use-before-define':
+ - error
+ - classes: false
+ no-duplicate-imports: error
+ array-bracket-spacing:
+ - error
+ - never
+ block-scoped-var: error
+ brace-style: off
+ '@typescript-eslint/brace-style':
+ - error
+ - 1tbs
+ - allowSingleLine: true
+ computed-property-spacing:
+ - error
+ - never
+ comma-dangle: off
+ '@typescript-eslint/comma-dangle':
+ - error
+ - always-multiline
+ curly: error
+ eol-last: error
+ eqeqeq:
+ - error
+ - smart
+ max-depth:
+ - 1
+ - 5
+ max-statements:
+ - 1
+ - 80
+ no-multiple-empty-lines: error
+ no-mixed-spaces-and-tabs: error
+ no-trailing-spaces: error
+ '@typescript-eslint/no-unused-vars':
+ - error
+ - vars: all
+ args: after-used
+ argsIgnorePattern: ^_
+ no-undef: error
+ no-var: error
+ object-curly-spacing: off
+ '@typescript-eslint/object-curly-spacing':
+ - error
+ - always
+ quote-props:
+ - warn
+ - as-needed
+ - keywords: true
+ numbers: true
+ quotes: off
+ '@typescript-eslint/quotes':
+ - error
+ - single
+ - allowTemplateLiterals: true
+ '@typescript-eslint/no-confusing-void-expression':
+ - error
+ - ignoreArrowShorthand: true
+ '@typescript-eslint/no-non-null-assertion': off
+ '@typescript-eslint/no-unnecessary-condition':
+ - error
+ - allowConstantLoopConditions: true
+ '@typescript-eslint/restrict-template-expressions': off
+ '@typescript-eslint/prefer-readonly-parameter-types': off
+ '@typescript-eslint/no-unsafe-member-access': off
+ '@typescript-eslint/no-unsafe-call': off
+ '@typescript-eslint/no-unsafe-return': off
+ '@typescript-eslint/no-unsafe-assignment': off
+ '@typescript-eslint/naming-convention': off
+ '@typescript-eslint/lines-between-class-members':
+ - error
+ - exceptAfterSingleLine: true
+ '@typescript-eslint/dot-notation': off
+ '@typescript-eslint/no-implicit-any-catch': off
+ '@typescript-eslint/member-ordering': off
+ '@typescript-eslint/no-var-requires': off
+ '@typescript-eslint/no-unsafe-argument': off
+ '@typescript-eslint/restrict-plus-operands': off
+ '@typescript-eslint/space-infix-ops': off
+ '@typescript-eslint/no-type-alias':
+ - error
+ - allowAliases: in-unions-and-intersections
+ allowLiterals: always
+ allowCallbacks: always
+ '@typescript-eslint/sort-type-constituents': off
+ '@typescript-eslint/parameter-properties':
+ - error
+ - prefer: parameter-property
+ 'import/no-named-as-default-member': off
+ '@typescript-eslint/consistent-type-exports': off
+ '@typescript-eslint/consistent-generic-constructors': off
+ 'keyword-spacing': off
+ '@typescript-eslint/keyword-spacing': off
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 236735cb..4d0d1fd0 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -68,7 +68,7 @@ jobs:
run: yarn run build
- name: Prepackage plugins
- run: scripts/prepackage-plugins.js
+ run: scripts/prepackage-plugins.mjs
env:
ARCH: ${{matrix.arch}}
@@ -78,7 +78,7 @@ jobs:
- run: ln -s ../../node_modules/electron app/node_modules
- name: Build and sign packages
- run: scripts/build-macos.js
+ run: scripts/build-macos.mjs
if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags'))
env:
ARCH: ${{matrix.arch}}
@@ -92,7 +92,7 @@ jobs:
# DEBUG: electron-builder,electron-builder:*
- name: Build packages without signing
- run: scripts/build-macos.js
+ run: scripts/build-macos.mjs
if: "! (github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))"
env:
ARCH: ${{matrix.arch}}
@@ -101,7 +101,7 @@ jobs:
- name: Upload symbols
run: |
sudo npm install -g @sentry/cli --unsafe-perm
- ./scripts/sentry-upload.js
+ ./scripts/sentry-upload.mjs
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
@@ -162,11 +162,11 @@ jobs:
if: matrix.build-arch == 'x64'
- name: Prepackage plugins (x64)
- run: scripts/prepackage-plugins.js
+ run: scripts/prepackage-plugins.mjs
if: ${{matrix.build-arch == 'x64'}}
- name: Build packages (x64)
- run: scripts/build-linux.js
+ run: scripts/build-linux.mjs
if: ${{matrix.build-arch == 'x64'}}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -193,8 +193,8 @@ jobs:
cd /github/workspace &&
yarn --network-timeout 1000000 &&
yarn run build &&
- scripts/prepackage-plugins.js &&
- USE_SYSTEM_FPM=true scripts/build-linux.js"
+ scripts/prepackage-plugins.mjs &&
+ USE_SYSTEM_FPM=true scripts/build-linux.mjs"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
@@ -217,8 +217,8 @@ jobs:
sed -i '/ \"electron\":/c\ \"electron\": \"17.0.0\",' package.json &&
yarn --network-timeout 1000000 &&
yarn run build &&
- scripts/prepackage-plugins.js &&
- USE_SYSTEM_FPM=true scripts/build-linux.js"
+ scripts/prepackage-plugins.mjs &&
+ USE_SYSTEM_FPM=true scripts/build-linux.mjs"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
@@ -228,7 +228,7 @@ jobs:
- name: Upload symbols
run: |
sudo npm install -g @sentry/cli --unsafe-perm
- ./scripts/sentry-upload.js
+ ./scripts/sentry-upload.mjs
if: matrix.build-arch == 'x64'
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
@@ -308,12 +308,12 @@ jobs:
npm i -g yarn@1.19.1
yarn --network-timeout 1000000
yarn run build
- node scripts/prepackage-plugins.js
+ node scripts/prepackage-plugins.mjs
env:
ARCH: ${{matrix.arch}}
- name: Build and sign packages
- run: node scripts/build-windows.js
+ run: node scripts/build-windows.mjs
if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags'))
env:
ARCH: ${{matrix.arch}}
@@ -324,7 +324,7 @@ jobs:
DEBUG: electron-builder,electron-builder:*
- name: Build packages without signing
- run: node scripts/build-windows.js
+ run: node scripts/build-windows.mjs
if: "!(github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))"
env:
ARCH: ${{matrix.arch}}
@@ -332,7 +332,7 @@ jobs:
- name: Upload symbols
run: |
npm install @sentry/cli
- node scripts/sentry-upload.js
+ node scripts/sentry-upload.mjs
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
diff --git a/app/index.pug b/app/index.pug
index 90d1619d..4f0e9419 100644
--- a/app/index.pug
+++ b/app/index.pug
@@ -12,6 +12,7 @@ html.tabby
body { transition: 0.5s background; }
body
style#custom-css
+ root
app-root
.preload-logo
div
diff --git a/app/lib/window.ts b/app/lib/window.ts
index a9fb3028..bafbf40f 100644
--- a/app/lib/window.ts
+++ b/app/lib/window.ts
@@ -413,7 +413,9 @@ export class Window {
this.touchBarControl.selectedIndex = selectedIndex
})
- this.window.webContents.on('new-window', event => event.preventDefault())
+ this.window.webContents.setWindowOpenHandler(() => {
+ return { action: 'deny' }
+ })
ipcMain.on('window-set-disable-vibrancy-while-dragging', (_event, value) => {
this.disableVibrancyWhileDragging = value && this.configStore.hacks?.disableVibrancyWhileDragging
diff --git a/app/package.json b/app/package.json
index 3a916344..251e28c0 100644
--- a/app/package.json
+++ b/app/package.json
@@ -37,17 +37,19 @@
"optionalDependencies": {
"@tabby-gang/windows-blurbehind": "^3.0.0",
"macos-native-processlist": "^2.1.0",
+ "patch-package": "^6.5.0",
"serialport": "10.5.0",
"serialport-binding-webserialapi": "^1.0.3",
"windows-native-registry": "^3.2.1",
- "windows-process-tree": "^0.3.4",
- "patch-package": "^6.5.0"
+ "windows-process-tree": "^0.3.4"
},
"devDependencies": {
+ "@ngx-translate/core": "^14.0.0",
"@types/mz": "2.7.4",
- "@types/node": "18.7.23",
+ "@types/node": "18.11.19",
"atomically": "^1.7.0",
- "ngx-filesize": "^2.0.16"
+ "filesize": "^9",
+ "ngx-filesize": "^3.0.1"
},
"peerDependencies": {
"tabby-community-color-schemes": "*",
diff --git a/app/src/app.module.ts b/app/src/app.module.ts
index 3ad05991..231fa58f 100644
--- a/app/src/app.module.ts
+++ b/app/src/app.module.ts
@@ -1,14 +1,12 @@
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
-import { NgModule } from '@angular/core'
+import { ApplicationRef, NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
-import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
import { ToastrModule } from 'ngx-toastr'
export function getRootModule (plugins: any[]) {
const imports = [
BrowserModule,
...plugins,
- NgbModule,
ToastrModule.forRoot({
positionClass: 'toast-bottom-center',
toastClass: 'toast',
@@ -27,10 +25,12 @@ export function getRootModule (plugins: any[]) {
@NgModule({
imports,
- bootstrap,
}) class RootModule {
- ngDoBootstrap () {
+ ngDoBootstrap (appRef: ApplicationRef) {
(window as any)['requestAnimationFrame'] = window[window['Zone'].__symbol__('requestAnimationFrame')]
+
+ const componentDef = bootstrap[0]
+ appRef.bootstrap(componentDef)
}
}
diff --git a/app/src/entry.preload.ts b/app/src/entry.preload.ts
index 98093172..1e5e5f98 100644
--- a/app/src/entry.preload.ts
+++ b/app/src/entry.preload.ts
@@ -6,5 +6,4 @@ import '@fortawesome/fontawesome-free/css/solid.css'
import '@fortawesome/fontawesome-free/css/brands.css'
import '@fortawesome/fontawesome-free/css/regular.css'
import '@fortawesome/fontawesome-free/css/fontawesome.css'
-import 'ngx-toastr/toastr.css'
import './preload.scss'
diff --git a/app/src/entry.ts b/app/src/entry.ts
index 172f0a8f..108fe8e0 100644
--- a/app/src/entry.ts
+++ b/app/src/entry.ts
@@ -39,8 +39,10 @@ async function bootstrap (bootstrapData: BootstrapData, plugins: PluginInfo[], s
const pluginModules = await loadPlugins(plugins, (current, total) => {
(document.querySelector('.progress .bar') as HTMLElement).style.width = `${100 * current / total}%` // eslint-disable-line
})
+
+ window['pluginModules'] = pluginModules
+
const module = getRootModule(pluginModules)
- window['rootModule'] = module
const moduleRef = await platformBrowserDynamic([
{ provide: BOOTSTRAP_DATA, useValue: bootstrapData },
]).bootstrapModule(module)
diff --git a/app/src/global.scss b/app/src/global.scss
index c4c59854..bb0fbd97 100644
--- a/app/src/global.scss
+++ b/app/src/global.scss
@@ -13,10 +13,6 @@ body {
user-select: text;
}
-[ngbradiogroup] input[type="radio"] {
- display: none;
-}
-
a, button {
&.btn {
display: inline-flex;
@@ -53,6 +49,10 @@ a, button {
&>.form-control, &>.input-group {
width: 33%;
}
+
+ &>.form-check {
+ display: flex;
+ }
}
input[type=range] {
@@ -175,19 +175,19 @@ ngb-typeahead-window {
// Windows high contrast mode
@media screen and (forced-colors: active) {
- .custom-switch .custom-control-label::before {
+ .form-switch .form-check-label::before {
background: buttonface;
}
- .custom-switch .custom-control-label::after {
+ .form-switch .form-check-label::after {
background: buttontext;
}
- .custom-switch .custom-control-input:checked ~ .custom-control-label::before {
+ .form-switch .form-check-input:checked ~ .form-check-label::before {
background: activetext;
}
- .custom-switch .custom-control-input:checked ~ .custom-control-label::after {
+ .form-switch .form-check-input:checked ~ .form-check-label::after {
background: canvas;
}
diff --git a/app/src/root.component.ts b/app/src/root.component.ts
deleted file mode 100644
index 8d2bd18c..00000000
--- a/app/src/root.component.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { Component } from '@angular/core'
-
-@Component({
- template: '',
-})
-export class RootComponent { } // eslint-disable-line @typescript-eslint/no-extraneous-class
diff --git a/app/src/toastr.scss b/app/src/toastr.scss
index 172e60a5..c85259d3 100644
--- a/app/src/toastr.scss
+++ b/app/src/toastr.scss
@@ -8,6 +8,8 @@
box-shadow: 0 1px 0 rgba(0,0,0,.25);
padding: 7px 12px;
background-image: none;
+ display: block !important;
+ border: none !important;
width: auto;
flex-basis: auto;
border-radius: 0.5rem;
@@ -15,10 +17,12 @@
&.toast-error {
background-color: #BD362F;
+ color: white !important;
}
&.toast-info {
background-color: #555;
+ color: #eee !important;
}
}
}
diff --git a/app/webpack.main.config.js b/app/webpack.config.main.mjs
similarity index 82%
rename from app/webpack.main.config.js
rename to app/webpack.config.main.mjs
index d382026d..793f1eb6 100644
--- a/app/webpack.main.config.js
+++ b/app/webpack.config.main.mjs
@@ -1,8 +1,10 @@
-const path = require('path')
-const webpack = require('webpack')
-const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
+import * as path from 'path'
+import wp from 'webpack'
+import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
-module.exports = {
+const config = {
name: 'tabby-main',
target: 'electron-main',
entry: {
@@ -55,13 +57,15 @@ module.exports = {
'yargs/yargs': 'commonjs yargs/yargs',
},
plugins: [
- new webpack.optimize.ModuleConcatenationPlugin(),
- new webpack.DefinePlugin({
+ new wp.optimize.ModuleConcatenationPlugin(),
+ new wp.DefinePlugin({
'process.type': '"main"',
}),
],
}
if (process.env.BUNDLE_ANALYZER) {
- module.exports.plugins.push(new BundleAnalyzerPlugin())
+ config.plugins.push(new BundleAnalyzerPlugin())
}
+
+export default () => config
diff --git a/app/webpack.config.js b/app/webpack.config.mjs
similarity index 57%
rename from app/webpack.config.js
rename to app/webpack.config.mjs
index 3c9d6d0f..bcfa1306 100644
--- a/app/webpack.config.js
+++ b/app/webpack.config.mjs
@@ -1,7 +1,23 @@
-const path = require('path')
-const webpack = require('webpack')
+import * as fs from 'fs'
+import * as path from 'path'
+import wp from 'webpack'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
-module.exports = {
+import { AngularWebpackPlugin } from '@ngtools/webpack'
+import { createEs2015LinkerPlugin } from '@angular/compiler-cli/linker/babel'
+const linkerPlugin = createEs2015LinkerPlugin({
+ linkerJitMode: true,
+ fileSystem: {
+ resolve: path.resolve,
+ exists: fs.existsSync,
+ dirname: path.dirname,
+ relative: path.relative,
+ readFile: fs.readFileSync,
+ },
+})
+
+export default () => ({
name: 'tabby',
target: 'node',
entry: {
@@ -28,13 +44,22 @@ module.exports = {
},
module: {
rules: [
+ {
+ test: /\.(m?)js$/,
+ loader: 'babel-loader',
+ options: {
+ plugins: [linkerPlugin],
+ compact: false,
+ cacheDirectory: true,
+ },
+ resolve: {
+ fullySpecified: false,
+ },
+ },
{
test: /\.ts$/,
use: {
- loader: 'ts-loader',
- options: {
- configFile: path.resolve(__dirname, 'tsconfig.json'),
- },
+ loader: '@ngtools/webpack',
},
},
{ test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] },
@@ -56,9 +81,14 @@ module.exports = {
path: 'commonjs path',
},
plugins: [
- new webpack.optimize.ModuleConcatenationPlugin(),
- new webpack.DefinePlugin({
+ new wp.optimize.ModuleConcatenationPlugin(),
+ new wp.DefinePlugin({
'process.type': '"renderer"',
}),
+ new AngularWebpackPlugin({
+ tsconfig: path.resolve(__dirname, 'tsconfig.json'),
+ directTemplateLoading: false,
+ jitMode: true,
+ })
],
-}
+})
diff --git a/app/yarn.lock b/app/yarn.lock
index 9e9665d7..63b66d57 100644
--- a/app/yarn.lock
+++ b/app/yarn.lock
@@ -16,6 +16,13 @@
update-notifier "^2.2.0"
yargs "^8.0.2"
+"@ngx-translate/core@^14.0.0":
+ version "14.0.0"
+ resolved "https://registry.yarnpkg.com/@ngx-translate/core/-/core-14.0.0.tgz#af421d0e1a28376843f0fed375cd2fae7630a5ff"
+ integrity sha512-UevdwNCXMRCdJv//0kC8h2eSfmi02r29xeE8E9gJ1Al4D4jEJ7eiLPdjslTMc21oJNGguqqWeEVjf64SFtvw2w==
+ dependencies:
+ tslib "^2.3.0"
+
"@serialport/binding-abstract@^9.0.2":
version "9.2.3"
resolved "https://registry.yarnpkg.com/@serialport/binding-abstract/-/binding-abstract-9.2.3.tgz#e7dd273357b6a698af7ad58db6f57f62443a0acb"
@@ -140,11 +147,16 @@
dependencies:
"@types/node" "*"
-"@types/node@*", "@types/node@18.7.23":
+"@types/node@*":
version "18.7.23"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.23.tgz#75c580983846181ebe5f4abc40fe9dfb2d65665f"
integrity sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==
+"@types/node@18.11.19":
+ version "18.11.19"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.19.tgz#35e26df9ec441ab99d73e99e9aca82935eea216d"
+ integrity sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw==
+
"@types/node@^10.12.18":
version "10.17.60"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b"
@@ -1094,10 +1106,10 @@ figgy-pudding@^3.4.1, figgy-pudding@^3.5.1:
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
-"filesize@>= 4.0.0":
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.3.0.tgz#dff53cfb3f104c9e422f346d53be8dbcc971bf11"
- integrity sha512-ytx0ruGpDHKWVoiui6+BY/QMNngtDQ/pJaFwfBpQif0J63+E8DLdFyqS3NkKQn7vIruUEpoGD9JUJSg7Kp+I0g==
+filesize@^9:
+ version "9.0.11"
+ resolved "https://registry.yarnpkg.com/filesize/-/filesize-9.0.11.tgz#4ac3a42c084232dd9b2a1da0107f32d42fcfa5e4"
+ integrity sha512-gTAiTtI0STpKa5xesyTA9hA3LX4ga8sm2nWRcffEa1L/5vQwb4mj2MdzMkoHoGv4QzfDshQZuYscQSf8c4TKOA==
fill-range@^7.0.1:
version "7.0.1"
@@ -2261,13 +2273,12 @@ native-process-working-directory@^1.0.2:
dependencies:
node-addon-api "^3.1.0"
-ngx-filesize@^2.0.16:
- version "2.0.16"
- resolved "https://registry.yarnpkg.com/ngx-filesize/-/ngx-filesize-2.0.16.tgz#fdaba04170edb6cfcdf7be932783cf913b03f016"
- integrity sha512-VdaCirE7hSyfQh8ZEmhzNEhbddiTYUHF4V6OX+KyTmnQSVx4hp9kmzDX5YlkIlmClI6wI+LZmH9/q7XS3fsMPA==
+ngx-filesize@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ngx-filesize/-/ngx-filesize-3.0.1.tgz#620933ae181a1128905404e43b26abb99accba90"
+ integrity sha512-792I4fiG9EEPYjGib2+YTYAzfWIlccfy8uXNSXFFepuAntoS+eijLwnl0m7ajcQuNgbTtwEf9VmYIPN8mS3jqQ==
dependencies:
- filesize ">= 4.0.0"
- tslib "^2.0.0"
+ tslib "^2.3.0"
nice-try@^1.0.4:
version "1.0.5"
@@ -3717,11 +3728,16 @@ tough-cookie@~2.5.0:
psl "^1.1.28"
punycode "^2.1.1"
-tslib@^2.0.0, tslib@^2.1.0:
+tslib@^2.1.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
+tslib@^2.3.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
+ integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
+
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz"
diff --git a/build/mac/afterBuildHook.js b/build/mac/afterBuildHook.cjs
similarity index 90%
rename from build/mac/afterBuildHook.js
rename to build/mac/afterBuildHook.cjs
index ae04bd08..a306e784 100644
--- a/build/mac/afterBuildHook.js
+++ b/build/mac/afterBuildHook.cjs
@@ -1,5 +1,5 @@
const fs = require('fs')
-const signHook = require('./afterSignHook')
+const signHook = require('./afterSignHook.cjs')
module.exports = async function (params) {
// notarize the app on Mac OS only.
diff --git a/build/mac/afterSignHook.js b/build/mac/afterSignHook.cjs
similarity index 100%
rename from build/mac/afterSignHook.js
rename to build/mac/afterSignHook.cjs
diff --git a/electron-builder.yml b/electron-builder.yml
index 80fd9bb2..914147dc 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -3,8 +3,8 @@ appId: org.tabby
productName: Tabby
compression: normal
npmRebuild: false
-afterSign: "./build/mac/afterSignHook.js"
-afterAllArtifactBuild: "./build/mac/afterBuildHook.js"
+afterSign: "./build/mac/afterSignHook.cjs"
+afterAllArtifactBuild: "./build/mac/afterBuildHook.cjs"
files:
- '**/*'
- dist
diff --git a/locale/app.pot b/locale/app.pot
index 6c67b27f..f91b845b 100644
--- a/locale/app.pot
+++ b/locale/app.pot
@@ -11,7 +11,7 @@ msgstr ""
msgid "{name} copy"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:82
+#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:77
msgid "A second font family used to display characters missing in the main font"
msgstr ""
@@ -35,8 +35,8 @@ msgstr ""
msgid "Acrylic background"
msgstr ""
-#: locale/tmp-html/tabby-local/src/components/commandLineEditor.component.html:28
-#: locale/tmp-html/tabby-local/src/components/environmentEditor.component.html:15
+#: locale/tmp-html/tabby-local/src/components/commandLineEditor.component.html:24
+#: locale/tmp-html/tabby-local/src/components/environmentEditor.component.html:11
msgid "Add"
msgstr ""
@@ -52,13 +52,13 @@ msgstr ""
msgid "Add..."
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:89
+#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:84
msgid "Additional space between lines"
msgstr ""
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:22
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:65
-#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:52
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:61
+#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:50
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:124
msgid "Advanced"
msgstr ""
@@ -79,7 +79,7 @@ msgstr ""
msgid "Agent type"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:172
+#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:169
msgid "Allows opening .bat files in tabs, but breaks some shells"
msgstr ""
@@ -104,11 +104,11 @@ msgstr ""
msgid "Are you sure you want to close Tabby? You can disable this prompt in Settings -> Window."
msgstr ""
-#: tabby-core/src/services/config.service.ts:381
+#: tabby-core/src/services/config.service.ts:383
msgid "Are you sure?"
msgstr ""
-#: locale/tmp-html/tabby-local/src/components/commandLineEditor.component.html:20
+#: locale/tmp-html/tabby-local/src/components/commandLineEditor.component.html:18
msgid "Arguments"
msgstr ""
@@ -120,7 +120,7 @@ msgstr ""
msgid "Ask before closing the browser tab"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:143
+#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:141
msgid "Audible"
msgstr ""
@@ -128,7 +128,7 @@ msgstr ""
msgid "Authentication method"
msgstr ""
-#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:83
+#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:79
msgid "Author"
msgstr ""
@@ -136,7 +136,7 @@ msgstr ""
msgid "Auto"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:156
+#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:153
msgid "Auto-open a terminal on app start"
msgstr ""
@@ -150,7 +150,7 @@ msgstr ""
msgid "Automatic Updates"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:58
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:54
msgid "Automatically upload changes and check for updates every minute"
msgstr ""
@@ -172,7 +172,7 @@ msgstr ""
msgid "Beginning of the line"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:69
+#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:64
msgid "Blink cursor"
msgstr ""
@@ -188,8 +188,8 @@ msgstr ""
msgid "Bold font weight"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:138
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:82
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:125
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:73
msgid "Bottom"
msgstr ""
@@ -201,15 +201,15 @@ msgstr ""
msgid "Broadcast mode. Click anywhere to cancel."
msgstr ""
-#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:54
-#: tabby-settings/src/components/profilesSettingsTab.component.ts:175
+#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:50
+#: tabby-settings/src/components/profilesSettingsTab.component.ts:182
msgid "Built-in"
msgstr ""
#: locale/tmp-html/tabby-core/src/components/renameTabModal.component.html:7
-#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:55
+#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:53
#: locale/tmp-html/tabby-settings/src/components/hotkeyInputModal.component.html:14
-#: locale/tmp-html/tabby-settings/src/components/setVaultPassphraseModal.component.html:14
+#: locale/tmp-html/tabby-settings/src/components/setVaultPassphraseModal.component.html:12
#: locale/tmp-html/tabby-ssh/src/components/sftpCreateDirectoryModal.component.html:10
#: locale/tmp-html/tabby-ssh/src/components/sftpDeleteModal.component.html:7
#: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:32
@@ -219,7 +219,7 @@ msgstr ""
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:79
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:99
#: tabby-ssh/src/sftpContextMenu.ts:40
-#: tabby-terminal/src/api/baseTerminalTab.component.ts:478
+#: tabby-terminal/src/api/baseTerminalTab.component.ts:480
msgid "Cancel"
msgstr ""
@@ -294,20 +294,23 @@ msgstr ""
msgid "Close tabs to the right"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:193
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:175
msgid "Close the window after closing the last tab"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:35
+#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:33
#: tabby-core/src/tabContextMenu.ts:132
msgid "Color"
msgstr ""
-#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
#: tabby-terminal/src/settings.ts:29
msgid "Color scheme"
msgstr ""
+#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
+msgid "Colors"
+msgstr ""
+
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
msgstr ""
@@ -325,7 +328,7 @@ msgid "Commands"
msgstr ""
#: tabby-core/src/theme.ts:20
-msgid "Compact"
+msgid "Compact (legacy)"
msgstr ""
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
@@ -350,7 +353,7 @@ msgstr ""
msgid "Config uploaded"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:35
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:31
msgid "Configs"
msgstr ""
@@ -358,7 +361,7 @@ msgstr ""
msgid "Connect through a proxy server"
msgstr ""
-#: tabby-core/src/index.ts:227
+#: tabby-core/src/index.ts:212
#: tabby-core/src/services/profiles.service.ts:178
msgid "Connect to \"%s\"..."
msgstr ""
@@ -369,7 +372,7 @@ msgstr ""
#: locale/tmp-html/tabby-ssh/src/components/sftpPanel.component.html:19
#: tabby-serial/src/components/serialTab.component.ts:66
-#: tabby-ssh/src/components/sshTab.component.ts:140
+#: tabby-ssh/src/components/sshTab.component.ts:143
#: tabby-telnet/src/components/telnetTab.component.ts:72
msgid "Connecting"
msgstr ""
@@ -378,11 +381,11 @@ msgstr ""
msgid "Connection"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:30
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:26
msgid "Connection failed: {error}"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:42
+#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:40
msgid "Connection name will be used instead"
msgstr ""
@@ -390,10 +393,10 @@ msgstr ""
msgid "Context menu"
msgstr ""
-#: tabby-terminal/src/api/baseTerminalTab.component.ts:223
-#: tabby-terminal/src/api/baseTerminalTab.component.ts:231
-#: tabby-terminal/src/api/baseTerminalTab.component.ts:547
-#: tabby-terminal/src/api/baseTerminalTab.component.ts:768
+#: tabby-terminal/src/api/baseTerminalTab.component.ts:225
+#: tabby-terminal/src/api/baseTerminalTab.component.ts:233
+#: tabby-terminal/src/api/baseTerminalTab.component.ts:549
+#: tabby-terminal/src/api/baseTerminalTab.component.ts:770
#: tabby-terminal/src/tabContextMenu.ts:30
msgid "Copied"
msgstr ""
@@ -423,7 +426,7 @@ msgstr ""
msgid "Copy with formatting"
msgstr ""
-#: tabby-core/src/services/config.service.ts:366
+#: tabby-core/src/services/config.service.ts:368
msgid "Could not decrypt config"
msgstr ""
@@ -436,7 +439,7 @@ msgstr ""
msgid "Create directory"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:93
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:83
msgid "Current"
msgstr ""
@@ -452,15 +455,15 @@ msgstr ""
msgid "Current process: {name}"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:53
+#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:51
msgid "Cursor shape"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:49
+#: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:47
msgid "Custom"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:95
+#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:90
msgid "Custom CSS"
msgstr ""
@@ -484,7 +487,7 @@ msgstr ""
msgid "Default profile for new tabs"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:80
+#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:78
msgid "Default profile settings"
msgstr ""
@@ -496,13 +499,13 @@ msgstr ""
msgid "Defaults for {type}"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:48
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:44
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:28
#: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:9
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:116
#: tabby-settings/src/components/profilesSettingsTab.component.ts:139
-#: tabby-settings/src/components/profilesSettingsTab.component.ts:204
-#: tabby-settings/src/components/profilesSettingsTab.component.ts:217
+#: tabby-settings/src/components/profilesSettingsTab.component.ts:211
+#: tabby-settings/src/components/profilesSettingsTab.component.ts:224
#: tabby-settings/src/components/vaultSettingsTab.component.ts:49
#: tabby-ssh/src/sftpContextMenu.ts:39
#: tabby-ssh/src/sftpContextMenu.ts:47
@@ -512,7 +515,7 @@ msgid "Delete"
msgstr ""
#: tabby-settings/src/components/profilesSettingsTab.component.ts:137
-#: tabby-settings/src/components/profilesSettingsTab.component.ts:202
+#: tabby-settings/src/components/profilesSettingsTab.component.ts:209
#: tabby-terminal/src/components/colorSchemeSettingsTab.component.ts:87
msgid "Delete \"{name}\"?"
msgstr ""
@@ -537,7 +540,7 @@ msgstr ""
msgid "Delete the config on the remote side?"
msgstr ""
-#: tabby-settings/src/components/profilesSettingsTab.component.ts:214
+#: tabby-settings/src/components/profilesSettingsTab.component.ts:221
msgid "Delete the group's profiles?"
msgstr ""
@@ -561,33 +564,33 @@ msgstr ""
msgid "Direct"
msgstr ""
-#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:61
+#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:57
msgid "Disable"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:41
+#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:39
msgid "Disable dynamic tab title"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:229
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:211
msgid "Disable fluent background while dragging"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:215
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:197
msgid "Disable GPU acceleration"
msgstr ""
-#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:54
+#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:50
msgid "Disabled"
msgstr ""
#: locale/tmp-html/tabby-ssh/src/components/hostKeyPromptModal.component.html:26
-#: tabby-ssh/src/components/sshTab.component.ts:246
+#: tabby-ssh/src/components/sshTab.component.ts:249
#: tabby-telnet/src/components/telnetTab.component.ts:115
msgid "Disconnect"
msgstr ""
-#: tabby-ssh/src/components/sshTab.component.ts:244
+#: tabby-ssh/src/components/sshTab.component.ts:247
#: tabby-telnet/src/components/telnetTab.component.ts:113
msgid "Disconnect from {host}?"
msgstr ""
@@ -596,7 +599,7 @@ msgstr ""
msgid "Display images via Sixel escape sequences"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:88
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:78
msgid "Display on"
msgstr ""
@@ -604,7 +607,7 @@ msgstr ""
msgid "Do not abort"
msgstr ""
-#: tabby-ssh/src/components/sshTab.component.ts:247
+#: tabby-ssh/src/components/sshTab.component.ts:250
#: tabby-telnet/src/components/telnetTab.component.ts:116
msgid "Do not close"
msgstr ""
@@ -614,23 +617,23 @@ msgstr ""
msgid "Do not remember"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:102
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:90
msgid "Dock always on top"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:65
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:60
msgid "Dock the terminal"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:109
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:97
msgid "Docked terminal size"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:116
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:104
msgid "Docked terminal space"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:62
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:57
msgid "Docking"
msgstr ""
@@ -642,7 +645,7 @@ msgstr ""
msgid "Down"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:47
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:43
msgid "Download"
msgstr ""
@@ -671,7 +674,7 @@ msgstr ""
msgid "Edit locally"
msgstr ""
-#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:62
+#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:58
msgid "Enable"
msgstr ""
@@ -688,7 +691,7 @@ msgstr ""
msgid "Enable automatic installation of updates when they become available."
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:222
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:204
msgid "Enable fluent background option"
msgstr ""
@@ -712,12 +715,12 @@ msgstr ""
msgid "End of the line"
msgstr ""
-#: locale/tmp-html/tabby-local/src/components/localProfileSettings.component.html:19
+#: locale/tmp-html/tabby-local/src/components/localProfileSettings.component.html:17
msgid "Environment"
msgstr ""
-#: tabby-core/src/services/config.service.ts:370
-#: tabby-core/src/services/config.service.ts:384
+#: tabby-core/src/services/config.service.ts:372
+#: tabby-core/src/services/config.service.ts:386
msgid "Erase config"
msgstr ""
@@ -729,15 +732,15 @@ msgstr ""
msgid "Error in {plugin}:"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/loginScriptsSettings.component.html:9
+#: locale/tmp-html/tabby-terminal/src/components/loginScriptsSettings.component.html:10
msgid "Exact match"
msgstr ""
-#: locale/tmp-html/tabby-local/src/components/environmentEditor.component.html:19
+#: locale/tmp-html/tabby-local/src/components/environmentEditor.component.html:15
msgid "Example:"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:223
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:205
msgid "Experimental Windows 10 background style known to cause issues"
msgstr ""
@@ -745,7 +748,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:81
+#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:76
msgid "Fallback font"
msgstr ""
@@ -761,11 +764,11 @@ msgstr ""
msgid "Filter"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:157
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:140
msgid "Fixed"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:230
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:212
msgid "Fluent background sometimes causes drag lag"
msgstr ""
@@ -785,7 +788,7 @@ msgstr ""
msgid "Focus all tabs at once (broadcast)"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:207
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:189
msgid "Focus follows mouse"
msgstr ""
@@ -825,11 +828,15 @@ msgstr ""
msgid "Focus the pane on the right"
msgstr ""
+#: tabby-core/src/theme.ts:42
+msgid "Follow the color scheme"
+msgstr ""
+
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:201
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:183
msgid "For keyboard shortcuts"
msgstr ""
@@ -853,7 +860,7 @@ msgstr ""
msgid "Forget"
msgstr ""
-#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:58
+#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:45
msgid "Forward port"
msgstr ""
@@ -861,7 +868,7 @@ msgstr ""
msgid "Forwarded ports"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:47
+#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:46
msgid "From color scheme"
msgstr ""
@@ -873,7 +880,7 @@ msgstr ""
msgid "Frontend"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:58
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:54
msgid "Full"
msgstr ""
@@ -887,11 +894,11 @@ msgstr ""
msgid "Generate a pre-filled GitHub issue"
msgstr ""
-#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:27
+#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:25
msgid "Get"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:20
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:18
msgid "Get it from the Tabby Web settings window"
msgstr ""
@@ -911,7 +918,7 @@ msgstr ""
msgid "Group"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:212
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:194
msgid "Hacks"
msgstr ""
@@ -928,27 +935,27 @@ msgstr ""
msgid "Hexadecimal"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:187
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:169
msgid "Hide tab close button"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:169
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:151
msgid "Hide tab index"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:181
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:163
msgid "Hide tab options button"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:123
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:111
msgid "Hide window on focus loss"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:124
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:112
msgid "Hides the docked terminal when you click away."
msgstr ""
-#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:28
+#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:26
msgid "Homepage"
msgstr ""
@@ -970,7 +977,7 @@ msgstr ""
msgid "Hotkeys"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:71
+#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:69
msgid "How Tabby presents itself through environment vars"
msgstr ""
@@ -990,11 +997,11 @@ msgstr ""
msgid "Icon"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:154
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:138
msgid "id.tab-width.dynamic"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:64
+#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:62
msgid "If disabled, only custom profiles will show up in the profile selector"
msgstr ""
@@ -1022,7 +1029,7 @@ msgstr ""
msgid "Input newlines"
msgstr ""
-#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:41
+#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:39
msgid "Installed"
msgstr ""
@@ -1056,7 +1063,7 @@ msgid "Jump to previous word"
msgstr ""
#: tabby-settings/src/components/profilesSettingsTab.component.ts:140
-#: tabby-settings/src/components/profilesSettingsTab.component.ts:205
+#: tabby-settings/src/components/profilesSettingsTab.component.ts:212
#: tabby-settings/src/components/vaultSettingsTab.component.ts:50
#: tabby-terminal/src/components/colorSchemeSettingsTab.component.ts:90
#: tabby-terminal/src/components/loginScriptsSettings.component.ts:33
@@ -1068,7 +1075,7 @@ msgstr ""
msgid "Keep Alive Interval (Milliseconds)"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:103
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:91
msgid "Keep docked terminal always on top"
msgstr ""
@@ -1114,8 +1121,8 @@ msgstr ""
msgid "Learn how to allow Tabby to detect remote shell's working directory."
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:141
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:76
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:127
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:69
#: tabby-core/src/tabContextMenu.ts:80
msgid "Left"
msgstr ""
@@ -1132,7 +1139,7 @@ msgstr ""
msgid "Line editor, input is sent after you press Enter"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:88
+#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:83
msgid "Line padding"
msgstr ""
@@ -1140,11 +1147,11 @@ msgstr ""
msgid "Loading"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:38
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:34
msgid "Loading configs..."
msgstr ""
-#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:49
+#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:39
#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:5
msgid "Local"
msgstr ""
@@ -1179,11 +1186,11 @@ msgstr ""
msgid "Maximize the active pane"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:75
+#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:70
msgid "Minimum contrast ratio"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:43
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:39
msgid "Modified on {date}"
msgstr ""
@@ -1199,11 +1206,11 @@ msgstr ""
msgid "Move tab to the right"
msgstr ""
-#: tabby-settings/src/components/profilesSettingsTab.component.ts:216
+#: tabby-settings/src/components/profilesSettingsTab.component.ts:223
msgid "Move to \"Ungrouped\""
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:208
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:190
msgid "Moving the mouse over an inactive pane will cause it to activate"
msgstr ""
@@ -1220,7 +1227,7 @@ msgstr ""
msgid "Name for the new directory"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:52
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:50
msgid "Native"
msgstr ""
@@ -1232,16 +1239,16 @@ msgstr ""
msgid "New config on {platform}"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/loginScriptsSettings.component.html:15
+#: locale/tmp-html/tabby-terminal/src/components/loginScriptsSettings.component.html:16
msgid "New item"
msgstr ""
-#: tabby-settings/src/components/profilesSettingsTab.component.ts:186
+#: tabby-settings/src/components/profilesSettingsTab.component.ts:193
#: tabby-settings/src/components/vaultSettingsTab.component.ts:118
msgid "New name"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:22
+#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:20
msgid "New profile"
msgstr ""
@@ -1316,13 +1323,13 @@ msgstr ""
msgid "Number of lines kept in the buffer"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:70
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:65
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:137
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:60
msgid "Off"
msgstr ""
-#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:85
+#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:81
msgid "Official"
msgstr ""
@@ -1330,7 +1337,7 @@ msgstr ""
msgid "On GitHub Discussions"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:41
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:39
msgid "Opacity"
msgstr ""
@@ -1350,7 +1357,7 @@ msgstr ""
msgid "Open SFTP panel"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/loginScriptsSettings.component.html:9
+#: locale/tmp-html/tabby-terminal/src/components/loginScriptsSettings.component.html:10
msgid "Optional"
msgstr ""
@@ -1407,11 +1414,11 @@ msgstr ""
msgid "Overwrite the local config and start syncing?"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:200
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:182
msgid "Pane resize step"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:197
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:179
msgid "Panes"
msgstr ""
@@ -1419,7 +1426,7 @@ msgstr ""
msgid "Parity"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:68
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:64
msgid "Partial config sync is not possible when the config is encrypted via Vault."
msgstr ""
@@ -1433,7 +1440,7 @@ msgid "Password"
msgstr ""
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:62
-#: tabby-terminal/src/api/baseTerminalTab.component.ts:477
+#: tabby-terminal/src/api/baseTerminalTab.component.ts:479
#: tabby-terminal/src/tabContextMenu.ts:35
msgid "Paste"
msgstr ""
@@ -1446,7 +1453,7 @@ msgstr ""
msgid "Paste if no selection, else copy"
msgstr ""
-#: tabby-terminal/src/api/baseTerminalTab.component.ts:484
+#: tabby-terminal/src/api/baseTerminalTab.component.ts:486
msgid "Paste multiple lines?"
msgstr ""
@@ -1485,7 +1492,7 @@ msgid "Ports"
msgstr ""
#: tabby-serial/src/components/serialTab.component.ts:86
-#: tabby-ssh/src/components/sshTab.component.ts:169
+#: tabby-ssh/src/components/sshTab.component.ts:172
#: tabby-telnet/src/components/telnetTab.component.ts:53
msgid "Press any key to reconnect"
msgstr ""
@@ -1529,7 +1536,7 @@ msgstr ""
msgid "Profiles & connections"
msgstr ""
-#: locale/tmp-html/tabby-local/src/components/commandLineEditor.component.html:13
+#: locale/tmp-html/tabby-local/src/components/commandLineEditor.component.html:12
msgid "Program"
msgstr ""
@@ -1545,13 +1552,13 @@ msgstr ""
msgid "Puts all of Tabby's configuration into the vault"
msgstr ""
-#: tabby-core/src/index.ts:226
+#: tabby-core/src/index.ts:211
#: tabby-core/src/services/profiles.service.ts:177
msgid "Quick connect"
msgstr ""
-#: tabby-core/src/services/config.service.ts:371
-#: tabby-core/src/services/config.service.ts:385
+#: tabby-core/src/services/config.service.ts:373
+#: tabby-core/src/services/config.service.ts:387
msgid "Quit"
msgstr ""
@@ -1579,7 +1586,7 @@ msgstr ""
msgid "Red"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/loginScriptsSettings.component.html:9
+#: locale/tmp-html/tabby-terminal/src/components/loginScriptsSettings.component.html:10
msgid "Regex"
msgstr ""
@@ -1591,8 +1598,8 @@ msgstr ""
msgid "Remember for {time}"
msgstr ""
+#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:41
#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:5
-#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:52
msgid "Remote"
msgstr ""
@@ -1618,7 +1625,7 @@ msgstr ""
msgid "Reopen last tab"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:46
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:42
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:26
msgid "Replace"
msgstr ""
@@ -1656,7 +1663,7 @@ msgstr ""
msgid "Restart the app to apply changes"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:162
+#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:159
msgid "Restore terminal tabs on app start"
msgstr ""
@@ -1664,8 +1671,8 @@ msgstr ""
msgid "Reuse session for multiple tabs"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:144
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:79
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:129
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:71
#: tabby-core/src/tabContextMenu.ts:78
msgid "Right"
msgstr ""
@@ -1679,7 +1686,7 @@ msgid "Run as administrator"
msgstr ""
#: locale/tmp-html/tabby-core/src/components/renameTabModal.component.html:6
-#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:54
+#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:52
#: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:30
msgid "Save"
msgstr ""
@@ -1753,7 +1760,7 @@ msgstr ""
msgid "Search plugins"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:19
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:17
msgid "Secret sync token"
msgstr ""
@@ -1774,7 +1781,7 @@ msgstr ""
msgid "Select file storage"
msgstr ""
-#: tabby-core/src/index.ts:238
+#: tabby-core/src/index.ts:223
msgid "Select profile"
msgstr ""
@@ -1809,7 +1816,7 @@ msgstr ""
msgid "Set master passphrase"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/setVaultPassphraseModal.component.html:13
+#: locale/tmp-html/tabby-settings/src/components/setVaultPassphraseModal.component.html:11
msgid "Set passphrase"
msgstr ""
@@ -1817,11 +1824,11 @@ msgstr ""
msgid "Set password"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:171
+#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:168
msgid "Set Tabby as %COMSPEC%"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:57
+#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:55
msgid "Set to 0 to disable recent profiles"
msgstr ""
@@ -1830,7 +1837,7 @@ msgid "Sets the SSH agent's named pipe path."
msgstr ""
#: tabby-settings/src/buttonProvider.ts:28
-#: tabby-settings/src/components/settingsTab.component.ts:58
+#: tabby-settings/src/components/settingsTab.component.ts:57
msgid "Settings"
msgstr ""
@@ -1838,7 +1845,7 @@ msgstr ""
msgid "Shell"
msgstr ""
-#: tabby-terminal/src/api/baseTerminalTab.component.ts:549
+#: tabby-terminal/src/api/baseTerminalTab.component.ts:551
msgid "Shell does not support current path detection"
msgstr ""
@@ -1854,7 +1861,7 @@ msgstr ""
msgid "Show a confirmation box when pasting multiple lines"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:63
+#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:61
msgid "Show built-in profiles in selector"
msgstr ""
@@ -1870,7 +1877,7 @@ msgstr ""
msgid "Show defaults"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:149
+#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:146
msgid "Show Mixer"
msgstr ""
@@ -1878,7 +1885,7 @@ msgstr ""
msgid "Show pane labels (for rearranging)"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:175
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:157
msgid "Show profile icon on tab"
msgstr ""
@@ -1886,7 +1893,7 @@ msgstr ""
msgid "Show profile selector"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:56
+#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:54
msgid "Show recent profiles in selector"
msgstr ""
@@ -1898,7 +1905,7 @@ msgstr ""
msgid "Show Serial connections"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:163
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:145
msgid "Show tabs in fullscreen mode"
msgstr ""
@@ -1922,12 +1929,12 @@ msgstr ""
msgid "Slow feed"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:66
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:89
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:61
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:79
msgid "Snaps the window to a side of the screen"
msgstr ""
-#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:26
+#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:22
#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:9
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:20
msgid "SOCKS proxy"
@@ -1992,10 +1999,10 @@ msgid "SSH password for {user}@{host}:{port}"
msgstr ""
#: tabby-core/src/theme.ts:8
-msgid "Standard"
+msgid "Standard (legacy)"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:153
+#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
msgstr ""
@@ -2011,7 +2018,7 @@ msgstr ""
msgid "Subscribe to updates"
msgstr ""
-#: locale/tmp-html/tabby-local/src/components/environmentEditor.component.html:17
+#: locale/tmp-html/tabby-local/src/components/environmentEditor.component.html:13
msgid "Substitutions allowed."
msgstr ""
@@ -2031,7 +2038,7 @@ msgstr ""
msgid "Sync"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:57
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:53
msgid "Sync automatically"
msgstr ""
@@ -2039,15 +2046,15 @@ msgstr ""
msgid "Sync host"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:72
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:68
msgid "Sync hotkeys"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:84
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:80
msgid "Sync Vault"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:78
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:74
msgid "Sync window settings"
msgstr ""
@@ -2086,15 +2093,15 @@ msgstr ""
msgid "Tabby news and updates on Twitter"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:128
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:116
msgid "Tabs"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:131
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:119
msgid "Tabs location"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:150
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:134
msgid "Tabs width"
msgstr ""
@@ -2102,7 +2109,7 @@ msgstr ""
msgid "Telnet session"
msgstr ""
-#: tabby-terminal/src/api/baseTerminalTab.component.ts:198
+#: tabby-terminal/src/api/baseTerminalTab.component.ts:200
#: tabby-terminal/src/settings.ts:43
msgid "Terminal"
msgstr ""
@@ -2115,7 +2122,7 @@ msgstr ""
msgid "Terminal bell"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:70
+#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:68
msgid "Terminal identification"
msgstr ""
@@ -2135,15 +2142,15 @@ msgstr ""
msgid "There is a saved password for this connection"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:81
+#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:79
msgid "These apply to all profiles of a given type"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:55
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:52
msgid "Thin"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:216
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:198
msgid "Tick this if you're experiencing aliasing, ghosting or other visual issues"
msgstr ""
@@ -2163,8 +2170,8 @@ msgstr ""
msgid "Toggles the Tabby window visibility"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:135
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:73
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:123
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:67
msgid "Top"
msgstr ""
@@ -2172,7 +2179,7 @@ msgstr ""
msgid "Trim whitespace and newlines"
msgstr ""
-#: tabby-core/src/services/config.service.ts:369
+#: tabby-core/src/services/config.service.ts:371
msgid "Try again"
msgstr ""
@@ -2188,11 +2195,11 @@ msgstr ""
msgid "Ungrouped"
msgstr ""
-#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:63
+#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:59
msgid "Uninstall"
msgstr ""
-#: tabby-settings/src/components/profilesSettingsTab.component.ts:250
+#: tabby-settings/src/components/profilesSettingsTab.component.ts:257
msgid "Unknown"
msgstr ""
@@ -2213,16 +2220,16 @@ msgstr ""
msgid "Update"
msgstr ""
-#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:56
+#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:52
msgid "Upgrade to {version}"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:46
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:42
#: locale/tmp-html/tabby-ssh/src/components/sftpPanel.component.html:10
msgid "Upload"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:50
+#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:46
msgid "Upload as a new config"
msgstr ""
@@ -2280,7 +2287,7 @@ msgstr ""
msgid "Verify host keys when connecting"
msgstr ""
-#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:79
+#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:75
msgid "Version"
msgstr ""
@@ -2292,7 +2299,7 @@ msgstr ""
msgid "Vibrancy"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:140
+#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:139
msgid "Visual"
msgstr ""
@@ -2328,7 +2335,7 @@ msgstr ""
msgid "When WinSCP is detected, you can launch an SCP session from the context menu."
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:48
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:46
msgid "Whether a custom window or an OS native window should be used"
msgstr ""
@@ -2337,19 +2344,19 @@ msgstr ""
msgid "Window"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:117
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:105
msgid "Window dimension along the edge"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:110
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:98
msgid "Window dimension away from the edge"
msgstr ""
-#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:47
+#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:45
msgid "Window frame"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:168
+#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:165
msgid "Windows"
msgstr ""
@@ -2374,7 +2381,7 @@ msgstr ""
msgid "Working directory detection"
msgstr ""
-#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:148
+#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:145
msgid "WSL terminal bell can only be muted via Volume Mixer"
msgstr ""
@@ -2406,8 +2413,8 @@ msgstr ""
msgid "Zoom out"
msgstr ""
+#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:43
#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:5
-#: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:55
msgctxt "[Dynamic] port forwarding"
msgid "id.port-forwarding.dynamic"
msgstr ""
diff --git a/package.json b/package.json
index d63f498f..1c147657 100644
--- a/package.json
+++ b/package.json
@@ -1,17 +1,19 @@
{
"devDependencies": {
- "@angular/animations": "^12.0.0",
- "@angular/cdk": "^12.2.9",
- "@angular/common": "^12.0.0",
- "@angular/compiler": "^12.0.0",
- "@angular/compiler-cli": "^12.0.0",
- "@angular/core": "^12.0.0",
- "@angular/forms": "^12.0.0",
- "@angular/platform-browser": "^12.0.0",
- "@angular/platform-browser-dynamic": "^12.0.0",
+ "@angular/animations": "^15.1.3",
+ "@angular/cdk": "^15.1.3",
+ "@angular/common": "^15.1.3",
+ "@angular/compiler": "^15.1.3",
+ "@angular/compiler-cli": "^15.1.3",
+ "@angular/core": "^15.1.3",
+ "@angular/forms": "^15.1.3",
+ "@angular/platform-browser": "^15.1.3",
+ "@angular/platform-browser-dynamic": "^15.1.3",
"@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
"@fortawesome/fontawesome-free": "^6.2.0",
- "@ng-bootstrap/ng-bootstrap": "^10.0.0",
+ "@ng-bootstrap/ng-bootstrap": "^14.0.1",
+ "@ngtools/webpack": "^15.1.4",
+ "@popperjs/core": "^2.11.6",
"@sentry/cli": "^1.74.3",
"@sentry/electron": "^2.5.4",
"@tabby-gang/to-string-loader": "^1.1.7-beta.2",
@@ -21,21 +23,21 @@
"@types/fs-extra": "^9.0.13",
"@types/js-yaml": "^4.0.5",
"@types/node": "16.0.1",
- "@types/sortablejs": "^1.15.0",
"@types/webpack-env": "^1.18.0",
"@typescript-eslint/eslint-plugin": "^5.45.0",
"@typescript-eslint/parser": "^5.45.0",
"apply-loader": "2.0.0",
"axios": "^0.27.2",
+ "babel-loader": "^9.1.2",
"browserify-sign": "^4.2.1",
"clone-deep": "^4.0.1",
"compare-versions": "^5",
"core-js": "^3.21.1",
"core-js-pure": "^3.21.1",
"cross-env": "7.0.3",
- "css-loader": "^6.7.1",
+ "css-loader": "^6.7.3",
"deep-equal": "2.0.5",
- "electron": "21.3.1",
+ "electron": "22.3.1",
"electron-builder": "^24.0.0-alpha.1",
"electron-download": "^4.1.1",
"electron-installer-snap": "^5.1.0",
@@ -51,10 +53,8 @@
"json-loader": "^0.5.7",
"lru-cache": "^6.0.0",
"macos-release": "^3.1.0",
- "ngx-sortablejs": "^11.1.0",
- "ngx-toastr": "^14.0.0",
- "node-abi": "^3.25.0",
- "node-sass": "^7.0.3",
+ "ngx-toastr": "^16.0.2",
+ "node-abi": "^3.33.0",
"npmlog": "6.0.2",
"npx": "^10.2.2",
"patch-package": "^6.4.7",
@@ -66,49 +66,52 @@
"pug-loader": "^2.4.0",
"pug-static-loader": "2.0.0",
"raw-loader": "4.0.2",
- "sass-loader": "^12.6.0",
+ "rxjs": "^7.5.7",
+ "sass": "^1.58.0",
+ "sass-loader": "^13.2.0",
"shell-quote": "^1.7.4",
"shelljs": "0.8.5",
"slugify": "^1.6.5",
- "sortablejs": "^1.15.0",
"source-code-pro": "^2.38.0",
- "source-map-loader": "^3.0.1",
+ "source-map-loader": "^4.0.1",
"source-sans-pro": "3.6.0",
"ssh2": "Eugeny/ssh2#9de907d62907d6d45debdcc0ed8dda5b7b19dc7c",
"style-loader": "^3.3.1",
"svg-inline-loader": "^0.8.2",
"thenby": "^1.3.4",
"ts-loader": "^9.4.2",
- "tslib": "^2.4.0",
+ "tsimportlib": "^0.0.3",
+ "tslib": "^2.5.0",
"typedoc": "^0.22.18",
- "typescript": "^4.3.5",
+ "typescript": "^4.9.5",
"utils-decorators": "^1.10.4",
- "val-loader": "4.0.0",
+ "val-loader": "5.0.1",
"webpack": "^5.75.0",
"webpack-bundle-analyzer": "^4.7.0",
- "webpack-cli": "^5.0.0",
- "yaml-loader": "0.6.0",
+ "webpack-cli": "^5.0.1",
+ "yaml-loader": "0.8.0",
"zone.js": "^0.11.5"
},
"resolutions": {
"*/pug": "^3",
"lzma-native": "^8.0.0",
- "*/node-abi": "^3.25.0",
+ "*/node-abi": "^3.33.0",
"**/graceful-fs": "^4.2.4"
},
"scripts": {
- "build": "npm run build:typings && node scripts/build-modules.js",
- "build:typings": "node scripts/build-typings.js",
+ "build": "npm run build:typings && node scripts/build-modules.mjs",
+ "build:typings": "node scripts/build-typings.mjs",
"watch": "cross-env TABBY_DEV=1 webpack --progress --color --watch",
"start": "cross-env TABBY_DEV=1 electron app -d --inspect",
"start:prod": "electron app --debug",
"prod": "cross-env TABBY_DEV=1 electron app",
- "docs": "node scripts/build-docs.js",
+ "docs": "node scripts/build-docs.mjs",
"lint": "eslint --ext ts */src */lib",
- "postinstall": "patch-package && node ./scripts/install-deps.js && node ./scripts/build-native.js",
+ "postinstall": "patch-package && node ./scripts/install-deps.mjs && node ./scripts/build-native.mjs",
"i18n:pull": "crowdin pull --skip-untranslated-strings",
- "i18n:extract": "node scripts/i18n-extract.js",
+ "i18n:extract": "node scripts/i18n-extract.mjs",
"i18n:push": "crowdin push"
},
+ "type": "module",
"private": true
}
diff --git a/scripts/build-docs.js b/scripts/build-docs.mjs
similarity index 71%
rename from scripts/build-docs.js
rename to scripts/build-docs.mjs
index 4d5519d6..30c60d78 100755
--- a/scripts/build-docs.js
+++ b/scripts/build-docs.mjs
@@ -1,7 +1,7 @@
#!/usr/bin/env node
-const sh = require('shelljs')
-const vars = require('./vars')
-const log = require('npmlog')
+import sh from 'shelljs'
+import * as vars from './vars.mjs'
+import log from 'npmlog'
vars.packagesWithDocs.forEach(([dest, src]) => {
log.info('docs', src)
diff --git a/scripts/build-linux.js b/scripts/build-linux.mjs
similarity index 91%
rename from scripts/build-linux.js
rename to scripts/build-linux.mjs
index f0196930..6d303575 100755
--- a/scripts/build-linux.js
+++ b/scripts/build-linux.mjs
@@ -1,7 +1,7 @@
#!/usr/bin/env node
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
-const builder = require('electron-builder').build
-const vars = require('./vars')
+import { build as builder } from 'electron-builder'
+import * as vars from './vars.mjs'
const isTag = (process.env.GITHUB_REF || '').startsWith('refs/tags/')
diff --git a/scripts/build-macos.js b/scripts/build-macos.mjs
similarity index 92%
rename from scripts/build-macos.js
rename to scripts/build-macos.mjs
index eaaecbfc..1e80a78c 100755
--- a/scripts/build-macos.js
+++ b/scripts/build-macos.mjs
@@ -1,7 +1,7 @@
#!/usr/bin/env node
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
-const builder = require('electron-builder').build
-const vars = require('./vars')
+import { build as builder } from 'electron-builder'
+import * as vars from './vars.mjs'
const isTag = (process.env.GITHUB_REF || '').startsWith('refs/tags/')
diff --git a/scripts/build-modules.js b/scripts/build-modules.js
deleted file mode 100755
index 3307837b..00000000
--- a/scripts/build-modules.js
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env node
-const vars = require('./vars')
-const log = require('npmlog')
-const webpack = require('webpack')
-const { promisify } = require('util')
-
-const configs = [
- '../app/webpack.main.config.js',
- '../app/webpack.config.js',
- ...vars.allPackages.map(x => `../${x}/webpack.config.js`),
-]
-
-;(async () => {
- for (const c of configs) {
- log.info('build', c)
- const stats = await promisify(webpack)(require(c))
- console.log(stats.toString({ colors: true }))
- if (stats.hasErrors()) {
- process.exit(1)
- }
- }
-})()
diff --git a/scripts/build-modules.mjs b/scripts/build-modules.mjs
new file mode 100755
index 00000000..2bbb83c0
--- /dev/null
+++ b/scripts/build-modules.mjs
@@ -0,0 +1,22 @@
+#!/usr/bin/env node
+import * as vars from './vars.mjs'
+import log from 'npmlog'
+import webpack from 'webpack'
+import { promisify } from 'node:util'
+
+const configs = [
+ '../app/webpack.config.main.mjs',
+ '../app/webpack.config.mjs',
+ ...vars.allPackages.map(x => `../${x}/webpack.config.mjs`),
+]
+
+;(async () => {
+ for (const c of configs) {
+ log.info('build', c)
+ const stats = await promisify(webpack)((await import(c)).default())
+ console.log(stats.toString({ colors: true }))
+ if (stats.hasErrors()) {
+ process.exit(1)
+ }
+ }
+})()
diff --git a/scripts/build-native.js b/scripts/build-native.mjs
similarity index 81%
rename from scripts/build-native.js
rename to scripts/build-native.mjs
index 2745a34e..054a1ee0 100755
--- a/scripts/build-native.js
+++ b/scripts/build-native.mjs
@@ -1,7 +1,11 @@
#!/usr/bin/env node
-const rebuild = require('electron-rebuild').default
-const path = require('path')
-const vars = require('./vars')
+import { rebuild } from 'electron-rebuild'
+import * as path from 'path'
+import * as vars from './vars.mjs'
+
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
if (process.platform === 'win32' || process.platform === 'linux') {
process.env.ARCH = ((process.env.ARCH || process.arch) === 'arm') ? 'armv7l' : process.env.ARCH || process.arch
diff --git a/scripts/build-typings.js b/scripts/build-typings.mjs
similarity index 66%
rename from scripts/build-typings.js
rename to scripts/build-typings.mjs
index 7a28a550..f8b81e7e 100755
--- a/scripts/build-typings.js
+++ b/scripts/build-typings.mjs
@@ -1,7 +1,7 @@
#!/usr/bin/env node
-const sh = require('shelljs')
-const vars = require('./vars')
-const log = require('npmlog')
+import sh from 'shelljs'
+import * as vars from './vars.mjs'
+import log from 'npmlog'
vars.builtinPlugins.forEach(plugin => {
log.info('typings', plugin)
diff --git a/scripts/build-windows.js b/scripts/build-windows.mjs
similarity index 90%
rename from scripts/build-windows.js
rename to scripts/build-windows.mjs
index 9af45241..cc4ea927 100755
--- a/scripts/build-windows.js
+++ b/scripts/build-windows.mjs
@@ -1,7 +1,7 @@
#!/usr/bin/env node
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
-const builder = require('electron-builder').build
-const vars = require('./vars')
+import { build as builder } from 'electron-builder'
+import * as vars from './vars.mjs'
const isTag = (process.env.GITHUB_REF || process.env.BUILD_SOURCEBRANCH || '').startsWith('refs/tags/')
diff --git a/scripts/generate-icon-metadata.js b/scripts/generate-icon-metadata.mjs
similarity index 66%
rename from scripts/generate-icon-metadata.js
rename to scripts/generate-icon-metadata.mjs
index 7bbd5e1c..a7b78014 100755
--- a/scripts/generate-icon-metadata.js
+++ b/scripts/generate-icon-metadata.mjs
@@ -1,7 +1,12 @@
#!/usr/bin/env node
-const jsYaml = require('js-yaml')
-const fs = require('fs')
-const path = require('path')
+import jsYaml from 'js-yaml'
+import fs from 'node:fs'
+import path from 'node:path'
+
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+
const metadata = jsYaml.load(fs.readFileSync(path.resolve(__dirname, '../node_modules/@fortawesome/fontawesome-free/metadata/icons.yml')))
let result = {}
diff --git a/scripts/i18n-extract.js b/scripts/i18n-extract.mjs
similarity index 87%
rename from scripts/i18n-extract.js
rename to scripts/i18n-extract.mjs
index 65ad9fa2..d146300e 100755
--- a/scripts/i18n-extract.js
+++ b/scripts/i18n-extract.mjs
@@ -1,9 +1,9 @@
#!/usr/bin/env node
-const sh = require('shelljs')
-const fs = require('fs/promises')
-const vars = require('./vars')
-const log = require('npmlog')
-const { GettextExtractor, JsExtractors, HtmlExtractors } = require('gettext-extractor')
+import sh from 'shelljs'
+import fs from 'node:fs/promises'
+import * as vars from './vars.mjs'
+import log from 'npmlog'
+import { GettextExtractor, JsExtractors, HtmlExtractors } from 'gettext-extractor'
let extractor = new GettextExtractor()
diff --git a/scripts/install-deps.js b/scripts/install-deps.mjs
similarity index 88%
rename from scripts/install-deps.js
rename to scripts/install-deps.mjs
index 6b65a9ad..6ea9996f 100755
--- a/scripts/install-deps.js
+++ b/scripts/install-deps.mjs
@@ -1,7 +1,7 @@
#!/usr/bin/env node
-const sh = require('shelljs')
-const vars = require('./vars')
-const log = require('npmlog')
+import sh from 'shelljs'
+import * as vars from './vars.mjs'
+import log from 'npmlog'
log.info('patch')
sh.exec(`yarn patch-package`, { fatal: true })
diff --git a/scripts/prepackage-plugins.js b/scripts/prepackage-plugins.mjs
similarity index 75%
rename from scripts/prepackage-plugins.js
rename to scripts/prepackage-plugins.mjs
index bf579f41..2176c1ed 100755
--- a/scripts/prepackage-plugins.js
+++ b/scripts/prepackage-plugins.mjs
@@ -1,10 +1,14 @@
#!/usr/bin/env node
-const rebuild = require('electron-rebuild').default
-const sh = require('shelljs')
-const path = require('path')
-const fs = require('fs')
-const vars = require('./vars')
-const log = require('npmlog')
+import { rebuild } from 'electron-rebuild'
+import sh from 'shelljs'
+import path from 'node:path'
+import fs from 'node:fs'
+import * as vars from './vars.mjs'
+import log from 'npmlog'
+
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
let target = path.resolve(__dirname, '../builtin-plugins')
sh.mkdir('-p', target)
diff --git a/scripts/publish-plugins.js b/scripts/publish-plugins.mjs
similarity index 65%
rename from scripts/publish-plugins.js
rename to scripts/publish-plugins.mjs
index b020306a..e00185d4 100755
--- a/scripts/publish-plugins.js
+++ b/scripts/publish-plugins.mjs
@@ -1,8 +1,8 @@
#!/usr/bin/env node
-const sh = require('shelljs')
-const vars = require('./vars')
-const log = require('npmlog')
-const { execSync } = require('child_process')
+import sh from 'shelljs'
+import * as vars from './vars.mjs'
+import log from 'npmlog'
+import { execSync } from 'child_process'
vars.allPackages.forEach(plugin => {
log.info('bump', plugin)
diff --git a/scripts/sentry-upload.js b/scripts/sentry-upload.mjs
similarity index 93%
rename from scripts/sentry-upload.js
rename to scripts/sentry-upload.mjs
index 315f98e0..6a844212 100755
--- a/scripts/sentry-upload.js
+++ b/scripts/sentry-upload.mjs
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const sh = require('shelljs')
-const vars = require('./vars')
+import sh from 'shelljs'
+import * as vars from './vars.mjs'
const sentryCli = process.platform === 'win32' ? 'node_modules\\.bin\\sentry-cli.cmd' : 'sentry-cli'
diff --git a/scripts/vars.js b/scripts/vars.mjs
similarity index 66%
rename from scripts/vars.js
rename to scripts/vars.mjs
index 0446855a..9f4e2d45 100755
--- a/scripts/vars.js
+++ b/scripts/vars.mjs
@@ -1,19 +1,22 @@
-const path = require('path')
-const fs = require('fs')
-const semver = require('semver')
-const childProcess = require('child_process')
+import * as path from 'path'
+import * as fs from 'fs'
+import * as semver from 'semver'
+import * as childProcess from 'child_process'
+
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
const electronInfo = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../node_modules/electron/package.json')))
-exports.version = childProcess.execSync('git describe --tags', { encoding:'utf-8' })
-exports.version = exports.version.substring(1).trim()
-exports.version = exports.version.replace('-', '-c')
+export let version = childProcess.execSync('git describe --tags', { encoding:'utf-8' })
+version = version.substring(1).trim()
+version = version.replace('-', '-c')
-if (exports.version.includes('-c')) {
- exports.version = semver.inc(exports.version, 'prepatch').replace('-0', `-nightly.${process.env.REV ?? 0}`)
+if (version.includes('-c')) {
+ version = semver.inc(version, 'prepatch').replace('-0', `-nightly.${process.env.REV ?? 0}`)
}
-exports.builtinPlugins = [
+export const builtinPlugins = [
'tabby-core',
'tabby-settings',
'tabby-terminal',
@@ -28,26 +31,26 @@ exports.builtinPlugins = [
'tabby-linkifier',
]
-exports.packagesWithDocs = [
+export const packagesWithDocs = [
['.', 'tabby-core'],
['terminal', 'tabby-terminal'],
['local', 'tabby-local'],
['settings', 'tabby-settings'],
]
-exports.allPackages = [
- ...exports.builtinPlugins,
+export const allPackages = [
+ ...builtinPlugins,
'web',
'tabby-web-demo',
]
-exports.bundledModules = [
+export const bundledModules = [
'@angular',
'@ng-bootstrap',
]
-exports.electronVersion = electronInfo.version
+export const electronVersion = electronInfo.version
-exports.keygenConfig = {
+export const keygenConfig = {
provider: 'keygen',
account: 'a06315f2-1031-47c6-9181-e92a20ec815e',
channel: 'stable',
@@ -70,6 +73,6 @@ exports.keygenConfig = {
}[process.platform],
}
-if (!exports.keygenConfig.product) {
+if (!keygenConfig.product) {
throw new Error(`Unrecognized platform ${process.platform}/${process.env.ARCH ?? process.arch}`)
}
diff --git a/tabby-community-color-schemes/webpack.config.js b/tabby-community-color-schemes/webpack.config.js
deleted file mode 100644
index 031a4556..00000000
--- a/tabby-community-color-schemes/webpack.config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-const config = require('../webpack.plugin.config')
-module.exports = config({
- name: 'community-color-schemes',
- dirname: __dirname,
-})
-module.exports.module.rules.push({ test: /[\\\/]schemes[\\\/]/, use: 'raw-loader' })
diff --git a/tabby-community-color-schemes/webpack.config.mjs b/tabby-community-color-schemes/webpack.config.mjs
new file mode 100644
index 00000000..15219263
--- /dev/null
+++ b/tabby-community-color-schemes/webpack.config.mjs
@@ -0,0 +1,14 @@
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+import config from '../webpack.plugin.config.mjs'
+
+export default () => {
+ const cfg = config({
+ name: 'community-color-schemes',
+ dirname: __dirname,
+ })
+ cfg.module.rules.push({ test: /[\\\/]schemes[\\\/]/, use: 'raw-loader' })
+ return cfg
+}
diff --git a/tabby-core/package.json b/tabby-core/package.json
index 36c3b5df..888080c6 100644
--- a/tabby-core/package.json
+++ b/tabby-core/package.json
@@ -1,6 +1,6 @@
{
"name": "tabby-core",
- "version": "1.0.189-nightly.2",
+ "version": "1.0.189-nightly.0",
"description": "Tabby core",
"keywords": [
"tabby-builtin-plugin"
@@ -17,15 +17,13 @@
"author": "Eugene Pankov",
"license": "MIT",
"devDependencies": {
- "@ngx-translate/core": "^14.0.0",
- "bootstrap": "^4.1.3",
+ "bootstrap": "^5.3.0-alpha.1",
+ "color": "^4.2.3",
"deepmerge": "^4.1.1",
"fuzzy-search": "^3.2.1",
"js-yaml": "^4.0.0",
"messageformat": "^2.3.0",
"mixpanel": "^0.17.0",
- "ngx-filesize": "^2.0.16",
- "ngx-perfect-scrollbar": "^10.1.0",
"ngx-translate-messageformat-compiler": "^4.11.0",
"readable-stream": "4.2.0",
"uuid": "^9.0.0"
diff --git a/tabby-core/src/api/index.ts b/tabby-core/src/api/index.ts
index f156f8a8..0384396d 100644
--- a/tabby-core/src/api/index.ts
+++ b/tabby-core/src/api/index.ts
@@ -36,6 +36,7 @@ export { TabsService, NewTabParameters, TabComponentType } from '../services/tab
export { UpdaterService } from '../services/updater.service'
export { VaultService, Vault, VaultSecret, VaultFileSecret, VAULT_SECRET_TYPE_FILE, StoredVault, VaultSecretKey } from '../services/vault.service'
export { FileProvidersService } from '../services/fileProviders.service'
-export { LocaleService, TranslateServiceWrapper as TranslateService } from '../services/locale.service'
+export { LocaleService } from '../services/locale.service'
+export { TranslateService } from '@ngx-translate/core'
export * from '../utils'
export { UTF8Splitter } from '../utfSplitter'
diff --git a/tabby-core/src/api/theme.ts b/tabby-core/src/api/theme.ts
index 621ad4a7..bae63c16 100644
--- a/tabby-core/src/api/theme.ts
+++ b/tabby-core/src/api/theme.ts
@@ -13,4 +13,5 @@ export abstract class Theme {
macOSWindowButtonsInsetX?: number
macOSWindowButtonsInsetY?: number
+ followsColorScheme?: boolean
}
diff --git a/tabby-core/src/components/appRoot.component.ts b/tabby-core/src/components/appRoot.component.ts
index cd51c9d9..367ede79 100644
--- a/tabby-core/src/components/appRoot.component.ts
+++ b/tabby-core/src/components/appRoot.component.ts
@@ -55,8 +55,8 @@ function makeTabAnimation (dimension: string, size: number) {
/** @hidden */
@Component({
selector: 'app-root',
- template: require('./appRoot.component.pug'),
- styles: [require('./appRoot.component.scss')],
+ templateUrl: './appRoot.component.pug',
+ styleUrls: ['./appRoot.component.scss'],
animations: [
trigger('animateTab', makeTabAnimation('width', 200)),
],
@@ -90,6 +90,7 @@ export class AppRootComponent {
ngbModal: NgbModal,
_themes: ThemesService,
) {
+ // document.querySelector('app-root')?.remove()
this.logger = log.create('main')
this.logger.info('v', platform.getAppVersion())
diff --git a/tabby-core/src/components/baseTab.component.ts b/tabby-core/src/components/baseTab.component.ts
index 20bacd7e..71d15cda 100644
--- a/tabby-core/src/components/baseTab.component.ts
+++ b/tabby-core/src/components/baseTab.component.ts
@@ -19,6 +19,7 @@ export interface GetRecoveryTokenOptions {
/**
* Abstract base class for custom tab components
*/
+// @Component({ template: '' })
export abstract class BaseTabComponent extends BaseComponent {
/**
* Parent tab (usually a SplitTabComponent)
diff --git a/tabby-core/src/components/checkbox.component.ts b/tabby-core/src/components/checkbox.component.ts
index 46a3d532..c0ac49d9 100644
--- a/tabby-core/src/components/checkbox.component.ts
+++ b/tabby-core/src/components/checkbox.component.ts
@@ -6,9 +6,9 @@ import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'
@Component({
selector: 'checkbox',
template: `
-
-
-
+
+
+
`,
- styles: [require('./toggle.component.scss')],
+ styleUrls: ['./toggle.component.scss'],
providers: [
{ provide: NG_VALUE_ACCESSOR, useExisting: ToggleComponent, multi: true },
],
diff --git a/tabby-core/src/components/transfersMenu.component.pug b/tabby-core/src/components/transfersMenu.component.pug
index 77b8cade..7ac952f1 100644
--- a/tabby-core/src/components/transfersMenu.component.pug
+++ b/tabby-core/src/components/transfersMenu.component.pug
@@ -1,6 +1,6 @@
.d-flex.align-items-center
.dropdown-header(translate) File transfers
- button.btn.btn-link.ml-auto((click)='removeAll(); $event.stopPropagation()') !{require('../icons/times.svg')}
+ button.btn.btn-link.ms-auto((click)='removeAll(); $event.stopPropagation()') !{require('../icons/times.svg')}
.transfer(*ngFor='let transfer of transfers', (click)='showTransfer(transfer)')
.icon(*ngIf='isDownload(transfer)') !{require('../icons/download.svg')}
.icon(*ngIf='!isDownload(transfer)') !{require('../icons/upload.svg')}
diff --git a/tabby-core/src/components/transfersMenu.component.ts b/tabby-core/src/components/transfersMenu.component.ts
index 280602c4..02f3dff9 100644
--- a/tabby-core/src/components/transfersMenu.component.ts
+++ b/tabby-core/src/components/transfersMenu.component.ts
@@ -5,8 +5,8 @@ import { FileDownload, FileTransfer, PlatformService } from '../api/platform'
/** @hidden */
@Component({
selector: 'transfers-menu',
- template: require('./transfersMenu.component.pug'),
- styles: [require('./transfersMenu.component.scss')],
+ templateUrl:'./transfersMenu.component.pug',
+ styleUrls: ['./transfersMenu.component.scss'],
})
export class TransfersMenuComponent {
@Input() transfers: FileTransfer[]
diff --git a/tabby-core/src/components/unlockVaultModal.component.pug b/tabby-core/src/components/unlockVaultModal.component.pug
index 44620417..4943110e 100644
--- a/tabby-core/src/components/unlockVaultModal.component.pug
+++ b/tabby-core/src/components/unlockVaultModal.component.pug
@@ -1,7 +1,7 @@
.modal-body
.d-flex.align-items-center.mb-3
h3.m-0(translate) Vault is locked
- .ml-auto(ngbDropdown, placement='bottom-right')
+ .ms-auto(ngbDropdown, placement='bottom-right')
button.btn.btn-link(ngbDropdownToggle, (click)='$event.stopPropagation()')
span(
*ngIf='rememberFor',
@@ -29,6 +29,5 @@
(keyup.enter)='ok()',
(keyup.esc)='cancel()',
)
- .input-group-append
- button.btn.btn-secondary((click)='ok()', *ngIf='passphrase')
- i.fas.fa-check
+ button.btn.btn-secondary((click)='ok()', *ngIf='passphrase')
+ i.fas.fa-check
diff --git a/tabby-core/src/components/unlockVaultModal.component.ts b/tabby-core/src/components/unlockVaultModal.component.ts
index efe295a2..7a4dcb3c 100644
--- a/tabby-core/src/components/unlockVaultModal.component.ts
+++ b/tabby-core/src/components/unlockVaultModal.component.ts
@@ -3,7 +3,7 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
/** @hidden */
@Component({
- template: require('./unlockVaultModal.component.pug'),
+ templateUrl:'./unlockVaultModal.component.pug',
})
export class UnlockVaultModalComponent {
passphrase: string
diff --git a/tabby-core/src/components/welcomeTab.component.ts b/tabby-core/src/components/welcomeTab.component.ts
index 43b71a1d..53f09151 100644
--- a/tabby-core/src/components/welcomeTab.component.ts
+++ b/tabby-core/src/components/welcomeTab.component.ts
@@ -8,8 +8,8 @@ import { LocaleService } from '../services/locale.service'
/** @hidden */
@Component({
selector: 'welcome-page',
- template: require('./welcomeTab.component.pug'),
- styles: [require('./welcomeTab.component.scss')],
+ templateUrl:'./welcomeTab.component.pug',
+ styleUrls: ['./welcomeTab.component.scss'],
})
export class WelcomeTabComponent extends BaseTabComponent {
enableGlobalHotkey = true
diff --git a/tabby-core/src/components/windowControls.component.ts b/tabby-core/src/components/windowControls.component.ts
index f6f511f1..d8796231 100644
--- a/tabby-core/src/components/windowControls.component.ts
+++ b/tabby-core/src/components/windowControls.component.ts
@@ -6,8 +6,8 @@ import { AppService } from '../services/app.service'
/** @hidden */
@Component({
selector: 'window-controls',
- template: require('./windowControls.component.pug'),
- styles: [require('./windowControls.component.scss')],
+ templateUrl:'./windowControls.component.pug',
+ styleUrls: ['./windowControls.component.scss'],
})
export class WindowControlsComponent {
constructor (public hostWindow: HostWindowService, public app: AppService) { }
diff --git a/tabby-core/src/config.ts b/tabby-core/src/config.ts
index 5ff96a08..4dd0d8dd 100644
--- a/tabby-core/src/config.ts
+++ b/tabby-core/src/config.ts
@@ -4,10 +4,10 @@ import { Platform } from './api/hostApp'
/** @hidden */
export class CoreConfigProvider extends ConfigProvider {
platformDefaults = {
- [Platform.macOS]: require('./configDefaults.macos.yaml'),
- [Platform.Windows]: require('./configDefaults.windows.yaml'),
- [Platform.Linux]: require('./configDefaults.linux.yaml'),
- [Platform.Web]: require('./configDefaults.web.yaml'),
+ [Platform.macOS]: require('./configDefaults.macos.yaml').default,
+ [Platform.Windows]: require('./configDefaults.windows.yaml').default,
+ [Platform.Linux]: require('./configDefaults.linux.yaml').default,
+ [Platform.Web]: require('./configDefaults.web.yaml').default,
}
- defaults = require('./configDefaults.yaml')
+ defaults = require('./configDefaults.yaml').default
}
diff --git a/tabby-core/src/configDefaults.macos.yaml b/tabby-core/src/configDefaults.macos.yaml
index 6ea35df8..7228a242 100644
--- a/tabby-core/src/configDefaults.macos.yaml
+++ b/tabby-core/src/configDefaults.macos.yaml
@@ -36,8 +36,7 @@ hotkeys:
- '⌘-8'
tab-9:
- '⌘-9'
- tab-10:
- - '⌘-0'
+ tab-10: []
duplicate-tab: []
restart-tab: []
explode-tab:
diff --git a/tabby-core/src/icons.json b/tabby-core/src/icons.json
index b48f711e..05613008 100644
--- a/tabby-core/src/icons.json
+++ b/tabby-core/src/icons.json
@@ -1 +1 @@
-{"0":["s"],"1":["s"],"2":["s"],"3":["s"],"4":["s"],"5":["s"],"6":["s"],"7":["s"],"8":["s"],"9":["s"],"42-group":["b"],"500px":["b"],"a":["s"],"accessible-icon":["b"],"accusoft":["b"],"address-book":["s","r"],"address-card":["s","r"],"adn":["b"],"adversal":["b"],"affiliatetheme":["b"],"airbnb":["b"],"algolia":["b"],"align-center":["s"],"align-justify":["s"],"align-left":["s"],"align-right":["s"],"alipay":["b"],"amazon":["b"],"amazon-pay":["b"],"amilia":["b"],"anchor":["s"],"anchor-circle-check":["s"],"anchor-circle-exclamation":["s"],"anchor-circle-xmark":["s"],"anchor-lock":["s"],"android":["b"],"angellist":["b"],"angle-down":["s"],"angle-left":["s"],"angle-right":["s"],"angle-up":["s"],"angles-down":["s"],"angles-left":["s"],"angles-right":["s"],"angles-up":["s"],"angrycreative":["b"],"angular":["b"],"ankh":["s"],"app-store":["b"],"app-store-ios":["b"],"apper":["b"],"apple":["b"],"apple-pay":["b"],"apple-whole":["s"],"archway":["s"],"arrow-down":["s"],"arrow-down-1-9":["s"],"arrow-down-9-1":["s"],"arrow-down-a-z":["s"],"arrow-down-long":["s"],"arrow-down-short-wide":["s"],"arrow-down-up-across-line":["s"],"arrow-down-up-lock":["s"],"arrow-down-wide-short":["s"],"arrow-down-z-a":["s"],"arrow-left":["s"],"arrow-left-long":["s"],"arrow-pointer":["s"],"arrow-right":["s"],"arrow-right-arrow-left":["s"],"arrow-right-from-bracket":["s"],"arrow-right-long":["s"],"arrow-right-to-bracket":["s"],"arrow-right-to-city":["s"],"arrow-rotate-left":["s"],"arrow-rotate-right":["s"],"arrow-trend-down":["s"],"arrow-trend-up":["s"],"arrow-turn-down":["s"],"arrow-turn-up":["s"],"arrow-up":["s"],"arrow-up-1-9":["s"],"arrow-up-9-1":["s"],"arrow-up-a-z":["s"],"arrow-up-from-bracket":["s"],"arrow-up-from-ground-water":["s"],"arrow-up-from-water-pump":["s"],"arrow-up-long":["s"],"arrow-up-right-dots":["s"],"arrow-up-right-from-square":["s"],"arrow-up-short-wide":["s"],"arrow-up-wide-short":["s"],"arrow-up-z-a":["s"],"arrows-down-to-line":["s"],"arrows-down-to-people":["s"],"arrows-left-right":["s"],"arrows-left-right-to-line":["s"],"arrows-rotate":["s"],"arrows-spin":["s"],"arrows-split-up-and-left":["s"],"arrows-to-circle":["s"],"arrows-to-dot":["s"],"arrows-to-eye":["s"],"arrows-turn-right":["s"],"arrows-turn-to-dots":["s"],"arrows-up-down":["s"],"arrows-up-down-left-right":["s"],"arrows-up-to-line":["s"],"artstation":["b"],"asterisk":["s"],"asymmetrik":["b"],"at":["s"],"atlassian":["b"],"atom":["s"],"audible":["b"],"audio-description":["s"],"austral-sign":["s"],"autoprefixer":["b"],"avianex":["b"],"aviato":["b"],"award":["s"],"aws":["b"],"b":["s"],"baby":["s"],"baby-carriage":["s"],"backward":["s"],"backward-fast":["s"],"backward-step":["s"],"bacon":["s"],"bacteria":["s"],"bacterium":["s"],"bag-shopping":["s"],"bahai":["s"],"baht-sign":["s"],"ban":["s"],"ban-smoking":["s"],"bandage":["s"],"bandcamp":["b"],"barcode":["s"],"bars":["s"],"bars-progress":["s"],"bars-staggered":["s"],"baseball":["s"],"baseball-bat-ball":["s"],"basket-shopping":["s"],"basketball":["s"],"bath":["s"],"battery-empty":["s"],"battery-full":["s"],"battery-half":["s"],"battery-quarter":["s"],"battery-three-quarters":["s"],"battle-net":["b"],"bed":["s"],"bed-pulse":["s"],"beer-mug-empty":["s"],"behance":["b"],"behance-square":["b"],"bell":["s","r"],"bell-concierge":["s"],"bell-slash":["s","r"],"bezier-curve":["s"],"bicycle":["s"],"bilibili":["b"],"bimobject":["b"],"binoculars":["s"],"biohazard":["s"],"bitbucket":["b"],"bitcoin":["b"],"bitcoin-sign":["s"],"bity":["b"],"black-tie":["b"],"blackberry":["b"],"blender":["s"],"blender-phone":["s"],"blog":["s"],"blogger":["b"],"blogger-b":["b"],"bluetooth":["b"],"bluetooth-b":["b"],"bold":["s"],"bolt":["s"],"bolt-lightning":["s"],"bomb":["s"],"bone":["s"],"bong":["s"],"book":["s"],"book-atlas":["s"],"book-bible":["s"],"book-bookmark":["s"],"book-journal-whills":["s"],"book-medical":["s"],"book-open":["s"],"book-open-reader":["s"],"book-quran":["s"],"book-skull":["s"],"bookmark":["s","r"],"bootstrap":["b"],"border-all":["s"],"border-none":["s"],"border-top-left":["s"],"bore-hole":["s"],"bots":["b"],"bottle-droplet":["s"],"bottle-water":["s"],"bowl-food":["s"],"bowl-rice":["s"],"bowling-ball":["s"],"box":["s"],"box-archive":["s"],"box-open":["s"],"box-tissue":["s"],"boxes-packing":["s"],"boxes-stacked":["s"],"braille":["s"],"brain":["s"],"brazilian-real-sign":["s"],"bread-slice":["s"],"bridge":["s"],"bridge-circle-check":["s"],"bridge-circle-exclamation":["s"],"bridge-circle-xmark":["s"],"bridge-lock":["s"],"bridge-water":["s"],"briefcase":["s"],"briefcase-medical":["s"],"broom":["s"],"broom-ball":["s"],"brush":["s"],"btc":["b"],"bucket":["s"],"buffer":["b"],"bug":["s"],"bug-slash":["s"],"bugs":["s"],"building":["s","r"],"building-circle-arrow-right":["s"],"building-circle-check":["s"],"building-circle-exclamation":["s"],"building-circle-xmark":["s"],"building-columns":["s"],"building-flag":["s"],"building-lock":["s"],"building-ngo":["s"],"building-shield":["s"],"building-un":["s"],"building-user":["s"],"building-wheat":["s"],"bullhorn":["s"],"bullseye":["s"],"burger":["s"],"buromobelexperte":["b"],"burst":["s"],"bus":["s"],"bus-simple":["s"],"business-time":["s"],"buy-n-large":["b"],"buysellads":["b"],"c":["s"],"cake-candles":["s"],"calculator":["s"],"calendar":["s","r"],"calendar-check":["s","r"],"calendar-day":["s"],"calendar-days":["s","r"],"calendar-minus":["s","r"],"calendar-plus":["s","r"],"calendar-week":["s"],"calendar-xmark":["s","r"],"camera":["s"],"camera-retro":["s"],"camera-rotate":["s"],"campground":["s"],"canadian-maple-leaf":["b"],"candy-cane":["s"],"cannabis":["s"],"capsules":["s"],"car":["s"],"car-battery":["s"],"car-burst":["s"],"car-on":["s"],"car-rear":["s"],"car-side":["s"],"car-tunnel":["s"],"caravan":["s"],"caret-down":["s"],"caret-left":["s"],"caret-right":["s"],"caret-up":["s"],"carrot":["s"],"cart-arrow-down":["s"],"cart-flatbed":["s"],"cart-flatbed-suitcase":["s"],"cart-plus":["s"],"cart-shopping":["s"],"cash-register":["s"],"cat":["s"],"cc-amazon-pay":["b"],"cc-amex":["b"],"cc-apple-pay":["b"],"cc-diners-club":["b"],"cc-discover":["b"],"cc-jcb":["b"],"cc-mastercard":["b"],"cc-paypal":["b"],"cc-stripe":["b"],"cc-visa":["b"],"cedi-sign":["s"],"cent-sign":["s"],"centercode":["b"],"centos":["b"],"certificate":["s"],"chair":["s"],"chalkboard":["s"],"chalkboard-user":["s"],"champagne-glasses":["s"],"charging-station":["s"],"chart-area":["s"],"chart-bar":["s","r"],"chart-column":["s"],"chart-gantt":["s"],"chart-line":["s"],"chart-pie":["s"],"chart-simple":["s"],"check":["s"],"check-double":["s"],"check-to-slot":["s"],"cheese":["s"],"chess":["s"],"chess-bishop":["s","r"],"chess-board":["s"],"chess-king":["s","r"],"chess-knight":["s","r"],"chess-pawn":["s","r"],"chess-queen":["s","r"],"chess-rook":["s","r"],"chevron-down":["s"],"chevron-left":["s"],"chevron-right":["s"],"chevron-up":["s"],"child":["s"],"child-dress":["s"],"child-reaching":["s"],"child-rifle":["s"],"children":["s"],"chrome":["b"],"chromecast":["b"],"church":["s"],"circle":["s","r"],"circle-arrow-down":["s"],"circle-arrow-left":["s"],"circle-arrow-right":["s"],"circle-arrow-up":["s"],"circle-check":["s","r"],"circle-chevron-down":["s"],"circle-chevron-left":["s"],"circle-chevron-right":["s"],"circle-chevron-up":["s"],"circle-dollar-to-slot":["s"],"circle-dot":["s","r"],"circle-down":["s","r"],"circle-exclamation":["s"],"circle-h":["s"],"circle-half-stroke":["s"],"circle-info":["s"],"circle-left":["s","r"],"circle-minus":["s"],"circle-nodes":["s"],"circle-notch":["s"],"circle-pause":["s","r"],"circle-play":["s","r"],"circle-plus":["s"],"circle-question":["s","r"],"circle-radiation":["s"],"circle-right":["s","r"],"circle-stop":["s","r"],"circle-up":["s","r"],"circle-user":["s","r"],"circle-xmark":["s","r"],"city":["s"],"clapperboard":["s"],"clipboard":["s","r"],"clipboard-check":["s"],"clipboard-list":["s"],"clipboard-question":["s"],"clipboard-user":["s"],"clock":["s","r"],"clock-rotate-left":["s"],"clone":["s","r"],"closed-captioning":["s","r"],"cloud":["s"],"cloud-arrow-down":["s"],"cloud-arrow-up":["s"],"cloud-bolt":["s"],"cloud-meatball":["s"],"cloud-moon":["s"],"cloud-moon-rain":["s"],"cloud-rain":["s"],"cloud-showers-heavy":["s"],"cloud-showers-water":["s"],"cloud-sun":["s"],"cloud-sun-rain":["s"],"cloudflare":["b"],"cloudscale":["b"],"cloudsmith":["b"],"cloudversify":["b"],"clover":["s"],"cmplid":["b"],"code":["s"],"code-branch":["s"],"code-commit":["s"],"code-compare":["s"],"code-fork":["s"],"code-merge":["s"],"code-pull-request":["s"],"codepen":["b"],"codiepie":["b"],"coins":["s"],"colon-sign":["s"],"comment":["s","r"],"comment-dollar":["s"],"comment-dots":["s","r"],"comment-medical":["s"],"comment-slash":["s"],"comment-sms":["s"],"comments":["s","r"],"comments-dollar":["s"],"compact-disc":["s"],"compass":["s","r"],"compass-drafting":["s"],"compress":["s"],"computer":["s"],"computer-mouse":["s"],"confluence":["b"],"connectdevelop":["b"],"contao":["b"],"cookie":["s"],"cookie-bite":["s"],"copy":["s","r"],"copyright":["s","r"],"cotton-bureau":["b"],"couch":["s"],"cow":["s"],"cpanel":["b"],"creative-commons":["b"],"creative-commons-by":["b"],"creative-commons-nc":["b"],"creative-commons-nc-eu":["b"],"creative-commons-nc-jp":["b"],"creative-commons-nd":["b"],"creative-commons-pd":["b"],"creative-commons-pd-alt":["b"],"creative-commons-remix":["b"],"creative-commons-sa":["b"],"creative-commons-sampling":["b"],"creative-commons-sampling-plus":["b"],"creative-commons-share":["b"],"creative-commons-zero":["b"],"credit-card":["s","r"],"critical-role":["b"],"crop":["s"],"crop-simple":["s"],"cross":["s"],"crosshairs":["s"],"crow":["s"],"crown":["s"],"crutch":["s"],"cruzeiro-sign":["s"],"css3":["b"],"css3-alt":["b"],"cube":["s"],"cubes":["s"],"cubes-stacked":["s"],"cuttlefish":["b"],"d":["s"],"d-and-d":["b"],"d-and-d-beyond":["b"],"dailymotion":["b"],"dashcube":["b"],"database":["s"],"deezer":["b"],"delete-left":["s"],"delicious":["b"],"democrat":["s"],"deploydog":["b"],"deskpro":["b"],"desktop":["s"],"dev":["b"],"deviantart":["b"],"dharmachakra":["s"],"dhl":["b"],"diagram-next":["s"],"diagram-predecessor":["s"],"diagram-project":["s"],"diagram-successor":["s"],"diamond":["s"],"diamond-turn-right":["s"],"diaspora":["b"],"dice":["s"],"dice-d20":["s"],"dice-d6":["s"],"dice-five":["s"],"dice-four":["s"],"dice-one":["s"],"dice-six":["s"],"dice-three":["s"],"dice-two":["s"],"digg":["b"],"digital-ocean":["b"],"discord":["b"],"discourse":["b"],"disease":["s"],"display":["s"],"divide":["s"],"dna":["s"],"dochub":["b"],"docker":["b"],"dog":["s"],"dollar-sign":["s"],"dolly":["s"],"dong-sign":["s"],"door-closed":["s"],"door-open":["s"],"dove":["s"],"down-left-and-up-right-to-center":["s"],"down-long":["s"],"download":["s"],"draft2digital":["b"],"dragon":["s"],"draw-polygon":["s"],"dribbble":["b"],"dribbble-square":["b"],"dropbox":["b"],"droplet":["s"],"droplet-slash":["s"],"drum":["s"],"drum-steelpan":["s"],"drumstick-bite":["s"],"drupal":["b"],"dumbbell":["s"],"dumpster":["s"],"dumpster-fire":["s"],"dungeon":["s"],"dyalog":["b"],"e":["s"],"ear-deaf":["s"],"ear-listen":["s"],"earlybirds":["b"],"earth-africa":["s"],"earth-americas":["s"],"earth-asia":["s"],"earth-europe":["s"],"earth-oceania":["s"],"ebay":["b"],"edge":["b"],"edge-legacy":["b"],"egg":["s"],"eject":["s"],"elementor":["b"],"elevator":["s"],"ellipsis":["s"],"ellipsis-vertical":["s"],"ello":["b"],"ember":["b"],"empire":["b"],"envelope":["s","r"],"envelope-circle-check":["s"],"envelope-open":["s","r"],"envelope-open-text":["s"],"envelopes-bulk":["s"],"envira":["b"],"equals":["s"],"eraser":["s"],"erlang":["b"],"ethereum":["b"],"ethernet":["s"],"etsy":["b"],"euro-sign":["s"],"evernote":["b"],"exclamation":["s"],"expand":["s"],"expeditedssl":["b"],"explosion":["s"],"eye":["s","r"],"eye-dropper":["s"],"eye-low-vision":["s"],"eye-slash":["s","r"],"f":["s"],"face-angry":["s","r"],"face-dizzy":["s","r"],"face-flushed":["s","r"],"face-frown":["s","r"],"face-frown-open":["s","r"],"face-grimace":["s","r"],"face-grin":["s","r"],"face-grin-beam":["s","r"],"face-grin-beam-sweat":["s","r"],"face-grin-hearts":["s","r"],"face-grin-squint":["s","r"],"face-grin-squint-tears":["s","r"],"face-grin-stars":["s","r"],"face-grin-tears":["s","r"],"face-grin-tongue":["s","r"],"face-grin-tongue-squint":["s","r"],"face-grin-tongue-wink":["s","r"],"face-grin-wide":["s","r"],"face-grin-wink":["s","r"],"face-kiss":["s","r"],"face-kiss-beam":["s","r"],"face-kiss-wink-heart":["s","r"],"face-laugh":["s","r"],"face-laugh-beam":["s","r"],"face-laugh-squint":["s","r"],"face-laugh-wink":["s","r"],"face-meh":["s","r"],"face-meh-blank":["s","r"],"face-rolling-eyes":["s","r"],"face-sad-cry":["s","r"],"face-sad-tear":["s","r"],"face-smile":["s","r"],"face-smile-beam":["s","r"],"face-smile-wink":["s","r"],"face-surprise":["s","r"],"face-tired":["s","r"],"facebook":["b"],"facebook-f":["b"],"facebook-messenger":["b"],"facebook-square":["b"],"fan":["s"],"fantasy-flight-games":["b"],"faucet":["s"],"faucet-drip":["s"],"fax":["s"],"feather":["s"],"feather-pointed":["s"],"fedex":["b"],"fedora":["b"],"ferry":["s"],"figma":["b"],"file":["s","r"],"file-arrow-down":["s"],"file-arrow-up":["s"],"file-audio":["s","r"],"file-circle-check":["s"],"file-circle-exclamation":["s"],"file-circle-minus":["s"],"file-circle-plus":["s"],"file-circle-question":["s"],"file-circle-xmark":["s"],"file-code":["s","r"],"file-contract":["s"],"file-csv":["s"],"file-excel":["s","r"],"file-export":["s"],"file-image":["s","r"],"file-import":["s"],"file-invoice":["s"],"file-invoice-dollar":["s"],"file-lines":["s","r"],"file-medical":["s"],"file-pdf":["s","r"],"file-pen":["s"],"file-powerpoint":["s","r"],"file-prescription":["s"],"file-shield":["s"],"file-signature":["s"],"file-video":["s","r"],"file-waveform":["s"],"file-word":["s","r"],"file-zipper":["s","r"],"fill":["s"],"fill-drip":["s"],"film":["s"],"filter":["s"],"filter-circle-dollar":["s"],"filter-circle-xmark":["s"],"fingerprint":["s"],"fire":["s"],"fire-burner":["s"],"fire-extinguisher":["s"],"fire-flame-curved":["s"],"fire-flame-simple":["s"],"firefox":["b"],"firefox-browser":["b"],"first-order":["b"],"first-order-alt":["b"],"firstdraft":["b"],"fish":["s"],"fish-fins":["s"],"flag":["s","r"],"flag-checkered":["s"],"flag-usa":["s"],"flask":["s"],"flask-vial":["s"],"flickr":["b"],"flipboard":["b"],"floppy-disk":["s","r"],"florin-sign":["s"],"fly":["b"],"folder":["s","r"],"folder-closed":["s","r"],"folder-minus":["s"],"folder-open":["s","r"],"folder-plus":["s"],"folder-tree":["s"],"font":["s"],"font-awesome":["s","r","b"],"fonticons":["b"],"fonticons-fi":["b"],"football":["s"],"fort-awesome":["b"],"fort-awesome-alt":["b"],"forumbee":["b"],"forward":["s"],"forward-fast":["s"],"forward-step":["s"],"foursquare":["b"],"franc-sign":["s"],"free-code-camp":["b"],"freebsd":["b"],"frog":["s"],"fulcrum":["b"],"futbol":["s","r"],"g":["s"],"galactic-republic":["b"],"galactic-senate":["b"],"gamepad":["s"],"gas-pump":["s"],"gauge":["s"],"gauge-high":["s"],"gauge-simple":["s"],"gauge-simple-high":["s"],"gavel":["s"],"gear":["s"],"gears":["s"],"gem":["s","r"],"genderless":["s"],"get-pocket":["b"],"gg":["b"],"gg-circle":["b"],"ghost":["s"],"gift":["s"],"gifts":["s"],"git":["b"],"git-alt":["b"],"git-square":["b"],"github":["b"],"github-alt":["b"],"github-square":["b"],"gitkraken":["b"],"gitlab":["b"],"gitter":["b"],"glass-water":["s"],"glass-water-droplet":["s"],"glasses":["s"],"glide":["b"],"glide-g":["b"],"globe":["s"],"gofore":["b"],"golang":["b"],"golf-ball-tee":["s"],"goodreads":["b"],"goodreads-g":["b"],"google":["b"],"google-drive":["b"],"google-pay":["b"],"google-play":["b"],"google-plus":["b"],"google-plus-g":["b"],"google-plus-square":["b"],"google-wallet":["b"],"gopuram":["s"],"graduation-cap":["s"],"gratipay":["b"],"grav":["b"],"greater-than":["s"],"greater-than-equal":["s"],"grip":["s"],"grip-lines":["s"],"grip-lines-vertical":["s"],"grip-vertical":["s"],"gripfire":["b"],"group-arrows-rotate":["s"],"grunt":["b"],"guarani-sign":["s"],"guilded":["b"],"guitar":["s"],"gulp":["b"],"gun":["s"],"h":["s"],"hacker-news":["b"],"hacker-news-square":["b"],"hackerrank":["b"],"hammer":["s"],"hamsa":["s"],"hand":["s","r"],"hand-back-fist":["s","r"],"hand-dots":["s"],"hand-fist":["s"],"hand-holding":["s"],"hand-holding-dollar":["s"],"hand-holding-droplet":["s"],"hand-holding-hand":["s"],"hand-holding-heart":["s"],"hand-holding-medical":["s"],"hand-lizard":["s","r"],"hand-middle-finger":["s"],"hand-peace":["s","r"],"hand-point-down":["s","r"],"hand-point-left":["s","r"],"hand-point-right":["s","r"],"hand-point-up":["s","r"],"hand-pointer":["s","r"],"hand-scissors":["s","r"],"hand-sparkles":["s"],"hand-spock":["s","r"],"handcuffs":["s"],"hands":["s"],"hands-asl-interpreting":["s"],"hands-bound":["s"],"hands-bubbles":["s"],"hands-clapping":["s"],"hands-holding":["s"],"hands-holding-child":["s"],"hands-holding-circle":["s"],"hands-praying":["s"],"handshake":["s","r"],"handshake-angle":["s"],"handshake-simple":["s"],"handshake-simple-slash":["s"],"handshake-slash":["s"],"hanukiah":["s"],"hard-drive":["s","r"],"hashnode":["b"],"hashtag":["s"],"hat-cowboy":["s"],"hat-cowboy-side":["s"],"hat-wizard":["s"],"head-side-cough":["s"],"head-side-cough-slash":["s"],"head-side-mask":["s"],"head-side-virus":["s"],"heading":["s"],"headphones":["s"],"headphones-simple":["s"],"headset":["s"],"heart":["s","r"],"heart-circle-bolt":["s"],"heart-circle-check":["s"],"heart-circle-exclamation":["s"],"heart-circle-minus":["s"],"heart-circle-plus":["s"],"heart-circle-xmark":["s"],"heart-crack":["s"],"heart-pulse":["s"],"helicopter":["s"],"helicopter-symbol":["s"],"helmet-safety":["s"],"helmet-un":["s"],"highlighter":["s"],"hill-avalanche":["s"],"hill-rockslide":["s"],"hippo":["s"],"hips":["b"],"hire-a-helper":["b"],"hive":["b"],"hockey-puck":["s"],"holly-berry":["s"],"hooli":["b"],"hornbill":["b"],"horse":["s"],"horse-head":["s"],"hospital":["s","r"],"hospital-user":["s"],"hot-tub-person":["s"],"hotdog":["s"],"hotel":["s"],"hotjar":["b"],"hourglass":["s","r"],"hourglass-empty":["s"],"hourglass-end":["s"],"hourglass-start":["s"],"house":["s"],"house-chimney":["s"],"house-chimney-crack":["s"],"house-chimney-medical":["s"],"house-chimney-user":["s"],"house-chimney-window":["s"],"house-circle-check":["s"],"house-circle-exclamation":["s"],"house-circle-xmark":["s"],"house-crack":["s"],"house-fire":["s"],"house-flag":["s"],"house-flood-water":["s"],"house-flood-water-circle-arrow-right":["s"],"house-laptop":["s"],"house-lock":["s"],"house-medical":["s"],"house-medical-circle-check":["s"],"house-medical-circle-exclamation":["s"],"house-medical-circle-xmark":["s"],"house-medical-flag":["s"],"house-signal":["s"],"house-tsunami":["s"],"house-user":["s"],"houzz":["b"],"hryvnia-sign":["s"],"html5":["b"],"hubspot":["b"],"hurricane":["s"],"i":["s"],"i-cursor":["s"],"ice-cream":["s"],"icicles":["s"],"icons":["s"],"id-badge":["s","r"],"id-card":["s","r"],"id-card-clip":["s"],"ideal":["b"],"igloo":["s"],"image":["s","r"],"image-portrait":["s"],"images":["s","r"],"imdb":["b"],"inbox":["s"],"indent":["s"],"indian-rupee-sign":["s"],"industry":["s"],"infinity":["s"],"info":["s"],"instagram":["b"],"instagram-square":["b"],"instalod":["b"],"intercom":["b"],"internet-explorer":["b"],"invision":["b"],"ioxhost":["b"],"italic":["s"],"itch-io":["b"],"itunes":["b"],"itunes-note":["b"],"j":["s"],"jar":["s"],"jar-wheat":["s"],"java":["b"],"jedi":["s"],"jedi-order":["b"],"jenkins":["b"],"jet-fighter":["s"],"jet-fighter-up":["s"],"jira":["b"],"joget":["b"],"joint":["s"],"joomla":["b"],"js":["b"],"js-square":["b"],"jsfiddle":["b"],"jug-detergent":["s"],"k":["s"],"kaaba":["s"],"kaggle":["b"],"key":["s"],"keybase":["b"],"keyboard":["s","r"],"keycdn":["b"],"khanda":["s"],"kickstarter":["b"],"kickstarter-k":["b"],"kip-sign":["s"],"kit-medical":["s"],"kitchen-set":["s"],"kiwi-bird":["s"],"korvue":["b"],"l":["s"],"land-mine-on":["s"],"landmark":["s"],"landmark-dome":["s"],"landmark-flag":["s"],"language":["s"],"laptop":["s"],"laptop-code":["s"],"laptop-file":["s"],"laptop-medical":["s"],"laravel":["b"],"lari-sign":["s"],"lastfm":["b"],"lastfm-square":["b"],"layer-group":["s"],"leaf":["s"],"leanpub":["b"],"left-long":["s"],"left-right":["s"],"lemon":["s","r"],"less":["b"],"less-than":["s"],"less-than-equal":["s"],"life-ring":["s","r"],"lightbulb":["s","r"],"line":["b"],"lines-leaning":["s"],"link":["s"],"link-slash":["s"],"linkedin":["b"],"linkedin-in":["b"],"linode":["b"],"linux":["b"],"lira-sign":["s"],"list":["s"],"list-check":["s"],"list-ol":["s"],"list-ul":["s"],"litecoin-sign":["s"],"location-arrow":["s"],"location-crosshairs":["s"],"location-dot":["s"],"location-pin":["s"],"location-pin-lock":["s"],"lock":["s"],"lock-open":["s"],"locust":["s"],"lungs":["s"],"lungs-virus":["s"],"lyft":["b"],"m":["s"],"magento":["b"],"magnet":["s"],"magnifying-glass":["s"],"magnifying-glass-arrow-right":["s"],"magnifying-glass-chart":["s"],"magnifying-glass-dollar":["s"],"magnifying-glass-location":["s"],"magnifying-glass-minus":["s"],"magnifying-glass-plus":["s"],"mailchimp":["b"],"manat-sign":["s"],"mandalorian":["b"],"map":["s","r"],"map-location":["s"],"map-location-dot":["s"],"map-pin":["s"],"markdown":["b"],"marker":["s"],"mars":["s"],"mars-and-venus":["s"],"mars-and-venus-burst":["s"],"mars-double":["s"],"mars-stroke":["s"],"mars-stroke-right":["s"],"mars-stroke-up":["s"],"martini-glass":["s"],"martini-glass-citrus":["s"],"martini-glass-empty":["s"],"mask":["s"],"mask-face":["s"],"mask-ventilator":["s"],"masks-theater":["s"],"mastodon":["b"],"mattress-pillow":["s"],"maxcdn":["b"],"maximize":["s"],"mdb":["b"],"medal":["s"],"medapps":["b"],"medium":["b"],"medrt":["b"],"meetup":["b"],"megaport":["b"],"memory":["s"],"mendeley":["b"],"menorah":["s"],"mercury":["s"],"message":["s","r"],"meteor":["s"],"microblog":["b"],"microchip":["s"],"microphone":["s"],"microphone-lines":["s"],"microphone-lines-slash":["s"],"microphone-slash":["s"],"microscope":["s"],"microsoft":["b"],"mill-sign":["s"],"minimize":["s"],"minus":["s"],"mitten":["s"],"mix":["b"],"mixcloud":["b"],"mixer":["b"],"mizuni":["b"],"mobile":["s"],"mobile-button":["s"],"mobile-retro":["s"],"mobile-screen":["s"],"mobile-screen-button":["s"],"modx":["b"],"monero":["b"],"money-bill":["s"],"money-bill-1":["s","r"],"money-bill-1-wave":["s"],"money-bill-transfer":["s"],"money-bill-trend-up":["s"],"money-bill-wave":["s"],"money-bill-wheat":["s"],"money-bills":["s"],"money-check":["s"],"money-check-dollar":["s"],"monument":["s"],"moon":["s","r"],"mortar-pestle":["s"],"mosque":["s"],"mosquito":["s"],"mosquito-net":["s"],"motorcycle":["s"],"mound":["s"],"mountain":["s"],"mountain-city":["s"],"mountain-sun":["s"],"mug-hot":["s"],"mug-saucer":["s"],"music":["s"],"n":["s"],"naira-sign":["s"],"napster":["b"],"neos":["b"],"network-wired":["s"],"neuter":["s"],"newspaper":["s","r"],"nfc-directional":["b"],"nfc-symbol":["b"],"nimblr":["b"],"node":["b"],"node-js":["b"],"not-equal":["s"],"note-sticky":["s","r"],"notes-medical":["s"],"npm":["b"],"ns8":["b"],"nutritionix":["b"],"o":["s"],"object-group":["s","r"],"object-ungroup":["s","r"],"octopus-deploy":["b"],"odnoklassniki":["b"],"odnoklassniki-square":["b"],"oil-can":["s"],"oil-well":["s"],"old-republic":["b"],"om":["s"],"opencart":["b"],"openid":["b"],"opera":["b"],"optin-monster":["b"],"orcid":["b"],"osi":["b"],"otter":["s"],"outdent":["s"],"p":["s"],"padlet":["b"],"page4":["b"],"pagelines":["b"],"pager":["s"],"paint-roller":["s"],"paintbrush":["s"],"palette":["s"],"palfed":["b"],"pallet":["s"],"panorama":["s"],"paper-plane":["s","r"],"paperclip":["s"],"parachute-box":["s"],"paragraph":["s"],"passport":["s"],"paste":["s","r"],"patreon":["b"],"pause":["s"],"paw":["s"],"paypal":["b"],"peace":["s"],"pen":["s"],"pen-clip":["s"],"pen-fancy":["s"],"pen-nib":["s"],"pen-ruler":["s"],"pen-to-square":["s","r"],"pencil":["s"],"people-arrows-left-right":["s"],"people-carry-box":["s"],"people-group":["s"],"people-line":["s"],"people-pulling":["s"],"people-robbery":["s"],"people-roof":["s"],"pepper-hot":["s"],"perbyte":["b"],"percent":["s"],"periscope":["b"],"person":["s"],"person-arrow-down-to-line":["s"],"person-arrow-up-from-line":["s"],"person-biking":["s"],"person-booth":["s"],"person-breastfeeding":["s"],"person-burst":["s"],"person-cane":["s"],"person-chalkboard":["s"],"person-circle-check":["s"],"person-circle-exclamation":["s"],"person-circle-minus":["s"],"person-circle-plus":["s"],"person-circle-question":["s"],"person-circle-xmark":["s"],"person-digging":["s"],"person-dots-from-line":["s"],"person-dress":["s"],"person-dress-burst":["s"],"person-drowning":["s"],"person-falling":["s"],"person-falling-burst":["s"],"person-half-dress":["s"],"person-harassing":["s"],"person-hiking":["s"],"person-military-pointing":["s"],"person-military-rifle":["s"],"person-military-to-person":["s"],"person-praying":["s"],"person-pregnant":["s"],"person-rays":["s"],"person-rifle":["s"],"person-running":["s"],"person-shelter":["s"],"person-skating":["s"],"person-skiing":["s"],"person-skiing-nordic":["s"],"person-snowboarding":["s"],"person-swimming":["s"],"person-through-window":["s"],"person-walking":["s"],"person-walking-arrow-loop-left":["s"],"person-walking-arrow-right":["s"],"person-walking-dashed-line-arrow-right":["s"],"person-walking-luggage":["s"],"person-walking-with-cane":["s"],"peseta-sign":["s"],"peso-sign":["s"],"phabricator":["b"],"phoenix-framework":["b"],"phoenix-squadron":["b"],"phone":["s"],"phone-flip":["s"],"phone-slash":["s"],"phone-volume":["s"],"photo-film":["s"],"php":["b"],"pied-piper":["b"],"pied-piper-alt":["b"],"pied-piper-hat":["b"],"pied-piper-pp":["b"],"pied-piper-square":["b"],"piggy-bank":["s"],"pills":["s"],"pinterest":["b"],"pinterest-p":["b"],"pinterest-square":["b"],"pix":["b"],"pizza-slice":["s"],"place-of-worship":["s"],"plane":["s"],"plane-arrival":["s"],"plane-circle-check":["s"],"plane-circle-exclamation":["s"],"plane-circle-xmark":["s"],"plane-departure":["s"],"plane-lock":["s"],"plane-slash":["s"],"plane-up":["s"],"plant-wilt":["s"],"plate-wheat":["s"],"play":["s"],"playstation":["b"],"plug":["s"],"plug-circle-bolt":["s"],"plug-circle-check":["s"],"plug-circle-exclamation":["s"],"plug-circle-minus":["s"],"plug-circle-plus":["s"],"plug-circle-xmark":["s"],"plus":["s"],"plus-minus":["s"],"podcast":["s"],"poo":["s"],"poo-storm":["s"],"poop":["s"],"power-off":["s"],"prescription":["s"],"prescription-bottle":["s"],"prescription-bottle-medical":["s"],"print":["s"],"product-hunt":["b"],"pump-medical":["s"],"pump-soap":["s"],"pushed":["b"],"puzzle-piece":["s"],"python":["b"],"q":["s"],"qq":["b"],"qrcode":["s"],"question":["s"],"quinscape":["b"],"quora":["b"],"quote-left":["s"],"quote-right":["s"],"r":["s"],"r-project":["b"],"radiation":["s"],"radio":["s"],"rainbow":["s"],"ranking-star":["s"],"raspberry-pi":["b"],"ravelry":["b"],"react":["b"],"reacteurope":["b"],"readme":["b"],"rebel":["b"],"receipt":["s"],"record-vinyl":["s"],"rectangle-ad":["s"],"rectangle-list":["s","r"],"rectangle-xmark":["s","r"],"recycle":["s"],"red-river":["b"],"reddit":["b"],"reddit-alien":["b"],"reddit-square":["b"],"redhat":["b"],"registered":["s","r"],"renren":["b"],"repeat":["s"],"reply":["s"],"reply-all":["s"],"replyd":["b"],"republican":["s"],"researchgate":["b"],"resolving":["b"],"restroom":["s"],"retweet":["s"],"rev":["b"],"ribbon":["s"],"right-from-bracket":["s"],"right-left":["s"],"right-long":["s"],"right-to-bracket":["s"],"ring":["s"],"road":["s"],"road-barrier":["s"],"road-bridge":["s"],"road-circle-check":["s"],"road-circle-exclamation":["s"],"road-circle-xmark":["s"],"road-lock":["s"],"road-spikes":["s"],"robot":["s"],"rocket":["s"],"rocketchat":["b"],"rockrms":["b"],"rotate":["s"],"rotate-left":["s"],"rotate-right":["s"],"route":["s"],"rss":["s"],"ruble-sign":["s"],"rug":["s"],"ruler":["s"],"ruler-combined":["s"],"ruler-horizontal":["s"],"ruler-vertical":["s"],"rupee-sign":["s"],"rupiah-sign":["s"],"rust":["b"],"s":["s"],"sack-dollar":["s"],"sack-xmark":["s"],"safari":["b"],"sailboat":["s"],"salesforce":["b"],"sass":["b"],"satellite":["s"],"satellite-dish":["s"],"scale-balanced":["s"],"scale-unbalanced":["s"],"scale-unbalanced-flip":["s"],"schlix":["b"],"school":["s"],"school-circle-check":["s"],"school-circle-exclamation":["s"],"school-circle-xmark":["s"],"school-flag":["s"],"school-lock":["s"],"scissors":["s"],"screenpal":["b"],"screwdriver":["s"],"screwdriver-wrench":["s"],"scribd":["b"],"scroll":["s"],"scroll-torah":["s"],"sd-card":["s"],"searchengin":["b"],"section":["s"],"seedling":["s"],"sellcast":["b"],"sellsy":["b"],"server":["s"],"servicestack":["b"],"shapes":["s"],"share":["s"],"share-from-square":["s","r"],"share-nodes":["s"],"sheet-plastic":["s"],"shekel-sign":["s"],"shield":["s"],"shield-cat":["s"],"shield-dog":["s"],"shield-halved":["s"],"shield-heart":["s"],"shield-virus":["s"],"ship":["s"],"shirt":["s"],"shirtsinbulk":["b"],"shoe-prints":["s"],"shop":["s"],"shop-lock":["s"],"shop-slash":["s"],"shopify":["b"],"shopware":["b"],"shower":["s"],"shrimp":["s"],"shuffle":["s"],"shuttle-space":["s"],"sign-hanging":["s"],"signal":["s"],"signature":["s"],"signs-post":["s"],"sim-card":["s"],"simplybuilt":["b"],"sink":["s"],"sistrix":["b"],"sitemap":["s"],"sith":["b"],"sitrox":["b"],"sketch":["b"],"skull":["s"],"skull-crossbones":["s"],"skyatlas":["b"],"skype":["b"],"slack":["b"],"slash":["s"],"sleigh":["s"],"sliders":["s"],"slideshare":["b"],"smog":["s"],"smoking":["s"],"snapchat":["b"],"snapchat-square":["b"],"snowflake":["s","r"],"snowman":["s"],"snowplow":["s"],"soap":["s"],"socks":["s"],"solar-panel":["s"],"sort":["s"],"sort-down":["s"],"sort-up":["s"],"soundcloud":["b"],"sourcetree":["b"],"spa":["s"],"spaghetti-monster-flying":["s"],"speakap":["b"],"speaker-deck":["b"],"spell-check":["s"],"spider":["s"],"spinner":["s"],"splotch":["s"],"spoon":["s"],"spotify":["b"],"spray-can":["s"],"spray-can-sparkles":["s"],"square":["s","r"],"square-arrow-up-right":["s"],"square-caret-down":["s","r"],"square-caret-left":["s","r"],"square-caret-right":["s","r"],"square-caret-up":["s","r"],"square-check":["s","r"],"square-envelope":["s"],"square-font-awesome":["b"],"square-font-awesome-stroke":["b"],"square-full":["s","r"],"square-h":["s"],"square-minus":["s","r"],"square-nfi":["s"],"square-parking":["s"],"square-pen":["s"],"square-person-confined":["s"],"square-phone":["s"],"square-phone-flip":["s"],"square-plus":["s","r"],"square-poll-horizontal":["s"],"square-poll-vertical":["s"],"square-root-variable":["s"],"square-rss":["s"],"square-share-nodes":["s"],"square-up-right":["s"],"square-virus":["s"],"square-xmark":["s"],"squarespace":["b"],"stack-exchange":["b"],"stack-overflow":["b"],"stackpath":["b"],"staff-aesculapius":["s"],"stairs":["s"],"stamp":["s"],"star":["s","r"],"star-and-crescent":["s"],"star-half":["s","r"],"star-half-stroke":["s","r"],"star-of-david":["s"],"star-of-life":["s"],"staylinked":["b"],"steam":["b"],"steam-square":["b"],"steam-symbol":["b"],"sterling-sign":["s"],"stethoscope":["s"],"sticker-mule":["b"],"stop":["s"],"stopwatch":["s"],"stopwatch-20":["s"],"store":["s"],"store-slash":["s"],"strava":["b"],"street-view":["s"],"strikethrough":["s"],"stripe":["b"],"stripe-s":["b"],"stroopwafel":["s"],"studiovinari":["b"],"stumbleupon":["b"],"stumbleupon-circle":["b"],"subscript":["s"],"suitcase":["s"],"suitcase-medical":["s"],"suitcase-rolling":["s"],"sun":["s","r"],"sun-plant-wilt":["s"],"superpowers":["b"],"superscript":["s"],"supple":["b"],"suse":["b"],"swatchbook":["s"],"swift":["b"],"symfony":["b"],"synagogue":["s"],"syringe":["s"],"t":["s"],"table":["s"],"table-cells":["s"],"table-cells-large":["s"],"table-columns":["s"],"table-list":["s"],"table-tennis-paddle-ball":["s"],"tablet":["s"],"tablet-button":["s"],"tablet-screen-button":["s"],"tablets":["s"],"tachograph-digital":["s"],"tag":["s"],"tags":["s"],"tape":["s"],"tarp":["s"],"tarp-droplet":["s"],"taxi":["s"],"teamspeak":["b"],"teeth":["s"],"teeth-open":["s"],"telegram":["b"],"temperature-arrow-down":["s"],"temperature-arrow-up":["s"],"temperature-empty":["s"],"temperature-full":["s"],"temperature-half":["s"],"temperature-high":["s"],"temperature-low":["s"],"temperature-quarter":["s"],"temperature-three-quarters":["s"],"tencent-weibo":["b"],"tenge-sign":["s"],"tent":["s"],"tent-arrow-down-to-line":["s"],"tent-arrow-left-right":["s"],"tent-arrow-turn-left":["s"],"tent-arrows-down":["s"],"tents":["s"],"terminal":["s"],"text-height":["s"],"text-slash":["s"],"text-width":["s"],"the-red-yeti":["b"],"themeco":["b"],"themeisle":["b"],"thermometer":["s"],"think-peaks":["b"],"thumbs-down":["s","r"],"thumbs-up":["s","r"],"thumbtack":["s"],"ticket":["s"],"ticket-simple":["s"],"tiktok":["b"],"timeline":["s"],"toggle-off":["s"],"toggle-on":["s"],"toilet":["s"],"toilet-paper":["s"],"toilet-paper-slash":["s"],"toilet-portable":["s"],"toilets-portable":["s"],"toolbox":["s"],"tooth":["s"],"torii-gate":["s"],"tornado":["s"],"tower-broadcast":["s"],"tower-cell":["s"],"tower-observation":["s"],"tractor":["s"],"trade-federation":["b"],"trademark":["s"],"traffic-light":["s"],"trailer":["s"],"train":["s"],"train-subway":["s"],"train-tram":["s"],"transgender":["s"],"trash":["s"],"trash-arrow-up":["s"],"trash-can":["s","r"],"trash-can-arrow-up":["s"],"tree":["s"],"tree-city":["s"],"trello":["b"],"triangle-exclamation":["s"],"trophy":["s"],"trowel":["s"],"trowel-bricks":["s"],"truck":["s"],"truck-arrow-right":["s"],"truck-droplet":["s"],"truck-fast":["s"],"truck-field":["s"],"truck-field-un":["s"],"truck-front":["s"],"truck-medical":["s"],"truck-monster":["s"],"truck-moving":["s"],"truck-pickup":["s"],"truck-plane":["s"],"truck-ramp-box":["s"],"tty":["s"],"tumblr":["b"],"tumblr-square":["b"],"turkish-lira-sign":["s"],"turn-down":["s"],"turn-up":["s"],"tv":["s"],"twitch":["b"],"twitter":["b"],"twitter-square":["b"],"typo3":["b"],"u":["s"],"uber":["b"],"ubuntu":["b"],"uikit":["b"],"umbraco":["b"],"umbrella":["s"],"umbrella-beach":["s"],"uncharted":["b"],"underline":["s"],"uniregistry":["b"],"unity":["b"],"universal-access":["s"],"unlock":["s"],"unlock-keyhole":["s"],"unsplash":["b"],"untappd":["b"],"up-down":["s"],"up-down-left-right":["s"],"up-long":["s"],"up-right-and-down-left-from-center":["s"],"up-right-from-square":["s"],"upload":["s"],"ups":["b"],"usb":["b"],"user":["s","r"],"user-astronaut":["s"],"user-check":["s"],"user-clock":["s"],"user-doctor":["s"],"user-gear":["s"],"user-graduate":["s"],"user-group":["s"],"user-injured":["s"],"user-large":["s"],"user-large-slash":["s"],"user-lock":["s"],"user-minus":["s"],"user-ninja":["s"],"user-nurse":["s"],"user-pen":["s"],"user-plus":["s"],"user-secret":["s"],"user-shield":["s"],"user-slash":["s"],"user-tag":["s"],"user-tie":["s"],"user-xmark":["s"],"users":["s"],"users-between-lines":["s"],"users-gear":["s"],"users-line":["s"],"users-rays":["s"],"users-rectangle":["s"],"users-slash":["s"],"users-viewfinder":["s"],"usps":["b"],"ussunnah":["b"],"utensils":["s"],"v":["s"],"vaadin":["b"],"van-shuttle":["s"],"vault":["s"],"vector-square":["s"],"venus":["s"],"venus-double":["s"],"venus-mars":["s"],"vest":["s"],"vest-patches":["s"],"viacoin":["b"],"viadeo":["b"],"viadeo-square":["b"],"vial":["s"],"vial-circle-check":["s"],"vial-virus":["s"],"vials":["s"],"viber":["b"],"video":["s"],"video-slash":["s"],"vihara":["s"],"vimeo":["b"],"vimeo-square":["b"],"vimeo-v":["b"],"vine":["b"],"virus":["s"],"virus-covid":["s"],"virus-covid-slash":["s"],"virus-slash":["s"],"viruses":["s"],"vk":["b"],"vnv":["b"],"voicemail":["s"],"volcano":["s"],"volleyball":["s"],"volume-high":["s"],"volume-low":["s"],"volume-off":["s"],"volume-xmark":["s"],"vr-cardboard":["s"],"vuejs":["b"],"w":["s"],"walkie-talkie":["s"],"wallet":["s"],"wand-magic":["s"],"wand-magic-sparkles":["s"],"wand-sparkles":["s"],"warehouse":["s"],"watchman-monitoring":["b"],"water":["s"],"water-ladder":["s"],"wave-square":["s"],"waze":["b"],"weebly":["b"],"weibo":["b"],"weight-hanging":["s"],"weight-scale":["s"],"weixin":["b"],"whatsapp":["b"],"whatsapp-square":["b"],"wheat-awn":["s"],"wheat-awn-circle-exclamation":["s"],"wheelchair":["s"],"wheelchair-move":["s"],"whiskey-glass":["s"],"whmcs":["b"],"wifi":["s"],"wikipedia-w":["b"],"wind":["s"],"window-maximize":["s","r"],"window-minimize":["s","r"],"window-restore":["s","r"],"windows":["b"],"wine-bottle":["s"],"wine-glass":["s"],"wine-glass-empty":["s"],"wirsindhandwerk":["b"],"wix":["b"],"wizards-of-the-coast":["b"],"wodu":["b"],"wolf-pack-battalion":["b"],"won-sign":["s"],"wordpress":["b"],"wordpress-simple":["b"],"worm":["s"],"wpbeginner":["b"],"wpexplorer":["b"],"wpforms":["b"],"wpressr":["b"],"wrench":["s"],"x":["s"],"x-ray":["s"],"xbox":["b"],"xing":["b"],"xing-square":["b"],"xmark":["s"],"xmarks-lines":["s"],"y":["s"],"y-combinator":["b"],"yahoo":["b"],"yammer":["b"],"yandex":["b"],"yandex-international":["b"],"yarn":["b"],"yelp":["b"],"yen-sign":["s"],"yin-yang":["s"],"yoast":["b"],"youtube":["b"],"youtube-square":["b"],"z":["s"],"zhihu":["b"]}
\ No newline at end of file
+{"0":["s"],"1":["s"],"2":["s"],"3":["s"],"4":["s"],"5":["s"],"6":["s"],"7":["s"],"8":["s"],"9":["s"],"42-group":["b"],"500px":["b"],"a":["s"],"accessible-icon":["b"],"accusoft":["b"],"address-book":["s","r"],"address-card":["s","r"],"adn":["b"],"adversal":["b"],"affiliatetheme":["b"],"airbnb":["b"],"algolia":["b"],"align-center":["s"],"align-justify":["s"],"align-left":["s"],"align-right":["s"],"alipay":["b"],"amazon":["b"],"amazon-pay":["b"],"amilia":["b"],"anchor":["s"],"anchor-circle-check":["s"],"anchor-circle-exclamation":["s"],"anchor-circle-xmark":["s"],"anchor-lock":["s"],"android":["b"],"angellist":["b"],"angle-down":["s"],"angle-left":["s"],"angle-right":["s"],"angle-up":["s"],"angles-down":["s"],"angles-left":["s"],"angles-right":["s"],"angles-up":["s"],"angrycreative":["b"],"angular":["b"],"ankh":["s"],"app-store":["b"],"app-store-ios":["b"],"apper":["b"],"apple":["b"],"apple-pay":["b"],"apple-whole":["s"],"archway":["s"],"arrow-down":["s"],"arrow-down-1-9":["s"],"arrow-down-9-1":["s"],"arrow-down-a-z":["s"],"arrow-down-long":["s"],"arrow-down-short-wide":["s"],"arrow-down-up-across-line":["s"],"arrow-down-up-lock":["s"],"arrow-down-wide-short":["s"],"arrow-down-z-a":["s"],"arrow-left":["s"],"arrow-left-long":["s"],"arrow-pointer":["s"],"arrow-right":["s"],"arrow-right-arrow-left":["s"],"arrow-right-from-bracket":["s"],"arrow-right-long":["s"],"arrow-right-to-bracket":["s"],"arrow-right-to-city":["s"],"arrow-rotate-left":["s"],"arrow-rotate-right":["s"],"arrow-trend-down":["s"],"arrow-trend-up":["s"],"arrow-turn-down":["s"],"arrow-turn-up":["s"],"arrow-up":["s"],"arrow-up-1-9":["s"],"arrow-up-9-1":["s"],"arrow-up-a-z":["s"],"arrow-up-from-bracket":["s"],"arrow-up-from-ground-water":["s"],"arrow-up-from-water-pump":["s"],"arrow-up-long":["s"],"arrow-up-right-dots":["s"],"arrow-up-right-from-square":["s"],"arrow-up-short-wide":["s"],"arrow-up-wide-short":["s"],"arrow-up-z-a":["s"],"arrows-down-to-line":["s"],"arrows-down-to-people":["s"],"arrows-left-right":["s"],"arrows-left-right-to-line":["s"],"arrows-rotate":["s"],"arrows-spin":["s"],"arrows-split-up-and-left":["s"],"arrows-to-circle":["s"],"arrows-to-dot":["s"],"arrows-to-eye":["s"],"arrows-turn-right":["s"],"arrows-turn-to-dots":["s"],"arrows-up-down":["s"],"arrows-up-down-left-right":["s"],"arrows-up-to-line":["s"],"artstation":["b"],"asterisk":["s"],"asymmetrik":["b"],"at":["s"],"atlassian":["b"],"atom":["s"],"audible":["b"],"audio-description":["s"],"austral-sign":["s"],"autoprefixer":["b"],"avianex":["b"],"aviato":["b"],"award":["s"],"aws":["b"],"b":["s"],"baby":["s"],"baby-carriage":["s"],"backward":["s"],"backward-fast":["s"],"backward-step":["s"],"bacon":["s"],"bacteria":["s"],"bacterium":["s"],"bag-shopping":["s"],"bahai":["s"],"baht-sign":["s"],"ban":["s"],"ban-smoking":["s"],"bandage":["s"],"bandcamp":["b"],"barcode":["s"],"bars":["s"],"bars-progress":["s"],"bars-staggered":["s"],"baseball":["s"],"baseball-bat-ball":["s"],"basket-shopping":["s"],"basketball":["s"],"bath":["s"],"battery-empty":["s"],"battery-full":["s"],"battery-half":["s"],"battery-quarter":["s"],"battery-three-quarters":["s"],"battle-net":["b"],"bed":["s"],"bed-pulse":["s"],"beer-mug-empty":["s"],"behance":["b"],"bell":["s","r"],"bell-concierge":["s"],"bell-slash":["s","r"],"bezier-curve":["s"],"bicycle":["s"],"bilibili":["b"],"bimobject":["b"],"binoculars":["s"],"biohazard":["s"],"bitbucket":["b"],"bitcoin":["b"],"bitcoin-sign":["s"],"bity":["b"],"black-tie":["b"],"blackberry":["b"],"blender":["s"],"blender-phone":["s"],"blog":["s"],"blogger":["b"],"blogger-b":["b"],"bluetooth":["b"],"bluetooth-b":["b"],"bold":["s"],"bolt":["s"],"bolt-lightning":["s"],"bomb":["s"],"bone":["s"],"bong":["s"],"book":["s"],"book-atlas":["s"],"book-bible":["s"],"book-bookmark":["s"],"book-journal-whills":["s"],"book-medical":["s"],"book-open":["s"],"book-open-reader":["s"],"book-quran":["s"],"book-skull":["s"],"book-tanakh":["s"],"bookmark":["s","r"],"bootstrap":["b"],"border-all":["s"],"border-none":["s"],"border-top-left":["s"],"bore-hole":["s"],"bots":["b"],"bottle-droplet":["s"],"bottle-water":["s"],"bowl-food":["s"],"bowl-rice":["s"],"bowling-ball":["s"],"box":["s"],"box-archive":["s"],"box-open":["s"],"box-tissue":["s"],"boxes-packing":["s"],"boxes-stacked":["s"],"braille":["s"],"brain":["s"],"brazilian-real-sign":["s"],"bread-slice":["s"],"bridge":["s"],"bridge-circle-check":["s"],"bridge-circle-exclamation":["s"],"bridge-circle-xmark":["s"],"bridge-lock":["s"],"bridge-water":["s"],"briefcase":["s"],"briefcase-medical":["s"],"broom":["s"],"broom-ball":["s"],"brush":["s"],"btc":["b"],"bucket":["s"],"buffer":["b"],"bug":["s"],"bug-slash":["s"],"bugs":["s"],"building":["s","r"],"building-circle-arrow-right":["s"],"building-circle-check":["s"],"building-circle-exclamation":["s"],"building-circle-xmark":["s"],"building-columns":["s"],"building-flag":["s"],"building-lock":["s"],"building-ngo":["s"],"building-shield":["s"],"building-un":["s"],"building-user":["s"],"building-wheat":["s"],"bullhorn":["s"],"bullseye":["s"],"burger":["s"],"buromobelexperte":["b"],"burst":["s"],"bus":["s"],"bus-simple":["s"],"business-time":["s"],"buy-n-large":["b"],"buysellads":["b"],"c":["s"],"cable-car":["s"],"cake-candles":["s"],"calculator":["s"],"calendar":["s","r"],"calendar-check":["s","r"],"calendar-day":["s"],"calendar-days":["s","r"],"calendar-minus":["s","r"],"calendar-plus":["s","r"],"calendar-week":["s"],"calendar-xmark":["s","r"],"camera":["s"],"camera-retro":["s"],"camera-rotate":["s"],"campground":["s"],"canadian-maple-leaf":["b"],"candy-cane":["s"],"cannabis":["s"],"capsules":["s"],"car":["s"],"car-battery":["s"],"car-burst":["s"],"car-on":["s"],"car-rear":["s"],"car-side":["s"],"car-tunnel":["s"],"caravan":["s"],"caret-down":["s"],"caret-left":["s"],"caret-right":["s"],"caret-up":["s"],"carrot":["s"],"cart-arrow-down":["s"],"cart-flatbed":["s"],"cart-flatbed-suitcase":["s"],"cart-plus":["s"],"cart-shopping":["s"],"cash-register":["s"],"cat":["s"],"cc-amazon-pay":["b"],"cc-amex":["b"],"cc-apple-pay":["b"],"cc-diners-club":["b"],"cc-discover":["b"],"cc-jcb":["b"],"cc-mastercard":["b"],"cc-paypal":["b"],"cc-stripe":["b"],"cc-visa":["b"],"cedi-sign":["s"],"cent-sign":["s"],"centercode":["b"],"centos":["b"],"certificate":["s"],"chair":["s"],"chalkboard":["s"],"chalkboard-user":["s"],"champagne-glasses":["s"],"charging-station":["s"],"chart-area":["s"],"chart-bar":["s","r"],"chart-column":["s"],"chart-gantt":["s"],"chart-line":["s"],"chart-pie":["s"],"chart-simple":["s"],"check":["s"],"check-double":["s"],"check-to-slot":["s"],"cheese":["s"],"chess":["s"],"chess-bishop":["s","r"],"chess-board":["s"],"chess-king":["s","r"],"chess-knight":["s","r"],"chess-pawn":["s","r"],"chess-queen":["s","r"],"chess-rook":["s","r"],"chevron-down":["s"],"chevron-left":["s"],"chevron-right":["s"],"chevron-up":["s"],"child":["s"],"child-dress":["s"],"child-reaching":["s"],"child-rifle":["s"],"children":["s"],"chrome":["b"],"chromecast":["b"],"church":["s"],"circle":["s","r"],"circle-arrow-down":["s"],"circle-arrow-left":["s"],"circle-arrow-right":["s"],"circle-arrow-up":["s"],"circle-check":["s","r"],"circle-chevron-down":["s"],"circle-chevron-left":["s"],"circle-chevron-right":["s"],"circle-chevron-up":["s"],"circle-dollar-to-slot":["s"],"circle-dot":["s","r"],"circle-down":["s","r"],"circle-exclamation":["s"],"circle-h":["s"],"circle-half-stroke":["s"],"circle-info":["s"],"circle-left":["s","r"],"circle-minus":["s"],"circle-nodes":["s"],"circle-notch":["s"],"circle-pause":["s","r"],"circle-play":["s","r"],"circle-plus":["s"],"circle-question":["s","r"],"circle-radiation":["s"],"circle-right":["s","r"],"circle-stop":["s","r"],"circle-up":["s","r"],"circle-user":["s","r"],"circle-xmark":["s","r"],"city":["s"],"clapperboard":["s"],"clipboard":["s","r"],"clipboard-check":["s"],"clipboard-list":["s"],"clipboard-question":["s"],"clipboard-user":["s"],"clock":["s","r"],"clock-rotate-left":["s"],"clone":["s","r"],"closed-captioning":["s","r"],"cloud":["s"],"cloud-arrow-down":["s"],"cloud-arrow-up":["s"],"cloud-bolt":["s"],"cloud-meatball":["s"],"cloud-moon":["s"],"cloud-moon-rain":["s"],"cloud-rain":["s"],"cloud-showers-heavy":["s"],"cloud-showers-water":["s"],"cloud-sun":["s"],"cloud-sun-rain":["s"],"cloudflare":["b"],"cloudscale":["b"],"cloudsmith":["b"],"cloudversify":["b"],"clover":["s"],"cmplid":["b"],"code":["s"],"code-branch":["s"],"code-commit":["s"],"code-compare":["s"],"code-fork":["s"],"code-merge":["s"],"code-pull-request":["s"],"codepen":["b"],"codiepie":["b"],"coins":["s"],"colon-sign":["s"],"comment":["s","r"],"comment-dollar":["s"],"comment-dots":["s","r"],"comment-medical":["s"],"comment-slash":["s"],"comment-sms":["s"],"comments":["s","r"],"comments-dollar":["s"],"compact-disc":["s"],"compass":["s","r"],"compass-drafting":["s"],"compress":["s"],"computer":["s"],"computer-mouse":["s"],"confluence":["b"],"connectdevelop":["b"],"contao":["b"],"cookie":["s"],"cookie-bite":["s"],"copy":["s","r"],"copyright":["s","r"],"cotton-bureau":["b"],"couch":["s"],"cow":["s"],"cpanel":["b"],"creative-commons":["b"],"creative-commons-by":["b"],"creative-commons-nc":["b"],"creative-commons-nc-eu":["b"],"creative-commons-nc-jp":["b"],"creative-commons-nd":["b"],"creative-commons-pd":["b"],"creative-commons-pd-alt":["b"],"creative-commons-remix":["b"],"creative-commons-sa":["b"],"creative-commons-sampling":["b"],"creative-commons-sampling-plus":["b"],"creative-commons-share":["b"],"creative-commons-zero":["b"],"credit-card":["s","r"],"critical-role":["b"],"crop":["s"],"crop-simple":["s"],"cross":["s"],"crosshairs":["s"],"crow":["s"],"crown":["s"],"crutch":["s"],"cruzeiro-sign":["s"],"css3":["b"],"css3-alt":["b"],"cube":["s"],"cubes":["s"],"cubes-stacked":["s"],"cuttlefish":["b"],"d":["s"],"d-and-d":["b"],"d-and-d-beyond":["b"],"dailymotion":["b"],"dashcube":["b"],"database":["s"],"deezer":["b"],"delete-left":["s"],"delicious":["b"],"democrat":["s"],"deploydog":["b"],"deskpro":["b"],"desktop":["s"],"dev":["b"],"deviantart":["b"],"dharmachakra":["s"],"dhl":["b"],"diagram-next":["s"],"diagram-predecessor":["s"],"diagram-project":["s"],"diagram-successor":["s"],"diamond":["s"],"diamond-turn-right":["s"],"diaspora":["b"],"dice":["s"],"dice-d20":["s"],"dice-d6":["s"],"dice-five":["s"],"dice-four":["s"],"dice-one":["s"],"dice-six":["s"],"dice-three":["s"],"dice-two":["s"],"digg":["b"],"digital-ocean":["b"],"discord":["b"],"discourse":["b"],"disease":["s"],"display":["s"],"divide":["s"],"dna":["s"],"dochub":["b"],"docker":["b"],"dog":["s"],"dollar-sign":["s"],"dolly":["s"],"dong-sign":["s"],"door-closed":["s"],"door-open":["s"],"dove":["s"],"down-left-and-up-right-to-center":["s"],"down-long":["s"],"download":["s"],"draft2digital":["b"],"dragon":["s"],"draw-polygon":["s"],"dribbble":["b"],"dropbox":["b"],"droplet":["s"],"droplet-slash":["s"],"drum":["s"],"drum-steelpan":["s"],"drumstick-bite":["s"],"drupal":["b"],"dumbbell":["s"],"dumpster":["s"],"dumpster-fire":["s"],"dungeon":["s"],"dyalog":["b"],"e":["s"],"ear-deaf":["s"],"ear-listen":["s"],"earlybirds":["b"],"earth-africa":["s"],"earth-americas":["s"],"earth-asia":["s"],"earth-europe":["s"],"earth-oceania":["s"],"ebay":["b"],"edge":["b"],"edge-legacy":["b"],"egg":["s"],"eject":["s"],"elementor":["b"],"elevator":["s"],"ellipsis":["s"],"ellipsis-vertical":["s"],"ello":["b"],"ember":["b"],"empire":["b"],"envelope":["s","r"],"envelope-circle-check":["s"],"envelope-open":["s","r"],"envelope-open-text":["s"],"envelopes-bulk":["s"],"envira":["b"],"equals":["s"],"eraser":["s"],"erlang":["b"],"ethereum":["b"],"ethernet":["s"],"etsy":["b"],"euro-sign":["s"],"evernote":["b"],"exclamation":["s"],"expand":["s"],"expeditedssl":["b"],"explosion":["s"],"eye":["s","r"],"eye-dropper":["s"],"eye-low-vision":["s"],"eye-slash":["s","r"],"f":["s"],"face-angry":["s","r"],"face-dizzy":["s","r"],"face-flushed":["s","r"],"face-frown":["s","r"],"face-frown-open":["s","r"],"face-grimace":["s","r"],"face-grin":["s","r"],"face-grin-beam":["s","r"],"face-grin-beam-sweat":["s","r"],"face-grin-hearts":["s","r"],"face-grin-squint":["s","r"],"face-grin-squint-tears":["s","r"],"face-grin-stars":["s","r"],"face-grin-tears":["s","r"],"face-grin-tongue":["s","r"],"face-grin-tongue-squint":["s","r"],"face-grin-tongue-wink":["s","r"],"face-grin-wide":["s","r"],"face-grin-wink":["s","r"],"face-kiss":["s","r"],"face-kiss-beam":["s","r"],"face-kiss-wink-heart":["s","r"],"face-laugh":["s","r"],"face-laugh-beam":["s","r"],"face-laugh-squint":["s","r"],"face-laugh-wink":["s","r"],"face-meh":["s","r"],"face-meh-blank":["s","r"],"face-rolling-eyes":["s","r"],"face-sad-cry":["s","r"],"face-sad-tear":["s","r"],"face-smile":["s","r"],"face-smile-beam":["s","r"],"face-smile-wink":["s","r"],"face-surprise":["s","r"],"face-tired":["s","r"],"facebook":["b"],"facebook-f":["b"],"facebook-messenger":["b"],"fan":["s"],"fantasy-flight-games":["b"],"faucet":["s"],"faucet-drip":["s"],"fax":["s"],"feather":["s"],"feather-pointed":["s"],"fedex":["b"],"fedora":["b"],"ferry":["s"],"figma":["b"],"file":["s","r"],"file-arrow-down":["s"],"file-arrow-up":["s"],"file-audio":["s","r"],"file-circle-check":["s"],"file-circle-exclamation":["s"],"file-circle-minus":["s"],"file-circle-plus":["s"],"file-circle-question":["s"],"file-circle-xmark":["s"],"file-code":["s","r"],"file-contract":["s"],"file-csv":["s"],"file-excel":["s","r"],"file-export":["s"],"file-image":["s","r"],"file-import":["s"],"file-invoice":["s"],"file-invoice-dollar":["s"],"file-lines":["s","r"],"file-medical":["s"],"file-pdf":["s","r"],"file-pen":["s"],"file-powerpoint":["s","r"],"file-prescription":["s"],"file-shield":["s"],"file-signature":["s"],"file-video":["s","r"],"file-waveform":["s"],"file-word":["s","r"],"file-zipper":["s","r"],"fill":["s"],"fill-drip":["s"],"film":["s"],"filter":["s"],"filter-circle-dollar":["s"],"filter-circle-xmark":["s"],"fingerprint":["s"],"fire":["s"],"fire-burner":["s"],"fire-extinguisher":["s"],"fire-flame-curved":["s"],"fire-flame-simple":["s"],"firefox":["b"],"firefox-browser":["b"],"first-order":["b"],"first-order-alt":["b"],"firstdraft":["b"],"fish":["s"],"fish-fins":["s"],"flag":["s","r"],"flag-checkered":["s"],"flag-usa":["s"],"flask":["s"],"flask-vial":["s"],"flickr":["b"],"flipboard":["b"],"floppy-disk":["s","r"],"florin-sign":["s"],"fly":["b"],"folder":["s","r"],"folder-closed":["s","r"],"folder-minus":["s"],"folder-open":["s","r"],"folder-plus":["s"],"folder-tree":["s"],"font":["s"],"font-awesome":["s","r","b"],"fonticons":["b"],"fonticons-fi":["b"],"football":["s"],"fort-awesome":["b"],"fort-awesome-alt":["b"],"forumbee":["b"],"forward":["s"],"forward-fast":["s"],"forward-step":["s"],"foursquare":["b"],"franc-sign":["s"],"free-code-camp":["b"],"freebsd":["b"],"frog":["s"],"fulcrum":["b"],"futbol":["s","r"],"g":["s"],"galactic-republic":["b"],"galactic-senate":["b"],"gamepad":["s"],"gas-pump":["s"],"gauge":["s"],"gauge-high":["s"],"gauge-simple":["s"],"gauge-simple-high":["s"],"gavel":["s"],"gear":["s"],"gears":["s"],"gem":["s","r"],"genderless":["s"],"get-pocket":["b"],"gg":["b"],"gg-circle":["b"],"ghost":["s"],"gift":["s"],"gifts":["s"],"git":["b"],"git-alt":["b"],"github":["b"],"github-alt":["b"],"gitkraken":["b"],"gitlab":["b"],"gitter":["b"],"glass-water":["s"],"glass-water-droplet":["s"],"glasses":["s"],"glide":["b"],"glide-g":["b"],"globe":["s"],"gofore":["b"],"golang":["b"],"golf-ball-tee":["s"],"goodreads":["b"],"goodreads-g":["b"],"google":["b"],"google-drive":["b"],"google-pay":["b"],"google-play":["b"],"google-plus":["b"],"google-plus-g":["b"],"google-wallet":["b"],"gopuram":["s"],"graduation-cap":["s"],"gratipay":["b"],"grav":["b"],"greater-than":["s"],"greater-than-equal":["s"],"grip":["s"],"grip-lines":["s"],"grip-lines-vertical":["s"],"grip-vertical":["s"],"gripfire":["b"],"group-arrows-rotate":["s"],"grunt":["b"],"guarani-sign":["s"],"guilded":["b"],"guitar":["s"],"gulp":["b"],"gun":["s"],"h":["s"],"hacker-news":["b"],"hackerrank":["b"],"hammer":["s"],"hamsa":["s"],"hand":["s","r"],"hand-back-fist":["s","r"],"hand-dots":["s"],"hand-fist":["s"],"hand-holding":["s"],"hand-holding-dollar":["s"],"hand-holding-droplet":["s"],"hand-holding-hand":["s"],"hand-holding-heart":["s"],"hand-holding-medical":["s"],"hand-lizard":["s","r"],"hand-middle-finger":["s"],"hand-peace":["s","r"],"hand-point-down":["s","r"],"hand-point-left":["s","r"],"hand-point-right":["s","r"],"hand-point-up":["s","r"],"hand-pointer":["s","r"],"hand-scissors":["s","r"],"hand-sparkles":["s"],"hand-spock":["s","r"],"handcuffs":["s"],"hands":["s"],"hands-asl-interpreting":["s"],"hands-bound":["s"],"hands-bubbles":["s"],"hands-clapping":["s"],"hands-holding":["s"],"hands-holding-child":["s"],"hands-holding-circle":["s"],"hands-praying":["s"],"handshake":["s","r"],"handshake-angle":["s"],"handshake-simple":["s"],"handshake-simple-slash":["s"],"handshake-slash":["s"],"hanukiah":["s"],"hard-drive":["s","r"],"hashnode":["b"],"hashtag":["s"],"hat-cowboy":["s"],"hat-cowboy-side":["s"],"hat-wizard":["s"],"head-side-cough":["s"],"head-side-cough-slash":["s"],"head-side-mask":["s"],"head-side-virus":["s"],"heading":["s"],"headphones":["s"],"headphones-simple":["s"],"headset":["s"],"heart":["s","r"],"heart-circle-bolt":["s"],"heart-circle-check":["s"],"heart-circle-exclamation":["s"],"heart-circle-minus":["s"],"heart-circle-plus":["s"],"heart-circle-xmark":["s"],"heart-crack":["s"],"heart-pulse":["s"],"helicopter":["s"],"helicopter-symbol":["s"],"helmet-safety":["s"],"helmet-un":["s"],"highlighter":["s"],"hill-avalanche":["s"],"hill-rockslide":["s"],"hippo":["s"],"hips":["b"],"hire-a-helper":["b"],"hive":["b"],"hockey-puck":["s"],"holly-berry":["s"],"hooli":["b"],"hornbill":["b"],"horse":["s"],"horse-head":["s"],"hospital":["s","r"],"hospital-user":["s"],"hot-tub-person":["s"],"hotdog":["s"],"hotel":["s"],"hotjar":["b"],"hourglass":["s","r"],"hourglass-end":["s"],"hourglass-half":["s","r"],"hourglass-start":["s"],"house":["s"],"house-chimney":["s"],"house-chimney-crack":["s"],"house-chimney-medical":["s"],"house-chimney-user":["s"],"house-chimney-window":["s"],"house-circle-check":["s"],"house-circle-exclamation":["s"],"house-circle-xmark":["s"],"house-crack":["s"],"house-fire":["s"],"house-flag":["s"],"house-flood-water":["s"],"house-flood-water-circle-arrow-right":["s"],"house-laptop":["s"],"house-lock":["s"],"house-medical":["s"],"house-medical-circle-check":["s"],"house-medical-circle-exclamation":["s"],"house-medical-circle-xmark":["s"],"house-medical-flag":["s"],"house-signal":["s"],"house-tsunami":["s"],"house-user":["s"],"houzz":["b"],"hryvnia-sign":["s"],"html5":["b"],"hubspot":["b"],"hurricane":["s"],"i":["s"],"i-cursor":["s"],"ice-cream":["s"],"icicles":["s"],"icons":["s"],"id-badge":["s","r"],"id-card":["s","r"],"id-card-clip":["s"],"ideal":["b"],"igloo":["s"],"image":["s","r"],"image-portrait":["s"],"images":["s","r"],"imdb":["b"],"inbox":["s"],"indent":["s"],"indian-rupee-sign":["s"],"industry":["s"],"infinity":["s"],"info":["s"],"instagram":["b"],"instalod":["b"],"intercom":["b"],"internet-explorer":["b"],"invision":["b"],"ioxhost":["b"],"italic":["s"],"itch-io":["b"],"itunes":["b"],"itunes-note":["b"],"j":["s"],"jar":["s"],"jar-wheat":["s"],"java":["b"],"jedi":["s"],"jedi-order":["b"],"jenkins":["b"],"jet-fighter":["s"],"jet-fighter-up":["s"],"jira":["b"],"joget":["b"],"joint":["s"],"joomla":["b"],"js":["b"],"jsfiddle":["b"],"jug-detergent":["s"],"k":["s"],"kaaba":["s"],"kaggle":["b"],"key":["s"],"keybase":["b"],"keyboard":["s","r"],"keycdn":["b"],"khanda":["s"],"kickstarter":["b"],"kickstarter-k":["b"],"kip-sign":["s"],"kit-medical":["s"],"kitchen-set":["s"],"kiwi-bird":["s"],"korvue":["b"],"l":["s"],"land-mine-on":["s"],"landmark":["s"],"landmark-dome":["s"],"landmark-flag":["s"],"language":["s"],"laptop":["s"],"laptop-code":["s"],"laptop-file":["s"],"laptop-medical":["s"],"laravel":["b"],"lari-sign":["s"],"lastfm":["b"],"layer-group":["s"],"leaf":["s"],"leanpub":["b"],"left-long":["s"],"left-right":["s"],"lemon":["s","r"],"less":["b"],"less-than":["s"],"less-than-equal":["s"],"life-ring":["s","r"],"lightbulb":["s","r"],"line":["b"],"lines-leaning":["s"],"link":["s"],"link-slash":["s"],"linkedin":["b"],"linkedin-in":["b"],"linode":["b"],"linux":["b"],"lira-sign":["s"],"list":["s"],"list-check":["s"],"list-ol":["s"],"list-ul":["s"],"litecoin-sign":["s"],"location-arrow":["s"],"location-crosshairs":["s"],"location-dot":["s"],"location-pin":["s"],"location-pin-lock":["s"],"lock":["s"],"lock-open":["s"],"locust":["s"],"lungs":["s"],"lungs-virus":["s"],"lyft":["b"],"m":["s"],"magento":["b"],"magnet":["s"],"magnifying-glass":["s"],"magnifying-glass-arrow-right":["s"],"magnifying-glass-chart":["s"],"magnifying-glass-dollar":["s"],"magnifying-glass-location":["s"],"magnifying-glass-minus":["s"],"magnifying-glass-plus":["s"],"mailchimp":["b"],"manat-sign":["s"],"mandalorian":["b"],"map":["s","r"],"map-location":["s"],"map-location-dot":["s"],"map-pin":["s"],"markdown":["b"],"marker":["s"],"mars":["s"],"mars-and-venus":["s"],"mars-and-venus-burst":["s"],"mars-double":["s"],"mars-stroke":["s"],"mars-stroke-right":["s"],"mars-stroke-up":["s"],"martini-glass":["s"],"martini-glass-citrus":["s"],"martini-glass-empty":["s"],"mask":["s"],"mask-face":["s"],"mask-ventilator":["s"],"masks-theater":["s"],"mastodon":["b"],"mattress-pillow":["s"],"maxcdn":["b"],"maximize":["s"],"mdb":["b"],"medal":["s"],"medapps":["b"],"medium":["b"],"medrt":["b"],"meetup":["b"],"megaport":["b"],"memory":["s"],"mendeley":["b"],"menorah":["s"],"mercury":["s"],"message":["s","r"],"meta":["b"],"meteor":["s"],"microblog":["b"],"microchip":["s"],"microphone":["s"],"microphone-lines":["s"],"microphone-lines-slash":["s"],"microphone-slash":["s"],"microscope":["s"],"microsoft":["b"],"mill-sign":["s"],"minimize":["s"],"minus":["s"],"mitten":["s"],"mix":["b"],"mixcloud":["b"],"mixer":["b"],"mizuni":["b"],"mobile":["s"],"mobile-button":["s"],"mobile-retro":["s"],"mobile-screen":["s"],"mobile-screen-button":["s"],"modx":["b"],"monero":["b"],"money-bill":["s"],"money-bill-1":["s","r"],"money-bill-1-wave":["s"],"money-bill-transfer":["s"],"money-bill-trend-up":["s"],"money-bill-wave":["s"],"money-bill-wheat":["s"],"money-bills":["s"],"money-check":["s"],"money-check-dollar":["s"],"monument":["s"],"moon":["s","r"],"mortar-pestle":["s"],"mosque":["s"],"mosquito":["s"],"mosquito-net":["s"],"motorcycle":["s"],"mound":["s"],"mountain":["s"],"mountain-city":["s"],"mountain-sun":["s"],"mug-hot":["s"],"mug-saucer":["s"],"music":["s"],"n":["s"],"naira-sign":["s"],"napster":["b"],"neos":["b"],"network-wired":["s"],"neuter":["s"],"newspaper":["s","r"],"nfc-directional":["b"],"nfc-symbol":["b"],"nimblr":["b"],"node":["b"],"node-js":["b"],"not-equal":["s"],"note-sticky":["s","r"],"notes-medical":["s"],"npm":["b"],"ns8":["b"],"nutritionix":["b"],"o":["s"],"object-group":["s","r"],"object-ungroup":["s","r"],"octopus-deploy":["b"],"odnoklassniki":["b"],"oil-can":["s"],"oil-well":["s"],"old-republic":["b"],"om":["s"],"opencart":["b"],"openid":["b"],"opera":["b"],"optin-monster":["b"],"orcid":["b"],"osi":["b"],"otter":["s"],"outdent":["s"],"p":["s"],"padlet":["b"],"page4":["b"],"pagelines":["b"],"pager":["s"],"paint-roller":["s"],"paintbrush":["s"],"palette":["s"],"palfed":["b"],"pallet":["s"],"panorama":["s"],"paper-plane":["s","r"],"paperclip":["s"],"parachute-box":["s"],"paragraph":["s"],"passport":["s"],"paste":["s","r"],"patreon":["b"],"pause":["s"],"paw":["s"],"paypal":["b"],"peace":["s"],"pen":["s"],"pen-clip":["s"],"pen-fancy":["s"],"pen-nib":["s"],"pen-ruler":["s"],"pen-to-square":["s","r"],"pencil":["s"],"people-arrows":["s"],"people-carry-box":["s"],"people-group":["s"],"people-line":["s"],"people-pulling":["s"],"people-robbery":["s"],"people-roof":["s"],"pepper-hot":["s"],"perbyte":["b"],"percent":["s"],"periscope":["b"],"person":["s"],"person-arrow-down-to-line":["s"],"person-arrow-up-from-line":["s"],"person-biking":["s"],"person-booth":["s"],"person-breastfeeding":["s"],"person-burst":["s"],"person-cane":["s"],"person-chalkboard":["s"],"person-circle-check":["s"],"person-circle-exclamation":["s"],"person-circle-minus":["s"],"person-circle-plus":["s"],"person-circle-question":["s"],"person-circle-xmark":["s"],"person-digging":["s"],"person-dots-from-line":["s"],"person-dress":["s"],"person-dress-burst":["s"],"person-drowning":["s"],"person-falling":["s"],"person-falling-burst":["s"],"person-half-dress":["s"],"person-harassing":["s"],"person-hiking":["s"],"person-military-pointing":["s"],"person-military-rifle":["s"],"person-military-to-person":["s"],"person-praying":["s"],"person-pregnant":["s"],"person-rays":["s"],"person-rifle":["s"],"person-running":["s"],"person-shelter":["s"],"person-skating":["s"],"person-skiing":["s"],"person-skiing-nordic":["s"],"person-snowboarding":["s"],"person-swimming":["s"],"person-through-window":["s"],"person-walking":["s"],"person-walking-arrow-loop-left":["s"],"person-walking-arrow-right":["s"],"person-walking-dashed-line-arrow-right":["s"],"person-walking-luggage":["s"],"person-walking-with-cane":["s"],"peseta-sign":["s"],"peso-sign":["s"],"phabricator":["b"],"phoenix-framework":["b"],"phoenix-squadron":["b"],"phone":["s"],"phone-flip":["s"],"phone-slash":["s"],"phone-volume":["s"],"photo-film":["s"],"php":["b"],"pied-piper":["b"],"pied-piper-alt":["b"],"pied-piper-hat":["b"],"pied-piper-pp":["b"],"piggy-bank":["s"],"pills":["s"],"pinterest":["b"],"pinterest-p":["b"],"pix":["b"],"pizza-slice":["s"],"place-of-worship":["s"],"plane":["s"],"plane-arrival":["s"],"plane-circle-check":["s"],"plane-circle-exclamation":["s"],"plane-circle-xmark":["s"],"plane-departure":["s"],"plane-lock":["s"],"plane-slash":["s"],"plane-up":["s"],"plant-wilt":["s"],"plate-wheat":["s"],"play":["s"],"playstation":["b"],"plug":["s"],"plug-circle-bolt":["s"],"plug-circle-check":["s"],"plug-circle-exclamation":["s"],"plug-circle-minus":["s"],"plug-circle-plus":["s"],"plug-circle-xmark":["s"],"plus":["s"],"plus-minus":["s"],"podcast":["s"],"poo":["s"],"poo-storm":["s"],"poop":["s"],"power-off":["s"],"prescription":["s"],"prescription-bottle":["s"],"prescription-bottle-medical":["s"],"print":["s"],"product-hunt":["b"],"pump-medical":["s"],"pump-soap":["s"],"pushed":["b"],"puzzle-piece":["s"],"python":["b"],"q":["s"],"qq":["b"],"qrcode":["s"],"question":["s"],"quinscape":["b"],"quora":["b"],"quote-left":["s"],"quote-right":["s"],"r":["s"],"r-project":["b"],"radiation":["s"],"radio":["s"],"rainbow":["s"],"ranking-star":["s"],"raspberry-pi":["b"],"ravelry":["b"],"react":["b"],"reacteurope":["b"],"readme":["b"],"rebel":["b"],"receipt":["s"],"record-vinyl":["s"],"rectangle-ad":["s"],"rectangle-list":["s","r"],"rectangle-xmark":["s","r"],"recycle":["s"],"red-river":["b"],"reddit":["b"],"reddit-alien":["b"],"redhat":["b"],"registered":["s","r"],"renren":["b"],"repeat":["s"],"reply":["s"],"reply-all":["s"],"replyd":["b"],"republican":["s"],"researchgate":["b"],"resolving":["b"],"restroom":["s"],"retweet":["s"],"rev":["b"],"ribbon":["s"],"right-from-bracket":["s"],"right-left":["s"],"right-long":["s"],"right-to-bracket":["s"],"ring":["s"],"road":["s"],"road-barrier":["s"],"road-bridge":["s"],"road-circle-check":["s"],"road-circle-exclamation":["s"],"road-circle-xmark":["s"],"road-lock":["s"],"road-spikes":["s"],"robot":["s"],"rocket":["s"],"rocketchat":["b"],"rockrms":["b"],"rotate":["s"],"rotate-left":["s"],"rotate-right":["s"],"route":["s"],"rss":["s"],"ruble-sign":["s"],"rug":["s"],"ruler":["s"],"ruler-combined":["s"],"ruler-horizontal":["s"],"ruler-vertical":["s"],"rupee-sign":["s"],"rupiah-sign":["s"],"rust":["b"],"s":["s"],"sack-dollar":["s"],"sack-xmark":["s"],"safari":["b"],"sailboat":["s"],"salesforce":["b"],"sass":["b"],"satellite":["s"],"satellite-dish":["s"],"scale-balanced":["s"],"scale-unbalanced":["s"],"scale-unbalanced-flip":["s"],"schlix":["b"],"school":["s"],"school-circle-check":["s"],"school-circle-exclamation":["s"],"school-circle-xmark":["s"],"school-flag":["s"],"school-lock":["s"],"scissors":["s"],"screenpal":["b"],"screwdriver":["s"],"screwdriver-wrench":["s"],"scribd":["b"],"scroll":["s"],"scroll-torah":["s"],"sd-card":["s"],"searchengin":["b"],"section":["s"],"seedling":["s"],"sellcast":["b"],"sellsy":["b"],"server":["s"],"servicestack":["b"],"shapes":["s"],"share":["s"],"share-from-square":["s","r"],"share-nodes":["s"],"sheet-plastic":["s"],"shekel-sign":["s"],"shield":["s"],"shield-cat":["s"],"shield-dog":["s"],"shield-halved":["s"],"shield-heart":["s"],"shield-virus":["s"],"ship":["s"],"shirt":["s"],"shirtsinbulk":["b"],"shoe-prints":["s"],"shop":["s"],"shop-lock":["s"],"shop-slash":["s"],"shopify":["b"],"shopware":["b"],"shower":["s"],"shrimp":["s"],"shuffle":["s"],"shuttle-space":["s"],"sign-hanging":["s"],"signal":["s"],"signature":["s"],"signs-post":["s"],"sim-card":["s"],"simplybuilt":["b"],"sink":["s"],"sistrix":["b"],"sitemap":["s"],"sith":["b"],"sitrox":["b"],"sketch":["b"],"skull":["s"],"skull-crossbones":["s"],"skyatlas":["b"],"skype":["b"],"slack":["b"],"slash":["s"],"sleigh":["s"],"sliders":["s"],"slideshare":["b"],"smog":["s"],"smoking":["s"],"snapchat":["b"],"snowflake":["s","r"],"snowman":["s"],"snowplow":["s"],"soap":["s"],"socks":["s"],"solar-panel":["s"],"sort":["s"],"sort-down":["s"],"sort-up":["s"],"soundcloud":["b"],"sourcetree":["b"],"spa":["s"],"space-awesome":["b"],"spaghetti-monster-flying":["s"],"speakap":["b"],"speaker-deck":["b"],"spell-check":["s"],"spider":["s"],"spinner":["s"],"splotch":["s"],"spoon":["s"],"spotify":["b"],"spray-can":["s"],"spray-can-sparkles":["s"],"square":["s","r"],"square-arrow-up-right":["s"],"square-behance":["b"],"square-caret-down":["s","r"],"square-caret-left":["s","r"],"square-caret-right":["s","r"],"square-caret-up":["s","r"],"square-check":["s","r"],"square-dribbble":["b"],"square-envelope":["s"],"square-facebook":["b"],"square-font-awesome":["b"],"square-font-awesome-stroke":["b"],"square-full":["s","r"],"square-git":["b"],"square-github":["b"],"square-gitlab":["b"],"square-google-plus":["b"],"square-h":["s"],"square-hacker-news":["b"],"square-instagram":["b"],"square-js":["b"],"square-lastfm":["b"],"square-minus":["s","r"],"square-nfi":["s"],"square-odnoklassniki":["b"],"square-parking":["s"],"square-pen":["s"],"square-person-confined":["s"],"square-phone":["s"],"square-phone-flip":["s"],"square-pied-piper":["b"],"square-pinterest":["b"],"square-plus":["s","r"],"square-poll-horizontal":["s"],"square-poll-vertical":["s"],"square-reddit":["b"],"square-root-variable":["s"],"square-rss":["s"],"square-share-nodes":["s"],"square-snapchat":["b"],"square-steam":["b"],"square-tumblr":["b"],"square-twitter":["b"],"square-up-right":["s"],"square-viadeo":["b"],"square-vimeo":["b"],"square-virus":["s"],"square-whatsapp":["b"],"square-xing":["b"],"square-xmark":["s"],"square-youtube":["b"],"squarespace":["b"],"stack-exchange":["b"],"stack-overflow":["b"],"stackpath":["b"],"staff-snake":["s"],"stairs":["s"],"stamp":["s"],"stapler":["s"],"star":["s","r"],"star-and-crescent":["s"],"star-half":["s","r"],"star-half-stroke":["s","r"],"star-of-david":["s"],"star-of-life":["s"],"staylinked":["b"],"steam":["b"],"steam-symbol":["b"],"sterling-sign":["s"],"stethoscope":["s"],"sticker-mule":["b"],"stop":["s"],"stopwatch":["s"],"stopwatch-20":["s"],"store":["s"],"store-slash":["s"],"strava":["b"],"street-view":["s"],"strikethrough":["s"],"stripe":["b"],"stripe-s":["b"],"stroopwafel":["s"],"studiovinari":["b"],"stumbleupon":["b"],"stumbleupon-circle":["b"],"subscript":["s"],"suitcase":["s"],"suitcase-medical":["s"],"suitcase-rolling":["s"],"sun":["s","r"],"sun-plant-wilt":["s"],"superpowers":["b"],"superscript":["s"],"supple":["b"],"suse":["b"],"swatchbook":["s"],"swift":["b"],"symfony":["b"],"synagogue":["s"],"syringe":["s"],"t":["s"],"table":["s"],"table-cells":["s"],"table-cells-large":["s"],"table-columns":["s"],"table-list":["s"],"table-tennis-paddle-ball":["s"],"tablet":["s"],"tablet-button":["s"],"tablet-screen-button":["s"],"tablets":["s"],"tachograph-digital":["s"],"tag":["s"],"tags":["s"],"tape":["s"],"tarp":["s"],"tarp-droplet":["s"],"taxi":["s"],"teamspeak":["b"],"teeth":["s"],"teeth-open":["s"],"telegram":["b"],"temperature-arrow-down":["s"],"temperature-arrow-up":["s"],"temperature-empty":["s"],"temperature-full":["s"],"temperature-half":["s"],"temperature-high":["s"],"temperature-low":["s"],"temperature-quarter":["s"],"temperature-three-quarters":["s"],"tencent-weibo":["b"],"tenge-sign":["s"],"tent":["s"],"tent-arrow-down-to-line":["s"],"tent-arrow-left-right":["s"],"tent-arrow-turn-left":["s"],"tent-arrows-down":["s"],"tents":["s"],"terminal":["s"],"text-height":["s"],"text-slash":["s"],"text-width":["s"],"the-red-yeti":["b"],"themeco":["b"],"themeisle":["b"],"thermometer":["s"],"think-peaks":["b"],"thumbs-down":["s","r"],"thumbs-up":["s","r"],"thumbtack":["s"],"ticket":["s"],"ticket-simple":["s"],"tiktok":["b"],"timeline":["s"],"toggle-off":["s"],"toggle-on":["s"],"toilet":["s"],"toilet-paper":["s"],"toilet-paper-slash":["s"],"toilet-portable":["s"],"toilets-portable":["s"],"toolbox":["s"],"tooth":["s"],"torii-gate":["s"],"tornado":["s"],"tower-broadcast":["s"],"tower-cell":["s"],"tower-observation":["s"],"tractor":["s"],"trade-federation":["b"],"trademark":["s"],"traffic-light":["s"],"trailer":["s"],"train":["s"],"train-subway":["s"],"train-tram":["s"],"transgender":["s"],"trash":["s"],"trash-arrow-up":["s"],"trash-can":["s","r"],"trash-can-arrow-up":["s"],"tree":["s"],"tree-city":["s"],"trello":["b"],"triangle-exclamation":["s"],"trophy":["s"],"trowel":["s"],"trowel-bricks":["s"],"truck":["s"],"truck-arrow-right":["s"],"truck-droplet":["s"],"truck-fast":["s"],"truck-field":["s"],"truck-field-un":["s"],"truck-front":["s"],"truck-medical":["s"],"truck-monster":["s"],"truck-moving":["s"],"truck-pickup":["s"],"truck-plane":["s"],"truck-ramp-box":["s"],"tty":["s"],"tumblr":["b"],"turkish-lira-sign":["s"],"turn-down":["s"],"turn-up":["s"],"tv":["s"],"twitch":["b"],"twitter":["b"],"typo3":["b"],"u":["s"],"uber":["b"],"ubuntu":["b"],"uikit":["b"],"umbraco":["b"],"umbrella":["s"],"umbrella-beach":["s"],"uncharted":["b"],"underline":["s"],"uniregistry":["b"],"unity":["b"],"universal-access":["s"],"unlock":["s"],"unlock-keyhole":["s"],"unsplash":["b"],"untappd":["b"],"up-down":["s"],"up-down-left-right":["s"],"up-long":["s"],"up-right-and-down-left-from-center":["s"],"up-right-from-square":["s"],"upload":["s"],"ups":["b"],"usb":["b"],"user":["s","r"],"user-astronaut":["s"],"user-check":["s"],"user-clock":["s"],"user-doctor":["s"],"user-gear":["s"],"user-graduate":["s"],"user-group":["s"],"user-injured":["s"],"user-large":["s"],"user-large-slash":["s"],"user-lock":["s"],"user-minus":["s"],"user-ninja":["s"],"user-nurse":["s"],"user-pen":["s"],"user-plus":["s"],"user-secret":["s"],"user-shield":["s"],"user-slash":["s"],"user-tag":["s"],"user-tie":["s"],"user-xmark":["s"],"users":["s"],"users-between-lines":["s"],"users-gear":["s"],"users-line":["s"],"users-rays":["s"],"users-rectangle":["s"],"users-slash":["s"],"users-viewfinder":["s"],"usps":["b"],"ussunnah":["b"],"utensils":["s"],"v":["s"],"vaadin":["b"],"van-shuttle":["s"],"vault":["s"],"vector-square":["s"],"venus":["s"],"venus-double":["s"],"venus-mars":["s"],"vest":["s"],"vest-patches":["s"],"viacoin":["b"],"viadeo":["b"],"vial":["s"],"vial-circle-check":["s"],"vial-virus":["s"],"vials":["s"],"viber":["b"],"video":["s"],"video-slash":["s"],"vihara":["s"],"vimeo":["b"],"vimeo-v":["b"],"vine":["b"],"virus":["s"],"virus-covid":["s"],"virus-covid-slash":["s"],"virus-slash":["s"],"viruses":["s"],"vk":["b"],"vnv":["b"],"voicemail":["s"],"volcano":["s"],"volleyball":["s"],"volume-high":["s"],"volume-low":["s"],"volume-off":["s"],"volume-xmark":["s"],"vr-cardboard":["s"],"vuejs":["b"],"w":["s"],"walkie-talkie":["s"],"wallet":["s"],"wand-magic":["s"],"wand-magic-sparkles":["s"],"wand-sparkles":["s"],"warehouse":["s"],"watchman-monitoring":["b"],"water":["s"],"water-ladder":["s"],"wave-square":["s"],"waze":["b"],"weebly":["b"],"weibo":["b"],"weight-hanging":["s"],"weight-scale":["s"],"weixin":["b"],"whatsapp":["b"],"wheat-awn":["s"],"wheat-awn-circle-exclamation":["s"],"wheelchair":["s"],"wheelchair-move":["s"],"whiskey-glass":["s"],"whmcs":["b"],"wifi":["s"],"wikipedia-w":["b"],"wind":["s"],"window-maximize":["s","r"],"window-minimize":["s","r"],"window-restore":["s","r"],"windows":["b"],"wine-bottle":["s"],"wine-glass":["s"],"wine-glass-empty":["s"],"wirsindhandwerk":["b"],"wix":["b"],"wizards-of-the-coast":["b"],"wodu":["b"],"wolf-pack-battalion":["b"],"won-sign":["s"],"wordpress":["b"],"wordpress-simple":["b"],"worm":["s"],"wpbeginner":["b"],"wpexplorer":["b"],"wpforms":["b"],"wpressr":["b"],"wrench":["s"],"x":["s"],"x-ray":["s"],"xbox":["b"],"xing":["b"],"xmark":["s"],"xmarks-lines":["s"],"y":["s"],"y-combinator":["b"],"yahoo":["b"],"yammer":["b"],"yandex":["b"],"yandex-international":["b"],"yarn":["b"],"yelp":["b"],"yen-sign":["s"],"yin-yang":["s"],"yoast":["b"],"youtube":["b"],"z":["s"],"zhihu":["b"]}
\ No newline at end of file
diff --git a/tabby-core/src/index.ts b/tabby-core/src/index.ts
index c0be2804..662e497a 100644
--- a/tabby-core/src/index.ts
+++ b/tabby-core/src/index.ts
@@ -1,11 +1,9 @@
import { NgModule, ModuleWithProviders, LOCALE_ID } from '@angular/core'
-import { BrowserModule } from '@angular/platform-browser'
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
+import { CommonModule } from '@angular/common'
import { FormsModule } from '@angular/forms'
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
-import { PerfectScrollbarModule, PERFECT_SCROLLBAR_CONFIG } from 'ngx-perfect-scrollbar'
import { NgxFilesizeModule } from 'ngx-filesize'
-import { SortablejsModule } from 'ngx-sortablejs'
import { DragDropModule } from '@angular/cdk/drag-drop'
import { TranslateModule, TranslateCompiler, TranslateService } from '@ngx-translate/core'
import { TranslateMessageFormatCompiler, MESSAGE_FORMAT_CONFIG } from 'ngx-translate-messageformat-compiler'
@@ -43,10 +41,10 @@ import { AppService } from './services/app.service'
import { ConfigService } from './services/config.service'
import { VaultFileProvider } from './services/vault.service'
import { HotkeysService } from './services/hotkeys.service'
-import { LocaleService, TranslateServiceWrapper } from './services/locale.service'
+import { LocaleService } from './services/locale.service'
import { CommandService } from './services/commands.service'
-import { StandardTheme, StandardCompactTheme, PaperTheme } from './theme'
+import { StandardTheme, StandardCompactTheme, PaperTheme, NewTheme } from './theme'
import { CoreConfigProvider } from './config'
import { AppHotkeyProvider } from './hotkeys'
import { TaskCompletionContextMenu, CommonOptionsContextMenu, TabManagementContextMenu, ProfilesContextMenu } from './tabContextMenu'
@@ -54,8 +52,6 @@ import { LastCLIHandler, ProfileCLIHandler } from './cli'
import { SplitLayoutProfilesService } from './profiles'
import { CoreCommandProvider } from './commands'
-import 'perfect-scrollbar/css/perfect-scrollbar.css'
-
export function TranslateMessageFormatCompilerFactory (): TranslateMessageFormatCompiler {
return new TranslateMessageFormatCompiler()
}
@@ -65,6 +61,7 @@ const PROVIDERS = [
{ provide: Theme, useClass: StandardTheme, multi: true },
{ provide: Theme, useClass: StandardCompactTheme, multi: true },
{ provide: Theme, useClass: PaperTheme, multi: true },
+ { provide: Theme, useClass: NewTheme, multi: true },
{ provide: ConfigProvider, useClass: CoreConfigProvider, multi: true },
{ provide: TabContextMenuItemProvider, useClass: CommonOptionsContextMenu, multi: true },
{ provide: TabContextMenuItemProvider, useClass: TabManagementContextMenu, multi: true },
@@ -73,7 +70,6 @@ const PROVIDERS = [
{ provide: TabRecoveryProvider, useExisting: SplitTabRecoveryProvider, multi: true },
{ provide: CLIHandler, useClass: ProfileCLIHandler, multi: true },
{ provide: CLIHandler, useClass: LastCLIHandler, multi: true },
- { provide: PERFECT_SCROLLBAR_CONFIG, useValue: { suppressScrollX: true } },
{ provide: FileProvider, useClass: VaultFileProvider, multi: true },
{ provide: ProfileProvider, useExisting: SplitLayoutProfilesService, multi: true },
{ provide: CommandProvider, useExisting: CoreCommandProvider, multi: true },
@@ -86,24 +82,24 @@ const PROVIDERS = [
provide: MESSAGE_FORMAT_CONFIG,
useValue: LocaleService.allLanguages.map(x => x.code),
},
- {
- provide: TranslateService,
- useClass: TranslateServiceWrapper,
- },
]
/** @hidden */
@NgModule({
imports: [
- BrowserModule,
BrowserAnimationsModule,
+ CommonModule,
FormsModule,
NgbModule,
NgxFilesizeModule,
- PerfectScrollbarModule,
DragDropModule,
- SortablejsModule.forRoot({ animation: 150 }),
- TranslateModule,
+ TranslateModule.forRoot({
+ defaultLanguage: 'en',
+ compiler: {
+ provide: TranslateCompiler,
+ useFactory: TranslateMessageFormatCompilerFactory,
+ },
+ }),
],
declarations: [
AppRootComponent,
@@ -132,16 +128,8 @@ const PROVIDERS = [
CdkAutoDropGroup,
ProfileIconComponent,
],
- entryComponents: [
- PromptModalComponent,
- RenameTabModalComponent,
- SafeModeModalComponent,
- SelectorModalComponent,
- SplitTabComponent,
- UnlockVaultModalComponent,
- WelcomeTabComponent,
- ],
exports: [
+ AppRootComponent,
CheckboxComponent,
ToggleComponent,
PromptModalComponent,
@@ -149,7 +137,6 @@ const PROVIDERS = [
DropZoneDirective,
FastHtmlBindDirective,
AlwaysVisibleTypeaheadDirective,
- SortablejsModule,
DragDropModule,
TranslateModule,
CdkAutoDropGroup,
@@ -239,18 +226,10 @@ export default class AppModule { // eslint-disable-line @typescript-eslint/no-ex
}
static forRoot (): ModuleWithProviders
{
- const translateModule = TranslateModule.forRoot({
- defaultLanguage: 'en',
- compiler: {
- provide: TranslateCompiler,
- useFactory: TranslateMessageFormatCompilerFactory,
- },
- })
return {
ngModule: AppModule,
providers: [
...PROVIDERS,
- ...translateModule.providers!.filter(x => x !== TranslateService),
],
}
}
diff --git a/tabby-core/src/services/commands.service.ts b/tabby-core/src/services/commands.service.ts
index 9ae33694..72039beb 100644
--- a/tabby-core/src/services/commands.service.ts
+++ b/tabby-core/src/services/commands.service.ts
@@ -12,7 +12,7 @@ export class CommandService {
private app: AppService,
private translate: TranslateService,
@Optional() @Inject(TabContextMenuItemProvider) protected contextMenuProviders: TabContextMenuItemProvider[],
- @Inject(ToolbarButtonProvider) private toolbarButtonProviders: ToolbarButtonProvider[],
+ @Optional() @Inject(ToolbarButtonProvider) private toolbarButtonProviders: ToolbarButtonProvider[],
@Inject(CommandProvider) private commandProviders: CommandProvider[],
) {
this.contextMenuProviders.sort((a, b) => a.weight - b.weight)
diff --git a/tabby-core/src/services/config.service.ts b/tabby-core/src/services/config.service.ts
index c1e6c360..05f25924 100644
--- a/tabby-core/src/services/config.service.ts
+++ b/tabby-core/src/services/config.service.ts
@@ -236,11 +236,13 @@ export class ConfigService {
*
* @typeparam T Base provider type
*/
- enabledServices (services: T[]): T[] { // eslint-disable-line @typescript-eslint/ban-types
+ enabledServices (services: T[]|undefined): T[] { // eslint-disable-line @typescript-eslint/ban-types
+ if (!services) {
+ return []
+ }
if (!this.servicesCache) {
this.servicesCache = {}
- const ngModule = window['rootModule'].ɵinj
- for (const imp of ngModule.imports) {
+ for (const imp of window['pluginModules']) {
const module = imp.ngModule || imp
if (module.ɵinj?.providers) {
this.servicesCache[module.pluginName] = module.ɵinj.providers.map(provider => {
diff --git a/tabby-core/src/services/locale.service.ts b/tabby-core/src/services/locale.service.ts
index fac57cf3..b628c844 100644
--- a/tabby-core/src/services/locale.service.ts
+++ b/tabby-core/src/services/locale.service.ts
@@ -55,24 +55,6 @@ function flattenMessageFormatTranslation (po: any) {
return translation
}
-@Injectable({ providedIn: 'root' })
-export class TranslateServiceWrapper extends TranslateService {
- private _defaultTranslation: Record|null
-
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
- getParsedResult (translations: any, key: any, interpolateParams?: any): any {
- if (!this._defaultTranslation) {
- const po = require(`../../../locale/en-US.po`)
- this._defaultTranslation = flattenMessageFormatTranslation(po)
- }
- this.translations[this.defaultLang][key] ??= this.compiler.compile(
- this._defaultTranslation[key] || key,
- this.defaultLang,
- )
- return super.getParsedResult(translations, key, interpolateParams ?? {})
- }
-}
-
@Injectable({ providedIn: 'root' })
export class LocaleService {
private logger: Logger
@@ -176,6 +158,7 @@ export class LocaleService {
private translate: TranslateService,
log: LogService,
) {
+ this.patchTranslateService(translate)
this.logger = log.create('translate')
config.changed$.subscribe(() => {
this.refresh()
@@ -191,6 +174,24 @@ export class LocaleService {
}
}
+ private patchTranslateService (translate: TranslateService) {
+ translate['_defaultTranslation'] = null
+ const oldGetParsedResult = translate.getParsedResult.bind(translate)
+
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
+ translate.getParsedResult = function (translations: any, key: any, interpolateParams?: any): any {
+ if (!this._defaultTranslation) {
+ const po = require(`../../../locale/en-US.po`)
+ this._defaultTranslation = flattenMessageFormatTranslation(po)
+ }
+ this.translations[this.defaultLang][key] ??= this.compiler.compile(
+ this._defaultTranslation[key] || key,
+ this.defaultLang,
+ )
+ return oldGetParsedResult(translations, key, interpolateParams ?? {})
+ }.bind(translate)
+ }
+
refresh (): void {
let lang = this.config.store.language
if (!lang) {
diff --git a/tabby-core/src/services/themes.service.ts b/tabby-core/src/services/themes.service.ts
index 4b353b23..6a1071d5 100644
--- a/tabby-core/src/services/themes.service.ts
+++ b/tabby-core/src/services/themes.service.ts
@@ -1,7 +1,9 @@
import { Inject, Injectable } from '@angular/core'
import { Subject, Observable } from 'rxjs'
+import * as Color from 'color'
import { ConfigService } from '../services/config.service'
import { Theme } from '../api/theme'
+import { NewTheme } from '../theme'
@Injectable({ providedIn: 'root' })
export class ThemesService {
@@ -9,19 +11,120 @@ export class ThemesService {
private themeChanged = new Subject()
private styleElement: HTMLElement|null = null
+ private rootElementStyleBackup = ''
/** @hidden */
private constructor (
private config: ConfigService,
+ private standardTheme: NewTheme,
@Inject(Theme) private themes: Theme[],
) {
- this.applyTheme(this.findTheme('Standard')!)
+ this.rootElementStyleBackup = document.documentElement.style.cssText
+ this.applyTheme(standardTheme)
config.ready$.toPromise().then(() => {
this.applyCurrentTheme()
+ this.applyThemeVariables()
config.changed$.subscribe(() => {
this.applyCurrentTheme()
})
})
+ config.changed$.subscribe(() => this.applyThemeVariables())
+ }
+
+ private applyThemeVariables () {
+ if (!this.findCurrentTheme().followsColorScheme) {
+ document.documentElement.style.cssText = this.rootElementStyleBackup
+ return
+ }
+
+ const theme = this.config.store.terminal.colorScheme
+ const isDark = Color(theme.background).luminosity() < Color(theme.foreground).luminosity()
+
+ function more (some, factor) {
+ if (isDark) {
+ return Color(some).darken(factor)
+ }
+ return Color(some).lighten(factor)
+ }
+
+ function less (some, factor) {
+ if (!isDark) {
+ return Color(some).darken(factor)
+ }
+ return Color(some).lighten(factor)
+ }
+
+ let background = Color(theme.background)
+ if (this.config.store?.appearance.vibrancy) {
+ background = background.fade(0.6)
+ }
+ // const background = theme.background
+ const backgroundMore = more(background.string(), 0.25).string()
+ // const backgroundMore =more(theme.background, 0.25).string()
+ const accentIndex = 4
+ const vars: Record = {}
+
+ vars['--bs-body-bg'] = background.string()
+ vars['--bs-body-color'] = theme.foreground
+ vars['--bs-black'] = theme.colors[0]
+ vars['--bs-red'] = theme.colors[1]
+ vars['--bs-green'] = theme.colors[2]
+ vars['--bs-yellow'] = theme.colors[3]
+ vars['--bs-blue'] = theme.colors[4]
+ vars['--bs-purple'] = theme.colors[5]
+ vars['--bs-cyan'] = theme.colors[6]
+ vars['--bs-gray'] = theme.colors[7]
+ vars['--bs-gray-dark'] = theme.colors[8]
+ // vars['--bs-red'] = theme.colors[9]
+ // vars['--bs-green'] = theme.colors[10]
+ // vars['--bs-yellow'] = theme.colors[11]
+ // vars['--bs-blue'] = theme.colors[12]
+ // vars['--bs-purple'] = theme.colors[13]
+ // vars['--bs-cyan'] = theme.colors[14]
+
+ vars['--theme-fg-more-2'] = more(theme.foreground, 0.5).string()
+ vars['--theme-fg-more'] = more(theme.foreground, 0.25).string()
+ vars['--theme-fg'] = theme.foreground
+ vars['--theme-fg-less'] = less(theme.foreground, 0.25).string()
+ vars['--theme-fg-less-2'] = less(theme.foreground, 0.5).string()
+
+ vars['--theme-bg-less-2'] = less(theme.background, 0.5).string()
+ vars['--theme-bg-less'] = less(theme.background, 0.25).string()
+ vars['--theme-bg'] = theme.background
+ vars['--theme-bg-more'] = backgroundMore
+ vars['--theme-bg-more-2'] = more(backgroundMore, 0.25).string()
+
+ const themeColors = {
+ primary: theme.colors[accentIndex],
+ secondary: theme.colors[8],
+ tertiary: theme.colors[8],
+ warning: theme.colors[3],
+ danger: theme.colors[1],
+ success: theme.colors[2],
+ info: theme.colors[4],
+ dark: more(theme.background, 0.5).string(),
+ light: more(theme.foreground, 0.5).string(),
+ link: theme.colors[8], // for .btn-link
+ }
+
+ for (const [key, color] of Object.entries(themeColors)) {
+ vars[`--bs-${key}-bg`] = more(color, 0.5).string()
+ vars[`--bs-${key}-color`] = less(color, 0.5).string()
+ vars[`--bs-${key}`] = color
+ vars[`--bs-${key}-rgb`] = Color(color).rgb().array().join(', ')
+ vars[`--theme-${key}-more-2`] = more(color, 1).string()
+ vars[`--theme-${key}-more`] = more(color, 0.5).string()
+ vars[`--theme-${key}`] = color
+ vars[`--theme-${key}-less`] = less(color, 0.25).string()
+ vars[`--theme-${key}-less-2`] = less(color, 0.75).string()
+ }
+
+ const switchBackground = less(theme.colors[accentIndex], 0.25).string()
+ vars['--bs-form-switch-bg'] = `url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27${switchBackground}%27/%3e%3c/svg%3e")`
+
+ for (const [key, value] of Object.entries(vars)) {
+ document.documentElement.style.setProperty(key, value)
+ }
}
findTheme (name: string): Theme|null {
@@ -29,7 +132,7 @@ export class ThemesService {
}
findCurrentTheme (): Theme {
- return this.findTheme(this.config.store.appearance.theme) ?? this.findTheme('Standard')!
+ return this.findTheme(this.config.store.appearance.theme) ?? this.standardTheme
}
applyTheme (theme: Theme): void {
diff --git a/tabby-core/src/theme.new.scss b/tabby-core/src/theme.new.scss
new file mode 100644
index 00000000..230c65bf
--- /dev/null
+++ b/tabby-core/src/theme.new.scss
@@ -0,0 +1,568 @@
+$font-family-sans-serif: "Source Sans Pro";
+$font-size-base: 14rem / 16;
+
+app-root {
+ background: transparent;
+
+ &.vibrant {
+ background: rgba(var(--bs-dark-rgb),.65);
+ }
+
+ &> .content {
+ .tab-bar {
+ background: var(--theme-bg-more);
+
+ .btn-tab-bar {
+ background: transparent;
+ line-height: 42px;
+ align-items: center;
+ svg, path {
+ fill: var(--bs-body-color);
+ fill-opacity: 0.75;
+ }
+
+ &:hover { background: rgba(0, 0, 0, .125) !important; }
+ &:active { background: rgba(0, 0, 0, .25) !important; }
+ }
+
+ &>.tabs {
+ tab-header {
+ border-left: 1px solid transparent;
+ border-right: 1px solid transparent;
+ transition: 0.125s ease-out width;
+
+ .index {
+ color: var(--bs-body-color);
+ opacity: 0.4;
+ }
+
+ button {
+ color: var(--bs-body-color);
+ border: none;
+ transition: 0.25s all;
+
+ &:hover { background: var(--theme-bg-more-2) !important; }
+ &:active { background: var(--theme-bg-more-2) !important; }
+ }
+
+ .progressbar {
+ background: var(--bs-blue);
+ }
+
+ .activity-indicator {
+ background:var(--bs-body-color);
+ opacity: .2;
+ }
+
+ &.active {
+ // color: $black;
+ background: var(--bs-body-bg);
+ // border-left: 1px solid $border-color;
+ // border-right: 1px solid $border-color;
+ }
+ }
+ }
+ }
+
+// &.tabs-on-top .tab-bar {
+// &>.background {
+// border-bottom: 1px solid $border-color;
+// }
+
+// tab-header {
+// border-bottom: 1px solid $border-color;
+
+// &.active {
+// border-bottom-color: transparent;
+// }
+// }
+// }
+
+// &:not(.tabs-on-top) .tab-bar {
+// &>.background {
+// border-top: 1px solid $border-color;
+// }
+
+// tab-header {
+// border-top: 1px solid $border-color;
+
+// &.active {
+// margin-top: -1px;
+// }
+// }
+// }
+ }
+
+// &.platform-win32, &.platform-linux {
+// border: 1px solid #111;
+// &>.content .tab-bar .tabs tab-header:first-child {
+// border-left: none;
+// }
+// }
+}
+
+tab-body {
+ background: var(--bs-body-bg);
+}
+
+// $black: #002b36;
+// $base02: #073642;
+// $base01: #586e75;
+// $base00: #657b83;
+// $base0: #839496;
+// $base1: #93a1a1;
+// $base2: #eee8d5;
+// $white: #fdf6e3;
+// $yellow: #b58900;
+// $orange: #cb4b16;
+// $red: #dc322f;
+// $pink: #d33682;
+// $purple: #6c71c4;
+// $blue: #268bd2;
+// $teal: #2aa198;
+// $green: #859900;
+
+$tab-border-radius: 5px;
+// $button-hover-bg: rgba(0, 0, 0, .125);
+// $button-active-bg: rgba(0, 0, 0, .25);
+
+
+// $btn-border-radius: 0;
+
+// $input-bg: $base2;
+// $input-disabled-bg: $base1;
+
+// $input-color: $body-color;
+// $input-color-placeholder: $base1;
+// $input-border-color: $base1;
+// //$input-box-shadow: inset 0 1px 1px rgba($black,.075);
+// $input-border-radius: 0;
+// $custom-select-border-radius: 0;
+// $input-bg-focus: $input-bg;
+// //$input-border-focus: lighten($brand-primary, 25%);
+// //$input-box-shadow-focus: $input-box-shadow, rgba($input-border-focus, .6);
+// $input-color-focus: $input-color;
+// $input-group-addon-bg: $body-bg;
+// $input-group-addon-border-color: $input-border-color;
+
+// $modal-content-bg: $content-bg-solid;
+// $modal-content-border-color: $body-bg;
+$modal-header-border-color: transparent;
+$modal-footer-border-color: transparent;
+
+// $popover-bg: $body-bg;
+
+// $dropdown-bg: $body-bg;
+// $dropdown-link-color: $body-color;
+// $dropdown-link-hover-color: #333;
+// $dropdown-link-hover-bg: $body-bg2;
+// //$dropdown-link-active-color: $component-active-color;
+// //$dropdown-link-active-bg: $component-active-bg;
+// $dropdown-link-disabled-color: #333;
+// $dropdown-header-color: #333;
+
+// $list-group-action-bg: rgba($black,.05);
+// $list-group-action-active-bg: $list-group-link-active-bg;
+
+// $pre-bg: $dropdown-bg;
+// $pre-color: $dropdown-link-color;
+
+// $headings-font-weight: lighter;
+// $headings-color: $base0;
+
+$form-check-input-width: 1.4em;
+$form-switch-width: 2.5em;
+
+@import '~bootstrap/scss/bootstrap.scss';
+@import "./theme.vendor.scss";
+
+body {
+ --bs-border-color: var(--theme-bg-more-2);
+ --bs-form-control-bg: var(--theme-bg-more);
+ --bs-emphasis-color: var(--theme-fg-less-2);
+}
+
+.list-group {
+ --bs-list-group-bg: var(--theme-bg-more);
+ --bs-list-group-border-color: var(--theme-bg-more-2);
+ --bs-list-group-border-width: 0;
+ // --bs-list-group-item-padding-x: 1rem;
+ // --bs-list-group-item-padding-y: 0.5rem;
+ --bs-list-group-action-color: var(--bs-body-color);
+ --bs-list-group-action-hover-color: var(--theme-fg);
+ --bs-list-group-action-hover-bg: var(--theme-bg-more-2);
+
+ --bs-list-group-action-active-color: var(--theme-fg);
+ --bs-list-group-action-active-bg: var(--theme-bg-more-2);
+ --bs-list-group-disabled-color: var(--bs-secondary-color);
+ --bs-list-group-disabled-bg: var(--bs-body-bg);
+ --bs-list-group-active-color: var(--bs-primary-color);
+ --bs-list-group-active-bg: var(--bs-primary-bg);
+ // --bs-list-group-active-border-color: #0d6efd;
+}
+
+.nav {
+ // scss-docs-start nav-css-vars
+ // --bs-nav-link-padding-x: #{$nav-link-padding-x};
+ // --bs-nav-link-padding-y: #{$nav-link-padding-y};
+ // @include rfs($nav-link-font-size, --bs-nav-link-font-size);
+ // --bs-nav-link-font-weight: #{$nav-link-font-weight};
+ --bs-nav-link-color: var(--bs-body-color);
+ --bs-nav-link-hover-color: var(--theme-fg-less-2);
+ --bs-nav-link-disabled-color: var(--bs-gray);
+ // scss-docs-end nav-css-vars
+}
+
+.nav-tabs {
+ // scss-docs-start nav-tabs-css-vars
+ --bs-nav-tabs-border-width: 2px;
+ --bs-nav-tabs-border-radius: 0;
+ --bs-nav-tabs-link-hover-border-color: var(--bs-body-bg);
+ --bs-nav-tabs-border-color: var(--theme-fg-less-2);
+ --bs-nav-tabs-link-active-color: var(--theme-fg-less-2);
+
+ --bs-nav-tabs-link-active-bg: transparent;
+ --bs-nav-tabs-link-active-border-color: transparent;
+ // scss-docs-end nav-tabs-css-vars
+}
+
+.nav-pills {
+ // scss-docs-start nav-pills-css-vars
+ --bs-nav-pills-border-radius: #{$nav-pills-border-radius};
+ --bs-nav-pills-link-active-color: var(--theme-bg-more);
+ --bs-nav-pills-link-active-bg: var(--bs-primary);
+ // scss-docs-end nav-pills-css-vars
+}
+
+.nav-tabs {
+ margin-bottom: 10px;
+ border: none;
+
+ &.nav-justified .nav-link {
+ margin-right: 5px;
+ }
+
+ .nav-link {
+ border: none;
+ border-bottom: var(--bs-nav-tabs-border-width) solid transparent;
+ text-transform: uppercase;
+ font-weight: bold;
+ padding: 5px 0;
+ margin-right: 20px;
+
+ uib-tab-heading > i {
+ font-size: 18px;
+ }
+
+ &.disabled {
+ color: var(--bs-nav-tabs-link-disabled-color);
+ border-color: transparent;
+ }
+ }
+
+ .nav-item:last-child .nav-link {
+ margin-right: 0;
+ }
+
+ .nav-link.active,
+ .nav-item.show .nav-link {
+ color: var(--bs-nav-tabs-link-active-color);
+ border-color: var(--bs-nav-tabs-border-color);
+ }
+
+ .nav-item {
+ outline: none !important;
+ }
+}
+
+
+tab-body {
+ terminal-toolbar {
+ background: var(--bs-body-bg);
+
+ .btn, .toolbar-pin-button {
+ font-weight: bold;
+ }
+ }
+}
+
+@each $color, $value in $theme-colors {
+ .btn-#{$color} {
+ // 6c757d
+ --bs-btn-bg: var(--theme-#{$color});
+ --bs-btn-border-color: var(--theme-#{$color});
+ --bs-btn-disabled-bg: var(--theme-#{$color});
+ --bs-btn-disabled-border-color: var(--theme-#{$color});
+
+ --bs-btn-hover-border-color: var(--theme-#{$color}-less);
+ --bs-btn-hover-bg: var(--theme-#{$color}-less);
+
+ --bs-btn-active-border-color: var(--theme-#{$color}-less-2);
+ --bs-btn-active-bg: var(--theme-#{$color}-less-2);
+
+ --bs-btn-focus-shadow-rgb: 130, 138, 145;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+
+ --bs-btn-color: var(--theme-#{$color}-more-2);
+ --bs-btn-hover-color: var(--theme-#{$color}-more-2);
+ --bs-btn-active-color: var(--theme-#{$color}-more-2);
+ --bs-btn-disabled-color: var(--theme-#{$color}-more-2);
+ }
+
+ .alert-#{$color} {
+ --bs-alert-bg: var(--theme-#{$color}-more-2);
+ --bs-alert-border-color: var(--theme-#{$color}-more);
+ --bs-alert-color: var(--theme-#{$color});
+ }
+}
+
+
+multi-hotkey-input {
+ .item {
+ background: var(--theme-bg-more);
+ border: 1px solid var(--bs-primary);
+ border-radius: 3px;
+ margin-right: 5px;
+
+ .body {
+ padding: 3px 0 2px;
+
+ .stroke {
+ padding: 0 6px;
+ border-right: 1px solid var(--bs-body-bg);
+ }
+ }
+
+ .remove {
+ padding: 3px 8px 2px;
+ }
+ }
+
+ .item:has(.duplicate) {
+ background-color: var(--bs-danger);
+ border: 1px solid var(--bs-danger);
+ }
+
+ .add {
+ color: #777;
+ padding: 4px 10px 0;
+ }
+
+ .add, .item .body, .item .remove {
+ &:hover { background: var(--theme-bg-more); }
+ &:active { background: var(--theme-bg-more-2); }
+ }
+
+ .add:has(.duplicate), .item:has(.duplicate) .body, .item:has(.duplicate) .remove {
+ &:hover { background: var(--theme-danger-less); }
+ &:active { background: var(--theme-danger-less-2); }
+ }
+}
+
+hotkey-input-modal {
+ .input {
+ // background: $input-bg;
+ padding: 10px;
+ font-size: 24px;
+ line-height: 27px;
+ height: 55px;
+
+ .stroke {
+ background: var(--theme-bg-more);
+ border: 1px solid var(--bs-primary);
+ border-radius: 3px;
+ margin-right: 10px;
+ padding: 3px 10px;
+ }
+ }
+
+ .timeout {
+ background: $input-bg;
+
+ div {
+ background: $blue;
+ }
+ }
+}
+
+.mb-3 label {
+ margin-bottom: 2px;
+}
+
+.btn {
+ i + * {
+ margin-left: 5px;
+ }
+
+ &.btn-lg i + * {
+ margin-left: 10px;
+ }
+}
+
+.input-group-addon + .form-control {
+ border-left: none;
+}
+
+.input-group > select.form-control {
+ flex-direction: row;
+}
+
+.list-group-item {
+ // transition: 0.0625s background ease;
+
+ i + * {
+ margin-left: 10px;
+ }
+}
+
+.list-group.list-group-flush .list-group-item {
+ background: transparent;
+ border: none;
+
+ &:not(:last-child) {
+ border-bottom: none;
+ }
+}
+
+.list-group-light {
+ .list-group-item {
+ border: none !important;
+ outline: none !important;
+ background: transparent;
+ border-radius: $border-radius;
+ margin: 0 !important;
+
+ &.active {
+ background-color: var(--bs-list-group-active-bg);
+ }
+ }
+}
+
+// checkbox i.on {
+// color: $blue;
+// }
+
+// .modal .modal-footer {
+// background: rgba(0, 0, 0, .25);
+
+// .btn {
+// font-weight: bold;
+// padding: 0.375rem 1.5rem;
+// }
+// }
+
+.list-group-item svg {
+ fill: var(--bs-body-color);
+ fill-opacity: 0.75;
+}
+
+*::-webkit-scrollbar {
+ background: rgba(0, 0, 0, .125);
+ width: 10px;
+ margin: 5px;
+}
+
+*::-webkit-scrollbar-thumb {
+ background: rgba(255, 255, 255, .25);
+}
+
+*::-webkit-scrollbar-corner,
+*::-webkit-resizer {
+ opacity: 0;
+}
+
+search-panel {
+ background: var(--theme-bg-more) !important;
+
+ input {
+ border-radius: 0 !important;
+ }
+}
+
+
+.btn {
+ cursor: pointer;
+ justify-content: flex-start;
+ overflow: hidden;
+
+ &.disabled,
+ &:disabled {
+ cursor: not-allowed;
+ }
+}
+
+.btn-link {
+ text-decoration: none;
+
+ // &:hover, &[aria-expanded=true], &:active, &.active {
+ // color: $link-hover-color;
+ // border-radius: $btn-border-radius;
+ // }
+
+ // &[aria-expanded=true], &:active, &.active {
+ // background: rgba(255, 255, 255, 0.1);
+ // }
+}
+
+// .btn-group .btn.active {
+// border-color: transparent !important;
+// }
+
+
+// hr {
+// border-color: $list-group-border-color;
+// }
+
+// .dropdown-menu {
+// box-shadow: $dropdown-box-shadow;
+// }
+
+ngx-colors-panel .opened {
+ background: var(--bs-body-bg) !important;
+
+ button {
+ color: var(--bs-body-color) !important;
+ }
+
+ .button svg {
+ fill: white;
+ }
+}
+
+.text-muted {
+ // color: var(--bs-body-color) !important;
+ opacity: .5;
+}
+
+.form-switch .form-check-input {
+ --bs-form-switch-bg: inherit;
+ border-color: var(--theme-bg-more);
+ background-color: var(--theme-bg-more-2);
+
+ &:checked {
+ border-color: var(--theme-primary-more);
+ background-color: var(--theme-primary);
+ }
+}
+
+.form-control:focus {
+ border-color: var(--theme-fg-more-2);
+}
+
+.accordion {
+ --bs-accordion-bg: var(--theme-bg-more);
+ --bs-accordion-active-color: var(--theme-fg);
+ --bs-accordion-active-bg: var(--theme-bg-more-2);
+}
+
+start-page {
+ background: var(--theme-bg);
+}
+
+split-tab-spanner {
+ background: rgba(var(--bs-dark-rgb), .1);
+
+ &:hover, &.active {
+ background: rgba(var(--bs-dark-rgb), .2);
+ }
+}
diff --git a/tabby-core/src/theme.paper.scss b/tabby-core/src/theme.paper.scss
index 0b088922..ac5ecc4e 100644
--- a/tabby-core/src/theme.paper.scss
+++ b/tabby-core/src/theme.paper.scss
@@ -19,10 +19,9 @@ $tab-border-radius: 5px;
$button-hover-bg: rgba(0, 0, 0, .125);
$button-active-bg: rgba(0, 0, 0, .25);
-$theme-colors: (
- "primary": $orange,
- "secondary": $base0
-);
+
+$primary: #fd7e14;
+$secondary: #495057;
$content-bg: rgba($white, 0.65);
$content-bg-solid: $white;
@@ -257,8 +256,8 @@ multi-hotkey-input {
}
.item:has(.duplicate) {
- background-color: theme-color('danger');
- border: 1px solid theme-color('danger');
+ background-color: map-get($theme-colors, 'danger');
+ border: 1px solid map-get($theme-colors, 'danger');
}
.add {
@@ -272,8 +271,8 @@ multi-hotkey-input {
}
.add:has(.duplicate), .item:has(.duplicate) .body, .item:has(.duplicate) .remove {
- &:hover { background: darken(theme-color('danger'), 5%); }
- &:active { background: darken(theme-color('danger'), 15%); }
+ &:hover { background: darken(map-get($theme-colors, 'danger'), 5%); }
+ &:active { background: darken(map-get($theme-colors, 'danger'), 15%); }
}
}
@@ -303,7 +302,7 @@ hotkey-input-modal {
}
}
-.form-group label {
+.mb-3 label {
margin-bottom: 2px;
}
@@ -314,7 +313,7 @@ hotkey-input-modal {
}
}
-[ngbradiogroup] > label.active {
+.btn-check:checked + label {
background: $blue;
}
@@ -370,7 +369,7 @@ toggle {
}
&.active .body .toggle {
- background: theme-colors(primary) !important;
+ background: map-get($theme-colors, primary) !important;
}
}
@@ -398,3 +397,11 @@ terminal-toolbar {
.bg-dark{
background-color: $base2 !important;
}
+
+split-tab-spanner {
+ background: rgba(0, 0, 0, .2);
+
+ &:hover, &.active {
+ background: rgba(255, 255, 255, .125);
+ }
+}
diff --git a/tabby-core/src/theme.scss b/tabby-core/src/theme.scss
index 320eb3bc..315909f4 100644
--- a/tabby-core/src/theme.scss
+++ b/tabby-core/src/theme.scss
@@ -7,6 +7,7 @@ $button-hover-bg: rgba(0, 0, 0, .25);
$button-active-bg: rgba(0, 0, 0, .5);
@import '~bootstrap/scss/bootstrap.scss';
+@import "./theme.vendor.scss";
window-controls {
svg {
@@ -163,8 +164,8 @@ multi-hotkey-input {
}
.item:has(.duplicate) {
- background-color: theme-color('danger');
- border: 1px solid theme-color('danger');
+ background-color: map-get($theme-colors, 'danger');
+ border: 1px solid map-get($theme-colors, 'danger');
}
.add {
@@ -178,8 +179,8 @@ multi-hotkey-input {
}
.add:has(.duplicate), .item:has(.duplicate) .body, .item:has(.duplicate) .remove {
- &:hover { background: darken(theme-color('danger'), 5%); }
- &:active { background: darken(theme-color('danger'), 15%); }
+ &:hover { background: darken(map-get($theme-colors, 'danger'), 5%); }
+ &:active { background: darken(map-get($theme-colors, 'danger'), 15%); }
}
}
@@ -209,11 +210,11 @@ hotkey-input-modal {
}
}
-.form-group label {
+.mb-3 label {
margin-bottom: 2px;
}
-[ngbradiogroup] > label.active {
+.btn-check:checked + label {
background: $blue;
}
@@ -342,6 +343,8 @@ search-panel {
}
.btn-link {
+ text-decoration: none;
+
&:hover, &[aria-expanded=true], &:active, &.active {
color: $link-hover-color;
border-radius: $btn-border-radius;
@@ -375,9 +378,9 @@ search-panel {
font-size: 18px;
}
- @include hover-focus {
- color: $nav-tabs-link-active-color;
- }
+ // @include hover-focus {
+ // color: $nav-tabs-link-active-color;
+ // }
&.disabled {
color: $nav-link-disabled-color;
@@ -415,3 +418,11 @@ ngx-colors-panel .opened {
fill: white;
}
}
+
+split-tab-spanner {
+ background: rgba(0, 0, 0, .2);
+
+ &:hover, &.active {
+ background: rgba(255, 255, 255, .125);
+ }
+}
diff --git a/tabby-core/src/theme.ts b/tabby-core/src/theme.ts
index cc7976e2..b3328915 100644
--- a/tabby-core/src/theme.ts
+++ b/tabby-core/src/theme.ts
@@ -5,7 +5,7 @@ import { Theme } from './api'
/** @hidden */
@Injectable()
export class StandardTheme extends Theme {
- name = this.translate.instant('Standard')
+ name = this.translate.instant('Standard (legacy)')
css = require('./theme.scss')
terminalBackground = '#222a33'
@@ -17,7 +17,7 @@ export class StandardTheme extends Theme {
/** @hidden */
@Injectable()
export class StandardCompactTheme extends Theme {
- name = this.translate.instant('Compact')
+ name = this.translate.instant('Compact (legacy)')
css = require('./theme.compact.scss')
terminalBackground = '#222a33'
macOSWindowButtonsInsetX = 8
@@ -31,7 +31,20 @@ export class StandardCompactTheme extends Theme {
/** @hidden */
@Injectable()
export class PaperTheme extends Theme {
- name = 'Paper'
+ name = 'Paper (legacy)'
css = require('./theme.paper.scss')
terminalBackground = '#f7f1e0'
}
+
+/** @hidden */
+@Injectable({ providedIn: 'root' })
+export class NewTheme extends Theme {
+ name = this.translate.instant('Follow the color scheme')
+ css = require('./theme.new.scss')
+ terminalBackground = '#f7f1e0'
+ followsColorScheme = true
+
+ constructor (private translate: TranslateService) {
+ super()
+ }
+}
diff --git a/tabby-core/src/theme.vars.scss b/tabby-core/src/theme.vars.scss
index 320b533f..d15f43aa 100644
--- a/tabby-core/src/theme.vars.scss
+++ b/tabby-core/src/theme.vars.scss
@@ -175,13 +175,12 @@ $badge-padding-y: 4px;
$badge-padding-x: 6px;
-$custom-control-indicator-size: 1.2rem;
-$custom-control-indicator-bg: $body-bg;
-$custom-control-indicator-border-color: lighten($body-bg, 25%);
-$custom-control-indicator-checked-bg: theme-color("primary");
-$custom-control-indicator-checked-color: $body-bg;
-$custom-control-indicator-checked-border-color: transparent;
-$custom-control-indicator-active-bg: rgba(255, 255, 0, 0.5);
+$form-check-input-border: lighten($body-bg, 25%);
+$form-check-input-width: 1.4em;
+$form-switch-width: 2.5em;
+$form-switch-color: lighten($body-bg, 25%);
+$form-switch-focus-color: lighten($body-bg, 40%);
+$form-switch-checked-color: map-get($theme-colors, "primary");
$modal-content-bg: $content-bg-solid;
@@ -201,3 +200,13 @@ $alert-color-level: -5;
$text-muted: rgba(255, 255, 255, 0.5);
$card-bg: $list-group-bg;
+
+$tooltip-color: rgba(255, 255, 255, .75);
+$tooltip-bg: rgba(0, 0, 0, .75);
+
+$accordion-border-color: $list-group-border-color;
+$accordion-bg: $list-group-bg;
+$accordion-button-active-bg: $list-group-active-bg;
+$accordion-button-active-color: $list-group-active-color;
+
+$btn-close-color: $body-color;
diff --git a/tabby-core/src/theme.vendor.scss b/tabby-core/src/theme.vendor.scss
new file mode 100644
index 00000000..e22f66e1
--- /dev/null
+++ b/tabby-core/src/theme.vendor.scss
@@ -0,0 +1,3 @@
+// $alert-border-radius: 0;
+// @mixin border-radius ($r) {}
+@import "../../node_modules/ngx-toastr/toastr-bs5-alert.scss";
diff --git a/tabby-core/webpack.config.js b/tabby-core/webpack.config.js
deleted file mode 100644
index 4a231ebb..00000000
--- a/tabby-core/webpack.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const config = require('../webpack.plugin.config')
-module.exports = config({
- name: 'core',
- dirname: __dirname,
-})
diff --git a/tabby-core/webpack.config.mjs b/tabby-core/webpack.config.mjs
new file mode 100644
index 00000000..a0f14443
--- /dev/null
+++ b/tabby-core/webpack.config.mjs
@@ -0,0 +1,10 @@
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+import config from '../webpack.plugin.config.mjs'
+
+export default () => config({
+ name: 'core',
+ dirname: __dirname,
+})
diff --git a/tabby-core/yarn.lock b/tabby-core/yarn.lock
index c90a5840..88ca5086 100644
--- a/tabby-core/yarn.lock
+++ b/tabby-core/yarn.lock
@@ -2,13 +2,6 @@
# yarn lockfile v1
-"@ngx-translate/core@^14.0.0":
- version "14.0.0"
- resolved "https://registry.yarnpkg.com/@ngx-translate/core/-/core-14.0.0.tgz#af421d0e1a28376843f0fed375cd2fae7630a5ff"
- integrity sha512-UevdwNCXMRCdJv//0kC8h2eSfmi02r29xeE8E9gJ1Al4D4jEJ7eiLPdjslTMc21oJNGguqqWeEVjf64SFtvw2w==
- dependencies:
- tslib "^2.3.0"
-
abort-controller@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
@@ -33,10 +26,10 @@ base64-js@^1.3.1:
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-bootstrap@^4.1.3:
- version "4.5.3"
- resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.5.3.tgz#c6a72b355aaf323920be800246a6e4ef30997fe6"
- integrity sha512-o9ppKQioXGqhw8Z7mah6KdTYpNQY//tipnkxppWhPbiSWdD+1raYsnhwEZjkTHYbGee4cVQ0Rx65EhOY/HNLcQ==
+bootstrap@^5.3.0-alpha.1:
+ version "5.3.0-alpha1"
+ resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.0-alpha1.tgz#380629c4367893f02f7879a01ea3ae0f94e2e70e"
+ integrity sha512-ABZpKK4ObS3kKlIqH+ZVDqoy5t/bhFG0oHTAzByUdon7YIom0lpCeTqRniDzJmbtcWkNe800VVPBiJgxSYTYew==
buffer@^6.0.3:
version "6.0.3"
@@ -46,6 +39,34 @@ buffer@^6.0.3:
base64-js "^1.3.1"
ieee754 "^1.2.1"
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@^1.0.0, color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+color-string@^1.9.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
+ integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
+color@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a"
+ integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==
+ dependencies:
+ color-convert "^2.0.1"
+ color-string "^1.9.0"
+
debug@4:
version "4.3.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
@@ -68,11 +89,6 @@ events@^3.3.0:
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
-"filesize@>= 4.0.0":
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.3.0.tgz#dff53cfb3f104c9e422f346d53be8dbcc971bf11"
- integrity sha512-ytx0ruGpDHKWVoiui6+BY/QMNngtDQ/pJaFwfBpQif0J63+E8DLdFyqS3NkKQn7vIruUEpoGD9JUJSg7Kp+I0g==
-
fuzzy-search@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/fuzzy-search/-/fuzzy-search-3.2.1.tgz#65d5faad6bc633aee86f1898b7788dfe312ac6c9"
@@ -91,6 +107,11 @@ ieee754@^1.2.1:
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+is-arrayish@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+ integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
js-yaml@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
@@ -141,23 +162,6 @@ ms@2.1.2:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-ngx-filesize@^2.0.16:
- version "2.0.16"
- resolved "https://registry.yarnpkg.com/ngx-filesize/-/ngx-filesize-2.0.16.tgz#fdaba04170edb6cfcdf7be932783cf913b03f016"
- integrity sha512-VdaCirE7hSyfQh8ZEmhzNEhbddiTYUHF4V6OX+KyTmnQSVx4hp9kmzDX5YlkIlmClI6wI+LZmH9/q7XS3fsMPA==
- dependencies:
- filesize ">= 4.0.0"
- tslib "^2.0.0"
-
-ngx-perfect-scrollbar@^10.1.0:
- version "10.1.1"
- resolved "https://registry.yarnpkg.com/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-10.1.1.tgz#f89832b9109e89bb59d516184638accd028e9735"
- integrity sha512-f9IaDJGlBzSxnJ3Ki76n2JdzfQngUFyCf0E+CuVLaR5jL0IJDcTu7vOs8wexXunRMTd8xvIv0+sdIxf8hXAGWg==
- dependencies:
- perfect-scrollbar "1.5.0"
- resize-observer-polyfill "^1.5.0"
- tslib "^2.0.0"
-
ngx-translate-messageformat-compiler@^4.11.0:
version "4.11.0"
resolved "https://registry.yarnpkg.com/ngx-translate-messageformat-compiler/-/ngx-translate-messageformat-compiler-4.11.0.tgz#c9b71dd139ba5fcdcd809001e22622de589fd707"
@@ -165,11 +169,6 @@ ngx-translate-messageformat-compiler@^4.11.0:
dependencies:
tslib "^1.10.0"
-perfect-scrollbar@1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.5.0.tgz#821d224ed8ff61990c23f26db63048cdc75b6b83"
- integrity sha512-NrNHJn5mUGupSiheBTy6x+6SXCFbLlm8fVZh9moIzw/LgqElN5q4ncR4pbCBCYuCJ8Kcl9mYM0NgDxvW+b4LxA==
-
process@^0.11.10:
version "0.11.10"
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
@@ -185,26 +184,18 @@ readable-stream@4.2.0:
events "^3.3.0"
process "^0.11.10"
-resize-observer-polyfill@^1.5.0:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
- integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+ integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
+ dependencies:
+ is-arrayish "^0.3.1"
tslib@^1.10.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
- integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
-
-tslib@^2.3.0:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
- integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
-
uuid@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
diff --git a/tabby-electron/webpack.config.js b/tabby-electron/webpack.config.js
deleted file mode 100644
index 432b0e9d..00000000
--- a/tabby-electron/webpack.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const config = require('../webpack.plugin.config')
-module.exports = config({
- name: 'electron',
- dirname: __dirname,
-})
diff --git a/tabby-electron/webpack.config.mjs b/tabby-electron/webpack.config.mjs
new file mode 100644
index 00000000..a00e0af3
--- /dev/null
+++ b/tabby-electron/webpack.config.mjs
@@ -0,0 +1,10 @@
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+import config from '../webpack.plugin.config.mjs'
+
+export default () => config({
+ name: 'electron',
+ dirname: __dirname,
+})
diff --git a/tabby-linkifier/webpack.config.js b/tabby-linkifier/webpack.config.js
deleted file mode 100644
index 2f08b443..00000000
--- a/tabby-linkifier/webpack.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const config = require('../webpack.plugin.config')
-module.exports = config({
- name: 'linkifier',
- dirname: __dirname,
-})
diff --git a/tabby-linkifier/webpack.config.mjs b/tabby-linkifier/webpack.config.mjs
new file mode 100644
index 00000000..a79dcb89
--- /dev/null
+++ b/tabby-linkifier/webpack.config.mjs
@@ -0,0 +1,10 @@
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+import config from '../webpack.plugin.config.mjs'
+
+export default () => config({
+ name: 'linkifier',
+ dirname: __dirname,
+})
diff --git a/tabby-local/src/components/commandLineEditor.component.pug b/tabby-local/src/components/commandLineEditor.component.pug
index 1a8ef746..9ae4ad81 100644
--- a/tabby-local/src/components/commandLineEditor.component.pug
+++ b/tabby-local/src/components/commandLineEditor.component.pug
@@ -1,36 +1,34 @@
ng-container(*ngIf='!argvMode')
- .form-group
+ .mb-3
label(translate) Command line
.input-group
- .input-group-prepend
- a.input-group-text(
- (click)='switchToArgv()',
- ngbTooltip='Split into unescaped arguments',
- href='#'
- )
- i.fas.fa-fw.fa-caret-right
+ a.input-group-text.text-decoration-none(
+ (click)='switchToArgv()',
+ ngbTooltip='Split into unescaped arguments',
+ href='#'
+ )
+ i.fas.fa-fw.fa-caret-right
input.form-control.text-monospace(
[(ngModel)]='command',
(ngModelChange)='parseCommand()'
)
ng-container(*ngIf='argvMode')
- .form-group
+ .mb-3
label(translate) Program
.input-group
- .input-group-prepend
- a.input-group-text(
- (click)='switchToCommand()',
- ngbTooltip='Combine into a single escaped command',
- href='#'
- )
- i.fas.fa-fw.fa-caret-down
+ a.input-group-text.text-decoration-none(
+ (click)='switchToCommand()',
+ ngbTooltip='Combine into a single escaped command',
+ href='#'
+ )
+ i.fas.fa-fw.fa-caret-down
input.form-control.text-monospace(
type='text',
[(ngModel)]='_model.command',
)
- .form-group
+ .mb-3
label(translate) Arguments
.input-group(
*ngFor='let arg of _model.args; index as i; trackBy: trackByIndex',
@@ -39,11 +37,10 @@ ng-container(*ngIf='argvMode')
type='text',
[(ngModel)]='_model.args[i]',
)
- .input-group-append
- button.btn.btn-secondary((click)='_model.args.splice(i, 1)')
- i.fas.fa-fw.fa-trash
+ button.btn.btn-secondary((click)='_model.args.splice(i, 1)')
+ i.fas.fa-fw.fa-trash
.mt-2
button.btn.btn-secondary((click)='_model.args.push("")')
- i.fas.fa-plus.mr-2
+ i.fas.fa-plus.me-2
span(translate) Add
diff --git a/tabby-local/src/components/commandLineEditor.component.ts b/tabby-local/src/components/commandLineEditor.component.ts
index f4a81f2e..9169a1ae 100644
--- a/tabby-local/src/components/commandLineEditor.component.ts
+++ b/tabby-local/src/components/commandLineEditor.component.ts
@@ -6,7 +6,7 @@ import { SessionOptions } from '../api'
/** @hidden */
@Component({
selector: 'command-line-editor',
- template: require('./commandLineEditor.component.pug'),
+ templateUrl:'./commandLineEditor.component.pug',
})
export class CommandLineEditorComponent {
@Input() argvMode = false
diff --git a/tabby-local/src/components/environmentEditor.component.pug b/tabby-local/src/components/environmentEditor.component.pug
index ac247150..884da7e7 100644
--- a/tabby-local/src/components/environmentEditor.component.pug
+++ b/tabby-local/src/components/environmentEditor.component.pug
@@ -1,20 +1,18 @@
.mb-2.d-flex.align-items-center(*ngFor='let pair of vars')
.input-group
input.form-control.w-25.text-monospace([(ngModel)]='pair.key', (blur)='emitUpdate()', placeholder='Variable name')
- .input-group-append
- .input-group-text =
+ .input-group-text =
input.form-control.w-50.text-monospace([(ngModel)]='pair.value', (blur)='emitUpdate()', placeholder='Value')
- .input-group-append
- button.btn.btn-secondary((click)='removeEnvironmentVar(pair.key)')
- i.fas.fa-fw.fa-trash
+ button.btn.btn-secondary((click)='removeEnvironmentVar(pair.key)')
+ i.fas.fa-fw.fa-trash
.d-flex
button.btn.btn-secondary((click)='addEnvironmentVar()')
- i.fas.fa-plus.mr-2
+ i.fas.fa-plus.me-2
span(translate) Add
- .ml-auto
+ .ms-auto
.text-muted(translate) Substitutions allowed.
- .d-flex.ml-1(*ngIf='shouldShowExample()')
+ .d-flex.ms-1(*ngIf='shouldShowExample()')
.text-muted(translate) Example:
- a.ml-1((click)='addExample()', href='#') extend PATH
+ a.ms-1((click)='addExample()', href='#') extend PATH
diff --git a/tabby-local/src/components/environmentEditor.component.ts b/tabby-local/src/components/environmentEditor.component.ts
index ed4fe365..bb16dc4c 100644
--- a/tabby-local/src/components/environmentEditor.component.ts
+++ b/tabby-local/src/components/environmentEditor.component.ts
@@ -5,8 +5,8 @@ import { Subject } from 'rxjs'
/** @hidden */
@Component({
selector: 'environment-editor',
- template: require('./environmentEditor.component.pug'),
- styles: [require('./environmentEditor.component.scss')],
+ templateUrl:'./environmentEditor.component.pug',
+ styleUrls: ['./environmentEditor.component.scss'],
})
export class EnvironmentEditorComponent {
@Output() modelChange = new Subject()
diff --git a/tabby-local/src/components/localProfileSettings.component.pug b/tabby-local/src/components/localProfileSettings.component.pug
index 00d5b23c..5303928e 100644
--- a/tabby-local/src/components/localProfileSettings.component.pug
+++ b/tabby-local/src/components/localProfileSettings.component.pug
@@ -7,7 +7,7 @@ command-line-editor([model]='profile.options')
[(ngModel)]='profile.options.runAsAdministrator',
)
-.form-group
+.mb-3
label(translate) Working directory
.input-group
@@ -16,11 +16,10 @@ command-line-editor([model]='profile.options')
placeholder='Home directory',
[(ngModel)]='profile.options.cwd'
)
- .input-group-append
- button.btn.btn-secondary((click)='pickWorkingDirectory()')
- i.fas.fa-folder-open
+ button.btn.btn-secondary((click)='pickWorkingDirectory()')
+ i.fas.fa-folder-open
-.form-group
+.mb-3
label(translate) Environment
environment-editor(
type='text',
diff --git a/tabby-local/src/components/localProfileSettings.component.ts b/tabby-local/src/components/localProfileSettings.component.ts
index 4d2f6b9d..fbb7a9a3 100644
--- a/tabby-local/src/components/localProfileSettings.component.ts
+++ b/tabby-local/src/components/localProfileSettings.component.ts
@@ -8,7 +8,7 @@ import { ProfileSettingsComponent } from 'tabby-core'
/** @hidden */
@Component({
- template: require('./localProfileSettings.component.pug'),
+ templateUrl:'./localProfileSettings.component.pug',
})
export class LocalProfileSettingsComponent implements ProfileSettingsComponent {
profile: LocalProfile
diff --git a/tabby-local/src/components/shellSettingsTab.component.pug b/tabby-local/src/components/shellSettingsTab.component.pug
index fd2da423..1b40149c 100644
--- a/tabby-local/src/components/shellSettingsTab.component.pug
+++ b/tabby-local/src/components/shellSettingsTab.component.pug
@@ -11,7 +11,7 @@ h3.mb-3(translate) Shell
)
.alert.alert-info.d-flex.align-items-center(*ngIf='config.store.terminal.useConPTY && isConPTYAvailable && !isConPTYStable')
- .mr-auto(translate) Windows 10 build 18309 or above is recommended for ConPTY
+ .me-auto(translate) Windows 10 build 18309 or above is recommended for ConPTY
.alert.alert-info.d-flex.align-items-center(*ngIf='config.store.terminal.profile.startsWith("WSL") && (!config.store.terminal.useConPTY)')
- .mr-auto(translate) WSL terminal only supports TrueColor with ConPTY
+ .me-auto(translate) WSL terminal only supports TrueColor with ConPTY
diff --git a/tabby-local/src/components/shellSettingsTab.component.ts b/tabby-local/src/components/shellSettingsTab.component.ts
index 624aed7c..e7f4cf74 100644
--- a/tabby-local/src/components/shellSettingsTab.component.ts
+++ b/tabby-local/src/components/shellSettingsTab.component.ts
@@ -3,7 +3,7 @@ import { WIN_BUILD_CONPTY_SUPPORTED, WIN_BUILD_CONPTY_STABLE, isWindowsBuild, Co
/** @hidden */
@Component({
- template: require('./shellSettingsTab.component.pug'),
+ templateUrl:'./shellSettingsTab.component.pug',
})
export class ShellSettingsTabComponent {
isConPTYAvailable: boolean
diff --git a/tabby-local/src/index.ts b/tabby-local/src/index.ts
index bdcaad0e..02eb807f 100644
--- a/tabby-local/src/index.ts
+++ b/tabby-local/src/index.ts
@@ -1,5 +1,5 @@
import { NgModule } from '@angular/core'
-import { BrowserModule } from '@angular/platform-browser'
+import { CommonModule } from '@angular/common'
import { FormsModule } from '@angular/forms'
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
import { ToastrModule } from 'ngx-toastr'
@@ -46,7 +46,7 @@ import { LocalProfilesService } from './profiles'
/** @hidden */
@NgModule({
imports: [
- BrowserModule,
+ CommonModule,
FormsModule,
NgbModule,
ToastrModule,
@@ -90,11 +90,6 @@ import { LocalProfilesService } from './profiles'
WSLShellProvider,
WindowsStockShellsProvider,
],
- entryComponents: [
- TerminalTabComponent,
- ShellSettingsTabComponent,
- LocalProfileSettingsComponent,
- ],
declarations: [
TerminalTabComponent,
ShellSettingsTabComponent,
diff --git a/tabby-local/webpack.config.js b/tabby-local/webpack.config.js
deleted file mode 100644
index 3a406025..00000000
--- a/tabby-local/webpack.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const config = require('../webpack.plugin.config')
-module.exports = config({
- name: 'local',
- dirname: __dirname,
-})
diff --git a/tabby-local/webpack.config.mjs b/tabby-local/webpack.config.mjs
new file mode 100644
index 00000000..3aaab772
--- /dev/null
+++ b/tabby-local/webpack.config.mjs
@@ -0,0 +1,10 @@
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+import config from '../webpack.plugin.config.mjs'
+
+export default () => config({
+ name: 'local',
+ dirname: __dirname,
+})
diff --git a/tabby-plugin-manager/src/components/pluginsSettingsTab.component.pug b/tabby-plugin-manager/src/components/pluginsSettingsTab.component.pug
index 4759a896..6a9ffa9b 100644
--- a/tabby-plugin-manager/src/components/pluginsSettingsTab.component.pug
+++ b/tabby-plugin-manager/src/components/pluginsSettingsTab.component.pug
@@ -1,6 +1,6 @@
.d-flex.mb-3
h3(translate) Plugins
- button.btn.btn-secondary.btn-sm.ml-auto((click)='openPluginsFolder()')
+ button.btn.btn-secondary.btn-sm.ms-auto((click)='openPluginsFolder()')
i.fas.fa-folder
span(translate) Plugins folder
@@ -16,10 +16,9 @@ ul.nav-tabs.mb-2(ngbNav, #nav='ngbNav')
a(ngbNavLink, translate) Available
ng-template(ngbNavContent)
.input-group.mb-3.mt-3
- .input-group-prepend
- .input-group-text
- i.fas.fa-fw.fa-circle-notch.fa-spin(*ngIf='!availablePluginsReady')
- i.fas.fa-fw.fa-search(*ngIf='availablePluginsReady')
+ .input-group-text
+ i.fas.fa-fw.fa-circle-notch.fa-spin(*ngIf='!availablePluginsReady')
+ i.fas.fa-fw.fa-search(*ngIf='availablePluginsReady')
input.form-control(
type='text',
[(ngModel)]='_1',
@@ -43,14 +42,14 @@ ul.nav-tabs.mb-2(ngbNav, #nav='ngbNav')
)
i.fas.fa-fw.fa-cloud-download(*ngIf='busy.get(plugin.name) != BusyState.Installing')
i.fas.fa-fw.fa-circle-notch.fa-spin(*ngIf='busy.get(plugin.name) == BusyState.Installing')
- span.ml-2(translate) Get
+ span.ms-2(translate) Get
button.btn.btn-secondary.btn-block.justify-content-center(
*ngIf='plugin.homepage',
(click)='showPluginHomepage(plugin)'
)
i.fas.fa-fw.fa-external-link-alt
- span.ml-2(translate) Homepage
+ span.ms-2(translate) Homepage
.col-8
ng-container(*ngTemplateOutlet='pluginInfo; context: { plugin }')
@@ -61,9 +60,8 @@ ul.nav-tabs.mb-2(ngbNav, #nav='ngbNav')
a(ngbNavLink, translate) Installed
ng-template(ngbNavContent)
.input-group.mb-3.mt-3
- .input-group-prepend
- .input-group-text
- i.fas.fa-fw.fa-search
+ .input-group-text
+ i.fas.fa-fw.fa-search
input.form-control(
type='text',
[(ngModel)]='_2',
@@ -75,14 +73,14 @@ ul.nav-tabs.mb-2(ngbNav, #nav='ngbNav')
ng-container(*ngFor='let plugin of installedPlugins$')
ngb-panel
ng-template(ngbPanelTitle)
- .text-left.mr-auto
+ .text-left.me-auto
div
strong {{plugin.name}}
- small.text-muted.ml-2(*ngIf='plugin.isBuiltin', translate) Built-in
- small.text-warning.ml-2(*ngIf='!isPluginEnabled(plugin)', translate) Disabled
+ small.text-muted.ms-2(*ngIf='plugin.isBuiltin', translate) Built-in
+ small.text-warning.ms-2(*ngIf='!isPluginEnabled(plugin)', translate) Disabled
small.d-block.text-muted {{plugin.description}}
- button.btn.btn-primary.ml-2(
+ button.btn.btn-primary.ms-2(
*ngIf='knownUpgrades[plugin.name]',
(click)='upgradePlugin(plugin)',
[disabled]='busy.has(plugin.name)'
@@ -133,11 +131,11 @@ ng-template(#pluginInfo, let-plugin='plugin')
.col-4
strong(translate) Author
.col-8
- .badge.badge-success(*ngIf='plugin.isOfficial')
+ .badge.text-bg-success(*ngIf='plugin.isOfficial')
i.fas.fa-check
- span.ml-1(translate) Official
+ span.ms-1(translate) Official
a.btn.btn-link.px-0.w-auto((click)='showPluginInfo(plugin)', *ngIf='!plugin.isOfficial')
span {{plugin.author}}
- i.fas.fa-fw.fa-external-link-alt.ml-2
+ i.fas.fa-fw.fa-external-link-alt.ms-2
.mb-4([ngbNavOutlet]='nav')
diff --git a/tabby-plugin-manager/src/components/pluginsSettingsTab.component.ts b/tabby-plugin-manager/src/components/pluginsSettingsTab.component.ts
index d0995add..9c5ea125 100644
--- a/tabby-plugin-manager/src/components/pluginsSettingsTab.component.ts
+++ b/tabby-plugin-manager/src/components/pluginsSettingsTab.component.ts
@@ -15,8 +15,8 @@ _('Search plugins')
/** @hidden */
@Component({
- template: require('./pluginsSettingsTab.component.pug'),
- styles: [require('./pluginsSettingsTab.component.scss')],
+ templateUrl:'./pluginsSettingsTab.component.pug',
+ styleUrls: ['./pluginsSettingsTab.component.scss'],
})
export class PluginsSettingsTabComponent {
BusyState = BusyState
diff --git a/tabby-plugin-manager/src/index.ts b/tabby-plugin-manager/src/index.ts
index bcc98971..d0e9ade3 100644
--- a/tabby-plugin-manager/src/index.ts
+++ b/tabby-plugin-manager/src/index.ts
@@ -1,5 +1,5 @@
+import { CommonModule } from '@angular/common'
import { NgModule } from '@angular/core'
-import { BrowserModule } from '@angular/platform-browser'
import { FormsModule } from '@angular/forms'
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
@@ -12,7 +12,7 @@ import { PluginsSettingsTabProvider } from './settings'
@NgModule({
imports: [
- BrowserModule,
+ CommonModule,
FormsModule,
NgbModule,
TabbyCorePlugin,
@@ -20,9 +20,6 @@ import { PluginsSettingsTabProvider } from './settings'
providers: [
{ provide: SettingsTabProvider, useClass: PluginsSettingsTabProvider, multi: true },
],
- entryComponents: [
- PluginsSettingsTabComponent,
- ],
declarations: [
PluginsSettingsTabComponent,
],
diff --git a/tabby-plugin-manager/webpack.config.js b/tabby-plugin-manager/webpack.config.js
deleted file mode 100644
index c150f071..00000000
--- a/tabby-plugin-manager/webpack.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const config = require('../webpack.plugin.config')
-module.exports = config({
- name: 'plugin-manager',
- dirname: __dirname,
-})
diff --git a/tabby-plugin-manager/webpack.config.mjs b/tabby-plugin-manager/webpack.config.mjs
new file mode 100644
index 00000000..c0fbb3cc
--- /dev/null
+++ b/tabby-plugin-manager/webpack.config.mjs
@@ -0,0 +1,10 @@
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+import config from '../webpack.plugin.config.mjs'
+
+export default () => config({
+ name: 'plugin-manager',
+ dirname: __dirname,
+})
diff --git a/tabby-serial/src/components/serialProfileSettings.component.pug b/tabby-serial/src/components/serialProfileSettings.component.pug
index 11e351bf..6e44ff12 100644
--- a/tabby-serial/src/components/serialProfileSettings.component.pug
+++ b/tabby-serial/src/components/serialProfileSettings.component.pug
@@ -4,7 +4,7 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
ng-template(ngbNavContent)
.row
.col-6(ng:if='hostApp.platform !== Platform.Web')
- .form-group
+ .mb-3
label(translate) Device
input.form-control(
type='text',
@@ -15,7 +15,7 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
)
.col-6
- .form-group
+ .mb-3
label(translate) Baud rate
input.form-control(
type='number',
diff --git a/tabby-serial/src/components/serialProfileSettings.component.ts b/tabby-serial/src/components/serialProfileSettings.component.ts
index 98407000..0f0909e2 100644
--- a/tabby-serial/src/components/serialProfileSettings.component.ts
+++ b/tabby-serial/src/components/serialProfileSettings.component.ts
@@ -7,7 +7,7 @@ import { SerialService } from '../services/serial.service'
/** @hidden */
@Component({
- template: require('./serialProfileSettings.component.pug'),
+ templateUrl:'./serialProfileSettings.component.pug',
})
export class SerialProfileSettingsComponent implements ProfileSettingsComponent {
profile: SerialProfile
diff --git a/tabby-serial/src/components/serialTab.component.pug b/tabby-serial/src/components/serialTab.component.pug
index f058409b..269f0e3f 100644
--- a/tabby-serial/src/components/serialTab.component.pug
+++ b/tabby-serial/src/components/serialTab.component.pug
@@ -1,11 +1,11 @@
terminal-toolbar([tab]='this')
- i.fas.fa-xs.fa-circle.text-success.mr-2(*ngIf='session && session.open')
- i.fas.fa-xs.fa-circle.text-danger.mr-2(*ngIf='!session || !session.open')
+ i.fas.fa-xs.fa-circle.text-success.me-2(*ngIf='session && session.open')
+ i.fas.fa-xs.fa-circle.text-danger.me-2(*ngIf='!session || !session.open')
strong {{profile.options.port}} ({{profile.options.baudrate}})
- .mr-auto
+ .me-auto
- button.btn.btn-sm.btn-link.mr-3((click)='changeBaudRate()', *ngIf='session && session.open && hostApp.platform !== Platform.Web')
+ button.btn.btn-sm.btn-link.me-3((click)='changeBaudRate()', *ngIf='session && session.open && hostApp.platform !== Platform.Web')
span(translate) Change baud rate
button.btn.btn-sm.btn-link((click)='reconnect()', *ngIf='!session || !session.open')
diff --git a/tabby-serial/src/components/serialTab.component.ts b/tabby-serial/src/components/serialTab.component.ts
index 1373bf0a..100ad375 100644
--- a/tabby-serial/src/components/serialTab.component.ts
+++ b/tabby-serial/src/components/serialTab.component.ts
@@ -11,7 +11,7 @@ import { SerialSession, BAUD_RATES, SerialProfile } from '../api'
@Component({
selector: 'serial-tab',
template: `${BaseTerminalTabComponent.template} ${require('./serialTab.component.pug')}`,
- styles: [require('./serialTab.component.scss'), ...BaseTerminalTabComponent.styles],
+ styleUrls: ['./serialTab.component.scss', ...BaseTerminalTabComponent.styles],
animations: BaseTerminalTabComponent.animations,
})
export class SerialTabComponent extends BaseTerminalTabComponent {
diff --git a/tabby-serial/src/index.ts b/tabby-serial/src/index.ts
index 30530e3d..4f4261b4 100644
--- a/tabby-serial/src/index.ts
+++ b/tabby-serial/src/index.ts
@@ -30,10 +30,6 @@ import { SerialProfilesService } from './profiles'
{ provide: TabRecoveryProvider, useClass: RecoveryProvider, multi: true },
{ provide: HotkeyProvider, useClass: SerialHotkeyProvider, multi: true },
],
- entryComponents: [
- SerialProfileSettingsComponent,
- SerialTabComponent,
- ],
declarations: [
SerialProfileSettingsComponent,
SerialTabComponent,
diff --git a/tabby-serial/src/services/serial.service.ts b/tabby-serial/src/services/serial.service.ts
index 63228b70..6794f213 100644
--- a/tabby-serial/src/services/serial.service.ts
+++ b/tabby-serial/src/services/serial.service.ts
@@ -1,4 +1,4 @@
-import { Injectable } from '@angular/core'
+import { Injectable, Injector } from '@angular/core'
import WSABinding from 'serialport-binding-webserialapi'
import AbstractBinding from '@serialport/binding-abstract'
import { autoDetect } from '@serialport/bindings-cpp'
@@ -9,7 +9,7 @@ import { SerialTabComponent } from '../components/serialTab.component'
@Injectable({ providedIn: 'root' })
export class SerialService {
private constructor (
- private profilesService: ProfilesService,
+ private injector: Injector,
private hostApp: HostAppService,
) { }
@@ -45,6 +45,6 @@ export class SerialService {
},
}
window.localStorage.lastSerialConnection = JSON.stringify(profile)
- return this.profilesService.openNewTabForProfile(profile) as Promise
+ return this.injector.get(ProfilesService).openNewTabForProfile(profile) as Promise
}
}
diff --git a/tabby-serial/webpack.config.js b/tabby-serial/webpack.config.js
deleted file mode 100644
index 4e76d61c..00000000
--- a/tabby-serial/webpack.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const config = require('../webpack.plugin.config')
-module.exports = config({
- name: 'serial',
- dirname: __dirname,
-})
diff --git a/tabby-serial/webpack.config.mjs b/tabby-serial/webpack.config.mjs
new file mode 100644
index 00000000..94afefc4
--- /dev/null
+++ b/tabby-serial/webpack.config.mjs
@@ -0,0 +1,10 @@
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+import config from '../webpack.plugin.config.mjs'
+
+export default () => config({
+ name: 'serial',
+ dirname: __dirname,
+})
diff --git a/tabby-settings/package.json b/tabby-settings/package.json
index ecebe212..1b347281 100644
--- a/tabby-settings/package.json
+++ b/tabby-settings/package.json
@@ -17,9 +17,9 @@
"author": "Eugene Pankov",
"license": "MIT",
"devDependencies": {
- "@types/marked": "^4.0.2",
- "marked": "^4.0.8",
- "ngx-infinite-scroll": "^10.0.1"
+ "@types/marked": "^4.0.8",
+ "marked": "^4.2.12",
+ "ngx-infinite-scroll": "^15"
},
"peerDependencies": {
"@angular/animations": "^9.1.9",
diff --git a/tabby-settings/src/components/configSyncSettingsTab.component.pug b/tabby-settings/src/components/configSyncSettingsTab.component.pug
index dfe5930c..cba41089 100644
--- a/tabby-settings/src/components/configSyncSettingsTab.component.pug
+++ b/tabby-settings/src/components/configSyncSettingsTab.component.pug
@@ -14,9 +14,11 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
[(ngModel)]='config.store.configSync.host',
(keydown.enter)='config.save()',
)
- .input-group-append(*ngIf='config.store.configSync.host')
- button.btn.btn-secondary((click)='openSyncHost()')
- i.fas.fa-external-link-alt
+ button.btn.btn-secondary(
+ *ngIf='config.store.configSync.host',
+ (click)='openSyncHost()'
+ )
+ i.fas.fa-external-link-alt
.form-line
.header
@@ -29,16 +31,15 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
[(ngModel)]='config.store.configSync.token',
(keydown.enter)='config.save(); testConnection()'
)
- .input-group-append(*ngIf='config.store.configSync.token')
- .input-group-text
- i.fas.fa-fw.fa-circle-notch.fa-spin.text-warning(*ngIf='connectionSuccessful === null')
- i.fas.fa-fw.fa-check.text-success(*ngIf='connectionSuccessful')
- i.fas.fa-fw.fa-exclamation-triangle.text-danger(*ngIf='connectionSuccessful === false')
+ .input-group-text(*ngIf='config.store.configSync.token')
+ i.fas.fa-fw.fa-circle-notch.fa-spin.text-warning(*ngIf='connectionSuccessful === null')
+ i.fas.fa-fw.fa-check.text-success(*ngIf='connectionSuccessful')
+ i.fas.fa-fw.fa-exclamation-triangle.text-danger(*ngIf='connectionSuccessful === false')
ng-container(*ngIf='config.store.configSync.token')
.alert.alert-danger(*ngIf='connectionSuccessful === false')
i.fas.fa-exclamation-triangle
- span.ml-2(translate='Connection failed: {error}', [translateParams]='{error: connectionError}')
+ span.ms-2(translate='Connection failed: {error}', [translateParams]='{error: connectionError}')
ng-container(*ngIf='connectionSuccessful')
.form-line
@@ -47,49 +48,49 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
div(*ngIf='configs === null')
i.fas.fa-fw.fa-circle-notch.fa-spin
- span.ml-2(translate) Loading configs...
+ span.ms-2(translate) Loading configs...
ng-container(*ngIf='configs !== null')
- .list-group-light
+ .list-group.list-group-light
.list-group-item.d-flex.align-items-center(
*ngFor='let cfg of configs',
[class.active]='isActiveConfig(cfg)',
)
i.fas.fa-fw.text-success([class.fa-check]='isActiveConfig(cfg)')
i.fas.fa-fw.fa-file
- .ml-2.d-flex.flex-column.align-items-start
+ .ms-2.d-flex.flex-column.align-items-start
div {{cfg.name}}
small.text-muted(
translate='Modified on {date}',
[translateParams]='{date: cfg.modified_at|date:"medium"}'
)
- .mr-auto
- button.btn.btn-link.ml-1(
+ .me-auto
+ button.btn.btn-link.ms-1(
(click)='uploadAndSync(cfg)',
[class.hover-reveal]='!isActiveConfig(cfg)'
)
i.fas.fa-arrow-up
- span.ml-2(*ngIf='isActiveConfig(cfg)', translate) Upload
- span.ml-2(*ngIf='!isActiveConfig(cfg)', translate) Replace
- button.btn.btn-link.ml-1(
+ span.ms-2(*ngIf='isActiveConfig(cfg)', translate) Upload
+ span.ms-2(*ngIf='!isActiveConfig(cfg)', translate) Replace
+ button.btn.btn-link.ms-1(
(click)='downloadAndSync(cfg)',
[class.hover-reveal]='!isActiveConfig(cfg)'
)
i.fas.fa-arrow-down
- span.ml-2(translate) Download
- button.btn.btn-link.ml-1(
+ span.ms-2(translate) Download
+ button.btn.btn-link.ms-1(
(click)='delete(cfg)',
[class.hover-reveal]='!isActiveConfig(cfg)'
)
i.fas.fa-trash
- span.ml-2(translate) Delete
+ span.ms-2(translate) Delete
a.list-group-item.list-group-item-action.d-flex.align-items-center(
href='#',
(click)='uploadAsNew()'
)
i.fas.fa-fw
i.fas.fa-fw.fa-cloud-upload-alt
- .ml-2(translate) Upload as a new config
+ .ms-2(translate) Upload as a new config
ng-container(*ngIf='hasMatchingRemoteConfig()')
.form-line
diff --git a/tabby-settings/src/components/configSyncSettingsTab.component.ts b/tabby-settings/src/components/configSyncSettingsTab.component.ts
index d4fb657d..7909b7d8 100644
--- a/tabby-settings/src/components/configSyncSettingsTab.component.ts
+++ b/tabby-settings/src/components/configSyncSettingsTab.component.ts
@@ -8,7 +8,7 @@ import { Config, ConfigSyncService } from '../services/configSync.service'
/** @hidden */
@Component({
selector: 'config-sync-settings-tab',
- template: require('./configSyncSettingsTab.component.pug'),
+ templateUrl:'./configSyncSettingsTab.component.pug',
})
export class ConfigSyncSettingsTabComponent extends BaseComponent {
connectionSuccessful: boolean|null = null
diff --git a/tabby-settings/src/components/editProfileModal.component.pug b/tabby-settings/src/components/editProfileModal.component.pug
index a81a5d28..2a70ce5a 100644
--- a/tabby-settings/src/components/editProfileModal.component.pug
+++ b/tabby-settings/src/components/editProfileModal.component.pug
@@ -10,7 +10,7 @@
.modal-body
.row
.col-12.col-lg-4
- .form-group(*ngIf='!defaultsMode')
+ .mb-3(*ngIf='!defaultsMode')
label(translate) Name
input.form-control(
type='text',
@@ -18,7 +18,7 @@
[(ngModel)]='profile.name',
)
- .form-group(*ngIf='!defaultsMode')
+ .mb-3(*ngIf='!defaultsMode')
label(translate) Group
input.form-control(
type='text',
@@ -28,7 +28,7 @@
[ngbTypeahead]='groupTypeahead',
)
- .form-group(*ngIf='!defaultsMode')
+ .mb-3(*ngIf='!defaultsMode')
label(translate) Icon
.input-group
input.form-control(
@@ -38,16 +38,15 @@
[ngbTypeahead]='iconSearch',
[resultTemplate]='rt'
)
- .input-group-append
- .input-group-text
- profile-icon(
- [icon]='profile.icon',
- [color]='profile.color'
- )
+ .input-group-text
+ profile-icon(
+ [icon]='profile.icon',
+ [color]='profile.color'
+ )
ng-template(#rt,let-r='result',let-t='term')
i([class]='"fa-fw " + r')
- ngb-highlight.ml-2([result]='r', [term]='t')
+ ngb-highlight.ms-2([result]='r', [term]='t')
.form-line
.header
diff --git a/tabby-settings/src/components/editProfileModal.component.ts b/tabby-settings/src/components/editProfileModal.component.ts
index 3d656153..4248f1a9 100644
--- a/tabby-settings/src/components/editProfileModal.component.ts
+++ b/tabby-settings/src/components/editProfileModal.component.ts
@@ -13,7 +13,7 @@ const iconsClassList = Object.keys(iconsData).map(
/** @hidden */
@Component({
- template: require('./editProfileModal.component.pug'),
+ templateUrl:'./editProfileModal.component.pug',
})
export class EditProfileModalComponent {
@Input() profile: P & ConfigProxy
diff --git a/tabby-settings/src/components/hotkeyInputModal.component.ts b/tabby-settings/src/components/hotkeyInputModal.component.ts
index 492ace1b..5277118a 100644
--- a/tabby-settings/src/components/hotkeyInputModal.component.ts
+++ b/tabby-settings/src/components/hotkeyInputModal.component.ts
@@ -8,8 +8,8 @@ const INPUT_TIMEOUT = 1000
/** @hidden */
@Component({
selector: 'hotkey-input-modal',
- template: require('./hotkeyInputModal.component.pug'),
- styles: [require('./hotkeyInputModal.component.scss')],
+ templateUrl:'./hotkeyInputModal.component.pug',
+ styleUrls: ['./hotkeyInputModal.component.scss'],
animations: [
trigger('animateKey', [
transition(':enter', [
diff --git a/tabby-settings/src/components/hotkeySettingsTab.component.pug b/tabby-settings/src/components/hotkeySettingsTab.component.pug
index 20826acc..82b8c9b7 100644
--- a/tabby-settings/src/components/hotkeySettingsTab.component.pug
+++ b/tabby-settings/src/components/hotkeySettingsTab.component.pug
@@ -1,18 +1,17 @@
h3.mb-3(translate) Hotkeys
.input-group.mb-4
- .input-group-prepend
- .input-group-text
- i.fas.fa-fw.fa-search
+ .input-group-text
+ i.fas.fa-fw.fa-search
input.form-control(type='search', [placeholder]='"Search hotkeys"|translate', [(ngModel)]='hotkeyFilter')
-.form-group.hotkeys-table
+.mb-3.hotkeys-table
ng-container(*ngFor='let hotkey of hotkeyDescriptions')
.row.align-items-center(*ngIf='!hotkeyFilter || hotkeyFilterFn(hotkey, hotkeyFilter)')
.col-8.py-2
span {{hotkey.name|translate}}
- span.ml-2.text-muted ({{hotkey.id}})
- .col-4.pr-5
+ span.ms-2.text-muted ({{hotkey.id}})
+ .col-4.pe-5
multi-hotkey-input(
[hotkeys]='getHotkeys(hotkey.id) || []',
(hotkeysChange)='setHotkeys(hotkey.id, $event)'
diff --git a/tabby-settings/src/components/hotkeySettingsTab.component.ts b/tabby-settings/src/components/hotkeySettingsTab.component.ts
index 8f6412a2..245192ab 100644
--- a/tabby-settings/src/components/hotkeySettingsTab.component.ts
+++ b/tabby-settings/src/components/hotkeySettingsTab.component.ts
@@ -14,7 +14,7 @@ _('Search hotkeys')
/** @hidden */
@Component({
selector: 'hotkey-settings-tab',
- template: require('./hotkeySettingsTab.component.pug'),
+ templateUrl:'./hotkeySettingsTab.component.pug',
})
export class HotkeySettingsTabComponent {
hotkeyFilter = ''
diff --git a/tabby-settings/src/components/multiHotkeyInput.component.pug b/tabby-settings/src/components/multiHotkeyInput.component.pug
index 68584d04..b42199fb 100644
--- a/tabby-settings/src/components/multiHotkeyInput.component.pug
+++ b/tabby-settings/src/components/multiHotkeyInput.component.pug
@@ -1,6 +1,6 @@
.item(*ngFor='let hotkey of hotkeys')
.body((click)='editItem(hotkey)')
- .stroke(*ngFor='let stroke of hotkey.strokes')
+ .stroke(*ngFor='let stroke of castAny(hotkey.strokes)')
span(*ngIf='!hotkey.isDuplicate') {{stroke}}
span.duplicate(*ngIf='hotkey.isDuplicate') {{stroke}}
.remove((click)='removeItem(hotkey)') ×
diff --git a/tabby-settings/src/components/multiHotkeyInput.component.ts b/tabby-settings/src/components/multiHotkeyInput.component.ts
index ceefae52..05345b58 100644
--- a/tabby-settings/src/components/multiHotkeyInput.component.ts
+++ b/tabby-settings/src/components/multiHotkeyInput.component.ts
@@ -7,8 +7,8 @@ import deepEqual from 'deep-equal'
/** @hidden */
@Component({
selector: 'multi-hotkey-input',
- template: require('./multiHotkeyInput.component.pug'),
- styles: [require('./multiHotkeyInput.component.scss')],
+ templateUrl:'./multiHotkeyInput.component.pug',
+ styleUrls: ['./multiHotkeyInput.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class MultiHotkeyInputComponent {
@@ -45,4 +45,7 @@ export class MultiHotkeyInputComponent {
private storeUpdatedHotkeys () {
this.hotkeysChange.emit(this.hotkeys)
}
+
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
+ protected castAny = (x: any): any => x
}
diff --git a/tabby-settings/src/components/profilesSettingsTab.component.pug b/tabby-settings/src/components/profilesSettingsTab.component.pug
index 4c84ba90..b2b11455 100644
--- a/tabby-settings/src/components/profilesSettingsTab.component.pug
+++ b/tabby-settings/src/components/profilesSettingsTab.component.pug
@@ -23,12 +23,11 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
.d-flex.mb-3
.input-group
- .input-group-prepend
- .input-group-text
- i.fas.fa-fw.fa-search
+ .input-group-text
+ i.fas.fa-fw.fa-search
input.form-control(type='search', [placeholder]='"Filter"|translate', [(ngModel)]='filter')
- button.btn.btn-primary.flex-shrink-0.ml-3((click)='newProfile()')
+ button.btn.btn-primary.flex-shrink-0.ms-3((click)='newProfile()')
i.fas.fa-fw.fa-plus
span(translate) New profile
@@ -40,20 +39,20 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
)
.fa.fa-fw.fa-chevron-right(*ngIf='group.collapsed')
.fa.fa-fw.fa-chevron-down(*ngIf='!group.collapsed')
- span.ml-3.mr-auto {{group.name || ("Ungrouped"|translate)}}
- button.btn.btn-sm.btn-link.hover-reveal.ml-2(
+ span.ms-3.me-auto {{group.name || ("Ungrouped"|translate)}}
+ button.btn.btn-sm.btn-link.hover-reveal.ms-2(
*ngIf='group.editable && group.name',
(click)='$event.stopPropagation(); editGroup(group)'
)
i.fas.fa-pencil-alt
- button.btn.btn-sm.btn-link.hover-reveal.ml-2(
+ button.btn.btn-sm.btn-link.hover-reveal.ms-2(
*ngIf='group.editable && group.name',
(click)='$event.stopPropagation(); deleteGroup(group)'
)
i.fas.fa-trash-alt
ng-container(*ngIf='!group.collapsed')
ng-container(*ngFor='let profile of group.profiles')
- .list-group-item.pl-5.d-flex.align-items-center(
+ .list-group-item.ps-5.d-flex.align-items-center(
*ngIf='isProfileVisible(profile)',
[class.list-group-item-action]='!profile.isBuiltin',
(click)='profile.isBuiltin ? null : editProfile(profile)'
@@ -64,23 +63,23 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
)
.no-wrap {{profile.name}}
- .text-muted.no-wrap.ml-2 {{getDescription(profile)}}
+ .text-muted.no-wrap.ms-2 {{getDescription(profile)}}
- .mr-auto
+ .me-auto
- button.btn.btn-link.hover-reveal.ml-1((click)='$event.stopPropagation(); launchProfile(profile)')
+ button.btn.btn-link.hover-reveal.ms-1((click)='$event.stopPropagation(); launchProfile(profile)')
i.fas.fa-play
- button.btn.btn-link.hover-reveal.ml-1((click)='$event.stopPropagation(); newProfile(profile)')
+ button.btn.btn-link.hover-reveal.ms-1((click)='$event.stopPropagation(); newProfile(profile)')
i.fas.fa-copy
- button.btn.btn-link.hover-reveal.ml-1(
+ button.btn.btn-link.hover-reveal.ms-1(
*ngIf='!profile.isBuiltin',
(click)='$event.stopPropagation(); deleteProfile(profile)'
)
i.fas.fa-trash-alt
- .ml-1(class='badge badge-{{getTypeColorClass(profile)}}') {{getTypeLabel(profile)}}
+ .ms-1(class='badge text-bg-{{getTypeColorClass(profile)}}') {{getTypeLabel(profile)}}
li(ngbNavItem)
a(ngbNavLink, translate) Advanced
diff --git a/tabby-settings/src/components/profilesSettingsTab.component.ts b/tabby-settings/src/components/profilesSettingsTab.component.ts
index 05bc0c6b..b0032c7c 100644
--- a/tabby-settings/src/components/profilesSettingsTab.component.ts
+++ b/tabby-settings/src/components/profilesSettingsTab.component.ts
@@ -19,8 +19,8 @@ _('Ungrouped')
/** @hidden */
@Component({
- template: require('./profilesSettingsTab.component.pug'),
- styles: [require('./profilesSettingsTab.component.scss')],
+ templateUrl:'./profilesSettingsTab.component.pug',
+ styleUrls: ['./profilesSettingsTab.component.scss'],
})
export class ProfilesSettingsTabComponent extends BaseComponent {
profiles: PartialProfile[] = []
diff --git a/tabby-settings/src/components/releaseNotesTab.component.ts b/tabby-settings/src/components/releaseNotesTab.component.ts
index d8e85d56..62740476 100644
--- a/tabby-settings/src/components/releaseNotesTab.component.ts
+++ b/tabby-settings/src/components/releaseNotesTab.component.ts
@@ -1,7 +1,7 @@
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'
import axios from 'axios'
-import { marked } from 'marked'
+import * as marked from '../../node_modules/marked/src/marked'
import { Component, Injector } from '@angular/core'
import { BaseTabComponent, TranslateService } from 'tabby-core'
@@ -15,8 +15,8 @@ export interface Release {
/** @hidden */
@Component({
selector: 'release-notes-tab',
- template: require('./releaseNotesTab.component.pug'),
- styles: [require('./releaseNotesTab.component.scss')],
+ templateUrl:'./releaseNotesTab.component.pug',
+ styleUrls: ['./releaseNotesTab.component.scss'],
})
export class ReleaseNotesComponent extends BaseTabComponent {
releases: Release[] = []
@@ -36,7 +36,7 @@ export class ReleaseNotesComponent extends BaseTabComponent {
this.releases = this.releases.concat(response.data.map(r => ({
name: r.name,
version: r.tag_name,
- content: marked(r.body),
+ content: marked.marked(r.body),
date: new Date(r.created_at),
})))
this.lastPage = page
diff --git a/tabby-settings/src/components/setVaultPassphraseModal.component.pug b/tabby-settings/src/components/setVaultPassphraseModal.component.pug
index bd24e68c..fbe4f452 100644
--- a/tabby-settings/src/components/setVaultPassphraseModal.component.pug
+++ b/tabby-settings/src/components/setVaultPassphraseModal.component.pug
@@ -11,9 +11,8 @@ h3.modal-header.m-0.pb-0(translate) Set master passphrase
(keyup.enter)='ok()',
(keyup.esc)='cancel()',
)
- .input-group-append
- button.btn.btn-secondary((click)='showPassphrase = !showPassphrase')
- i.fas.fa-eye
+ button.btn.btn-secondary((click)='showPassphrase = !showPassphrase')
+ i.fas.fa-eye
.modal-footer
button.btn.btn-primary((click)='ok()', translate) Set passphrase
diff --git a/tabby-settings/src/components/setVaultPassphraseModal.component.ts b/tabby-settings/src/components/setVaultPassphraseModal.component.ts
index f5f81e0b..827b12bb 100644
--- a/tabby-settings/src/components/setVaultPassphraseModal.component.ts
+++ b/tabby-settings/src/components/setVaultPassphraseModal.component.ts
@@ -3,10 +3,11 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
/** @hidden */
@Component({
- template: require('./setVaultPassphraseModal.component.pug'),
+ templateUrl:'./setVaultPassphraseModal.component.pug',
})
export class SetVaultPassphraseModalComponent {
passphrase: string
+ showPassphrase = false
@ViewChild('input') input: ElementRef
constructor (
diff --git a/tabby-settings/src/components/settingsTab.component.pug b/tabby-settings/src/components/settingsTab.component.pug
index eb05edbf..50cf2b4f 100644
--- a/tabby-settings/src/components/settingsTab.component.pug
+++ b/tabby-settings/src/components/settingsTab.component.pug
@@ -2,7 +2,7 @@
ul.nav-pills(ngbNav, #nav='ngbNav', [activeId]='activeTab', orientation='vertical')
li(ngbNavItem='application')
a(ngbNavLink)
- i.fas.fa-fw.fa-window-maximize.mr-2
+ i.fas.fa-fw.fa-window-maximize.me-2
span(translate) Application
ng-template(ngbNavContent)
.content-box
@@ -71,7 +71,7 @@
.title(translate) Language
a.description((click)='homeBase.openTranslations()')
span(translate) Help translate Tabby
- i.fas.fa-external-link-square-alt.ml-1
+ i.fas.fa-external-link-square-alt.ms-1
select.form-control([(ngModel)]='config.store.language', (ngModelChange)='saveConfiguration(true)')
option([ngValue]='null', translate) Automatic
option(
@@ -117,7 +117,7 @@
ng-container(*ngFor='let provider of settingsProviders')
li(*ngIf='provider.prioritized', [ngbNavItem]='provider.id')
a.d-flex.align-items-center(ngbNavLink)
- i(class='fas fa-fw mr-2 fa-{{provider.icon}}')
+ i(class='fas fa-fw me-2 fa-{{provider.icon}}')
span {{provider.title|translate}}
ng-template(ngbNavContent)
settings-tab-body([provider]='provider')
@@ -127,14 +127,14 @@
ng-container(*ngFor='let provider of settingsProviders')
li(*ngIf='!provider.prioritized', [ngbNavItem]='provider.id')
a.d-flex.align-items-center(ngbNavLink)
- i(class='fas fa-fw mr-2 fa-{{provider.icon || "puzzle-piece"}}')
+ i(class='fas fa-fw me-2 fa-{{provider.icon || "puzzle-piece"}}')
span {{provider.title|translate}}
ng-template(ngbNavContent)
settings-tab-body([provider]='provider')
li(ngbNavItem='config-file')
a.d-flex.align-items-center(ngbNavLink)
- i.fas.fa-fw.fa-code.mr-2
+ i.fas.fa-fw.fa-code.me-2
span(translate) Config file
ng-template.test(ngbNavContent)
.d-flex.flex-column.w-100.h-100
@@ -152,20 +152,20 @@
)
.mt-3.d-flex
button.btn.btn-primary((click)='saveConfigFile()', *ngIf='isConfigFileValid()')
- i.fas.fa-check.mr-2
+ i.fas.fa-check.me-2
span(translate) Save and apply
button.btn.btn-primary(disabled, *ngIf='!isConfigFileValid()')
- i.fas.fa-exclamation-triangle.mr-2
+ i.fas.fa-exclamation-triangle.me-2
span(translate) Invalid syntax
- button.btn.btn-secondary.ml-auto(
+ button.btn.btn-secondary.ms-auto(
(click)='showConfigDefaults = !showConfigDefaults',
translate
) Show defaults
- button.btn.btn-secondary.ml-3(
+ button.btn.btn-secondary.ms-3(
*ngIf='platform.getConfigPath()',
(click)='showConfigFile()'
)
- i.fas.fa-external-link-square-alt.mr-2
+ i.fas.fa-external-link-square-alt.me-2
span(translate) Show config file
div([ngbNavOutlet]='nav')
diff --git a/tabby-settings/src/components/settingsTab.component.scss b/tabby-settings/src/components/settingsTab.component.scss
index 273b0576..58a17f9d 100644
--- a/tabby-settings/src/components/settingsTab.component.scss
+++ b/tabby-settings/src/components/settingsTab.component.scss
@@ -43,11 +43,14 @@
> .tab-content {
flex: auto;
- padding: 20px 30px;
+ padding: 20px 0;
overflow-y: auto;
+ display: flex;
+ flex-direction: column;
> ::ng-deep .tab-pane {
- height: 100%;
+ padding: 0 30px;
+ min-height: 100%;
> settings-tab-body > * {
display: block;
diff --git a/tabby-settings/src/components/settingsTab.component.ts b/tabby-settings/src/components/settingsTab.component.ts
index 2e370d7e..3d8e498b 100644
--- a/tabby-settings/src/components/settingsTab.component.ts
+++ b/tabby-settings/src/components/settingsTab.component.ts
@@ -2,7 +2,7 @@
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'
import * as yaml from 'js-yaml'
import { debounce } from 'utils-decorators/dist/esm/debounce/debounce'
-import { Component, Inject, Input, HostBinding, NgZone, Injector } from '@angular/core'
+import { Component, Inject, Input, HostBinding, Injector } from '@angular/core'
import {
ConfigService,
BaseTabComponent,
@@ -23,9 +23,9 @@ import { ReleaseNotesComponent } from './releaseNotesTab.component'
/** @hidden */
@Component({
selector: 'settings-tab',
- template: require('./settingsTab.component.pug'),
- styles: [
- require('./settingsTab.component.scss'),
+ templateUrl:'./settingsTab.component.pug',
+ styleUrls: [
+ './settingsTab.component.scss',
],
})
export class SettingsTabComponent extends BaseTabComponent {
@@ -46,9 +46,8 @@ export class SettingsTabComponent extends BaseTabComponent {
public hostWindow: HostWindowService,
public homeBase: HomeBaseService,
public platform: PlatformService,
- public zone: NgZone,
public locale: LocaleService,
- private updater: UpdaterService,
+ public updater: UpdaterService,
private app: AppService,
@Inject(SettingsTabProvider) public settingsProviders: SettingsTabProvider[],
translate: TranslateService,
diff --git a/tabby-settings/src/components/settingsTabBody.component.ts b/tabby-settings/src/components/settingsTabBody.component.ts
index 8967731f..9587cb4e 100644
--- a/tabby-settings/src/components/settingsTabBody.component.ts
+++ b/tabby-settings/src/components/settingsTabBody.component.ts
@@ -5,11 +5,12 @@ import { SettingsTabProvider } from '../api'
@Component({
selector: 'settings-tab-body',
template: '',
+ styles: [`:host { display: block; padding-bottom: 20px; }`],
})
export class SettingsTabBodyComponent {
@Input() provider: SettingsTabProvider
@ViewChild('placeholder', { read: ViewContainerRef }) placeholder: ViewContainerRef
- component: ComponentRef
+ component: ComponentRef
constructor (private componentFactoryResolver: ComponentFactoryResolver) { }
diff --git a/tabby-settings/src/components/vaultSettingsTab.component.pug b/tabby-settings/src/components/vaultSettingsTab.component.pug
index 945fd1d0..02886e4e 100644
--- a/tabby-settings/src/components/vaultSettingsTab.component.pug
+++ b/tabby-settings/src/components/vaultSettingsTab.component.pug
@@ -8,7 +8,7 @@
div(*ngIf='vault.isEnabled()')
.d-flex.align-items-center.mb-3
h3.m-0(translate) Vault
- .d-flex.ml-auto(ngbDropdown, *ngIf='vault.isEnabled()')
+ .d-flex.ms-auto(ngbDropdown, *ngIf='vault.isEnabled()')
button.btn.btn-secondary(ngbDropdownToggle, translate) Options
div(ngbDropdownMenu)
a(ngbDropdownItem, (click)='changePassphrase()')
@@ -24,9 +24,9 @@ div(*ngIf='vault.isEnabled()')
h3.m-3(translate) Vault is empty
.list-group
- .list-group-item.d-flex.align-items-center.p-1.pl-3(*ngFor='let secret of vaultContents.secrets')
+ .list-group-item.d-flex.align-items-center.p-1.ps-3(*ngFor='let secret of vaultContents.secrets')
i.fas.fa-key
- .mr-auto {{getSecretLabel(secret)}}
+ .me-auto {{getSecretLabel(secret)}}
.hover-reveal(ngbDropdown)
button.btn.btn-link(ngbDropdownToggle)
@@ -35,21 +35,21 @@ div(*ngIf='vault.isEnabled()')
button(
ngbDropdownItem,
*ngIf='secret.type === VAULT_SECRET_TYPE_FILE',
- (click)='renameFile(secret)'
+ (click)='renameFile(castAny(secret))'
)
i.fas.fa-fw.fa-pencil-alt
span(translate) Rename
button(
ngbDropdownItem,
*ngIf='secret.type === VAULT_SECRET_TYPE_FILE',
- (click)='replaceFileContent(secret)'
+ (click)='replaceFileContent(castAny(secret))'
)
i.fas.fa-fw.fa-file-import
span(translate) Replace
button(
ngbDropdownItem,
*ngIf='secret.type === VAULT_SECRET_TYPE_FILE',
- (click)='exportFile(secret)'
+ (click)='exportFile(castAny(secret))'
)
i.fas.fa-fw.fa-file-export
span(translate) Export
diff --git a/tabby-settings/src/components/vaultSettingsTab.component.ts b/tabby-settings/src/components/vaultSettingsTab.component.ts
index fe628c27..c94533f2 100644
--- a/tabby-settings/src/components/vaultSettingsTab.component.ts
+++ b/tabby-settings/src/components/vaultSettingsTab.component.ts
@@ -8,7 +8,7 @@ import { SetVaultPassphraseModalComponent } from './setVaultPassphraseModal.comp
/** @hidden */
@Component({
selector: 'vault-settings-tab',
- template: require('./vaultSettingsTab.component.pug'),
+ templateUrl:'./vaultSettingsTab.component.pug',
})
export class VaultSettingsTabComponent extends BaseComponent {
vaultContents: Vault|null = null
@@ -148,4 +148,6 @@ export class VaultSettingsTabComponent extends BaseComponent {
download.close()
}
}
+
+ castAny = (x: any) => x
}
diff --git a/tabby-settings/src/components/windowSettingsTab.component.pug b/tabby-settings/src/components/windowSettingsTab.component.pug
index 3d4ce111..225fed4b 100644
--- a/tabby-settings/src/components/windowSettingsTab.component.pug
+++ b/tabby-settings/src/components/windowSettingsTab.component.pug
@@ -34,24 +34,30 @@ h3.mb-3(translate) Window
.form-line(*ngIf='config.store.appearance.vibrancy && isFluentVibrancySupported && config.store.hacks.enableFluentBackground')
.header
.title(translate) Background type
- .btn-group(
- [(ngModel)]='config.store.appearance.vibrancyType',
- (ngModelChange)='saveConfiguration()',
- ngbRadioGroup
- )
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"blur"'
- )
+ .btn-group
+ input.btn-check(
+ type='radio',
+ name='vibracy',
+ [(ngModel)]='config.store.appearance.vibrancyType',
+ (ngModelChange)='saveConfiguration()',
+ id='vibrancyTypeBlur',
+ [value]='"blur"'
+ )
+ label.btn.btn-secondary(
+ for='vibrancyTypeBlur'
+ )
span(translate) Blur
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"fluent"'
- )
+ input.btn-check(
+ type='radio',
+ name='vibracy',
+ [(ngModel)]='config.store.appearance.vibrancyType',
+ (ngModelChange)='saveConfiguration()',
+ id='vibrancyTypeFluent',
+ [value]='"fluent"'
+ )
+ label.btn.btn-secondary(
+ for='vibrancyTypeFluent'
+ )
span Fluent
.form-line(*ngIf='platform.supportsWindowControls')
@@ -71,31 +77,36 @@ h3.mb-3(translate) Window
.title(translate) Window frame
.description(translate) Whether a custom window or an OS native window should be used
- .btn-group(
- [(ngModel)]='config.store.appearance.frame',
- (ngModelChange)='saveConfiguration(true)',
- ngbRadioGroup
- )
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"native"'
- )
+ .btn-group
+ input.btn-check(
+ type='radio',
+ name='frame',
+ [(ngModel)]='config.store.appearance.frame',
+ (ngModelChange)='saveConfiguration(true)',
+ id='frameNative',
+ [value]='"native"'
+ )
+ label.btn.btn-secondary(for='frameNative')
span(translate) Native
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"thin"'
- )
+ input.btn-check(
+ type='radio',
+ name='frame',
+ [(ngModel)]='config.store.appearance.frame',
+ (ngModelChange)='saveConfiguration(true)',
+ id='frameThin',
+ [value]='"thin"'
+ )
+ label.btn.btn-secondary(for='frameThin')
span(translate) Thin
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"full"'
- )
+ input.btn-check(
+ type='radio',
+ name='frame',
+ [(ngModel)]='config.store.appearance.frame',
+ (ngModelChange)='saveConfiguration(true)',
+ id='frameFull',
+ [value]='"full"'
+ )
+ label.btn.btn-secondary(for='frameFull')
span(translate) Full
h3.mt-4(translate) Docking
@@ -105,73 +116,86 @@ h3.mt-4(translate) Docking
.title(translate) Dock the terminal
.description(translate) Snaps the window to a side of the screen
- .btn-group(
- [(ngModel)]='config.store.appearance.dock',
- (ngModelChange)='saveConfiguration(); docking.dock()',
- ngbRadioGroup
- )
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"off"'
- )
+ .btn-group
+ input.btn-check(
+ type='radio',
+ name='docking',
+ [(ngModel)]='config.store.appearance.dock',
+ (ngModelChange)='saveConfiguration(); docking.dock()',
+ id='dockingOff',
+ [value]='"off"'
+ )
+ label.btn.btn-secondary(for='dockingOff')
span(translate) Off
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"top"'
- )
+ input.btn-check(
+ type='radio',
+ name='docking',
+ [(ngModel)]='config.store.appearance.dock',
+ (ngModelChange)='saveConfiguration(); docking.dock()',
+ id='dockingTop',
+ [value]='"top"'
+ )
+ label.btn.btn-secondary(for='dockingTop')
span(translate) Top
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"left"'
- )
+ input.btn-check(
+ type='radio',
+ name='docking',
+ [(ngModel)]='config.store.appearance.dock',
+ (ngModelChange)='saveConfiguration(); docking.dock()',
+ id='dockingLeft',
+ [value]='"left"'
+ )
+ label.btn.btn-secondary(for='dockingLeft')
span(translate) Left
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"right"'
- )
+ input.btn-check(
+ type='radio',
+ name='docking',
+ [(ngModel)]='config.store.appearance.dock',
+ (ngModelChange)='saveConfiguration(); docking.dock()',
+ id='dockingRight',
+ [value]='"right"'
+ )
+ label.btn.btn-secondary(for='dockingRight')
span(translate) Right
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"bottom"'
- )
+ input.btn-check(
+ type='radio',
+ name='docking',
+ [(ngModel)]='config.store.appearance.dock',
+ (ngModelChange)='saveConfiguration(); docking.dock()',
+ id='dockingBottom',
+ [value]='"bottom"'
+ )
+ label.btn.btn-secondary(for='dockingBottom')
span(translate) Bottom
-.ml-5.form-line(*ngIf='docking && config.store.appearance.dock != "off"')
+.ms-5.form-line(*ngIf='docking && config.store.appearance.dock != "off"')
.header
.title(translate) Display on
.description(translate) Snaps the window to a side of the screen
- div(
- [(ngModel)]='config.store.appearance.dockScreen',
- (ngModelChange)='saveConfiguration(); docking.dock()',
- ngbRadioGroup
- )
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- value='current'
- )
+ div
+ input.btn-check(
+ type='radio',
+ name='dockScreen',
+ [(ngModel)]='config.store.appearance.dockScreen',
+ (ngModelChange)='saveConfiguration(); docking.dock()',
+ id='dockScreenCurrent',
+ value='current'
+ )
+ label.btn.btn-secondary(id='dockScreenCurrent')
span(translate) Current
- label.btn.btn-secondary(*ngFor='let screen of screens', ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='screen.id'
- )
+ input.btn-check(
+ type='radio',
+ name='dockScreen',
+ [(ngModel)]='config.store.appearance.dockScreen',
+ (ngModelChange)='saveConfiguration(); docking.dock()',
+ id='dockScreen{{screen.id}}',
+ [value]='screen.id'
+ )
+ label.btn.btn-secondary(*ngFor='let screen of screens', for='dockScreen{{screen.id}}')
| {{screen.name}}
-.ml-5.form-line(*ngIf='docking && config.store.appearance.dock != "off"')
+.ms-5.form-line(*ngIf='docking && config.store.appearance.dock != "off"')
.header
.title(translate) Dock always on top
.description(translate) Keep docked terminal always on top
@@ -180,7 +204,7 @@ h3.mt-4(translate) Docking
(ngModelChange)='saveConfiguration(); docking.dock()',
)
-.ml-5.form-line(*ngIf='docking && config.store.appearance.dock != "off"')
+.ms-5.form-line(*ngIf='docking && config.store.appearance.dock != "off"')
.header
.title(translate) Docked terminal size
.description(translate) Window dimension away from the edge
@@ -193,7 +217,7 @@ h3.mt-4(translate) Docking
step='0.01'
)
-.ml-5.form-line(*ngIf='docking && config.store.appearance.dock != "off"')
+.ms-5.form-line(*ngIf='docking && config.store.appearance.dock != "off"')
.header
.title(translate) Docked terminal space
.description(translate) Window dimension along the edge
@@ -206,7 +230,7 @@ h3.mt-4(translate) Docking
step='0.01'
)
-.ml-5.form-line(*ngIf='docking && config.store.appearance.dock != "off"')
+.ms-5.form-line(*ngIf='docking && config.store.appearance.dock != "off"')
.header
.title(translate) Hide window on focus loss
.description(translate) Hides the docked terminal when you click away.
@@ -220,61 +244,71 @@ h3.mt-4(translate) Tabs
.form-line
.header
.title(translate) Tabs location
- .btn-group(
- [(ngModel)]='config.store.appearance.tabsLocation',
- (ngModelChange)='saveConfiguration()',
- ngbRadioGroup
- )
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"top"'
- )
+ .btn-group
+ input.btn-check(
+ type='radio',
+ name='tabsLocation',
+ [(ngModel)]='config.store.appearance.tabsLocation',
+ (ngModelChange)='saveConfiguration()',
+ id='tabsLocationTop',
+ [value]='"top"'
+ )
+ label.btn.btn-secondary(for='tabsLocationTop')
span(translate) Top
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"bottom"'
- )
+ input.btn-check(
+ type='radio',
+ name='tabsLocation',
+ [(ngModel)]='config.store.appearance.tabsLocation',
+ (ngModelChange)='saveConfiguration()',
+ id='tabsLocationBottom',
+ [value]='"bottom"'
+ )
+ label.btn.btn-secondary(for='tabsLocationBottom')
span(translate) Bottom
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"left"'
- )
+ input.btn-check(
+ type='radio',
+ name='tabsLocation',
+ [(ngModel)]='config.store.appearance.tabsLocation',
+ (ngModelChange)='saveConfiguration()',
+ id='tabsLocationLeft',
+ [value]='"left"'
+ )
+ label.btn.btn-secondary(for='tabsLocationLeft')
span(translate) Left
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"right"'
- )
+ input.btn-check(
+ type='radio',
+ name='tabsLocation',
+ [(ngModel)]='config.store.appearance.tabsLocation',
+ (ngModelChange)='saveConfiguration()',
+ id='tabsLocationRight',
+ [value]='"right"'
+ )
+ label.btn.btn-secondary(for='tabsLocationRight')
span(translate) Right
.form-line
.header
.title(translate) Tabs width
- .btn-group(
- [(ngModel)]='config.store.appearance.flexTabs',
- (ngModelChange)='saveConfiguration()',
- ngbRadioGroup
- )
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='true'
- )
+ .btn-group
+ input.btn-check(
+ type='radio',
+ name='flexTabs',
+ [(ngModel)]='config.store.appearance.flexTabs',
+ (ngModelChange)='saveConfiguration()',
+ id='flexTabsTrue',
+ [value]='true'
+ )
+ label.btn.btn-secondary(for='flexTabsTrue')
span(translate, translateComment='[Dynamic] tab width') id.tab-width.dynamic
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='false'
- )
+ input.btn-check(
+ type='radio',
+ name='flexTabs',
+ [(ngModel)]='config.store.appearance.flexTabs',
+ (ngModelChange)='saveConfiguration()',
+ id='flexTabsFalse',
+ [value]='false'
+ )
+ label.btn.btn-secondary(for='flexTabsFalse')
span(translate) Fixed
.form-line
diff --git a/tabby-settings/src/components/windowSettingsTab.component.ts b/tabby-settings/src/components/windowSettingsTab.component.ts
index 25446de5..15448b76 100644
--- a/tabby-settings/src/components/windowSettingsTab.component.ts
+++ b/tabby-settings/src/components/windowSettingsTab.component.ts
@@ -18,7 +18,7 @@ import {
/** @hidden */
@Component({
selector: 'window-settings-tab',
- template: require('./windowSettingsTab.component.pug'),
+ templateUrl:'./windowSettingsTab.component.pug',
})
export class WindowSettingsTabComponent extends BaseComponent {
screens: Screen[]
diff --git a/tabby-settings/src/index.ts b/tabby-settings/src/index.ts
index 13fa5a73..850b8d61 100644
--- a/tabby-settings/src/index.ts
+++ b/tabby-settings/src/index.ts
@@ -1,5 +1,5 @@
import { NgModule } from '@angular/core'
-import { BrowserModule } from '@angular/platform-browser'
+import { CommonModule } from '@angular/common'
import { FormsModule } from '@angular/forms'
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
import { InfiniteScrollModule } from 'ngx-infinite-scroll'
@@ -30,7 +30,7 @@ import { HotkeySettingsTabProvider, WindowSettingsTabProvider, VaultSettingsTabP
/** @hidden */
@NgModule({
imports: [
- BrowserModule,
+ CommonModule,
FormsModule,
NgbModule,
TabbyCorePlugin,
@@ -46,18 +46,6 @@ import { HotkeySettingsTabProvider, WindowSettingsTabProvider, VaultSettingsTabP
{ provide: SettingsTabProvider, useClass: ProfilesSettingsTabProvider, multi: true },
{ provide: SettingsTabProvider, useClass: ConfigSyncSettingsTabProvider, multi: true },
],
- entryComponents: [
- EditProfileModalComponent,
- HotkeyInputModalComponent,
- HotkeySettingsTabComponent,
- ProfilesSettingsTabComponent,
- SettingsTabComponent,
- SetVaultPassphraseModalComponent,
- VaultSettingsTabComponent,
- WindowSettingsTabComponent,
- ConfigSyncSettingsTabComponent,
- ReleaseNotesComponent,
- ],
declarations: [
EditProfileModalComponent,
HotkeyInputModalComponent,
diff --git a/tabby-settings/webpack.config.js b/tabby-settings/webpack.config.js
deleted file mode 100644
index b20dea8d..00000000
--- a/tabby-settings/webpack.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const config = require('../webpack.plugin.config')
-module.exports = config({
- name: 'settings',
- dirname: __dirname,
-})
diff --git a/tabby-settings/webpack.config.mjs b/tabby-settings/webpack.config.mjs
new file mode 100644
index 00000000..7f6e05a2
--- /dev/null
+++ b/tabby-settings/webpack.config.mjs
@@ -0,0 +1,10 @@
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+import config from '../webpack.plugin.config.mjs'
+
+export default () => config({
+ name: 'settings',
+ dirname: __dirname,
+})
diff --git a/tabby-settings/yarn.lock b/tabby-settings/yarn.lock
index 570905be..0c460706 100644
--- a/tabby-settings/yarn.lock
+++ b/tabby-settings/yarn.lock
@@ -2,30 +2,24 @@
# yarn lockfile v1
-"@scarf/scarf@^1.1.0":
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/@scarf/scarf/-/scarf-1.1.1.tgz#d8b9f20037b3a37dbf8dcdc4b3b72f9285bfce35"
- integrity sha512-VGbKDbk1RFIaSmdVb0cNjjWJoRWRI/Weo23AjRCC2nryO0iAS8pzsToJfPVPtVs74WHw4L1UTADNdIYRLkirZQ==
+"@types/marked@^4.0.8":
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.8.tgz#b316887ab3499d0a8f4c70b7bd8508f92d477955"
+ integrity sha512-HVNzMT5QlWCOdeuBsgXP8EZzKUf0+AXzN+sLmjvaB3ZlLqO+e4u0uXrdw9ub69wBKFs+c6/pA4r9sy6cCDvImw==
-"@types/marked@^4.0.2":
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.2.tgz#cb2dbf10da2f41cf20bd91fb5f89b67540c282f7"
- integrity sha512-auNrZ/c0w6wsM9DccwVxWHssrMDezHUAXNesdp2RQrCVCyrQbOiSq7yqdJKrUQQpw9VTm7CGYJH2A/YG7jjrjQ==
+marked@^4.2.12:
+ version "4.2.12"
+ resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.12.tgz#d69a64e21d71b06250da995dcd065c11083bebb5"
+ integrity sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==
-marked@^4.0.8:
- version "4.0.12"
- resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d"
- integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==
-
-ngx-infinite-scroll@^10.0.1:
- version "10.0.1"
- resolved "https://registry.yarnpkg.com/ngx-infinite-scroll/-/ngx-infinite-scroll-10.0.1.tgz#6f51f2f8775a7c50d1dd8bad125d4e748abbe880"
- integrity sha512-7is0eJZ9kJPsaHohRmMhJ/QFHAW9jp9twO5HcHRvFM/Yl/R8QCiokgjwmH0/CR3MuxUanxfHZMfO3PbYTwlBEg==
+ngx-infinite-scroll@^15:
+ version "15.0.0"
+ resolved "https://registry.yarnpkg.com/ngx-infinite-scroll/-/ngx-infinite-scroll-15.0.0.tgz#61bbf89f121a796880a4ad67fe785b406532b220"
+ integrity sha512-FSP5UphRdl47vW8f/dRnPAU+napzruAKizBX2HS7MH292Ca+va6IU0J5+UQQmO5rXod2RZV7UhJ6+7g4xLfs1A==
dependencies:
- "@scarf/scarf" "^1.1.0"
- opencollective-postinstall "^2.0.2"
+ tslib "^2.3.0"
-opencollective-postinstall@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259"
- integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==
+tslib@^2.3.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
+ integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
diff --git a/tabby-ssh/src/components/hostKeyPromptModal.component.pug b/tabby-ssh/src/components/hostKeyPromptModal.component.pug
index b71bb1fd..c471e747 100644
--- a/tabby-ssh/src/components/hostKeyPromptModal.component.pug
+++ b/tabby-ssh/src/components/hostKeyPromptModal.component.pug
@@ -6,16 +6,16 @@
strong(translate) Warning: remote host's key has suddenly changed!
div(translate) You could be under a man-in-the-middle attack right now, or the host key could have just been changed.
- .form-group(*ngIf='isMismatched')
+ .mb-3(*ngIf='isMismatched')
.d-flex.align-items-center
label(translate) Last known host key fingerprint
- .badge.badge-danger.ml-auto {{ selector.type }}
+ .badge.text-bg-danger.ms-auto {{ selector.type }}
code {{knownHost.digest}}
- .form-group
+ .mb-3
.d-flex.align-items-center
label(translate) Current host key fingerprint
- .badge.badge-success.ml-auto {{ selector.type }}
+ .badge.text-bg-success.ms-auto {{ selector.type }}
code {{digest}}
.modal-footer
diff --git a/tabby-ssh/src/components/hostKeyPromptModal.component.ts b/tabby-ssh/src/components/hostKeyPromptModal.component.ts
index 52644675..33baa898 100644
--- a/tabby-ssh/src/components/hostKeyPromptModal.component.ts
+++ b/tabby-ssh/src/components/hostKeyPromptModal.component.ts
@@ -5,7 +5,7 @@ import { KnownHost, KnownHostSelector, SSHKnownHostsService } from '../services/
/** @hidden */
@Component({
- template: require('./hostKeyPromptModal.component.pug'),
+ templateUrl:'./hostKeyPromptModal.component.pug',
})
export class HostKeyPromptModalComponent {
@Input() selector: KnownHostSelector
diff --git a/tabby-ssh/src/components/keyboardInteractiveAuthPanel.component.pug b/tabby-ssh/src/components/keyboardInteractiveAuthPanel.component.pug
index 4de32bc7..e203b26b 100644
--- a/tabby-ssh/src/components/keyboardInteractiveAuthPanel.component.pug
+++ b/tabby-ssh/src/components/keyboardInteractiveAuthPanel.component.pug
@@ -1,6 +1,6 @@
.d-flex
strong(translate) Keyboard-interactive auth
- .ml-2 {{prompt.name}}
+ .ms-2 {{prompt.name}}
.prompt-text {{prompt.prompts[step].prompt}}
@@ -18,7 +18,7 @@ input.form-control.mt-2(
*ngIf='step > 0',
(click)='previous()'
)
- .ml-auto
+ .ms-auto
button.btn.btn-primary(
(click)='next()'
)
diff --git a/tabby-ssh/src/components/keyboardInteractiveAuthPanel.component.ts b/tabby-ssh/src/components/keyboardInteractiveAuthPanel.component.ts
index 6ff5be5a..e12db57c 100644
--- a/tabby-ssh/src/components/keyboardInteractiveAuthPanel.component.ts
+++ b/tabby-ssh/src/components/keyboardInteractiveAuthPanel.component.ts
@@ -4,8 +4,8 @@ import { KeyboardInteractivePrompt } from '../session/ssh'
@Component({
selector: 'keyboard-interactive-auth-panel',
- template: require('./keyboardInteractiveAuthPanel.component.pug'),
- styles: [require('./keyboardInteractiveAuthPanel.component.scss')],
+ templateUrl:'./keyboardInteractiveAuthPanel.component.pug',
+ styleUrls: ['./keyboardInteractiveAuthPanel.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class KeyboardInteractiveAuthComponent {
diff --git a/tabby-ssh/src/components/sftpCreateDirectoryModal.component.pug b/tabby-ssh/src/components/sftpCreateDirectoryModal.component.pug
index a559641c..a839af6b 100644
--- a/tabby-ssh/src/components/sftpCreateDirectoryModal.component.pug
+++ b/tabby-ssh/src/components/sftpCreateDirectoryModal.component.pug
@@ -1,6 +1,6 @@
.modal-body
label(translate) Name for the new directory
- .form-group.w-100.mr-2
+ .mb-3.w-100.me-2
input.form-control(
type='text',
[(ngModel)]='directoryName',
diff --git a/tabby-ssh/src/components/sftpCreateDirectoryModal.component.ts b/tabby-ssh/src/components/sftpCreateDirectoryModal.component.ts
index 85b02b0b..2dfbf189 100644
--- a/tabby-ssh/src/components/sftpCreateDirectoryModal.component.ts
+++ b/tabby-ssh/src/components/sftpCreateDirectoryModal.component.ts
@@ -4,7 +4,7 @@ import { BaseComponent } from 'tabby-core'
/** @hidden */
@Component({
- template: require('./sftpCreateDirectoryModal.component.pug'),
+ templateUrl:'./sftpCreateDirectoryModal.component.pug',
})
export class SFTPCreateDirectoryModalComponent extends BaseComponent {
directoryName: string
diff --git a/tabby-ssh/src/components/sftpDeleteModal.component.ts b/tabby-ssh/src/components/sftpDeleteModal.component.ts
index 18a88645..bdea23c0 100644
--- a/tabby-ssh/src/components/sftpDeleteModal.component.ts
+++ b/tabby-ssh/src/components/sftpDeleteModal.component.ts
@@ -5,7 +5,7 @@ import { SFTPFile, SFTPSession } from '../session/sftp'
/** @hidden */
@Component({
- template: require('./sftpDeleteModal.component.pug'),
+ templateUrl:'./sftpDeleteModal.component.pug',
})
export class SFTPDeleteModalComponent extends BaseComponent {
sftp: SFTPSession
diff --git a/tabby-ssh/src/components/sftpPanel.component.pug b/tabby-ssh/src/components/sftpPanel.component.pug
index c2f74171..57e96941 100644
--- a/tabby-ssh/src/components/sftpPanel.component.pug
+++ b/tabby-ssh/src/components/sftpPanel.component.pug
@@ -9,30 +9,30 @@
[(ngModel)]='editingPath'
)
.breadcrumb(*ngIf='editingPath === null', (dblclick)='editPath()')
- a.breadcrumb-item((click)='navigate("/")') SFTP
- a.breadcrumb-item(
+ a.breadcrumb-item.text-decoration-none((click)='navigate("/")') SFTP
+ a.breadcrumb-item.text-decoration-none(
*ngFor='let segment of pathSegments',
(click)='navigate(segment.path)'
) {{segment.name}}
.breadcrumb-spacer.flex-grow-1.h-100((dblclick)='editPath()')
- button.btn.btn-link.btn-sm.d-flex((click)='openCreateDirectoryModal()')
- i.fas.fa-plus.mr-1
+ button.btn.btn-link.btn-sm.flex-shrink-0.d-flex((click)='openCreateDirectoryModal()')
+ i.fas.fa-plus.me-1
div(translate) Create directory
- button.btn.btn-link.btn-sm.d-flex((click)='upload()')
- i.fas.fa-upload.mr-1
+ button.btn.btn-link.btn-sm.flex-shrink-0.d-flex((click)='upload()')
+ i.fas.fa-upload.me-1
div(translate) Upload
- button.btn.btn-link.btn-close((click)='close()') !{require('../../../tabby-core/src/icons/times.svg')}
+ button.btn.btn-link.text-decoration-none((click)='close()') !{require('../../../tabby-core/src/icons/times.svg')}
.body(dropZone, (transfer)='uploadOne($event)')
a.alert.alert-info.d-flex.align-items-center(
*ngIf='shouldShowCWDTip && !cwdDetectionAvailable',
(click)='platform.openExternal("https://tabby.sh/go/cwd-detection")'
)
- .mr-auto
+ .me-auto
strong(translate) Working directory detection
div(translate) Learn how to allow Tabby to detect remote shell's working directory.
button.close((click)='dismissCWDTip()')
@@ -55,7 +55,7 @@
)
i.fa-fw([class]='getIcon(item)')
div {{item.name}}
- .mr-auto
+ .me-auto
.size(*ngIf='!item.isDirectory') {{item.size|filesize}}
.date {{item.modified|date:'medium'}}
.mode {{getModeString(item)}}
diff --git a/tabby-ssh/src/components/sftpPanel.component.ts b/tabby-ssh/src/components/sftpPanel.component.ts
index 9f27cb9b..fb4cf9e8 100644
--- a/tabby-ssh/src/components/sftpPanel.component.ts
+++ b/tabby-ssh/src/components/sftpPanel.component.ts
@@ -15,8 +15,8 @@ interface PathSegment {
@Component({
selector: 'sftp-panel',
- template: require('./sftpPanel.component.pug'),
- styles: [require('./sftpPanel.component.scss')],
+ templateUrl:'./sftpPanel.component.pug',
+ styleUrls: ['./sftpPanel.component.scss'],
})
export class SFTPPanelComponent {
@Input() session: SSHSession
diff --git a/tabby-ssh/src/components/sshPortForwardingConfig.component.pug b/tabby-ssh/src/components/sshPortForwardingConfig.component.pug
index fbbfaf8e..0df81aeb 100644
--- a/tabby-ssh/src/components/sshPortForwardingConfig.component.pug
+++ b/tabby-ssh/src/components/sshPortForwardingConfig.component.pug
@@ -1,71 +1,76 @@
.list-group.mb-3
.list-group-item.d-flex.align-items-center(*ngFor='let fw of model')
div
- .ms-2.d-flex.align-items-center
+ .d-flex.align-items-center
strong(*ngIf='fw.type === PortForwardType.Local', translate) Local
strong(*ngIf='fw.type === PortForwardType.Remote', translate) Remote
strong(*ngIf='fw.type === PortForwardType.Dynamic', translate, translateContext='[Dynamic] port forwarding') id.port-forwarding.dynamic
- .ml-3 {{fw.host}}:{{fw.port}}
- .ml-2 →
- .ml-2(*ngIf='fw.type !== PortForwardType.Dynamic') {{fw.targetAddress}}:{{fw.targetPort}}
- .ml-2(*ngIf='fw.type === PortForwardType.Dynamic', translate) SOCKS proxy
+ .ms-3 {{fw.host}}:{{fw.port}}
+ .ms-2 →
+ .ms-2(*ngIf='fw.type !== PortForwardType.Dynamic') {{fw.targetAddress}}:{{fw.targetPort}}
+ .ms-2(*ngIf='fw.type === PortForwardType.Dynamic', translate) SOCKS proxy
div {{fw.description}}
- button.btn.btn-link.hover-reveal.ml-auto((click)='remove(fw)')
+ button.btn.btn-link.hover-reveal.ms-auto((click)='remove(fw)')
i.fas.fa-trash-alt
h5(translate) Add a port forward
.input-group.mb-2(*ngIf='newForward.type === PortForwardType.Dynamic')
input.form-control(type='text', [(ngModel)]='newForward.host')
- .input-group-append
- .input-group-text :
+ .input-group-text :
input.form-control(type='number', [(ngModel)]='newForward.port')
- .input-group-append
- .input-group-text →
- .input-group-append.input-group-text(style='flex: 3 1 0', translate) SOCKS proxy
+ .input-group-text →
+ .input-group-text(style='flex: 3 1 0', translate) SOCKS proxy
.input-group.mb-2(*ngIf='newForward.type !== PortForwardType.Dynamic')
input.form-control(type='text', [(ngModel)]='newForward.host')
- .input-group-append
- .input-group-text :
+ .input-group-text :
input.form-control(type='number', [(ngModel)]='newForward.port')
- .input-group-append
- .input-group-text →
+ .input-group-text →
input.form-control(type='text', [(ngModel)]='newForward.targetAddress')
- .input-group-append
- .input-group-text :
+ .input-group-text :
input.form-control(type='number', [(ngModel)]='newForward.targetPort')
.input-group.mb-2
input.form-control(type='text', placeholder='Description', [(ngModel)]='newForward.description')
.d-flex
- .btn-group.mr-auto(
- [(ngModel)]='newForward.type',
- ngbRadioGroup
- )
- label.btn.btn-secondary.m-0(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='PortForwardType.Local'
- )
- span(translate) Local
- label.btn.btn-secondary.m-0(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='PortForwardType.Remote'
- )
- span(translate) Remote
- label.btn.btn-secondary.m-0(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='PortForwardType.Dynamic'
- )
- span(translate, translateContext='[Dynamic] port forwarding') id.port-forwarding.dynamic
+ .btn-group.me-auto
+ input.btn-check(
+ type='radio',
+ [(ngModel)]='newForward.type',
+ id='newForwardTypeLocal',
+ name='newForwardType',
+ [value]='PortForwardType.Local'
+ )
+ label.btn.btn-secondary.m-0(
+ for='newForwardTypeLocal',
+ translate
+ ) Local
+ input.btn-check(
+ type='radio',
+ [(ngModel)]='newForward.type',
+ id='newForwardTypeRemote',
+ name='newForwardType',
+ [value]='PortForwardType.Remote'
+ )
+ label.btn.btn-secondary.m-0(
+ for='newForwardTypeRemote',
+ translate
+ ) Remote
+ input.btn-check(
+ type='radio',
+ [(ngModel)]='newForward.type',
+ id='newForwardTypeDynamic',
+ name='newForwardType',
+ [value]='PortForwardType.Dynamic'
+ )
+ label.btn.btn-secondary.m-0(
+ for='newForwardTypeDynamic',
+ translate,
+ translateContext='[Dynamic] port forwarding'
+ ) id.port-forwarding.dynamic
button.btn.btn-primary((click)='addForward()')
- i.fas.fa-check.mr-2
+ i.fas.fa-check.me-2
span(translate) Forward port
diff --git a/tabby-ssh/src/components/sshPortForwardingConfig.component.ts b/tabby-ssh/src/components/sshPortForwardingConfig.component.ts
index 889789f1..94dcd7a7 100644
--- a/tabby-ssh/src/components/sshPortForwardingConfig.component.ts
+++ b/tabby-ssh/src/components/sshPortForwardingConfig.component.ts
@@ -5,7 +5,7 @@ import { ForwardedPortConfig, PortForwardType } from '../api'
/** @hidden */
@Component({
selector: 'ssh-port-forwarding-config',
- template: require('./sshPortForwardingConfig.component.pug'),
+ templateUrl:'./sshPortForwardingConfig.component.pug',
})
export class SSHPortForwardingConfigComponent {
@Input() model: ForwardedPortConfig[]
diff --git a/tabby-ssh/src/components/sshPortForwardingModal.component.ts b/tabby-ssh/src/components/sshPortForwardingModal.component.ts
index b8c99c3c..c3cf4612 100644
--- a/tabby-ssh/src/components/sshPortForwardingModal.component.ts
+++ b/tabby-ssh/src/components/sshPortForwardingModal.component.ts
@@ -6,7 +6,7 @@ import { ForwardedPortConfig } from '../api'
/** @hidden */
@Component({
- template: require('./sshPortForwardingModal.component.pug'),
+ templateUrl:'./sshPortForwardingModal.component.pug',
})
export class SSHPortForwardingModalComponent {
@Input() session: SSHSession
diff --git a/tabby-ssh/src/components/sshProfileSettings.component.pug b/tabby-ssh/src/components/sshProfileSettings.component.pug
index f1d7dbf4..bb1f8a15 100644
--- a/tabby-ssh/src/components/sshProfileSettings.component.pug
+++ b/tabby-ssh/src/components/sshProfileSettings.component.pug
@@ -3,7 +3,7 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
a(ngbNavLink, translate) General
ng-template(ngbNavContent)
.d-flex.w-100.mt-3
- .form-group.mr-2(
+ .mb-3.me-2(
ngbDropdown
)
label(translate) Connection
@@ -35,21 +35,21 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
div(translate) HTTP proxy
.text-muted(translate) Using CONNECT method
- .form-group.w-100(*ngIf='connectionMode === "proxyCommand"')
+ .mb-3.w-100(*ngIf='connectionMode === "proxyCommand"')
label(translate) Proxy command
input.form-control(
type='text',
[(ngModel)]='profile.options.proxyCommand',
)
- .form-group.w-100.mr-2(*ngIf='connectionMode !== "proxyCommand"')
+ .mb-3.w-100.me-2(*ngIf='connectionMode !== "proxyCommand"')
label(translate) Host
input.form-control(
type='text',
[(ngModel)]='profile.options.host',
)
- .form-group(*ngIf='connectionMode !== "proxyCommand"')
+ .mb-3(*ngIf='connectionMode !== "proxyCommand"')
label(translate) Port
input.form-control(
type='number',
@@ -57,7 +57,7 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
[(ngModel)]='profile.options.port',
)
- .form-group(*ngIf='connectionMode === "jumpHost"')
+ .mb-3(*ngIf='connectionMode === "jumpHost"')
label(translate) Jump host
select.form-control([(ngModel)]='profile.options.jumpHost')
option([ngValue]='null', translate) Select
@@ -65,14 +65,14 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
.d-flex.w-100(*ngIf='connectionMode === "socksProxy"')
- .form-group.w-100.mr-2
+ .mb-3.w-100.me-2
label(translate) SOCKS proxy host
input.form-control(
type='text',
[(ngModel)]='profile.options.socksProxyHost',
)
- .form-group
+ .mb-3
label(translate) SOCKS proxy port
input.form-control(
type='number',
@@ -81,14 +81,14 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
)
.d-flex.w-100(*ngIf='connectionMode === "httpProxy"')
- .form-group.w-100.mr-2
+ .mb-3.w-100.me-2
label(translate) HTTP proxy host
input.form-control(
type='text',
[(ngModel)]='profile.options.httpProxyHost',
)
- .form-group
+ .mb-3
label(translate) HTTP proxy port
input.form-control(
type='number',
@@ -96,7 +96,7 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
[(ngModel)]='profile.options.httpProxyPort',
)
- .form-group
+ .mb-3
label(translate) Username
input.form-control(
type='text',
@@ -104,31 +104,66 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
[(ngModel)]='profile.options.user',
)
- .form-group
+ .mb-3
label(translate) Authentication method
- .btn-group.mt-1.w-100(
- [(ngModel)]='profile.options.auth',
- ngbRadioGroup
- )
- label.btn.btn-secondary(ngbButtonLabel)
- input(type='radio', ngbButton, [value]='null')
+ .btn-group.mt-1.w-100
+ input.btn-check(
+ type='radio',
+ name='auth',
+ [(ngModel)]='profile.options.auth',
+ id='authAuto',
+ [value]='null'
+ )
+ label.btn.btn-secondary(
+ for='authAuto'
+ )
i.far.fa-lightbulb
.m-0(translate) Auto
- label.btn.btn-secondary(ngbButtonLabel)
- input(type='radio', ngbButton, [value]='"password"')
+ input.btn-check(
+ type='radio',
+ name='auth',
+ [(ngModel)]='profile.options.auth',
+ id='authPassword',
+ [value]='"password"'
+ )
+ label.btn.btn-secondary(
+ for='authPassword'
+ )
i.fas.fa-font
.m-0(translate) Password
- label.btn.btn-secondary(ngbButtonLabel)
- input(type='radio', ngbButton, [value]='"publicKey"')
+ input.btn-check(
+ type='radio',
+ name='auth',
+ [(ngModel)]='profile.options.auth',
+ id='authPublicKey',
+ [value]='"publicKey"'
+ )
+ label.btn.btn-secondary(
+ for='authPublicKey'
+ )
i.fas.fa-key
.m-0(translate) Key
- label.btn.btn-secondary(ngbButtonLabel, ng:if='hostApp.platform !== Platform.Web')
- input(type='radio', ngbButton, [value]='"agent"')
+ input.btn-check(
+ type='radio',
+ name='auth',
+ [(ngModel)]='profile.options.auth',
+ id='authAgent',
+ [value]='"agent"'
+ )
+ label.btn.btn-secondary(
+ for='authAgent'
+ , ng:if='hostApp.platform !== Platform.Web')
i.fas.fa-user-secret
.m-0(translate) Agent
+ input.btn-check(
+ type='radio',
+ name='auth',
+ [(ngModel)]='profile.options.auth',
+ id='auth"keyboardInteractive"'
+ [value]='"keyboardInteractive"'
+ )
label.btn.btn-secondary(ngbButtonLabel)
- input(type='radio', ngbButton, [value]='"keyboardInteractive"')
i.far.fa-keyboard
.m-0(translate) Interactive
@@ -137,19 +172,19 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
.title(translate) Password
.description(*ngIf='!hasSavedPassword', translate) Save a password in the keychain
.description(*ngIf='hasSavedPassword', translate) There is a saved password for this connection
- button.btn.btn-success.ml-4(*ngIf='!hasSavedPassword', (click)='setPassword()')
+ button.btn.btn-success.ms-4(*ngIf='!hasSavedPassword', (click)='setPassword()')
i.fas.fa-key
span(translate) Set password
- button.btn.btn-danger.ml-4(*ngIf='hasSavedPassword', (click)='clearSavedPassword()')
+ button.btn.btn-danger.ms-4(*ngIf='hasSavedPassword', (click)='clearSavedPassword()')
i.fas.fa-trash-alt
span(translate) Forget
- .form-group(*ngIf='!profile.options.auth || profile.options.auth === "publicKey"')
+ .mb-3(*ngIf='!profile.options.auth || profile.options.auth === "publicKey"')
label(translate) Private keys
.list-group.mb-2
- .list-group-item.d-flex.align-items-center.p-1.pl-3(*ngFor='let path of profile.options.privateKeys')
+ .list-group-item.d-flex.align-items-center.p-1.ps-3(*ngFor='let path of profile.options.privateKeys')
i.fas.fa-key
- .no-wrap.mr-auto {{path}}
+ .no-wrap.me-auto {{path}}
button.btn.btn-link((click)='removePrivateKey(path)')
i.fas.fa-trash
button.btn.btn-secondary((click)='addPrivateKey()')
@@ -249,7 +284,7 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
checkbox([text]='alg', [(ngModel)]='algorithms.serverHostKey[alg]')
li(ngbNavItem)
- a(ngbNavLink, translate) Color scheme
+ a(ngbNavLink, translate) Colors
ng-template(ngbNavContent)
color-scheme-selector([(model)]='profile.terminalColorScheme')
diff --git a/tabby-ssh/src/components/sshProfileSettings.component.ts b/tabby-ssh/src/components/sshProfileSettings.component.ts
index 659e98e5..89b51ac7 100644
--- a/tabby-ssh/src/components/sshProfileSettings.component.ts
+++ b/tabby-ssh/src/components/sshProfileSettings.component.ts
@@ -11,7 +11,7 @@ import { supportedAlgorithms } from '../algorithms'
/** @hidden */
@Component({
- template: require('./sshProfileSettings.component.pug'),
+ templateUrl:'./sshProfileSettings.component.pug',
})
export class SSHProfileSettingsComponent {
Platform = Platform
diff --git a/tabby-ssh/src/components/sshSettingsTab.component.ts b/tabby-ssh/src/components/sshSettingsTab.component.ts
index 94c18223..4af011f4 100644
--- a/tabby-ssh/src/components/sshSettingsTab.component.ts
+++ b/tabby-ssh/src/components/sshSettingsTab.component.ts
@@ -4,7 +4,7 @@ import { ConfigService, HostAppService, Platform } from 'tabby-core'
/** @hidden */
@Component({
- template: require('./sshSettingsTab.component.pug'),
+ templateUrl:'./sshSettingsTab.component.pug',
})
export class SSHSettingsTabComponent {
Platform = Platform
diff --git a/tabby-ssh/src/components/sshTab.component.pug b/tabby-ssh/src/components/sshTab.component.pug
index 6faec0c3..b38ecb2d 100644
--- a/tabby-ssh/src/components/sshTab.component.pug
+++ b/tabby-ssh/src/components/sshTab.component.pug
@@ -1,9 +1,9 @@
terminal-toolbar([tab]='this')
- i.fas.fa-xs.fa-circle.text-success.mr-2(*ngIf='session && session.open')
- i.fas.fa-xs.fa-circle.text-danger.mr-2(*ngIf='!session || !session.open')
- strong.mr-auto {{profile.options.user}}@{{profile.options.host}}:{{profile.options.port}}
+ i.fas.fa-xs.fa-circle.text-success.me-2(*ngIf='session && session.open')
+ i.fas.fa-xs.fa-circle.text-danger.me-2(*ngIf='!session || !session.open')
+ strong.me-auto {{profile.options.user}}@{{profile.options.host}}:{{profile.options.port}}
- .mr-2(
+ .me-2(
ngbDropdown,
container='body',
*ngIf='session && !session.supportsWorkingDirectory()',
@@ -13,16 +13,16 @@ terminal-toolbar([tab]='this')
i.far.fa-lightbulb.text-primary
.bg-dark(ngbDropdownMenu)
a.d-flex.align-items-center(ngbDropdownItem, (click)='platform.openExternal("https://tabby.sh/go/cwd-detection")')
- .mr-auto
+ .me-auto
strong(translate) Working directory detection
div(translate) Learn how to allow Tabby to detect remote shell's working directory.
- i.fas.fa-arrow-right.ml-4
+ i.fas.fa-arrow-right.ms-4
- button.btn.btn-sm.btn-link.mr-2((click)='reconnect()')
+ button.btn.btn-sm.btn-link.me-2((click)='reconnect()')
i.fas.fa-redo
span(translate) Reconnect
- button.btn.btn-sm.btn-link.mr-2((click)='openSFTP()', *ngIf='session && session.open')
+ button.btn.btn-sm.btn-link.me-2((click)='openSFTP()', *ngIf='session && session.open')
i.far.fa-folder-open
span SFTP
diff --git a/tabby-ssh/src/components/sshTab.component.ts b/tabby-ssh/src/components/sshTab.component.ts
index 68fffee4..1694813a 100644
--- a/tabby-ssh/src/components/sshTab.component.ts
+++ b/tabby-ssh/src/components/sshTab.component.ts
@@ -16,7 +16,10 @@ import { SSHMultiplexerService } from '../services/sshMultiplexer.service'
@Component({
selector: 'ssh-tab',
template: `${BaseTerminalTabComponent.template} ${require('./sshTab.component.pug')}`,
- styles: [require('./sshTab.component.scss'), ...BaseTerminalTabComponent.styles],
+ styles: [
+ ...BaseTerminalTabComponent.styles,
+ require('./sshTab.component.scss'),
+ ],
animations: BaseTerminalTabComponent.animations,
})
export class SSHTabComponent extends BaseTerminalTabComponent {
diff --git a/tabby-ssh/src/index.ts b/tabby-ssh/src/index.ts
index ba069a62..fa5f529d 100644
--- a/tabby-ssh/src/index.ts
+++ b/tabby-ssh/src/index.ts
@@ -48,15 +48,6 @@ import { SFTPCreateDirectoryModalComponent } from './components/sftpCreateDirect
{ provide: ProfileProvider, useExisting: SSHProfilesService, multi: true },
{ provide: SFTPContextMenuItemProvider, useClass: CommonSFTPContextMenu, multi: true },
],
- entryComponents: [
- SSHProfileSettingsComponent,
- SFTPDeleteModalComponent,
- SFTPCreateDirectoryModalComponent,
- SSHPortForwardingModalComponent,
- SSHSettingsTabComponent,
- SSHTabComponent,
- HostKeyPromptModalComponent,
- ],
declarations: [
SSHProfileSettingsComponent,
SFTPDeleteModalComponent,
diff --git a/tabby-ssh/webpack.config.js b/tabby-ssh/webpack.config.js
deleted file mode 100644
index e89594b6..00000000
--- a/tabby-ssh/webpack.config.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const config = require('../webpack.plugin.config')
-module.exports = config({
- name: 'ssh',
- dirname: __dirname,
- alias: {
- 'cpu-features': false,
- './crypto/build/Release/sshcrypto.node': false,
- '../build/Release/cpufeatures.node': false,
- },
-})
diff --git a/tabby-ssh/webpack.config.mjs b/tabby-ssh/webpack.config.mjs
new file mode 100644
index 00000000..16ce381b
--- /dev/null
+++ b/tabby-ssh/webpack.config.mjs
@@ -0,0 +1,15 @@
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+import config from '../webpack.plugin.config.mjs'
+
+export default () => config({
+ name: 'ssh',
+ dirname: __dirname,
+ alias: {
+ 'cpu-features': false,
+ './crypto/build/Release/sshcrypto.node': false,
+ '../build/Release/cpufeatures.node': false,
+ },
+})
diff --git a/tabby-telnet/src/components/telnetProfileSettings.component.pug b/tabby-telnet/src/components/telnetProfileSettings.component.pug
index bbea7deb..ad1ed151 100644
--- a/tabby-telnet/src/components/telnetProfileSettings.component.pug
+++ b/tabby-telnet/src/components/telnetProfileSettings.component.pug
@@ -2,14 +2,14 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
li(ngbNavItem)
a(ngbNavLink, translate) General
ng-template(ngbNavContent)
- .form-group
+ .mb-3
label(translate) Host
input.form-control(
type='text',
[(ngModel)]='profile.options.host',
)
- .form-group
+ .mb-3
label(translate) Port
input.form-control(
type='number',
diff --git a/tabby-telnet/src/components/telnetProfileSettings.component.ts b/tabby-telnet/src/components/telnetProfileSettings.component.ts
index eef0fa12..6782289a 100644
--- a/tabby-telnet/src/components/telnetProfileSettings.component.ts
+++ b/tabby-telnet/src/components/telnetProfileSettings.component.ts
@@ -6,7 +6,7 @@ import { TelnetProfile } from '../session'
/** @hidden */
@Component({
- template: require('./telnetProfileSettings.component.pug'),
+ templateUrl:'./telnetProfileSettings.component.pug',
})
export class TelnetProfileSettingsComponent implements ProfileSettingsComponent {
profile: TelnetProfile
diff --git a/tabby-telnet/src/components/telnetTab.component.pug b/tabby-telnet/src/components/telnetTab.component.pug
index 50badf54..d06bb5fc 100644
--- a/tabby-telnet/src/components/telnetTab.component.pug
+++ b/tabby-telnet/src/components/telnetTab.component.pug
@@ -1,8 +1,8 @@
terminal-toolbar([tab]='this')
- i.fas.fa-xs.fa-circle.text-success.mr-2(*ngIf='session && session.open')
- i.fas.fa-xs.fa-circle.text-danger.mr-2(*ngIf='!session || !session.open')
- strong.mr-auto {{profile.options.host}}:{{profile.options.port}}
+ i.fas.fa-xs.fa-circle.text-success.me-2(*ngIf='session && session.open')
+ i.fas.fa-xs.fa-circle.text-danger.me-2(*ngIf='!session || !session.open')
+ strong.me-auto {{profile.options.host}}:{{profile.options.port}}
- button.btn.btn-sm.btn-link.mr-2((click)='reconnect()')
+ button.btn.btn-sm.btn-link.me-2((click)='reconnect()')
i.fas.fa-redo
span(translate) Reconnect
diff --git a/tabby-telnet/src/components/telnetTab.component.ts b/tabby-telnet/src/components/telnetTab.component.ts
index c3420fbe..48458b61 100644
--- a/tabby-telnet/src/components/telnetTab.component.ts
+++ b/tabby-telnet/src/components/telnetTab.component.ts
@@ -11,7 +11,7 @@ import { TelnetProfile, TelnetSession } from '../session'
@Component({
selector: 'telnet-tab',
template: `${BaseTerminalTabComponent.template} ${require('./telnetTab.component.pug')}`,
- styles: [require('./telnetTab.component.scss'), ...BaseTerminalTabComponent.styles],
+ styleUrls: ['./telnetTab.component.scss', ...BaseTerminalTabComponent.styles],
animations: BaseTerminalTabComponent.animations,
})
export class TelnetTabComponent extends BaseTerminalTabComponent {
diff --git a/tabby-telnet/src/index.ts b/tabby-telnet/src/index.ts
index abcb5d14..3798379e 100644
--- a/tabby-telnet/src/index.ts
+++ b/tabby-telnet/src/index.ts
@@ -32,10 +32,6 @@ import { TelnetProfilesService } from './profiles'
{ provide: HotkeyProvider, useClass: TelnetHotkeyProvider, multi: true },
{ provide: ProfileProvider, useExisting: TelnetProfilesService, multi: true },
],
- entryComponents: [
- TelnetProfileSettingsComponent,
- TelnetTabComponent,
- ],
declarations: [
TelnetProfileSettingsComponent,
TelnetTabComponent,
diff --git a/tabby-telnet/webpack.config.js b/tabby-telnet/webpack.config.js
deleted file mode 100644
index f645567c..00000000
--- a/tabby-telnet/webpack.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const config = require('../webpack.plugin.config')
-module.exports = config({
- name: 'telnet',
- dirname: __dirname
-})
diff --git a/tabby-telnet/webpack.config.mjs b/tabby-telnet/webpack.config.mjs
new file mode 100644
index 00000000..d8d82b0d
--- /dev/null
+++ b/tabby-telnet/webpack.config.mjs
@@ -0,0 +1,10 @@
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+import config from '../webpack.plugin.config.mjs'
+
+export default () => config({
+ name: 'telnet',
+ dirname: __dirname,
+})
diff --git a/tabby-terminal/package.json b/tabby-terminal/package.json
index ab66e1e9..1bedc65f 100644
--- a/tabby-terminal/package.json
+++ b/tabby-terminal/package.json
@@ -24,7 +24,7 @@
"cli-spinner": "^0.2.10",
"dataurl": "0.1.0",
"hexer": "^1.5.0",
- "ngx-colors": "^3.0.4",
+ "ngx-colors": "^3.4.0",
"patch-package": "^6.5.0",
"ps-node": "^0.1.6",
"runes": "^0.4.2",
diff --git a/tabby-terminal/patches/ansi-color+0.2.1.patch b/tabby-terminal/patches/ansi-color+0.2.1.patch
new file mode 100644
index 00000000..b20ce461
--- /dev/null
+++ b/tabby-terminal/patches/ansi-color+0.2.1.patch
@@ -0,0 +1,15 @@
+diff --git a/node_modules/ansi-color/lib/ansi-color.js b/node_modules/ansi-color/lib/ansi-color.js
+index 1062c87..4fc2847 100644
+--- a/node_modules/ansi-color/lib/ansi-color.js
++++ b/node_modules/ansi-color/lib/ansi-color.js
+@@ -32,8 +32,8 @@ exports.set = function(str, color) {
+ var color_attrs = color.split("+");
+ var ansi_str = "";
+ for(var i=0, attr; attr = color_attrs[i]; i++) {
+- ansi_str += "\033[" + ANSI_CODES[attr] + "m";
++ ansi_str += "\x1b[" + ANSI_CODES[attr] + "m";
+ }
+- ansi_str += str + "\033[" + ANSI_CODES["off"] + "m";
++ ansi_str += str + "\x1b[" + ANSI_CODES["off"] + "m";
+ return ansi_str;
+ };
diff --git a/tabby-terminal/patches/xterm+5.2.0-beta.10.patch b/tabby-terminal/patches/xterm+5.1.0.patch
similarity index 100%
rename from tabby-terminal/patches/xterm+5.2.0-beta.10.patch
rename to tabby-terminal/patches/xterm+5.1.0.patch
diff --git a/tabby-terminal/src/api/baseTerminalTab.component.ts b/tabby-terminal/src/api/baseTerminalTab.component.ts
index 0e362946..9520c441 100644
--- a/tabby-terminal/src/api/baseTerminalTab.component.ts
+++ b/tabby-terminal/src/api/baseTerminalTab.component.ts
@@ -1,9 +1,9 @@
import { Observable, Subject, first, auditTime } from 'rxjs'
import { Spinner } from 'cli-spinner'
import colors from 'ansi-colors'
-import { NgZone, OnInit, OnDestroy, Injector, ViewChild, HostBinding, Input, ElementRef, InjectFlags } from '@angular/core'
+import { NgZone, OnInit, OnDestroy, Injector, ViewChild, HostBinding, Input, ElementRef, InjectFlags, Component } from '@angular/core'
import { trigger, transition, style, animate, AnimationTriggerMetadata } from '@angular/animations'
-import { AppService, ConfigService, BaseTabComponent, HostAppService, HotkeysService, NotificationsService, Platform, LogService, Logger, TabContextMenuItemProvider, SplitTabComponent, SubscriptionContainer, MenuItemOptions, PlatformService, HostWindowService, ResettableTimeout, TranslateService } from 'tabby-core'
+import { AppService, ConfigService, BaseTabComponent, HostAppService, HotkeysService, NotificationsService, Platform, LogService, Logger, TabContextMenuItemProvider, SplitTabComponent, SubscriptionContainer, MenuItemOptions, PlatformService, HostWindowService, ResettableTimeout, TranslateService, ThemesService } from 'tabby-core'
import { BaseSession } from '../session'
@@ -17,6 +17,7 @@ import { MultifocusService } from '../services/multifocus.service'
/**
* A class to base your custom terminal tabs on
*/
+@Component({ template: '' })
export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit, OnDestroy {
static template: string = require('../components/baseTerminalTab.component.pug')
static styles: string[] = [require('../components/baseTerminalTab.component.scss')]
@@ -121,6 +122,7 @@ export class BaseTerminalTabComponent extends Bas
protected hostWindow: HostWindowService
protected translate: TranslateService
protected multifocus: MultifocusService
+ protected themes: ThemesService
// Deps end
protected logger: Logger
@@ -193,6 +195,7 @@ export class BaseTerminalTabComponent
extends Bas
this.hostWindow = injector.get(HostWindowService)
this.translate = injector.get(TranslateService)
this.multifocus = injector.get(MultifocusService)
+ this.themes = injector.get(ThemesService)
this.logger = this.log.create('baseTerminalTab')
this.setTitle(this.translate.instant('Terminal'))
@@ -512,7 +515,7 @@ export class BaseTerminalTabComponent
extends Bas
configure (): void {
this.frontend?.configure(this.profile)
- if (this.config.store.terminal.background === 'colorScheme') {
+ if (!this.themes.findCurrentTheme().followsColorScheme && this.config.store.terminal.background === 'colorScheme') {
const scheme = this.profile.terminalColorScheme ?? this.config.store.terminal.colorScheme
if (scheme.background) {
this.backgroundColor = scheme.background
@@ -666,9 +669,9 @@ export class BaseTerminalTabComponent
extends Bas
let wheelDeltaY = 0
if ('wheelDeltaY' in event) {
- wheelDeltaY = (event as WheelEvent)['wheelDeltaY']
+ wheelDeltaY = (event as unknown as WheelEvent)['wheelDeltaY']
} else {
- wheelDeltaY = (event as WheelEvent).deltaY
+ wheelDeltaY = (event as unknown as WheelEvent).deltaY
}
if (event.altKey) {
diff --git a/tabby-terminal/src/components/appearanceSettingsTab.component.pug b/tabby-terminal/src/components/appearanceSettingsTab.component.pug
index 0e87e562..444da50b 100644
--- a/tabby-terminal/src/components/appearanceSettingsTab.component.pug
+++ b/tabby-terminal/src/components/appearanceSettingsTab.component.pug
@@ -55,59 +55,76 @@ h3.mb-3(translate) Appearance
color-scheme-preview([scheme]='config.store.terminal.colorScheme', [fontPreview]='true')
.content-box
- .form-line
+ .form-line(*ngIf='!themes.findCurrentTheme().followsColorScheme')
.header
.title(translate) Terminal background
- .btn-group(
- [(ngModel)]='config.store.terminal.background',
- (ngModelChange)='config.save()',
- ngbRadioGroup
- )
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"theme"'
- )
+ .btn-group(role='group')
+ input.btn-check(
+ type='radio',
+ name='background',
+ [(ngModel)]='config.store.terminal.background',
+ (ngModelChange)='config.save()',
+ id='backgroundTheme',
+ [value]='"theme"'
+ )
+ label.btn.btn-secondary(
+ for='backgroundTheme'
+ )
span(translate) From theme
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"colorScheme"'
- )
+ input.btn-check(
+ type='radio',
+ name='background',
+ [(ngModel)]='config.store.terminal.background',
+ (ngModelChange)='config.save()',
+ id='backgroundColorScheme',
+ [value]='"colorScheme"'
+ )
+ label.btn.btn-secondary(
+ for='backgroundColorScheme'
+ )
span(translate) From color scheme
.form-line
.header
.title(translate) Cursor shape
- .btn-group(
- [(ngModel)]='config.store.terminal.cursor',
- (ngModelChange)='config.save()',
- ngbRadioGroup
- )
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"block"'
- )
+ .btn-group(role='group')
+ input.btn-check(
+ type='radio',
+ name='cursor',
+ [(ngModel)]='config.store.terminal.cursor',
+ (ngModelChange)='config.save()',
+ id='cursorBlock',
+ [value]='"block"'
+ )
+ label.btn.btn-secondary(
+ for='cursorBlock'
+ )
| █
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"beam"'
- )
+ input.btn-check(
+ type='radio',
+ name='cursor',
+ [(ngModel)]='config.store.terminal.cursor',
+ (ngModelChange)='config.save()',
+ id='cursorBeam',
+ [value]='"beam"'
+ )
+ label.btn.btn-secondary(
+ for='cursorBeam'
+ )
| |
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"underline"'
- )
+ input.btn-check(
+ type='radio',
+ name='cursor',
+ [(ngModel)]='config.store.terminal.cursor',
+ (ngModelChange)='config.save()',
+ id='cursorUnderline',
+ [value]='"underline"'
+ )
+ label.btn.btn-secondary(
+ for='cursorUnderline'
+ )
| ▁
.form-line
diff --git a/tabby-terminal/src/components/appearanceSettingsTab.component.ts b/tabby-terminal/src/components/appearanceSettingsTab.component.ts
index 83c23a49..96b5b396 100644
--- a/tabby-terminal/src/components/appearanceSettingsTab.component.ts
+++ b/tabby-terminal/src/components/appearanceSettingsTab.component.ts
@@ -3,18 +3,19 @@ import { Observable, debounceTime, distinctUntilChanged, map } from 'rxjs'
import { debounce } from 'utils-decorators/dist/esm/debounce/debounce'
import { Component } from '@angular/core'
-import { ConfigService, getCSSFontFamily, PlatformService } from 'tabby-core'
+import { ConfigService, getCSSFontFamily, PlatformService, ThemesService } from 'tabby-core'
/** @hidden */
@Component({
- template: require('./appearanceSettingsTab.component.pug'),
- styles: [require('./appearanceSettingsTab.component.scss')],
+ templateUrl:'./appearanceSettingsTab.component.pug',
+ styleUrls: ['./appearanceSettingsTab.component.scss'],
})
export class AppearanceSettingsTabComponent {
fonts: string[] = []
constructor (
public config: ConfigService,
+ public themes: ThemesService,
private platform: PlatformService,
) { }
diff --git a/tabby-terminal/src/components/colorPicker.component.scss b/tabby-terminal/src/components/colorPicker.component.scss
index 1b0ddf7f..c7c57838 100644
--- a/tabby-terminal/src/components/colorPicker.component.scss
+++ b/tabby-terminal/src/components/colorPicker.component.scss
@@ -1,3 +1,7 @@
+:host {
+ display: inline-block;
+}
+
div {
width: 32px;
height: 32px;
diff --git a/tabby-terminal/src/components/colorPicker.component.ts b/tabby-terminal/src/components/colorPicker.component.ts
index 3d4cf6ea..c434104d 100644
--- a/tabby-terminal/src/components/colorPicker.component.ts
+++ b/tabby-terminal/src/components/colorPicker.component.ts
@@ -3,8 +3,8 @@ import { Component, Input, Output, EventEmitter } from '@angular/core'
/** @hidden */
@Component({
selector: 'color-picker',
- template: require('./colorPicker.component.pug'),
- styles: [require('./colorPicker.component.scss')],
+ templateUrl:'./colorPicker.component.pug',
+ styleUrls: ['./colorPicker.component.scss'],
})
export class ColorPickerComponent {
@Input() model: string
diff --git a/tabby-terminal/src/components/colorSchemePreview.component.ts b/tabby-terminal/src/components/colorSchemePreview.component.ts
index 31acf2cc..96c95514 100644
--- a/tabby-terminal/src/components/colorSchemePreview.component.ts
+++ b/tabby-terminal/src/components/colorSchemePreview.component.ts
@@ -5,8 +5,8 @@ import { TerminalColorScheme } from '../api/interfaces'
/** @hidden */
@Component({
selector: 'color-scheme-preview',
- template: require('./colorSchemePreview.component.pug'),
- styles: [require('./colorSchemePreview.component.scss')],
+ templateUrl:'./colorSchemePreview.component.pug',
+ styleUrls: ['./colorSchemePreview.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class ColorSchemePreviewComponent extends BaseComponent {
diff --git a/tabby-terminal/src/components/colorSchemeSelector.component.pug b/tabby-terminal/src/components/colorSchemeSelector.component.pug
index 6b634160..b9ac5e0e 100644
--- a/tabby-terminal/src/components/colorSchemeSelector.component.pug
+++ b/tabby-terminal/src/components/colorSchemeSelector.component.pug
@@ -1,31 +1,29 @@
.head
- .bg-dark.p-3.mb-4(*ngIf='model')
+ .bg-dark.p-3.mb-4(*ngIf='model != null')
.d-flex.align-items-center
span {{model.name}}
- .mr-auto
+ .me-auto
a.btn-link((click)='selectScheme(null); $event.preventDefault()', href='#', translate) Clear
color-scheme-preview([scheme]='model')
.input-group.mb-3
- .input-group-prepend
- .input-group-text
- i.fas.fa-fw.fa-search
+ .input-group-text
+ i.fas.fa-fw.fa-search
input.form-control(type='search', [placeholder]='"Search color schemes"|translate', [(ngModel)]='filter')
.body
- .list-group-light.mb-3
+ .list-group.list-group-light.mb-3
ng-container(*ngFor='let scheme of allColorSchemes')
.list-group-item.list-group-item-action(
[hidden]='filter && !scheme.name.toLowerCase().includes(filter.toLowerCase())',
- (click)='selectScheme(scheme)',
- [class.active]='(currentCustomScheme || currentStockScheme) === scheme'
+ (click)='selectScheme(scheme)'
)
.d-flex.w-100.align-items-center
i.fas.fa-fw([class.fa-check]='model?.name === scheme.name')
- .ml-2
+ .ms-2
- .mr-auto {{scheme.name}}
+ .me-auto {{scheme.name}}
color-scheme-preview([scheme]='scheme')
diff --git a/tabby-terminal/src/components/colorSchemeSelector.component.ts b/tabby-terminal/src/components/colorSchemeSelector.component.ts
index 90eec0fe..4a15d111 100644
--- a/tabby-terminal/src/components/colorSchemeSelector.component.ts
+++ b/tabby-terminal/src/components/colorSchemeSelector.component.ts
@@ -11,7 +11,7 @@ _('Search color schemes')
/** @hidden */
@Component({
selector: 'color-scheme-selector',
- template: require('./colorSchemeSelector.component.pug'),
+ templateUrl:'./colorSchemeSelector.component.pug',
styles: [`
:host {
display: block;
@@ -45,7 +45,7 @@ export class ColorSchemeSelectorComponent {
this.changeDetector.markForCheck()
}
- selectScheme (scheme: TerminalColorScheme) {
+ selectScheme (scheme: TerminalColorScheme|null) {
this.model = scheme
this.modelChange.emit(scheme)
this.changeDetector.markForCheck()
diff --git a/tabby-terminal/src/components/colorSchemeSettingsTab.component.pug b/tabby-terminal/src/components/colorSchemeSettingsTab.component.pug
index 1ea9abf5..cacd18ff 100644
--- a/tabby-terminal/src/components/colorSchemeSettingsTab.component.pug
+++ b/tabby-terminal/src/components/colorSchemeSettingsTab.component.pug
@@ -3,12 +3,12 @@
.d-flex.align-items-center(*ngIf='!editing')
span {{getCurrentSchemeName()}}
- .mr-auto
+ .me-auto
.btn-toolbar
button.btn.btn-secondary((click)='editScheme()')
i.fas.fa-pen
span(translate) Edit
- .mr-1
+ .me-1
button.btn.btn-danger(
(click)='deleteScheme(config.store.terminal.colorScheme)',
*ngIf='currentCustomScheme'
@@ -17,11 +17,11 @@
span(translate) Delete
div(*ngIf='editing')
- .form-group
+ .mb-3
label(translate) Name
input.form-control(type='text', [(ngModel)]='config.store.terminal.colorScheme.name')
- .form-group
+ .mb-3
color-picker(
[(model)]='config.store.terminal.colorScheme.foreground',
(modelChange)='config.save()',
@@ -69,11 +69,11 @@
color-scheme-preview([scheme]='config.store.terminal.colorScheme')
.btn-toolbar.d-flex.mt-2(*ngIf='editing')
- .mr-auto
+ .me-auto
button.btn.btn-primary((click)='saveScheme()')
i.fas.fa-check
span(translate) Save
- .mr-1
+ .me-1
button.btn.btn-secondary((click)='cancelEditing()')
i.fas.fa-times
span(translate) Cancel
@@ -81,13 +81,12 @@
hr.mt-3.mb-4
.input-group.mb-3
- .input-group-prepend
- .input-group-text
- i.fas.fa-fw.fa-search
+ .input-group-text
+ i.fas.fa-fw.fa-search
input.form-control(type='search', [placeholder]='"Search color schemes"|translate', [(ngModel)]='filter')
.body
- .list-group-light.mb-3
+ .list-group.list-group-light.mb-3
ng-container(*ngFor='let scheme of allColorSchemes')
.list-group-item.list-group-item-action(
[hidden]='filter && !scheme.name.toLowerCase().includes(filter.toLowerCase())',
@@ -97,11 +96,11 @@
.d-flex.w-100.align-items-center
i.fas.fa-fw([class.fa-check]='(currentCustomScheme || currentStockScheme) === scheme')
- .ml-2
+ .ms-2
- .mr-auto
+ .me-auto
span {{scheme.name}}
- .badge.badge-info.ml-2(*ngIf='customColorSchemes.includes(scheme)', translate) Custom
+ .badge.text-bg-info.ms-2(*ngIf='customColorSchemes.includes(scheme)', translate) Custom
div
.d-flex
diff --git a/tabby-terminal/src/components/colorSchemeSettingsTab.component.ts b/tabby-terminal/src/components/colorSchemeSettingsTab.component.ts
index c7ce09a1..b795d5c7 100644
--- a/tabby-terminal/src/components/colorSchemeSettingsTab.component.ts
+++ b/tabby-terminal/src/components/colorSchemeSettingsTab.component.ts
@@ -11,8 +11,8 @@ _('Search color schemes')
/** @hidden */
@Component({
- template: require('./colorSchemeSettingsTab.component.pug'),
- styles: [require('./colorSchemeSettingsTab.component.scss')],
+ templateUrl:'./colorSchemeSettingsTab.component.pug',
+ styleUrls: ['./colorSchemeSettingsTab.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class ColorSchemeSettingsTabComponent {
diff --git a/tabby-terminal/src/components/loginScriptsSettings.component.pug b/tabby-terminal/src/components/loginScriptsSettings.component.pug
index 8505ddb7..1412236e 100644
--- a/tabby-terminal/src/components/loginScriptsSettings.component.pug
+++ b/tabby-terminal/src/components/loginScriptsSettings.component.pug
@@ -1,4 +1,5 @@
-div([sortablejs]='scripts')
+div
+ //TODO ([sortablejs]='scripts')
.input-group.flex-grow-1(*ngFor='let script of scripts')
input.form-control(
type='text',
@@ -10,7 +11,7 @@ div([sortablejs]='scripts')
placeholder='Send',
[(ngModel)]='script.send'
)
- .input-group-append.input-group-text.p-0.border-0
+ .input-group-text.p-0.border-0
.hover-reveal(ngbDropdown)
button.btn.btn-link.btn-sm(ngbDropdownToggle)
i.fas.fa-fw.fa-cog
diff --git a/tabby-terminal/src/components/loginScriptsSettings.component.ts b/tabby-terminal/src/components/loginScriptsSettings.component.ts
index 2195e1f1..3aa7491d 100644
--- a/tabby-terminal/src/components/loginScriptsSettings.component.ts
+++ b/tabby-terminal/src/components/loginScriptsSettings.component.ts
@@ -7,7 +7,7 @@ import { LoginScript, LoginScriptsOptions } from '../middleware/loginScriptProce
/** @hidden */
@Component({
selector: 'login-scripts-settings',
- template: require('./loginScriptsSettings.component.pug'),
+ templateUrl:'./loginScriptsSettings.component.pug',
})
export class LoginScriptsSettingsComponent {
@Input() options: LoginScriptsOptions
diff --git a/tabby-terminal/src/components/searchPanel.component.pug b/tabby-terminal/src/components/searchPanel.component.pug
index 29922250..fb204474 100644
--- a/tabby-terminal/src/components/searchPanel.component.pug
+++ b/tabby-terminal/src/components/searchPanel.component.pug
@@ -9,8 +9,7 @@
(keyup.esc)='close.emit()',
[placeholder]='"Search"|translate'
)
- .input-group-append(*ngIf='state.resultCount > 0')
- .input-group-text.result-counter {{state.resultIndex + 1}} / {{state.resultCount}}
+ .input-group-text.result-counter(*ngIf='state.resultCount > 0') {{state.resultIndex ?? 0 + 1}} / {{state.resultCount}}
ng-container(*ngIf='state.resultCount > 0')
button.btn.btn-link(
@@ -27,7 +26,7 @@ ng-container(*ngIf='state.resultCount > 0')
[fastHtmlBind]='icons.arrowDown'
)
-.mr-2
+.me-2
button.btn.btn-link(
(click)='options.caseSensitive = !options.caseSensitive; saveSearchOptions()',
@@ -53,7 +52,7 @@ button.btn.btn-link(
[fastHtmlBind]='icons.wholeWord'
)
-.mr-2
+.me-2
button.btn.btn-link(
(click)='close.emit()',
diff --git a/tabby-terminal/src/components/searchPanel.component.ts b/tabby-terminal/src/components/searchPanel.component.ts
index 138c9007..6fbfb2b9 100644
--- a/tabby-terminal/src/components/searchPanel.component.ts
+++ b/tabby-terminal/src/components/searchPanel.component.ts
@@ -5,8 +5,8 @@ import { ConfigService, NotificationsService, TranslateService } from 'tabby-cor
@Component({
selector: 'search-panel',
- template: require('./searchPanel.component.pug'),
- styles: [require('./searchPanel.component.scss')],
+ templateUrl:'./searchPanel.component.pug',
+ styleUrls: ['./searchPanel.component.scss'],
})
export class SearchPanelComponent {
@Input() query: string
diff --git a/tabby-terminal/src/components/streamProcessingSettings.component.ts b/tabby-terminal/src/components/streamProcessingSettings.component.ts
index f04dcabe..b6d17eb5 100644
--- a/tabby-terminal/src/components/streamProcessingSettings.component.ts
+++ b/tabby-terminal/src/components/streamProcessingSettings.component.ts
@@ -6,7 +6,7 @@ import { StreamProcessingOptions } from '../middleware/streamProcessing'
/** @hidden */
@Component({
selector: 'stream-processing-settings',
- template: require('./streamProcessingSettings.component.pug'),
+ templateUrl:'./streamProcessingSettings.component.pug',
})
export class StreamProcessingSettingsComponent {
@Input() options: StreamProcessingOptions
diff --git a/tabby-terminal/src/components/terminalSettingsTab.component.pug b/tabby-terminal/src/components/terminalSettingsTab.component.pug
index 8a8d263d..9005f12b 100644
--- a/tabby-terminal/src/components/terminalSettingsTab.component.pug
+++ b/tabby-terminal/src/components/terminalSettingsTab.component.pug
@@ -168,35 +168,40 @@ div.mt-4
.form-line
.header
.title(translate) Terminal bell
- .btn-group(
- [(ngModel)]='config.store.terminal.bell',
- (ngModelChange)='config.save()',
- ngbRadioGroup
- )
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"off"'
- )
+ .btn-group
+ input.btn-check(
+ type='radio',
+ name='bell',
+ [(ngModel)]='config.store.terminal.bell',
+ (ngModelChange)='config.save()',
+ id='bellOff',
+ [value]='"off"'
+ )
+ label.btn.btn-secondary(for='bellOff')
span(translate) Off
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"visual"'
- )
+ input.btn-check(
+ type='radio',
+ name='bell',
+ [(ngModel)]='config.store.terminal.bell',
+ (ngModelChange)='config.save()',
+ id='bellVisual',
+ [value]='"visual"'
+ )
+ label.btn.btn-secondary(for='bellVisual')
span(translate) Visual
- label.btn.btn-secondary(ngbButtonLabel)
- input(
- type='radio',
- ngbButton,
- [value]='"audible"'
- )
+ input.btn-check(
+ type='radio',
+ name='bell',
+ [(ngModel)]='config.store.terminal.bell',
+ (ngModelChange)='config.save()',
+ id='bellAudible',
+ [value]='"audible"'
+ )
+ label.btn.btn-secondary(for='bellAudible')
span(translate) Audible
.alert.alert-info.d-flex.align-items-center(*ngIf='config.store.terminal.bell != "audible" && (config.store.terminal.profile || "").startsWith("wsl")')
- .mr-auto(translate) WSL terminal bell can only be muted via Volume Mixer
+ .me-auto(translate) WSL terminal bell can only be muted via Volume Mixer
button.btn.btn-secondary((click)='openWSLVolumeMixer()', translate) Show Mixer
.mt-4
diff --git a/tabby-terminal/src/components/terminalSettingsTab.component.ts b/tabby-terminal/src/components/terminalSettingsTab.component.ts
index 6ee2cbd7..f7c53485 100644
--- a/tabby-terminal/src/components/terminalSettingsTab.component.ts
+++ b/tabby-terminal/src/components/terminalSettingsTab.component.ts
@@ -3,7 +3,7 @@ import { ConfigService, HostAppService, Platform, PlatformService, altKeyName, m
/** @hidden */
@Component({
- template: require('./terminalSettingsTab.component.pug'),
+ templateUrl:'./terminalSettingsTab.component.pug',
})
export class TerminalSettingsTabComponent {
Platform = Platform
diff --git a/tabby-terminal/src/components/terminalToolbar.component.scss b/tabby-terminal/src/components/terminalToolbar.component.scss
index 65b352f3..79bca1ce 100644
--- a/tabby-terminal/src/components/terminalToolbar.component.scss
+++ b/tabby-terminal/src/components/terminalToolbar.component.scss
@@ -1,8 +1,13 @@
:host {
- background: #000000bf;
padding: 5px 15px 5px 15px;
display: flex;
z-index: 3;
+
+ ::ng-deep .btn {
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ }
}
.content {
@@ -16,9 +21,3 @@
cursor: move;
opacity: .3;
}
-
-::ng-deep .btn {
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
-}
diff --git a/tabby-terminal/src/components/terminalToolbar.component.ts b/tabby-terminal/src/components/terminalToolbar.component.ts
index 37dd887b..c47059ba 100644
--- a/tabby-terminal/src/components/terminalToolbar.component.ts
+++ b/tabby-terminal/src/components/terminalToolbar.component.ts
@@ -6,8 +6,8 @@ import { BaseTerminalTabComponent } from '../api/baseTerminalTab.component'
/** @hidden */
@Component({
selector: 'terminal-toolbar',
- template: require('./terminalToolbar.component.pug'),
- styles: [require('./terminalToolbar.component.scss')],
+ templateUrl:'./terminalToolbar.component.pug',
+ styleUrls: ['./terminalToolbar.component.scss'],
})
export class TerminalToolbarComponent {
@Input() tab: BaseTerminalTabComponent
diff --git a/tabby-terminal/src/frontends/xtermFrontend.ts b/tabby-terminal/src/frontends/xtermFrontend.ts
index 01e5d8cd..9668555c 100644
--- a/tabby-terminal/src/frontends/xtermFrontend.ts
+++ b/tabby-terminal/src/frontends/xtermFrontend.ts
@@ -1,6 +1,6 @@
import { BehaviorSubject, filter, firstValueFrom, takeUntil } from 'rxjs'
import { Injector } from '@angular/core'
-import { ConfigService, getCSSFontFamily, HostAppService, HotkeysService, Platform, PlatformService } from 'tabby-core'
+import { ConfigService, getCSSFontFamily, HostAppService, HotkeysService, Platform, PlatformService, ThemesService } from 'tabby-core'
import { Frontend, SearchOptions, SearchState } from './frontend'
import { Terminal, ITheme } from 'xterm'
import { FitAddon } from 'xterm-addon-fit'
@@ -87,6 +87,7 @@ export class XTermFrontend extends Frontend {
private hotkeysService: HotkeysService
private platformService: PlatformService
private hostApp: HostAppService
+ private themes: ThemesService
constructor (injector: Injector) {
super(injector)
@@ -94,6 +95,7 @@ export class XTermFrontend extends Frontend {
this.hotkeysService = injector.get(HotkeysService)
this.platformService = injector.get(PlatformService)
this.hostApp = injector.get(HostAppService)
+ this.themes = injector.get(ThemesService)
this.xterm = new Terminal({
allowTransparency: true,
@@ -363,7 +365,7 @@ export class XTermFrontend extends Frontend {
foreground: scheme!.foreground,
selectionBackground: scheme!.selection ?? '#88888888',
selectionForeground: scheme!.selectionForeground ?? undefined,
- background: config.terminal.background === 'colorScheme' ? scheme!.background : '#00000000',
+ background: !this.themes.findCurrentTheme().followsColorScheme && config.terminal.background === 'colorScheme' ? scheme!.background : '#00000000',
cursor: scheme!.cursor,
cursorAccent: scheme!.cursorAccent,
}
diff --git a/tabby-terminal/src/index.ts b/tabby-terminal/src/index.ts
index 0b0689f6..99f3e225 100644
--- a/tabby-terminal/src/index.ts
+++ b/tabby-terminal/src/index.ts
@@ -1,5 +1,5 @@
import { NgModule } from '@angular/core'
-import { BrowserModule } from '@angular/platform-browser'
+import { CommonModule } from '@angular/common'
import { FormsModule } from '@angular/forms'
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
import { ToastrModule } from 'ngx-toastr'
@@ -37,7 +37,7 @@ import { TerminalCLIHandler } from './cli'
/** @hidden */
@NgModule({
imports: [
- BrowserModule,
+ CommonModule,
FormsModule,
NgbModule,
ToastrModule,
@@ -61,12 +61,6 @@ import { TerminalCLIHandler } from './cli'
{ provide: CLIHandler, useClass: TerminalCLIHandler, multi: true },
],
- entryComponents: [
- AppearanceSettingsTabComponent,
- ColorSchemeSettingsTabComponent,
- TerminalSettingsTabComponent,
- ColorSchemeSelectorComponent,
- ],
declarations: [
ColorPickerComponent,
ColorSchemePreviewComponent,
diff --git a/tabby-terminal/webpack.config.js b/tabby-terminal/webpack.config.js
deleted file mode 100644
index e7c81a06..00000000
--- a/tabby-terminal/webpack.config.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const config = require('../webpack.plugin.config')
-module.exports = config({
- name: 'terminal',
- dirname: __dirname,
- externals: [
- 'opentype.js',
- ],
- rules: [
- {
- test: /lib[\\/]xterm-addon-image-worker.js$/i,
- type: 'asset/source',
- },
- ],
-})
-module.exports.resolve.modules.push('node_modules/xterm/src')
diff --git a/tabby-terminal/webpack.config.mjs b/tabby-terminal/webpack.config.mjs
new file mode 100644
index 00000000..8fc3d3d0
--- /dev/null
+++ b/tabby-terminal/webpack.config.mjs
@@ -0,0 +1,23 @@
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+import config from '../webpack.plugin.config.mjs'
+
+export default () => {
+ const cfg = config({
+ name: 'terminal',
+ dirname: __dirname,
+ externals: [
+ 'opentype.js',
+ ],
+ rules: [
+ {
+ test: /lib[\\/]xterm-addon-image-worker.js$/i,
+ type: 'asset/source',
+ },
+ ],
+ })
+ cfg.resolve.modules.push('node_modules/xterm/src')
+ return cfg
+}
diff --git a/tabby-terminal/yarn.lock b/tabby-terminal/yarn.lock
index 940cc7d2..8df4d50a 100644
--- a/tabby-terminal/yarn.lock
+++ b/tabby-terminal/yarn.lock
@@ -293,10 +293,10 @@ minimist@^1.2.6:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
-ngx-colors@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/ngx-colors/-/ngx-colors-3.0.4.tgz#69b760760e6e1e92fda5da51fa9b4bea7e555d40"
- integrity sha512-peNvVpYkm8pe3nP8/TbaFFqo/RxZevGljKrzFa2g1hPPacdx+WdfwAN4uJfcGk7qTYbqlV64SSfb3Pnx8qjzDA==
+ngx-colors@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/ngx-colors/-/ngx-colors-3.4.0.tgz#522d37563202053bd5b68ce8726afbfddf2f83a5"
+ integrity sha512-aJBpOC7t6DUDcEfkyFo6+6JzdHH82hCuj+zdqAmdrFTMyOVFZCw0FhCfcEuQRNsR1yYtyMRhSs6zUXr7oTiNlw==
dependencies:
tslib "^2.0.0"
diff --git a/tabby-web-demo/src/index.ts b/tabby-web-demo/src/index.ts
index 7c58e936..49c4ae5b 100644
--- a/tabby-web-demo/src/index.ts
+++ b/tabby-web-demo/src/index.ts
@@ -1,5 +1,5 @@
import { NgModule } from '@angular/core'
-import { BrowserModule } from '@angular/platform-browser'
+// import { BrowserModule } from '@angular/platform-browser'
import { FormsModule } from '@angular/forms'
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
@@ -12,7 +12,7 @@ import { DemoProfilesService } from './profiles'
/** @hidden */
@NgModule({
imports: [
- BrowserModule,
+ // BrowserModule,
FormsModule,
NgbModule,
TabbyCorePlugin,
@@ -21,9 +21,6 @@ import { DemoProfilesService } from './profiles'
providers: [
{ provide: ProfileProvider, useClass: DemoProfilesService, multi: true },
],
- entryComponents: [
- DemoTerminalTabComponent,
- ],
declarations: [
DemoTerminalTabComponent,
],
diff --git a/tabby-web-demo/webpack.config.js b/tabby-web-demo/webpack.config.js
deleted file mode 100644
index c2c908c3..00000000
--- a/tabby-web-demo/webpack.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const config = require('../webpack.plugin.config')
-module.exports = config({
- name: 'web-demo',
- dirname: __dirname,
-})
diff --git a/tabby-web-demo/webpack.config.mjs b/tabby-web-demo/webpack.config.mjs
new file mode 100644
index 00000000..3b4735d2
--- /dev/null
+++ b/tabby-web-demo/webpack.config.mjs
@@ -0,0 +1,10 @@
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+import config from '../webpack.plugin.config.mjs'
+
+export default () => config({
+ name: 'web-demo',
+ dirname: __dirname,
+})
diff --git a/tabby-web/src/components/messageBoxModal.component.pug b/tabby-web/src/components/messageBoxModal.component.pug
index 67ec43bd..cb418013 100644
--- a/tabby-web/src/components/messageBoxModal.component.pug
+++ b/tabby-web/src/components/messageBoxModal.component.pug
@@ -3,7 +3,7 @@
small {{options.detail}}
.modal-footer
- .ml-auto
+ .ms-auto
button.btn(
*ngFor='let button of options.buttons; index as i',
[autofocus]='i === options.defaultId',
diff --git a/tabby-web/src/components/messageBoxModal.component.ts b/tabby-web/src/components/messageBoxModal.component.ts
index e58a100e..a0749dc3 100644
--- a/tabby-web/src/components/messageBoxModal.component.ts
+++ b/tabby-web/src/components/messageBoxModal.component.ts
@@ -4,7 +4,7 @@ import { BaseComponent, HotkeysService, MessageBoxOptions } from 'tabby-core'
/** @hidden */
@Component({
- template: require('./messageBoxModal.component.pug'),
+ templateUrl:'./messageBoxModal.component.pug',
})
export class MessageBoxModalComponent extends BaseComponent {
@Input() options: MessageBoxOptions
diff --git a/tabby-web/src/index.ts b/tabby-web/src/index.ts
index 6fda15e4..067253ba 100644
--- a/tabby-web/src/index.ts
+++ b/tabby-web/src/index.ts
@@ -27,8 +27,5 @@ import './styles.scss'
declarations: [
MessageBoxModalComponent,
],
- entryComponents: [
- MessageBoxModalComponent,
- ],
})
export default class WebModule { } // eslint-disable-line @typescript-eslint/no-extraneous-class
diff --git a/tabby-web/webpack.config.js b/tabby-web/webpack.config.js
deleted file mode 100644
index 23ecfa61..00000000
--- a/tabby-web/webpack.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const config = require('../webpack.plugin.config')
-module.exports = config({
- name: 'web',
- dirname: __dirname,
-})
diff --git a/tabby-web/webpack.config.mjs b/tabby-web/webpack.config.mjs
new file mode 100644
index 00000000..52596a62
--- /dev/null
+++ b/tabby-web/webpack.config.mjs
@@ -0,0 +1,10 @@
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
+import config from '../webpack.plugin.config.mjs'
+
+export default () => config({
+ name: 'web',
+ dirname: __dirname,
+})
diff --git a/tsconfig.json b/tsconfig.json
index 896dcabb..0c9ae68b 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -36,7 +36,7 @@
"common*": [
"../../tabby-terminal/node_modules/xterm/src/common*"
],
- "tabby-*": ["../../tabby-*/src"]
+ "tabby-*": ["../../tabby-*/src"],
}
},
"typeAcquisition": {
diff --git a/typedoc.js b/typedoc.mjs
similarity index 100%
rename from typedoc.js
rename to typedoc.mjs
diff --git a/web/entry.preload.ts b/web/entry.preload.ts
index ee0b9dd2..98eacf86 100644
--- a/web/entry.preload.ts
+++ b/web/entry.preload.ts
@@ -4,7 +4,6 @@ import '@fortawesome/fontawesome-free/css/solid.css'
import '@fortawesome/fontawesome-free/css/brands.css'
import '@fortawesome/fontawesome-free/css/regular.css'
import '@fortawesome/fontawesome-free/css/fontawesome.css'
-import 'ngx-toastr/toastr.css'
import '../app/src/preload.scss'
// Required before other imports
diff --git a/web/webpack.config.js b/web/webpack.config.mjs
similarity index 77%
rename from web/webpack.config.js
rename to web/webpack.config.mjs
index e8d9ab42..dadba2d3 100644
--- a/web/webpack.config.js
+++ b/web/webpack.config.mjs
@@ -1,4 +1,7 @@
-const path = require('path')
+import * as path from 'path'
+import * as url from 'url'
+const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
+
const externals = {}
for (const key of [
@@ -20,7 +23,7 @@ for (const key of [
externals[key] = `commonjs ${key}`
}
-module.exports = {
+const config = {
name: 'tabby-web-entry',
target: 'web',
entry: {
@@ -43,10 +46,10 @@ module.exports = {
modules: ['../app/node_modules', 'node_modules', '../node_modules', '../app/assets/'].map(x => path.join(__dirname, x)),
extensions: ['.ts', '.js'],
fallback: {
- stream: require.resolve('stream-browserify'),
- assert: require.resolve('assert/'),
- constants: require.resolve('constants-browserify'),
- util: require.resolve('util/'),
+ stream: path.join(__dirname, 'node_modules/stream-browserify/index.js'),
+ assert: path.join(__dirname, 'node_modules/assert/assert.js'),
+ constants: path.join(__dirname, 'node_modules/constants-browserify/constants.json'),
+ util: path.join(__dirname, 'node_modules/util/util.js'),
},
},
module: {
@@ -70,3 +73,5 @@ module.exports = {
},
externals,
}
+
+export default () => config
diff --git a/webpack.config.js b/webpack.config.js
deleted file mode 100644
index c8e152ce..00000000
--- a/webpack.config.js
+++ /dev/null
@@ -1,14 +0,0 @@
-const log = require('npmlog')
-const { builtinPlugins } = require('./scripts/vars')
-
-const paths = [
- './app/webpack.config.js',
- './app/webpack.main.config.js',
- './web/webpack.config.js',
- './tabby-web-demo/webpack.config.js',
- ...builtinPlugins.map(x => `./${x}/webpack.config.js`),
-]
-
-paths.forEach(x => log.info(`Using config: ${x}`))
-
-module.exports = paths.map(x => require(x))
diff --git a/webpack.config.mjs b/webpack.config.mjs
new file mode 100644
index 00000000..2088d2b8
--- /dev/null
+++ b/webpack.config.mjs
@@ -0,0 +1,15 @@
+import log from 'npmlog'
+import { builtinPlugins } from './scripts/vars.mjs'
+
+const paths = [
+ './app/webpack.config.mjs',
+ './app/webpack.config.main.mjs',
+ // './web/webpack.config.mjs',
+ // './tabby-web-demo/webpack.config.mjs',
+ ...builtinPlugins.map(x => `./${x}/webpack.config.mjs`),
+]
+
+paths.forEach(x => log.info(`Using config: ${x}`))
+
+const config = await Promise.all(paths.map(x => import(x).then(x => x.default())))
+export default () => config
diff --git a/webpack.plugin.config.js b/webpack.plugin.config.mjs
similarity index 70%
rename from webpack.plugin.config.js
rename to webpack.plugin.config.mjs
index b9b847ff..db87b1fb 100644
--- a/webpack.plugin.config.js
+++ b/webpack.plugin.config.mjs
@@ -1,25 +1,39 @@
-const path = require('path')
-const webpack = require('webpack')
-const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
+import * as fs from 'fs'
+import * as path from 'path'
+import wp from 'webpack'
+import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'
+import { AngularWebpackPlugin } from '@ngtools/webpack'
const bundleAnalyzer = new BundleAnalyzerPlugin({
analyzerPort: 0,
})
-module.exports = options => {
+import { createEs2015LinkerPlugin } from '@angular/compiler-cli/linker/babel'
+const linkerPlugin = createEs2015LinkerPlugin({
+ linkerJitMode: true,
+ fileSystem: {
+ resolve: path.resolve,
+ exists: fs.existsSync,
+ dirname: path.dirname,
+ relative: path.relative,
+ readFile: fs.readFileSync,
+ },
+})
+
+export default options => {
const sourceMapOptions = {
exclude: [/node_modules/, /vendor/],
filename: '[file].map',
moduleFilenameTemplate: `webpack-tabby-${options.name}:///[resource-path]`,
}
- let SourceMapDevToolPlugin = webpack.SourceMapDevToolPlugin
+ let devtoolPlugin = wp.SourceMapDevToolPlugin
if (process.env.CI) {
sourceMapOptions.append = '\n//# sourceMappingURL=../../../app.asar.unpacked/assets/webpack/[url]'
}
if (process.platform === 'win32' && process.env.TABBY_DEV) {
- SourceMapDevToolPlugin = webpack.EvalSourceMapDevToolPlugin
+ devtoolPlugin = wp.EvalSourceMapDevToolPlugin
}
const isDev = !!process.env.TABBY_DEV
@@ -70,21 +84,42 @@ module.exports = options => {
},
},
{
- test: /\.ts$/,
- use: {
- loader: 'ts-loader',
- options: {
- configFile: path.resolve(options.dirname, 'tsconfig.json'),
- allowTsInNodeModules: true,
- },
+ test: /\.(m?)js$/,
+ loader: 'babel-loader',
+ options: {
+ plugins: [linkerPlugin],
+ compact: false,
+ cacheDirectory: true,
+ },
+ resolve: {
+ fullySpecified: false,
},
},
- { test: /\.pug$/, use: ['apply-loader', 'pug-loader'] },
+ {
+ test: /\.ts$/,
+ use: [
+ {
+ loader: '@ngtools/webpack',
+ },
+ ],
+ },
+ {
+ test: /\.pug$/,
+ use: [
+ 'apply-loader',
+ {
+ loader: 'pug-loader',
+ options: {
+ pretty: true,
+ },
+ },
+ ],
+ },
{ test: /\.scss$/, use: ['@tabby-gang/to-string-loader', 'css-loader', 'sass-loader'], include: /(theme.*|component)\.scss/ },
{ test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'], exclude: /(theme.*|component)\.scss/ },
{ test: /\.css$/, use: ['@tabby-gang/to-string-loader', 'css-loader'], include: /component\.css/ },
{ test: /\.css$/, use: ['style-loader', 'css-loader'], exclude: /component\.css/ },
- { test: /\.yaml$/, use: ['json-loader', 'yaml-loader'] },
+ { test: /\.yaml$/, use: ['yaml-loader'] },
{ test: /\.svg/, use: ['svg-inline-loader'] },
{
test: /\.(eot|otf|woff|woff2|ogg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
@@ -134,7 +169,12 @@ module.exports = options => {
...options.externals || [],
],
plugins: [
- new SourceMapDevToolPlugin(sourceMapOptions),
+ new devtoolPlugin(sourceMapOptions),
+ new AngularWebpackPlugin({
+ tsconfig: path.resolve(options.dirname, 'tsconfig.json'),
+ directTemplateLoading: false,
+ jitMode: true,
+ })
],
}
if (process.env.PLUGIN_BUNDLE_ANALYZER === options.name) {
diff --git a/yarn.lock b/yarn.lock
index 3fc2d48a..f59edca8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -15,281 +15,268 @@
"@jridgewell/gen-mapping" "^0.1.0"
"@jridgewell/trace-mapping" "^0.3.9"
-"@angular/animations@^12.0.0":
- version "12.1.1"
- resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-12.1.1.tgz#7da62f1c753e9d3e6f4ada9ef8f4dd97795265b5"
- integrity sha512-79TfDx1AAxrVNM56oY+OwRpku9eCF6w3ko2DWDeQpgCvqM6/a53B5rPhz6yuwgadIqUdQH0T4CeE/v5hXYdOMA==
+"@angular/animations@^15.1.3":
+ version "15.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-15.1.3.tgz#3b35675f7e7df2a8c8f35abf5617b8c7f533a2f0"
+ integrity sha512-qvOLYx8XWolwFWwYoPjt+jQLDFaCQEPjb26iczewiqd+xcAdYn4Tl10NCJtOsx+YfTdpWtKRzvxYr1JxnGQTdw==
dependencies:
- tslib "^2.2.0"
+ tslib "^2.3.0"
-"@angular/cdk@^12.2.9":
- version "12.2.13"
- resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-12.2.13.tgz#1fdbe814adfd6b4ff906c6d9c4c6df07b83f09d8"
- integrity sha512-zSKRhECyFqhingIeyRInIyTvYErt4gWo+x5DQr0b7YLUbU8DZSwWnG4w76Ke2s4U8T7ry1jpJBHoX/e8YBpGMg==
+"@angular/cdk@^15.1.3":
+ version "15.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-15.1.3.tgz#71b5c9e7b7ef0ba0c648278e34536e0f8d06b7b7"
+ integrity sha512-FRb1ZirybQGVlRx34vsnkIyy4WHJlrRg2mwPeJ90b0DzIWuIZIiPYxxR2bAi/Si1IjnK8YBdacd5DXPdrW1jyw==
dependencies:
- tslib "^2.2.0"
+ tslib "^2.3.0"
optionalDependencies:
- parse5 "^5.0.0"
+ parse5 "^7.1.2"
-"@angular/common@^12.0.0":
- version "12.1.1"
- resolved "https://registry.yarnpkg.com/@angular/common/-/common-12.1.1.tgz#34f63b339570699e1ba6968fd0afdee0cbd66fe3"
- integrity sha512-NnRwGMatzjthvDQ4+8tm09Ak5i27Qga8x4BdzINN1RjLmzQ0zW00Mn2AUGYEDZHt9HXVHff5stsZGqj+Ne4QJw==
+"@angular/common@^15.1.3":
+ version "15.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/common/-/common-15.1.3.tgz#5ad482ff6da4b8820607180c50f208667c3be729"
+ integrity sha512-UjC0COaOcU1g/ODBBetv/BpdaFC/Y32DvXJ9qbD7kkwLwoqCjGOLDvtP36r9zEzPmH7oNkgNGDkgR3gyb82s5A==
dependencies:
- tslib "^2.2.0"
+ tslib "^2.3.0"
-"@angular/compiler-cli@^12.0.0":
- version "12.2.16"
- resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-12.2.16.tgz#6d7f20081a5c7c7ac82ac4a65bd14cad3480bdb9"
- integrity sha512-tlalh8SJvdCWbUPRUR5GamaP+wSc/GuCsoUZpSbcczGKgSlbaEVXUYtVXm8/wuT6Slk2sSEbRs7tXGF2i7qxVw==
+"@angular/compiler-cli@^15.1.3":
+ version "15.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-15.1.3.tgz#c45dd2a50076af836b4f49de903a884048d79918"
+ integrity sha512-z5bGdQQcStXWPpb5vztqqUOET+vxw+GUFtfktYxV40kE2d1zHLZh93AGEnM1NnBaOz+9NZrX+dWoEyWmv/T2LQ==
dependencies:
- "@babel/core" "^7.8.6"
- "@babel/types" "^7.8.6"
- canonical-path "1.0.0"
+ "@babel/core" "7.19.3"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
chokidar "^3.0.0"
convert-source-map "^1.5.1"
dependency-graph "^0.11.0"
- magic-string "^0.25.0"
- minimist "^1.2.0"
+ magic-string "^0.27.0"
reflect-metadata "^0.1.2"
semver "^7.0.0"
- source-map "^0.6.1"
- sourcemap-codec "^1.4.8"
- tslib "^2.2.0"
- yargs "^17.0.0"
+ tslib "^2.3.0"
+ yargs "^17.2.1"
-"@angular/compiler@^12.0.0":
- version "12.1.1"
- resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-12.1.1.tgz#ec8ae93fa905f6f71c748ba250be8f4d58e31605"
- integrity sha512-QV56c+A18vdY8AB/SoWq0UkHhJxYDWY+VUY75RM2dxcsXoNeO5FTCjBRkA7yMiX6Q6cahH2ivC7tmqVU2mYHuA==
+"@angular/compiler@^15.1.3":
+ version "15.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-15.1.3.tgz#7972d7dec2462e3a2a9fa256902363a716ab2f8c"
+ integrity sha512-CxEpm5Z3EpjeGNoWKtcHOrf2IQTSckpAEFwsRrADP2nqcXXYp/IjIHi+PUTjLhjrOEbukH9zreHsL5BoIQhgUQ==
dependencies:
- tslib "^2.2.0"
+ tslib "^2.3.0"
-"@angular/core@^12.0.0":
- version "12.1.1"
- resolved "https://registry.yarnpkg.com/@angular/core/-/core-12.1.1.tgz#448cdc0927bae1420934f6463ac64414d00bc3b0"
- integrity sha512-7Q4na8zCXi4ITBG8kgbS+vnnVK0GDU2WXU80/il096+8YPFKfj6MyDWZH79KA3jrIg9/yhLwSQx8x8wnj8dqBA==
+"@angular/core@^15.1.3":
+ version "15.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/core/-/core-15.1.3.tgz#08a19d2427fffba8d75bb622f5db0b1406937877"
+ integrity sha512-rad9OYnaoRnXBztOBXsiD59VvOZTpsvO3sWx6KndytQFceFfkL722bF2l2LARN+R3IWDOwRap46HOtc0O0N+sw==
dependencies:
- tslib "^2.2.0"
+ tslib "^2.3.0"
-"@angular/forms@^12.0.0":
- version "12.1.1"
- resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-12.1.1.tgz#b076cc4cf9a202ab08038d0e6038c2b7f68af79e"
- integrity sha512-up5P9jdqsPjrX3YgNMSIkTCwRzVNJbAlDiKrnww7pt5RL2fZGq+x/ddvtTSjdne9oknRKitADFkjuPozPH+LOg==
+"@angular/forms@^15.1.3":
+ version "15.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-15.1.3.tgz#7dcbb2305fa5901b36dd8d3fd0ece2374bdce54d"
+ integrity sha512-vEgiZBk3rGGp4tBQHl9EaspEjYh70lkz6/zYreObTbMdCB54bkbl+jn+JbQyFj+TPfukiumtiG3/477vKzYnSg==
dependencies:
- tslib "^2.2.0"
+ tslib "^2.3.0"
-"@angular/platform-browser-dynamic@^12.0.0":
- version "12.1.1"
- resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.1.1.tgz#d86db1da71be64f75c51b076942b0f65b441a404"
- integrity sha512-x8bIQzRvrdA/LfnIp5/Fo15BqD7g5j+XQe/KyWM+jBnpKr9queet0xvSAWD+KGkdrebI1xIgNtNNTxPCxREbiQ==
+"@angular/platform-browser-dynamic@^15.1.3":
+ version "15.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-15.1.3.tgz#f1d327c38643b08ac85b15e77528b6717ab7a243"
+ integrity sha512-lUfHmO+x3goSL1KnlAbekieKpak2KVGcOcAzOVOIMFt1SyWPBHq0NyyPOH2PUAnjPRbvCLEs2casjFggk0JzsQ==
dependencies:
- tslib "^2.2.0"
+ tslib "^2.3.0"
-"@angular/platform-browser@^12.0.0":
- version "12.1.1"
- resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-12.1.1.tgz#ba6243d77dbdbfb68c3f95a8fa2fd321b812e6d1"
- integrity sha512-R78K0DYxplYUvctq/7MvoBjuMDgMNrL1h8Bov0g7lN5hQWBQwBjl//CiJgx8H7uSiba9DQ0Jwu5Xxvkzkr8ggA==
+"@angular/platform-browser@^15.1.3":
+ version "15.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-15.1.3.tgz#c35912e419baf74e73f90f8cf80fbe4af63f1deb"
+ integrity sha512-WJBN3klssfcRGKY2L2DIpNGbaMQfi2X1le1ZXQAnsfECQ/pua+lFstJUT+RP+Bx4X8icuDggKkS/JPOiBhxARw==
dependencies:
- tslib "^2.2.0"
+ tslib "^2.3.0"
-"@babel/code-frame@^7.0.0":
- version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb"
- integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==
+"@babel/code-frame@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
+ integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==
dependencies:
- "@babel/highlight" "^7.14.5"
+ "@babel/highlight" "^7.18.6"
-"@babel/code-frame@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
- integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
- dependencies:
- "@babel/highlight" "^7.16.7"
+"@babel/compat-data@^7.20.5":
+ version "7.20.14"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.14.tgz#4106fc8b755f3e3ee0a0a7c27dde5de1d2b2baf8"
+ integrity sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==
-"@babel/compat-data@^7.17.10":
- version "7.18.5"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471"
- integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==
-
-"@babel/core@^7.8.6":
- version "7.18.5"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000"
- integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==
+"@babel/core@7.19.3":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c"
+ integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==
dependencies:
"@ampproject/remapping" "^2.1.0"
- "@babel/code-frame" "^7.16.7"
- "@babel/generator" "^7.18.2"
- "@babel/helper-compilation-targets" "^7.18.2"
- "@babel/helper-module-transforms" "^7.18.0"
- "@babel/helpers" "^7.18.2"
- "@babel/parser" "^7.18.5"
- "@babel/template" "^7.16.7"
- "@babel/traverse" "^7.18.5"
- "@babel/types" "^7.18.4"
+ "@babel/code-frame" "^7.18.6"
+ "@babel/generator" "^7.19.3"
+ "@babel/helper-compilation-targets" "^7.19.3"
+ "@babel/helper-module-transforms" "^7.19.0"
+ "@babel/helpers" "^7.19.0"
+ "@babel/parser" "^7.19.3"
+ "@babel/template" "^7.18.10"
+ "@babel/traverse" "^7.19.3"
+ "@babel/types" "^7.19.3"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
json5 "^2.2.1"
semver "^6.3.0"
-"@babel/generator@^7.18.2":
- version "7.18.2"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d"
- integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==
+"@babel/generator@^7.19.3", "@babel/generator@^7.20.7":
+ version "7.20.14"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.14.tgz#9fa772c9f86a46c6ac9b321039400712b96f64ce"
+ integrity sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==
dependencies:
- "@babel/types" "^7.18.2"
- "@jridgewell/gen-mapping" "^0.3.0"
+ "@babel/types" "^7.20.7"
+ "@jridgewell/gen-mapping" "^0.3.2"
jsesc "^2.5.1"
-"@babel/helper-compilation-targets@^7.18.2":
- version "7.18.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b"
- integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==
+"@babel/helper-compilation-targets@^7.19.3":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb"
+ integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==
dependencies:
- "@babel/compat-data" "^7.17.10"
- "@babel/helper-validator-option" "^7.16.7"
- browserslist "^4.20.2"
+ "@babel/compat-data" "^7.20.5"
+ "@babel/helper-validator-option" "^7.18.6"
+ browserslist "^4.21.3"
+ lru-cache "^5.1.1"
semver "^6.3.0"
-"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2":
- version "7.18.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd"
- integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==
+"@babel/helper-environment-visitor@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
+ integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
-"@babel/helper-function-name@^7.17.9":
- version "7.17.9"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12"
- integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==
+"@babel/helper-function-name@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c"
+ integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==
dependencies:
- "@babel/template" "^7.16.7"
- "@babel/types" "^7.17.0"
+ "@babel/template" "^7.18.10"
+ "@babel/types" "^7.19.0"
-"@babel/helper-hoist-variables@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246"
- integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==
+"@babel/helper-hoist-variables@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678"
+ integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==
dependencies:
- "@babel/types" "^7.16.7"
+ "@babel/types" "^7.18.6"
-"@babel/helper-module-imports@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437"
- integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==
+"@babel/helper-module-imports@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e"
+ integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==
dependencies:
- "@babel/types" "^7.16.7"
+ "@babel/types" "^7.18.6"
-"@babel/helper-module-transforms@^7.18.0":
- version "7.18.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd"
- integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==
+"@babel/helper-module-transforms@^7.19.0":
+ version "7.20.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0"
+ integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==
dependencies:
- "@babel/helper-environment-visitor" "^7.16.7"
- "@babel/helper-module-imports" "^7.16.7"
- "@babel/helper-simple-access" "^7.17.7"
- "@babel/helper-split-export-declaration" "^7.16.7"
- "@babel/helper-validator-identifier" "^7.16.7"
- "@babel/template" "^7.16.7"
- "@babel/traverse" "^7.18.0"
- "@babel/types" "^7.18.0"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-module-imports" "^7.18.6"
+ "@babel/helper-simple-access" "^7.20.2"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ "@babel/helper-validator-identifier" "^7.19.1"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.20.10"
+ "@babel/types" "^7.20.7"
-"@babel/helper-simple-access@^7.17.7":
- version "7.18.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9"
- integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==
+"@babel/helper-simple-access@^7.20.2":
+ version "7.20.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9"
+ integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==
dependencies:
- "@babel/types" "^7.18.2"
+ "@babel/types" "^7.20.2"
-"@babel/helper-split-export-declaration@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b"
- integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==
+"@babel/helper-split-export-declaration@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075"
+ integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==
dependencies:
- "@babel/types" "^7.16.7"
+ "@babel/types" "^7.18.6"
-"@babel/helper-validator-identifier@^7.14.5":
- version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8"
- integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==
+"@babel/helper-string-parser@^7.19.4":
+ version "7.19.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
+ integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
"@babel/helper-validator-identifier@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
-"@babel/helper-validator-option@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23"
- integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==
+"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
+ integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
-"@babel/helpers@^7.18.2":
- version "7.18.2"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384"
- integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==
- dependencies:
- "@babel/template" "^7.16.7"
- "@babel/traverse" "^7.18.2"
- "@babel/types" "^7.18.2"
+"@babel/helper-validator-option@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8"
+ integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==
-"@babel/highlight@^7.14.5":
- version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9"
- integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==
+"@babel/helpers@^7.19.0":
+ version "7.20.13"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.13.tgz#e3cb731fb70dc5337134cadc24cbbad31cc87ad2"
+ integrity sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==
dependencies:
- "@babel/helper-validator-identifier" "^7.14.5"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.20.13"
+ "@babel/types" "^7.20.7"
+
+"@babel/highlight@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
+ integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.18.6"
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/highlight@^7.16.7":
- version "7.17.12"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351"
- integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==
- dependencies:
- "@babel/helper-validator-identifier" "^7.16.7"
- chalk "^2.0.0"
- js-tokens "^4.0.0"
-
-"@babel/parser@^7.16.7", "@babel/parser@^7.18.5":
- version "7.18.5"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c"
- integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==
+"@babel/parser@^7.19.3", "@babel/parser@^7.20.13", "@babel/parser@^7.20.7":
+ version "7.20.15"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.15.tgz#eec9f36d8eaf0948bb88c87a46784b5ee9fd0c89"
+ integrity sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==
"@babel/parser@^7.6.0", "@babel/parser@^7.9.6":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.7.tgz#d372dda9c89fcec340a82630a9f533f2fe15877e"
integrity sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA==
-"@babel/template@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
- integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==
+"@babel/template@^7.18.10", "@babel/template@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8"
+ integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==
dependencies:
- "@babel/code-frame" "^7.16.7"
- "@babel/parser" "^7.16.7"
- "@babel/types" "^7.16.7"
+ "@babel/code-frame" "^7.18.6"
+ "@babel/parser" "^7.20.7"
+ "@babel/types" "^7.20.7"
-"@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5":
- version "7.18.5"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd"
- integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==
+"@babel/traverse@^7.19.3", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.13":
+ version "7.20.13"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473"
+ integrity sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==
dependencies:
- "@babel/code-frame" "^7.16.7"
- "@babel/generator" "^7.18.2"
- "@babel/helper-environment-visitor" "^7.18.2"
- "@babel/helper-function-name" "^7.17.9"
- "@babel/helper-hoist-variables" "^7.16.7"
- "@babel/helper-split-export-declaration" "^7.16.7"
- "@babel/parser" "^7.18.5"
- "@babel/types" "^7.18.4"
+ "@babel/code-frame" "^7.18.6"
+ "@babel/generator" "^7.20.7"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-function-name" "^7.19.0"
+ "@babel/helper-hoist-variables" "^7.18.6"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ "@babel/parser" "^7.20.13"
+ "@babel/types" "^7.20.7"
debug "^4.1.0"
globals "^11.1.0"
-"@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.8.6":
- version "7.18.4"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354"
- integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==
+"@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.20.2", "@babel/types@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f"
+ integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==
dependencies:
- "@babel/helper-validator-identifier" "^7.16.7"
+ "@babel/helper-string-parser" "^7.19.4"
+ "@babel/helper-validator-identifier" "^7.19.1"
to-fast-properties "^2.0.0"
"@babel/types@^7.6.1", "@babel/types@^7.9.6":
@@ -320,21 +307,20 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
-"@electron/get@^1.14.1":
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40"
- integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==
+"@electron/get@^2.0.0":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.2.tgz#ae2a967b22075e9c25aaf00d5941cd79c21efd7e"
+ integrity sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==
dependencies:
debug "^4.1.1"
env-paths "^2.2.0"
fs-extra "^8.1.0"
- got "^9.6.0"
+ got "^11.8.5"
progress "^2.0.3"
semver "^6.2.0"
sumchecker "^3.0.1"
optionalDependencies:
global-agent "^3.0.0"
- global-tunnel-ng "^2.7.1"
"@electron/universal@1.2.1":
version "1.2.1"
@@ -369,11 +355,6 @@
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.2.0.tgz#ba3510825b332816fe7190f28827f8cb33a298b5"
integrity sha512-CNR7qRIfCwWHNN7FnKUniva94edPdyQzil/zCwk3v6k4R6rR2Fr8i4s3PM7n/lyfPA6Zfko9z5WDzFxG9SW1uQ==
-"@gar/promisify@^1.0.1":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210"
- integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==
-
"@gar/promisify@^1.1.3":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
@@ -406,7 +387,7 @@
"@jridgewell/set-array" "^1.0.0"
"@jridgewell/sourcemap-codec" "^1.4.10"
-"@jridgewell/gen-mapping@^0.3.0":
+"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
version "0.3.2"
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
@@ -438,7 +419,7 @@
"@jridgewell/gen-mapping" "^0.3.0"
"@jridgewell/trace-mapping" "^0.3.9"
-"@jridgewell/sourcemap-codec@^1.4.10":
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14":
version "1.4.14"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
@@ -475,12 +456,17 @@
lodash "^4.17.15"
tmp-promise "^3.0.2"
-"@ng-bootstrap/ng-bootstrap@^10.0.0":
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-10.0.0.tgz#6022927bac7029bdd12d7f1e10b5b20074db06dc"
- integrity sha512-Sz+QaxjuyJYJ+zyUbf0TevgcgVesCPQiiFiggEzxKjzY5R+Hvq3YgryLdXf2r/ryePL+C3FXCcmmKpTM5bfczQ==
+"@ng-bootstrap/ng-bootstrap@^14.0.1":
+ version "14.0.1"
+ resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-14.0.1.tgz#09f93058d3c4a2f4e751c8b546e01f6d2524bd05"
+ integrity sha512-JF4U4IIix+g6VBFfG8stf0Un5K//ypoN+pTuRs6kjUhsHBsa2m7yKE6bCe3fMhatFZFr2fcSswDzRUnAUiHhWg==
dependencies:
- tslib "^2.1.0"
+ tslib "^2.3.0"
+
+"@ngtools/webpack@^15.1.4":
+ version "15.1.4"
+ resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-15.1.4.tgz#8535324ef9fdffdee606513b7244b859b6e549c5"
+ integrity sha512-IvKXK8AvPlLkP99Uf0RL1EHlcsXNQd86II9HsLjupUtmFC/pPuDWrRFMP9bjWUMh2ZeYpgUeEAbcCH3doSrdIA==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
@@ -503,14 +489,6 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@npmcli/fs@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.0.0.tgz#589612cfad3a6ea0feafcb901d29c63fd52db09f"
- integrity sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ==
- dependencies:
- "@gar/promisify" "^1.0.1"
- semver "^7.3.5"
-
"@npmcli/fs@^2.1.0":
version "2.1.2"
resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865"
@@ -519,14 +497,6 @@
"@gar/promisify" "^1.1.3"
semver "^7.3.5"
-"@npmcli/move-file@^1.0.1":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674"
- integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==
- dependencies:
- mkdirp "^1.0.4"
- rimraf "^3.0.2"
-
"@npmcli/move-file@^2.0.0":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4"
@@ -552,6 +522,11 @@
resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1"
integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==
+"@popperjs/core@^2.11.6":
+ version "2.11.6"
+ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45"
+ integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==
+
"@sentry/browser@6.7.1":
version "6.7.1"
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.7.1.tgz#e01144a08984a486ecc91d7922cc457e9c9bd6b7"
@@ -656,23 +631,11 @@
"@sentry/types" "6.7.1"
tslib "^1.9.3"
-"@sindresorhus/is@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
- integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
-
"@sindresorhus/is@^4.0.0":
version "4.0.0"
resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz"
integrity sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==
-"@szmarczak/http-timer@^1.1.2":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
- integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
- dependencies:
- defer-to-connect "^1.0.1"
-
"@szmarczak/http-timer@^4.0.5":
version "4.0.5"
resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz"
@@ -687,11 +650,6 @@
dependencies:
loader-utils "^1.0.0"
-"@tootallnate/once@1":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
- integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
-
"@tootallnate/once@2":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
@@ -818,11 +776,6 @@
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca"
integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
-"@types/minimist@^1.2.0":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256"
- integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==
-
"@types/ms@*":
version "0.7.31"
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
@@ -843,11 +796,6 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.26.tgz#63d204d136c9916fb4dcd1b50f9740fe86884e47"
integrity sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ==
-"@types/normalize-package-data@^2.4.0":
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
- integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
-
"@types/parse5@^5":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109"
@@ -873,11 +821,6 @@
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91"
integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
-"@types/sortablejs@^1.15.0":
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/@types/sortablejs/-/sortablejs-1.15.0.tgz#695e481752e2a0a311c5e73b51d5f666fc202f93"
- integrity sha512-qrhtM7M41EhH4tZQTNw2/RJkxllBx3reiJpTbgWCM2Dx0U1sZ6LwKp9lfNln9uqE26ZMKUaPEYaD4rzvOWYtZw==
-
"@types/verror@^1.10.3":
version "1.10.6"
resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.6.tgz#3e600c62d210c5826460858f84bcbb65805460bb"
@@ -1111,20 +1054,20 @@
"@webassemblyjs/ast" "1.11.1"
"@xtuc/long" "4.2.2"
-"@webpack-cli/configtest@^2.0.0":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.0.0.tgz#5e1bc37064c7d00e1330641fa523f8ff85a39513"
- integrity sha512-war4OU8NGjBqU3DP3bx6ciODXIh7dSXcpQq+P4K2Tqyd8L5OjZ7COx9QXx/QdCIwL2qoX09Wr4Cwf7uS4qdEng==
+"@webpack-cli/configtest@^2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.0.1.tgz#a69720f6c9bad6aef54a8fa6ba9c3533e7ef4c7f"
+ integrity sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==
-"@webpack-cli/info@^2.0.0":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.0.tgz#5a58476b129ee9b462117b23393596e726bf3b80"
- integrity sha512-NNxDgbo4VOkNhOlTgY0Elhz3vKpOJq4/PKeKg7r8cmYM+GQA9vDofLYyup8jS6EpUvhNmR30cHTCEIyvXpskwA==
+"@webpack-cli/info@^2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.1.tgz#eed745799c910d20081e06e5177c2b2569f166c0"
+ integrity sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==
-"@webpack-cli/serve@^2.0.0":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.0.tgz#f08ea194e01ed45379383a8886e8c85a65a5f26a"
- integrity sha512-Rumq5mHvGXamnOh3O8yLk1sjx8dB30qF1OeR6VC00DIR6SLJ4bwwUGKC4pE7qBFoQyyh0H9sAg3fikYgAqVR0w==
+"@webpack-cli/serve@^2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.1.tgz#34bdc31727a1889198855913db2f270ace6d7bf8"
+ integrity sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
@@ -1149,10 +1092,10 @@ JSONStream@~1.3.1:
jsonparse "^1.2.0"
through ">=2.2.7 <3"
-abab@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
- integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==
+abab@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
+ integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
abbrev@1:
version "1.1.1"
@@ -1220,15 +1163,6 @@ agentkeepalive@^3.3.0:
dependencies:
humanize-ms "^1.2.1"
-agentkeepalive@^4.1.3:
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.4.tgz#d928028a4862cb11718e55227872e842a44c945b"
- integrity sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==
- dependencies:
- debug "^4.1.0"
- depd "^1.1.2"
- humanize-ms "^1.2.1"
-
agentkeepalive@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717"
@@ -1246,11 +1180,25 @@ aggregate-error@^3.0.0:
clean-stack "^2.0.0"
indent-string "^4.0.0"
+ajv-formats@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
+ integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==
+ dependencies:
+ ajv "^8.0.0"
+
ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
version "3.5.2"
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
+ajv-keywords@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16"
+ integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==
+ dependencies:
+ fast-deep-equal "^3.1.3"
+
ajv@^4.9.1:
version "4.11.8"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
@@ -1269,6 +1217,16 @@ ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
+ajv@^8.0.0, ajv@^8.8.0:
+ version "8.12.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
+ integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
+
ansi-align@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz"
@@ -1393,14 +1351,6 @@ archy@~1.0.0:
resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz"
integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=
-are-we-there-yet@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c"
- integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==
- dependencies:
- delegates "^1.0.0"
- readable-stream "^3.6.0"
-
are-we-there-yet@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d"
@@ -1460,11 +1410,6 @@ array.prototype.flat@^1.2.5:
es-abstract "^1.20.4"
es-shim-unscopables "^1.0.0"
-arrify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
- integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
-
asap@^2.0.0:
version "2.0.5"
resolved "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz"
@@ -1541,11 +1486,6 @@ async-exit-hook@^2.0.1:
resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3"
integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==
-async-foreach@^0.1.3:
- version "0.1.3"
- resolved "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz"
- integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=
-
async@^3.2.3:
version "3.2.4"
resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
@@ -1594,6 +1534,14 @@ axios@^0.27.2:
follow-redirects "^1.14.9"
form-data "^4.0.0"
+babel-loader@^9.1.2:
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.2.tgz#a16a080de52d08854ee14570469905a5fc00d39c"
+ integrity sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==
+ dependencies:
+ find-cache-dir "^3.3.2"
+ schema-utils "^4.0.0"
+
babel-runtime@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
@@ -1808,15 +1756,15 @@ browserslist@^4.14.5:
node-releases "^2.0.6"
update-browserslist-db "^1.0.9"
-browserslist@^4.20.2:
- version "4.21.0"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe"
- integrity sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==
+browserslist@^4.21.3:
+ version "4.21.5"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7"
+ integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==
dependencies:
- caniuse-lite "^1.0.30001358"
- electron-to-chromium "^1.4.164"
- node-releases "^2.0.5"
- update-browserslist-db "^1.0.0"
+ caniuse-lite "^1.0.30001449"
+ electron-to-chromium "^1.4.284"
+ node-releases "^2.0.8"
+ update-browserslist-db "^1.0.10"
buffer-alloc-unsafe@^1.1.0:
version "1.1.0"
@@ -1910,30 +1858,6 @@ builtins@^1.0.3:
resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz"
integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og=
-cacache@^15.2.0:
- version "15.3.0"
- resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb"
- integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==
- dependencies:
- "@npmcli/fs" "^1.0.0"
- "@npmcli/move-file" "^1.0.1"
- chownr "^2.0.0"
- fs-minipass "^2.0.0"
- glob "^7.1.4"
- infer-owner "^1.0.4"
- lru-cache "^6.0.0"
- minipass "^3.1.1"
- minipass-collect "^1.0.2"
- minipass-flush "^1.0.5"
- minipass-pipeline "^1.2.2"
- mkdirp "^1.0.3"
- p-map "^4.0.0"
- promise-inflight "^1.0.1"
- rimraf "^3.0.2"
- ssri "^8.0.1"
- tar "^6.0.2"
- unique-filename "^1.1.1"
-
cacache@^16.1.0:
version "16.1.3"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e"
@@ -1982,19 +1906,6 @@ cacheable-lookup@^5.0.3:
resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz"
integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==
-cacheable-request@^6.0.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
- integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
- dependencies:
- clone-response "^1.0.2"
- get-stream "^5.1.0"
- http-cache-semantics "^4.0.0"
- keyv "^3.0.0"
- lowercase-keys "^2.0.0"
- normalize-url "^4.1.0"
- responselike "^1.0.2"
-
cacheable-request@^7.0.1:
version "7.0.1"
resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz"
@@ -2008,6 +1919,19 @@ cacheable-request@^7.0.1:
normalize-url "^4.1.0"
responselike "^2.0.0"
+cacheable-request@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27"
+ integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==
+ dependencies:
+ clone-response "^1.0.2"
+ get-stream "^5.1.0"
+ http-cache-semantics "^4.0.0"
+ keyv "^4.0.0"
+ lowercase-keys "^2.0.0"
+ normalize-url "^6.0.1"
+ responselike "^2.0.0"
+
call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
@@ -2042,15 +1966,6 @@ camelcase-keys@^2.0.0:
camelcase "^2.0.0"
map-obj "^1.0.0"
-camelcase-keys@^6.2.2:
- version "6.2.2"
- resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0"
- integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==
- dependencies:
- camelcase "^5.3.1"
- map-obj "^4.0.0"
- quick-lru "^4.0.1"
-
camelcase@^2.0.0:
version "2.1.1"
resolved "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz"
@@ -2061,25 +1976,20 @@ camelcase@^4.0.0, camelcase@^4.1.0:
resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz"
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
-camelcase@^5.0.0, camelcase@^5.3.1:
+camelcase@^5.0.0:
version "5.3.1"
resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-caniuse-lite@^1.0.30001358:
- version "1.0.30001359"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz#a1c1cbe1c2da9e689638813618b4219acbd4925e"
- integrity sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw==
-
caniuse-lite@^1.0.30001400:
version "1.0.30001414"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001414.tgz#5f1715e506e71860b4b07c50060ea6462217611e"
integrity sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg==
-canonical-path@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d"
- integrity sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==
+caniuse-lite@^1.0.30001449:
+ version "1.0.30001450"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001450.tgz#022225b91200589196b814b51b1bbe45144cf74f"
+ integrity sha512-qMBmvmQmFXaSxexkjjfMvD5rnDL0+m+dUMZKoDYsGG8iZN29RuYh9eRoMvKsT6uMAWlyUUGDEQGJJYjzCIO9ew==
capture-stack-trace@^1.0.0:
version "1.0.1"
@@ -2111,7 +2021,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.2:
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
-chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
+chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -2126,7 +2036,7 @@ character-parser@^2.1.1, character-parser@^2.2.0:
dependencies:
is-regex "^1.0.3"
-chokidar@^3.0.0:
+"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0:
version "3.5.3"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
@@ -2316,7 +2226,7 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-color-support@^1.1.2, color-support@^1.1.3:
+color-support@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
@@ -2373,6 +2283,11 @@ commander@^9.4.0, commander@^9.4.1:
resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd"
integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
+
compare-version@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080"
@@ -2408,14 +2323,6 @@ conf@^1.0.0:
pkg-up "^2.0.0"
write-file-atomic "^2.3.0"
-config-chain@^1.1.11:
- version "1.1.12"
- resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz"
- integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==
- dependencies:
- ini "^1.3.4"
- proto-list "~1.2.1"
-
config-chain@~1.1.11:
version "1.1.11"
resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz"
@@ -2617,19 +2524,19 @@ crypto-random-string@^1.0.0:
resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz"
integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=
-css-loader@^6.7.1:
- version "6.7.1"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e"
- integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==
+css-loader@^6.7.3:
+ version "6.7.3"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.3.tgz#1e8799f3ccc5874fdd55461af51137fcc5befbcd"
+ integrity sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==
dependencies:
icss-utils "^5.1.0"
- postcss "^8.4.7"
+ postcss "^8.4.19"
postcss-modules-extract-imports "^3.0.0"
postcss-modules-local-by-default "^4.0.0"
postcss-modules-scope "^3.0.0"
postcss-modules-values "^4.0.0"
postcss-value-parser "^4.2.0"
- semver "^7.3.5"
+ semver "^7.3.8"
css-selector-parser@^1.1.0, css-selector-parser@^1.3:
version "1.4.1"
@@ -2693,26 +2600,11 @@ debuglog@^1.0.1:
resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz"
integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
-decamelize-keys@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
- integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=
- dependencies:
- decamelize "^1.1.0"
- map-obj "^1.0.0"
-
-decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0:
+decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
-decompress-response@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
- integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==
- dependencies:
- mimic-response "^1.0.0"
-
decompress-response@^6.0.0:
version "6.0.0"
resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz"
@@ -2758,11 +2650,6 @@ defaults@^1.0.3:
dependencies:
clone "^1.0.2"
-defer-to-connect@^1.0.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
- integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
-
defer-to-connect@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz"
@@ -3119,22 +3006,22 @@ electron-rebuild@^3.2.9:
tar "^6.0.5"
yargs "^17.0.1"
-electron-to-chromium@^1.4.164:
- version "1.4.170"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz#0415fc489402e09bfbe1f0c99bbf4d73f31d48d4"
- integrity sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw==
-
electron-to-chromium@^1.4.251:
version "1.4.270"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.270.tgz#2c6ea409b45cdb5c3e0cb2c08cf6c0ba7e0f2c26"
integrity sha512-KNhIzgLiJmDDC444dj9vEOpZEgsV96ult9Iff98Vanumn+ShJHd5se8aX6KeVxdc0YQeqdrezBZv89rleDbvSg==
-electron@21.3.1:
- version "21.3.1"
- resolved "https://registry.yarnpkg.com/electron/-/electron-21.3.1.tgz#02a61053ace79ecdc592afc641ff663dec805b42"
- integrity sha512-Ik/I9oFHA1h32JRtRm6GMgYdUctFpF/tPnHyATg4r3LXBTUT6habGh3GxSdmmTa5JgtA7uJUEm8EjjZItk7T3g==
+electron-to-chromium@^1.4.284:
+ version "1.4.286"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.286.tgz#0e039de59135f44ab9a8ec9025e53a9135eba11f"
+ integrity sha512-Vp3CVhmYpgf4iXNKAucoQUDcCrBQX3XLBtwgFqP9BUXuucgvAV9zWp1kYU7LL9j4++s9O+12cb3wMtN4SJy6UQ==
+
+electron@22.3.1:
+ version "22.3.1"
+ resolved "https://registry.yarnpkg.com/electron/-/electron-22.3.1.tgz#a09769e6592cadbf45d7629c9143ffa2ef8a3842"
+ integrity sha512-iDltL9j12bINK3aOp8ZoGq4NFBFjJhw1AYHelbWj93XUCAIT4fdA+PRsq0aaTHg3bthLLlLRvIZVgNsZPqWcqg==
dependencies:
- "@electron/get" "^1.14.1"
+ "@electron/get" "^2.0.0"
"@types/node" "^16.11.26"
extract-zip "^2.0.1"
@@ -3166,11 +3053,6 @@ emojis-list@^3.0.0:
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
-encodeurl@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz"
- integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-
encoding@^0.1.11:
version "0.1.12"
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
@@ -3178,7 +3060,7 @@ encoding@^0.1.11:
dependencies:
iconv-lite "~0.4.13"
-encoding@^0.1.12, encoding@^0.1.13:
+encoding@^0.1.13:
version "0.1.13"
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
@@ -3252,7 +3134,7 @@ err-code@^2.0.2:
dependencies:
prr "~0.0.0"
-error-ex@^1.2.0, error-ex@^1.3.1:
+error-ex@^1.2.0:
version "1.3.2"
resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
@@ -3703,6 +3585,15 @@ fill-range@^7.0.1:
dependencies:
to-regex-range "^5.0.1"
+find-cache-dir@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b"
+ integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^3.0.2"
+ pkg-dir "^4.1.0"
+
find-line-column@^0.5.2:
version "0.5.2"
resolved "https://registry.npmjs.org/find-line-column/-/find-line-column-0.5.2.tgz"
@@ -3959,20 +3850,6 @@ functions-have-names@^1.2.2:
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
-gauge@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.0.tgz#2313d52e067a797356c8214907828ff1a097cde4"
- integrity sha512-VSxauaaCsLOTerAyzunAYGgK3iaWZvOL1BCvBvf/IhDWrczPAf1tUqn05DOCJOOe4k3vOdX6fHhJIvF2UtCMhw==
- dependencies:
- aproba "^1.0.3 || ^2.0.0"
- color-support "^1.1.2"
- console-control-strings "^1.0.0"
- has-unicode "^2.0.1"
- signal-exit "^3.0.0"
- string-width "^1.0.1 || ^2.0.0"
- strip-ansi "^3.0.1 || ^4.0.0"
- wide-align "^1.1.2"
-
gauge@^4.0.3:
version "4.0.4"
resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce"
@@ -4001,13 +3878,6 @@ gauge@~2.7.3:
strip-ansi "^3.0.1"
wide-align "^1.1.0"
-gaze@^1.0.0:
- version "1.1.3"
- resolved "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz"
- integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==
- dependencies:
- globule "^1.0.0"
-
genfun@^4.0.1:
version "4.0.1"
resolved "https://registry.npmjs.org/genfun/-/genfun-4.0.1.tgz"
@@ -4056,7 +3926,7 @@ get-stream@^3.0.0:
resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz"
integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
-get-stream@^4.0.0, get-stream@^4.1.0:
+get-stream@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
@@ -4155,7 +4025,7 @@ glob@^8.0.1, glob@^8.0.3:
minimatch "^5.0.1"
once "^1.3.0"
-glob@~7.1.1, glob@~7.1.2:
+glob@~7.1.2:
version "7.1.7"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
@@ -4186,16 +4056,6 @@ global-dirs@^0.1.0:
dependencies:
ini "^1.3.4"
-global-tunnel-ng@^2.7.1:
- version "2.7.1"
- resolved "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz"
- integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==
- dependencies:
- encodeurl "^1.0.2"
- lodash "^4.17.10"
- npm-conf "^1.1.3"
- tunnel "^0.0.6"
-
globals@^11.1.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
@@ -4248,15 +4108,6 @@ globrex@^0.1.2:
resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098"
integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==
-globule@^1.0.0:
- version "1.3.2"
- resolved "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz"
- integrity sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==
- dependencies:
- glob "~7.1.1"
- lodash "~4.17.10"
- minimatch "~3.0.2"
-
got@^11.7.0:
version "11.8.1"
resolved "https://registry.npmjs.org/got/-/got-11.8.1.tgz"
@@ -4274,6 +4125,23 @@ got@^11.7.0:
p-cancelable "^2.0.0"
responselike "^2.0.0"
+got@^11.8.5:
+ version "11.8.6"
+ resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a"
+ integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==
+ dependencies:
+ "@sindresorhus/is" "^4.0.0"
+ "@szmarczak/http-timer" "^4.0.5"
+ "@types/cacheable-request" "^6.0.1"
+ "@types/responselike" "^1.0.0"
+ cacheable-lookup "^5.0.3"
+ cacheable-request "^7.0.2"
+ decompress-response "^6.0.0"
+ http2-wrapper "^1.0.0-beta.5.2"
+ lowercase-keys "^2.0.0"
+ p-cancelable "^2.0.0"
+ responselike "^2.0.0"
+
got@^6.7.1:
version "6.7.1"
resolved "https://registry.npmjs.org/got/-/got-6.7.1.tgz"
@@ -4291,23 +4159,6 @@ got@^6.7.1:
unzip-response "^2.0.1"
url-parse-lax "^1.0.0"
-got@^9.6.0:
- version "9.6.0"
- resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
- integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
- dependencies:
- "@sindresorhus/is" "^0.14.0"
- "@szmarczak/http-timer" "^1.1.2"
- cacheable-request "^6.0.0"
- decompress-response "^3.3.0"
- duplexer3 "^0.1.4"
- get-stream "^4.1.0"
- lowercase-keys "^1.0.1"
- mimic-response "^1.0.1"
- p-cancelable "^1.0.0"
- to-readable-stream "^1.0.0"
- url-parse-lax "^3.0.0"
-
graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9, graceful-fs@~4.1.11:
version "4.2.10"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
@@ -4356,11 +4207,6 @@ har-validator@~5.1.3:
ajv "^6.12.3"
har-schema "^2.0.0"
-hard-rejection@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883"
- integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==
-
has-ansi@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"
@@ -4490,13 +4336,6 @@ hosted-git-info@^2.7.1:
resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz"
integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==
-hosted-git-info@^3.0.6:
- version "3.0.7"
- resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz"
- integrity sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==
- dependencies:
- lru-cache "^6.0.0"
-
hosted-git-info@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224"
@@ -4543,15 +4382,6 @@ http-proxy-agent@^2.0.0:
agent-base "4"
debug "3.1.0"
-http-proxy-agent@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
- integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
- dependencies:
- "@tootallnate/once" "1"
- agent-base "6"
- debug "4"
-
http-proxy-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
@@ -4650,6 +4480,11 @@ ignore@^5.2.0:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c"
integrity sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==
+immutable@^4.0.0:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.3.tgz#a203cdda37a5a30bc351b982a1794c1930198815"
+ integrity sha512-IHpmvaOIX4VLJwPOuQr1NpeBr2ZG6vpIj3blsLVxXRWJscLioaJRStqC+NcBsLeCDsnGlPpXd5/WZmnE7MbsKA==
+
import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@@ -4749,7 +4584,7 @@ invert-kv@^2.0.0:
resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz"
integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
-ip@^1.1.4, ip@^1.1.5:
+ip@^1.1.4:
version "1.1.5"
resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz"
integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
@@ -4989,11 +4824,6 @@ is-path-inside@^3.0.3:
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
-is-plain-obj@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
- integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
-
is-plain-object@^2.0.4:
version "2.0.4"
resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz"
@@ -5169,6 +4999,11 @@ jake@^10.8.5:
filelist "^1.0.1"
minimatch "^3.0.4"
+javascript-stringify@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79"
+ integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==
+
jest-worker@^27.4.5:
version "27.5.1"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0"
@@ -5193,11 +5028,6 @@ joi@^10.6.0:
items "2.x.x"
topo "2.x.x"
-js-base64@^2.4.9:
- version "2.6.4"
- resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4"
- integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
-
js-sdsl@^4.1.4:
version "4.2.0"
resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0"
@@ -5238,11 +5068,6 @@ jsesc@^2.5.1:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
-json-buffer@3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
- integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==
-
json-buffer@3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz"
@@ -5253,7 +5078,7 @@ json-loader@^0.5.7:
resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==
-json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1:
+json-parse-even-better-errors@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
@@ -5270,6 +5095,11 @@ json-schema-traverse@^0.4.1:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+json-schema-traverse@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+
json-schema@0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
@@ -5311,11 +5141,16 @@ json5@^2.1.2:
dependencies:
minimist "^1.2.5"
-json5@^2.2.0, json5@^2.2.1:
+json5@^2.2.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
+json5@^2.2.1:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
jsonc-parser@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22"
@@ -5375,13 +5210,6 @@ keyboardevents-areequal@^0.2.1:
resolved "https://registry.npmjs.org/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz"
integrity sha512-Nv+Kr33T0mEjxR500q+I6IWisOQ0lK1GGOncV0kWE6n4KFmpcu7RUX5/2B0EUtX51Cb0HjZ9VJsSY3u4cBa0kw==
-keyv@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
- integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
- dependencies:
- json-buffer "3.0.0"
-
keyv@^4.0.0:
version "4.0.3"
resolved "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz"
@@ -5389,7 +5217,7 @@ keyv@^4.0.0:
dependencies:
json-buffer "3.0.1"
-kind-of@^6.0.2, kind-of@^6.0.3:
+kind-of@^6.0.2:
version "6.0.3"
resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
@@ -5452,11 +5280,6 @@ libnpx@10.2.2:
y18n "^4.0.0"
yargs "^11.0.0"
-lines-and-columns@^1.1.6:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
- integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
-
load-json-file@^1.0.0:
version "1.1.0"
resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz"
@@ -5483,7 +5306,7 @@ loader-utils@^0.2.17:
json5 "^0.5.0"
object-assign "^4.0.1"
-loader-utils@^1.0.0, loader-utils@^1.1.0, loader-utils@^1.4.0:
+loader-utils@^1.0.0, loader-utils@^1.1.0:
version "1.4.0"
resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz"
integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
@@ -5571,7 +5394,7 @@ lodash.without@~4.4.0:
resolved "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz"
integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=
-lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.4, lodash@~4.17.10:
+lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.4:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -5598,7 +5421,7 @@ lower-case@^2.0.2:
dependencies:
tslib "^2.0.3"
-lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
+lowercase-keys@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
@@ -5624,6 +5447,13 @@ lru-cache@^4.0.1:
pseudomap "^1.0.2"
yallist "^2.1.2"
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
lru-cache@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
@@ -5660,12 +5490,12 @@ macos-release@^3.1.0:
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-3.1.0.tgz#6165bb0736ae567ed6649e36ce6a24d87cbb7aca"
integrity sha512-/M/R0gCDgM+Cv1IuBG1XGdfTFnMEG6PZeT+KGWHO/OG+imqmaD9CH5vHBTycEM3+Kc4uG2Il+tFAuUWLqQOeUA==
-magic-string@^0.25.0:
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
- integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
+magic-string@^0.27.0:
+ version "0.27.0"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3"
+ integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==
dependencies:
- sourcemap-codec "^1.4.8"
+ "@jridgewell/sourcemap-codec" "^1.4.13"
make-dir@^1.0.0:
version "1.3.0"
@@ -5674,6 +5504,13 @@ make-dir@^1.0.0:
dependencies:
pify "^3.0.0"
+make-dir@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+ dependencies:
+ semver "^6.0.0"
+
make-fetch-happen@^10.0.3:
version "10.2.1"
resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164"
@@ -5713,28 +5550,6 @@ make-fetch-happen@^2.4.13:
socks-proxy-agent "^3.0.0"
ssri "^4.1.6"
-make-fetch-happen@^9.1.0:
- version "9.1.0"
- resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968"
- integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==
- dependencies:
- agentkeepalive "^4.1.3"
- cacache "^15.2.0"
- http-cache-semantics "^4.1.0"
- http-proxy-agent "^4.0.1"
- https-proxy-agent "^5.0.0"
- is-lambda "^1.0.1"
- lru-cache "^6.0.0"
- minipass "^3.1.3"
- minipass-collect "^1.0.2"
- minipass-fetch "^1.3.2"
- minipass-flush "^1.0.5"
- minipass-pipeline "^1.2.4"
- negotiator "^0.6.2"
- promise-retry "^2.0.1"
- socks-proxy-agent "^6.0.0"
- ssri "^8.0.0"
-
map-age-cleaner@^0.1.1:
version "0.1.3"
resolved "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz"
@@ -5747,11 +5562,6 @@ map-obj@^1.0.0, map-obj@^1.0.1:
resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz"
integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
-map-obj@^4.0.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7"
- integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==
-
marked@^4.0.16:
version "4.1.1"
resolved "https://registry.yarnpkg.com/marked/-/marked-4.1.1.tgz#2f709a4462abf65a283f2453dc1c42ab177d302e"
@@ -5798,24 +5608,6 @@ meow@^3.1.0:
redent "^1.0.0"
trim-newlines "^1.0.0"
-meow@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364"
- integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==
- dependencies:
- "@types/minimist" "^1.2.0"
- camelcase-keys "^6.2.2"
- decamelize "^1.2.0"
- decamelize-keys "^1.1.0"
- hard-rejection "^2.1.0"
- minimist-options "4.1.0"
- normalize-package-data "^3.0.0"
- read-pkg-up "^7.0.1"
- redent "^3.0.0"
- trim-newlines "^3.0.0"
- type-fest "^0.18.0"
- yargs-parser "^20.2.3"
-
merge-stream@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
@@ -5868,7 +5660,7 @@ mimic-fn@^2.0.0, mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-mimic-response@^1.0.0, mimic-response@^1.0.1:
+mimic-response@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
@@ -5878,11 +5670,6 @@ mimic-response@^3.1.0:
resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz"
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
-min-indent@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
- integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
-
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
@@ -5893,7 +5680,7 @@ minimalistic-crypto-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-minimatch@3.0.4, minimatch@~3.0.2:
+minimatch@3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
@@ -5914,15 +5701,6 @@ minimatch@^5.0.1, minimatch@^5.1.0:
dependencies:
brace-expansion "^2.0.1"
-minimist-options@4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
- integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
- dependencies:
- arrify "^1.0.1"
- is-plain-obj "^1.1.0"
- kind-of "^6.0.3"
-
minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
version "1.2.6"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
@@ -5940,17 +5718,6 @@ minipass-collect@^1.0.2:
dependencies:
minipass "^3.0.0"
-minipass-fetch@^1.3.2:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.3.4.tgz#63f5af868a38746ca7b33b03393ddf8c291244fe"
- integrity sha512-TielGogIzbUEtd1LsjZFs47RWuHHfhl6TiCx1InVxApBAmQ8bL0dL5ilkLGcRvuyW/A9nE+Lvn855Ewz8S0PnQ==
- dependencies:
- minipass "^3.1.0"
- minipass-sized "^1.0.3"
- minizlib "^2.0.0"
- optionalDependencies:
- encoding "^0.1.12"
-
minipass-fetch@^2.0.3:
version "2.1.2"
resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add"
@@ -5969,7 +5736,7 @@ minipass-flush@^1.0.5:
dependencies:
minipass "^3.0.0"
-minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4:
+minipass-pipeline@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c"
integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==
@@ -5990,14 +5757,14 @@ minipass@^3.0.0, minipass@^3.1.6:
dependencies:
yallist "^4.0.0"
-minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3:
+minipass@^3.1.1:
version "3.1.3"
resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz"
integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==
dependencies:
yallist "^4.0.0"
-minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2:
+minizlib@^2.1.1, minizlib@^2.1.2:
version "2.1.2"
resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz"
integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
@@ -6075,15 +5842,15 @@ mute-stream@~0.0.4:
resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz"
integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
-nan@^2.13.2, nan@^2.15.0, nan@^2.16.0:
+nan@^2.15.0, nan@^2.16.0:
version "2.16.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916"
integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==
-nanoid@^3.3.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35"
- integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==
+nanoid@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
+ integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
natural-compare-lite@^1.4.0:
version "1.4.0"
@@ -6095,11 +5862,6 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
-negotiator@^0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
- integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-
negotiator@^0.6.3:
version "0.6.3"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
@@ -6110,19 +5872,12 @@ neo-async@^2.6.2:
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
-ngx-sortablejs@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/ngx-sortablejs/-/ngx-sortablejs-11.1.0.tgz#14e50c48db908c1cb4b37722b28c2d3867c6140a"
- integrity sha512-eM4dHwWSmXDcvF5gUmyMMQ0qqcqBXWCSZ9IRpqx4UkBKfo4N7pk/QuYh5io2fXVHWVFDaxW1yhn2FNpqxV6Jqw==
+ngx-toastr@^16.0.2:
+ version "16.0.2"
+ resolved "https://registry.yarnpkg.com/ngx-toastr/-/ngx-toastr-16.0.2.tgz#349068a16a73867111c6feae68eedb89a638a33f"
+ integrity sha512-J6SueNCaGwm/gpXdsG56UzMEAcuayYWEW6NmIrNoe5iP7lOUohg4xYXWipkbMH9wGWmLPD9gU8AufUVWMplCvg==
dependencies:
- tslib "^2.0.0"
-
-ngx-toastr@^14.0.0:
- version "14.0.0"
- resolved "https://registry.yarnpkg.com/ngx-toastr/-/ngx-toastr-14.0.0.tgz#20e4737ef330b892a453768cd98b980558aeb286"
- integrity sha512-dnDzSY73pF6FvNyxdh6ftfvXvUg6SU7MAT3orPUCzA77t3ZcFslro06zk4NCA2g67RF7dBwM0OJ/y0SN6fdGYw==
- dependencies:
- tslib "^2.1.0"
+ tslib "^2.3.0"
nice-try@^1.0.4:
version "1.0.5"
@@ -6137,10 +5892,10 @@ no-case@^3.0.4:
lower-case "^2.0.2"
tslib "^2.0.3"
-node-abi@^3.0.0, node-abi@^3.25.0:
- version "3.25.0"
- resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.25.0.tgz#ca57dd23ae67679ce152b6c45cae2c57ed04faff"
- integrity sha512-p+0xx5ruIQ+8X57CRIMxbTZRT7tU0Tjn2C/aAK68AEMrbGsCo6IjnDdPNhEyyjWCT4bRtzomXchYd3sSgk3BJQ==
+node-abi@^3.0.0, node-abi@^3.33.0:
+ version "3.33.0"
+ resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.33.0.tgz#8b23a0cec84e1c5f5411836de6a9b84bccf26e7f"
+ integrity sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog==
dependencies:
semver "^7.3.5"
@@ -6182,22 +5937,6 @@ node-gyp-build@^4.2.1:
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739"
integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==
-node-gyp@^8.4.1:
- version "8.4.1"
- resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937"
- integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==
- dependencies:
- env-paths "^2.2.0"
- glob "^7.1.4"
- graceful-fs "^4.2.6"
- make-fetch-happen "^9.1.0"
- nopt "^5.0.0"
- npmlog "^6.0.0"
- rimraf "^3.0.2"
- semver "^7.3.5"
- tar "^6.1.2"
- which "^2.0.2"
-
node-gyp@^9.0.0:
version "9.1.0"
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.1.0.tgz#c8d8e590678ea1f7b8097511dedf41fc126648f8"
@@ -6233,36 +5972,15 @@ node-gyp@~3.6.2:
tar "^2.0.0"
which "1"
-node-releases@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666"
- integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==
-
node-releases@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
-node-sass@^7.0.3:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-7.0.3.tgz#7620bcd5559c2bf125c4fbb9087ba75cd2df2ab2"
- integrity sha512-8MIlsY/4dXUkJDYht9pIWBhMil3uHmE8b/AdJPjmFn1nBx9X9BASzfzmsCy0uCCb8eqI3SYYzVPDswWqSx7gjw==
- dependencies:
- async-foreach "^0.1.3"
- chalk "^4.1.2"
- cross-spawn "^7.0.3"
- gaze "^1.0.0"
- get-stdin "^4.0.1"
- glob "^7.0.3"
- lodash "^4.17.15"
- meow "^9.0.0"
- nan "^2.13.2"
- node-gyp "^8.4.1"
- npmlog "^5.0.0"
- request "^2.88.0"
- sass-graph "^4.0.1"
- stdout-stream "^1.4.0"
- "true-case-path" "^1.0.2"
+node-releases@^2.0.8:
+ version "2.0.9"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.9.tgz#fe66405285382b0c4ac6bcfbfbe7e8a510650b4d"
+ integrity sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA==
"nopt@2 || 3":
version "3.0.6"
@@ -6296,7 +6014,7 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.4.0, "normalize-package
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
-normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
version "2.5.0"
resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz"
integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
@@ -6306,16 +6024,6 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
-normalize-package-data@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz"
- integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==
- dependencies:
- hosted-git-info "^3.0.6"
- resolve "^1.17.0"
- semver "^7.3.2"
- validate-npm-package-license "^3.0.1"
-
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
@@ -6326,19 +6034,16 @@ normalize-url@^4.1.0:
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a"
integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==
+normalize-url@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
+ integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
+
npm-cache-filename@~1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz"
integrity sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE=
-npm-conf@^1.1.3:
- version "1.1.3"
- resolved "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz"
- integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==
- dependencies:
- config-chain "^1.1.11"
- pify "^3.0.0"
-
npm-install-checks@~3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-3.0.0.tgz"
@@ -6523,16 +6228,6 @@ npmlog@6.0.2, npmlog@^6.0.0:
gauge "^4.0.3"
set-blocking "^2.0.0"
-npmlog@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0"
- integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==
- dependencies:
- are-we-there-yet "^2.0.0"
- console-control-strings "^1.1.0"
- gauge "^3.0.0"
- set-blocking "^2.0.0"
-
npx@^10.2.2:
version "10.2.2"
resolved "https://registry.npmjs.org/npx/-/npx-10.2.2.tgz"
@@ -6732,11 +6427,6 @@ osenv@0, osenv@^0.1.4, osenv@^0.1.5, osenv@~0.1.4:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"
-p-cancelable@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
- integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
-
p-cancelable@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz"
@@ -6902,26 +6592,11 @@ parse-json@^2.2.0:
dependencies:
error-ex "^1.2.0"
-parse-json@^5.0.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
- integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- error-ex "^1.3.1"
- json-parse-even-better-errors "^2.3.0"
- lines-and-columns "^1.1.6"
-
"parse5@5 - 6":
version "6.0.1"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
-parse5@^5.0.0:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
- integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
-
parse5@^7.0.0:
version "7.1.1"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.1.tgz#4649f940ccfb95d8754f37f73078ea20afe0c746"
@@ -6929,6 +6604,13 @@ parse5@^7.0.0:
dependencies:
entities "^4.4.0"
+parse5@^7.1.2:
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32"
+ integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
+ dependencies:
+ entities "^4.4.0"
+
pascal-case@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
@@ -7080,7 +6762,7 @@ pinkie@^2.0.0:
resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
-pkg-dir@^4.2.0:
+pkg-dir@^4.1.0, pkg-dir@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
@@ -7160,12 +6842,12 @@ postcss-value-parser@^4.2.0:
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-postcss@^8.4.7:
- version "8.4.8"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.8.tgz#dad963a76e82c081a0657d3a2f3602ce10c2e032"
- integrity sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ==
+postcss@^8.4.19:
+ version "8.4.21"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4"
+ integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==
dependencies:
- nanoid "^3.3.1"
+ nanoid "^3.3.4"
picocolors "^1.0.0"
source-map-js "^1.0.2"
@@ -7179,11 +6861,6 @@ prepend-http@^1.0.1:
resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz"
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
-prepend-http@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
- integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==
-
pretty-bytes@^1.0.2:
version "1.0.4"
resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz"
@@ -7517,11 +7194,6 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-quick-lru@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
- integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
-
quick-lru@^5.1.1:
version "5.1.1"
resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz"
@@ -7615,15 +7287,6 @@ read-pkg-up@^1.0.1:
find-up "^1.0.0"
read-pkg "^1.0.0"
-read-pkg-up@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
- integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==
- dependencies:
- find-up "^4.1.0"
- read-pkg "^5.2.0"
- type-fest "^0.8.1"
-
read-pkg@^1.0.0:
version "1.1.0"
resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz"
@@ -7633,16 +7296,6 @@ read-pkg@^1.0.0:
normalize-package-data "^2.3.2"
path-type "^1.0.0"
-read-pkg@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
- integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
- dependencies:
- "@types/normalize-package-data" "^2.4.0"
- normalize-package-data "^2.5.0"
- parse-json "^5.0.0"
- type-fest "^0.6.0"
-
read@1, read@~1.0.1, read@~1.0.7:
version "1.0.7"
resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz"
@@ -7650,7 +7303,7 @@ read@1, read@~1.0.1, read@~1.0.7:
dependencies:
mute-stream "~0.0.4"
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.2:
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.2:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
@@ -7721,14 +7374,6 @@ redent@^1.0.0:
indent-string "^2.1.0"
strip-indent "^1.0.1"
-redent@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
- integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==
- dependencies:
- indent-string "^4.0.0"
- strip-indent "^3.0.0"
-
reflect-metadata@^0.1.2:
version "0.1.13"
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08"
@@ -7816,7 +7461,7 @@ repeating@^2.0.0:
tunnel-agent "^0.6.0"
uuid "^3.0.0"
-request@^2.45.0, request@^2.74.0, request@^2.88.0:
+request@^2.45.0, request@^2.74.0:
version "2.88.2"
resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz"
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
@@ -7847,6 +7492,11 @@ require-directory@^2.1.1:
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
+require-from-string@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
+
require-main-filename@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz"
@@ -7879,7 +7529,7 @@ resolve-from@^5.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
-resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.17.0:
+resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0:
version "1.20.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
@@ -7905,13 +7555,6 @@ resolve@^1.20.0, resolve@^1.22.0:
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
-responselike@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
- integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==
- dependencies:
- lowercase-keys "^1.0.0"
-
responselike@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz"
@@ -7997,6 +7640,13 @@ run-queue@^1.0.0, run-queue@^1.0.3:
dependencies:
aproba "^1.1.1"
+rxjs@^7.5.7:
+ version "7.8.0"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4"
+ integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==
+ dependencies:
+ tslib "^2.1.0"
+
safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
@@ -8028,24 +7678,23 @@ sanitize-filename@^1.6.3:
dependencies:
truncate-utf8-bytes "^1.0.0"
-sass-graph@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-4.0.1.tgz#2ff8ca477224d694055bf4093f414cf6cfad1d2e"
- integrity sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==
- dependencies:
- glob "^7.0.0"
- lodash "^4.17.11"
- scss-tokenizer "^0.4.3"
- yargs "^17.2.1"
-
-sass-loader@^12.6.0:
- version "12.6.0"
- resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb"
- integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==
+sass-loader@^13.2.0:
+ version "13.2.0"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-13.2.0.tgz#80195050f58c9aac63b792fa52acb6f5e0f6bdc3"
+ integrity sha512-JWEp48djQA4nbZxmgC02/Wh0eroSUutulROUusYJO9P9zltRbNN80JCBHqRGzjd4cmZCa/r88xgfkjGD0TXsHg==
dependencies:
klona "^2.0.4"
neo-async "^2.6.2"
+sass@^1.58.0:
+ version "1.58.0"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.58.0.tgz#ee8aea3ad5ea5c485c26b3096e2df6087d0bb1cc"
+ integrity sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==
+ dependencies:
+ chokidar ">=3.0.0 <4.0.0"
+ immutable "^4.0.0"
+ source-map-js ">=0.6.2 <2.0.0"
+
sax@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -8060,13 +7709,15 @@ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1:
ajv "^6.12.5"
ajv-keywords "^3.5.2"
-scss-tokenizer@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz#1058400ee7d814d71049c29923d2b25e61dc026c"
- integrity sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==
+schema-utils@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7"
+ integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==
dependencies:
- js-base64 "^2.4.9"
- source-map "^0.7.3"
+ "@types/json-schema" "^7.0.9"
+ ajv "^8.8.0"
+ ajv-formats "^2.1.1"
+ ajv-keywords "^5.0.0"
semver-compare@^1.0.0:
version "1.0.0"
@@ -8085,7 +7736,7 @@ semver-diff@^2.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-semver@^6.2.0, semver@^6.3.0:
+semver@^6.0.0, semver@^6.2.0, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
@@ -8097,6 +7748,13 @@ semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semve
dependencies:
lru-cache "^6.0.0"
+semver@^7.3.8:
+ version "7.3.8"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
+ integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
+ dependencies:
+ lru-cache "^6.0.0"
+
semver@~5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
@@ -8282,7 +7940,7 @@ smart-buffer@^1.0.13:
resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz"
integrity sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=
-smart-buffer@^4.0.2, smart-buffer@^4.1.0, smart-buffer@^4.2.0:
+smart-buffer@^4.0.2, smart-buffer@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
@@ -8302,15 +7960,6 @@ socks-proxy-agent@^3.0.0:
agent-base "^4.0.1"
socks "^1.1.10"
-socks-proxy-agent@^6.0.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz#869cf2d7bd10fea96c7ad3111e81726855e285c3"
- integrity sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg==
- dependencies:
- agent-base "^6.0.2"
- debug "^4.3.1"
- socks "^2.6.1"
-
socks-proxy-agent@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6"
@@ -8328,14 +7977,6 @@ socks@^1.1.10:
ip "^1.1.4"
smart-buffer "^1.0.13"
-socks@^2.6.1:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e"
- integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==
- dependencies:
- ip "^1.1.5"
- smart-buffer "^4.1.0"
-
socks@^2.6.2:
version "2.7.1"
resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55"
@@ -8344,11 +7985,6 @@ socks@^2.6.2:
ip "^2.0.0"
smart-buffer "^4.2.0"
-sortablejs@^1.15.0:
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.0.tgz#53230b8aa3502bb77a29e2005808ffdb4a5f7e2a"
- integrity sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==
-
sorted-object@~2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/sorted-object/-/sorted-object-2.0.1.tgz"
@@ -8367,24 +8003,19 @@ source-code-pro@^2.38.0:
resolved "https://registry.yarnpkg.com/source-code-pro/-/source-code-pro-2.38.0.tgz#85c57689f7386bb9d0515fb00ba4845bfb7b485b"
integrity sha512-JMXu7l3XrLREG17eEwY66ANG9716WTu6OeNvZfRKQKANEvbSERDZjk5AYTHeV6owQNPQTeiiW3ri2Ou93XFGvg==
-source-map-js@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf"
- integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==
-
-source-map-js@^1.0.2:
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
-source-map-loader@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.1.tgz#9ae5edc7c2d42570934be4c95d1ccc6352eba52d"
- integrity sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==
+source-map-loader@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.1.tgz#72f00d05f5d1f90f80974eda781cbd7107c125f2"
+ integrity sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==
dependencies:
- abab "^2.0.5"
+ abab "^2.0.6"
iconv-lite "^0.6.3"
- source-map-js "^1.0.1"
+ source-map-js "^1.0.2"
source-map-support@^0.5.19, source-map-support@~0.5.20:
version "0.5.21"
@@ -8394,26 +8025,16 @@ source-map-support@^0.5.19, source-map-support@~0.5.20:
buffer-from "^1.0.0"
source-map "^0.6.0"
-source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0:
+source-map@^0.6.0, source-map@~0.6.0:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-source-map@^0.7.3:
- version "0.7.4"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656"
- integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
-
source-sans-pro@3.6.0:
version "3.6.0"
resolved "https://registry.npmjs.org/source-sans-pro/-/source-sans-pro-3.6.0.tgz"
integrity sha512-C1RFUGu+YASuqpgDRInTM7Y6OwqeWNOuKn7v0P/4Kh66epTI4PYWwPWP5kdA4l/VqzBAWiqoz5dk0trof73R7w==
-sourcemap-codec@^1.4.8:
- version "1.4.8"
- resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
- integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
-
spdx-correct@^3.0.0:
version "3.1.1"
resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz"
@@ -8487,13 +8108,6 @@ ssri@^4.1.2, ssri@^4.1.6, ssri@~4.1.6:
dependencies:
safe-buffer "^5.1.0"
-ssri@^8.0.0, ssri@^8.0.1:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af"
- integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==
- dependencies:
- minipass "^3.1.1"
-
ssri@^9.0.0:
version "9.0.1"
resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057"
@@ -8506,13 +8120,6 @@ stat-mode@^1.0.0:
resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465"
integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==
-stdout-stream@^1.4.0:
- version "1.4.1"
- resolved "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz"
- integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==
- dependencies:
- readable-stream "^2.0.1"
-
stream-each@^1.1.0:
version "1.2.0"
resolved "https://registry.npmjs.org/stream-each/-/stream-each-1.2.0.tgz"
@@ -8543,7 +8150,7 @@ string-width@^1.0.1:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
-"string-width@^1.0.1 || ^2.0.0", "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1:
+"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
@@ -8625,7 +8232,7 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1:
dependencies:
ansi-regex "^2.0.0"
-"strip-ansi@^3.0.1 || ^4.0.0", strip-ansi@^4.0.0, strip-ansi@~4.0.0:
+strip-ansi@^4.0.0, strip-ansi@~4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
@@ -8663,13 +8270,6 @@ strip-indent@^1.0.1:
dependencies:
get-stdin "^4.0.1"
-strip-indent@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
- integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==
- dependencies:
- min-indent "^1.0.0"
-
strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
@@ -8784,7 +8384,7 @@ tar@^2.0.0, tar@~2.2.1:
fstream "^1.0.12"
inherits "2"
-tar@^6.0.2, tar@^6.0.5, tar@^6.1.11, tar@^6.1.2:
+tar@^6.0.5, tar@^6.1.11, tar@^6.1.2:
version "6.1.11"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
@@ -8943,11 +8543,6 @@ to-fast-properties@^2.0.0:
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
-to-readable-stream@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
- integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
-
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
@@ -8997,18 +8592,6 @@ trim-newlines@^1.0.0:
resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz"
integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
-trim-newlines@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
- integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
-
-"true-case-path@^1.0.2":
- version "1.0.3"
- resolved "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz"
- integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==
- dependencies:
- glob "^7.1.2"
-
truncate-utf8-bytes@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b"
@@ -9036,16 +8619,26 @@ tsconfig-paths@^3.14.1:
minimist "^1.2.6"
strip-bom "^3.0.0"
+tsimportlib@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tsimportlib/-/tsimportlib-0.0.3.tgz#008453c0f0eea6f736f2a4431171de240b21fc0d"
+ integrity sha512-U9sW2/3D0P4IVRnhH2RCqjCP0sG66qvb4ahB0aQln5xGMphDjntz5rdk0rFZ6Fg+lW3L+i+gRnIl4VvNBvxiQw==
+
tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@^2.4.0:
+tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.0, tslib@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
+tslib@^2.1.0, tslib@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
+ integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
+
tsutils@^3.21.0:
version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
@@ -9060,11 +8653,6 @@ tunnel-agent@^0.6.0:
dependencies:
safe-buffer "^5.0.1"
-tunnel@^0.0.6:
- version "0.0.6"
- resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz"
- integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
-
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
@@ -9082,26 +8670,11 @@ type-fest@^0.13.1:
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz"
integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
-type-fest@^0.18.0:
- version "0.18.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f"
- integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==
-
type-fest@^0.20.2:
version "0.20.2"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
-type-fest@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
- integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
-
-type-fest@^0.8.1:
- version "0.8.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
- integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
-
typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
@@ -9118,7 +8691,7 @@ typedoc@^0.22.18:
minimatch "^5.1.0"
shiki "^0.10.1"
-"typescript@2 - 4", typescript@^4.3.5:
+"typescript@2 - 4":
version "4.5.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3"
integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
@@ -9128,6 +8701,11 @@ typescript@^4.0.2:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6"
integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==
+typescript@^4.9.5:
+ version "4.9.5"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
+ integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
+
uid-number@0.0.6:
version "0.0.6"
resolved "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz"
@@ -9165,13 +8743,6 @@ unique-filename@^1.1.0, unique-filename@~1.1.0:
dependencies:
unique-slug "^2.0.0"
-unique-filename@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
- integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
- dependencies:
- unique-slug "^2.0.0"
-
unique-filename@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2"
@@ -9220,10 +8791,10 @@ unzip-response@^2.0.1:
resolved "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz"
integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=
-update-browserslist-db@^1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824"
- integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==
+update-browserslist-db@^1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
+ integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
dependencies:
escalade "^3.1.1"
picocolors "^1.0.0"
@@ -9280,13 +8851,6 @@ url-parse-lax@^1.0.0:
dependencies:
prepend-http "^1.0.1"
-url-parse-lax@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
- integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==
- dependencies:
- prepend-http "^2.0.0"
-
utf8-byte-length@^1.0.1:
version "1.0.4"
resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61"
@@ -9319,10 +8883,10 @@ uuid@~3.1.0:
resolved "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz"
integrity sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==
-val-loader@4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/val-loader/-/val-loader-4.0.0.tgz#c5ccf8abfe486de412d2cd59fa56deb49d44ec8d"
- integrity sha512-tpDHHpVo1hrO9xFhpEcOw+RCK4wnQqqNkZmylwHJ04iVeue1YSYxIdDwCdKd7LVQ8g/fsGX/EC5gLda9BXovkg==
+val-loader@5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/val-loader/-/val-loader-5.0.1.tgz#ce29d3bbe68381f42bef0d693d0f18202fe5efe8"
+ integrity sha512-r4h7b9AuvGQU1vyC4rAMoJNMG8fJUE6CYAqlM265tOdnZrZC6axVawBg2GlQ9+6osPCJjw4/vyADiSBAFlhzlg==
validate-npm-package-license@^3.0.1:
version "3.0.4"
@@ -9412,15 +8976,15 @@ webpack-bundle-analyzer@^4.7.0:
sirv "^1.0.7"
ws "^7.3.1"
-webpack-cli@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.0.0.tgz#bd380a9653e0cd1a08916c4ff1adea17201ef68f"
- integrity sha512-AACDTo20yG+xn6HPW5xjbn2Be4KUzQPebWXsDMHwPPyKh9OnTOJgZN2Nc+g/FZKV3ObRTYsGvibAvc+5jAUrVA==
+webpack-cli@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.0.1.tgz#95fc0495ac4065e9423a722dec9175560b6f2d9a"
+ integrity sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==
dependencies:
"@discoveryjs/json-ext" "^0.5.0"
- "@webpack-cli/configtest" "^2.0.0"
- "@webpack-cli/info" "^2.0.0"
- "@webpack-cli/serve" "^2.0.0"
+ "@webpack-cli/configtest" "^2.0.1"
+ "@webpack-cli/info" "^2.0.1"
+ "@webpack-cli/serve" "^2.0.1"
colorette "^2.0.14"
commander "^9.4.1"
cross-spawn "^7.0.3"
@@ -9541,7 +9105,7 @@ which@~1.2.14:
dependencies:
isexe "^2.0.0"
-wide-align@^1.1.0, wide-align@^1.1.2:
+wide-align@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
@@ -9698,23 +9262,29 @@ yallist@^2.1.2:
resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz"
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
yallist@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-yaml-loader@0.6.0:
- version "0.6.0"
- resolved "https://registry.npmjs.org/yaml-loader/-/yaml-loader-0.6.0.tgz"
- integrity sha512-1bNiLelumURyj+zvVHOv8Y3dpCri0F2S+DCcmps0pA1zWRLjS+FhZQg4o3aUUDYESh73+pKZNI18bj7stpReow==
+yaml-loader@0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.8.0.tgz#c839325e3fdee082b3768b2a21fe34fde5d96f61"
+ integrity sha512-LjeKnTzVBKWiQBeE2L9ssl6WprqaUIxCSNs5tle8PaDydgu3wVFXTbMfsvF2MSErpy9TDVa092n4q6adYwJaWg==
dependencies:
- loader-utils "^1.4.0"
- yaml "^1.8.3"
+ javascript-stringify "^2.0.1"
+ loader-utils "^2.0.0"
+ yaml "^2.0.0"
-yaml@^1.8.3:
- version "1.10.0"
- resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz"
- integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
+yaml@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.1.tgz#3014bf0482dcd15147aa8e56109ce8632cd60ce4"
+ integrity sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==
yargs-parser@^18.1.2:
version "18.1.3"
@@ -9724,12 +9294,7 @@ yargs-parser@^18.1.2:
camelcase "^5.0.0"
decamelize "^1.2.0"
-yargs-parser@^20.2.3:
- version "20.2.9"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
- integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
-
-yargs-parser@^21.0.0:
+yargs-parser@^21.0.0, yargs-parser@^21.1.1:
version "21.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
@@ -9776,7 +9341,7 @@ yargs@^15.0.1:
y18n "^4.0.0"
yargs-parser "^18.1.2"
-yargs@^17.0.0, yargs@^17.0.1, yargs@^17.2.1, yargs@^17.5.1:
+yargs@^17.0.1, yargs@^17.5.1:
version "17.6.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.0.tgz#e134900fc1f218bc230192bdec06a0a5f973e46c"
integrity sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==
@@ -9789,6 +9354,19 @@ yargs@^17.0.0, yargs@^17.0.1, yargs@^17.2.1, yargs@^17.5.1:
y18n "^5.0.5"
yargs-parser "^21.0.0"
+yargs@^17.2.1:
+ version "17.6.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541"
+ integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==
+ dependencies:
+ cliui "^8.0.1"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.1.1"
+
yauzl@^2.10.0:
version "2.10.0"
resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz"