Просмотр исходного кода

meta: use ESBuild to bundle in E2E test suite (#3375)

* use ESBuild to bundle E2E tests

* fix linter warnings

* Update create-react-app deps

* list test suites dynamically
Antoine du Hamel 3 лет назад
Родитель
Сommit
007aad98fb

+ 4 - 1
.eslintrc.js

@@ -228,11 +228,14 @@ module.exports = {
     },
 
     {
-      files: ['test/endtoend/*/*.js'],
+      files: ['test/endtoend/*/*.mjs', 'test/endtoend/*/*.ts'],
       rules: {
         // we mostly import @uppy stuff in these files.
         'import/no-extraneous-dependencies': ['off'],
       },
+    },
+    {
+      files: ['test/endtoend/*/*.js'],
       env: {
         mocha: true,
       },

+ 19 - 19
bin/endtoend-build-tests

@@ -8,30 +8,30 @@ set -o xtrace
 # Set magic variables for current file & dir
 __dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
 __file="${__dir}/$(basename "${BASH_SOURCE[0]}")"
-__base="$(basename ${__file} .sh)"
+__base="$(basename "${__file}" .sh)"
 __root="$(cd "$(dirname "${__dir}")" && pwd)"
+__e2eSuites="${__root}/test/endtoend"
 
-# Tests using a simple build setup.
-tests="chaos-monkey i18n-drag-drop providers thumbnails transloadit transloadit-assembly-options tus-drag-drop url-plugin xhr-limit"
-
-for t in $tests; do
-  mkdir -p "${__root}/test/endtoend/$t/dist"
-  cp "${__root}/packages/uppy/dist/uppy.min.css" "${__root}/test/endtoend/$t/dist"
-  cp "${__root}/test/endtoend/$t/index.html" "${__root}/test/endtoend/$t/dist"
-  browserify "${__root}/test/endtoend/$t/main.js" \
-    -o "${__root}/test/endtoend/$t/dist/bundle.js" \
-    -t @goto-bus-stop/envify \
-    -t babelify
+ESBUILD="$(corepack yarn workspace @uppy-tests/end2end bin esbuild)"
+
+for t in $(cd "$__e2eSuites" && ls -d */ | cut -f1 -d'/'); do
+  if [ "$t" = "tmp" ]; then continue; fi
+  if [ "$t" = "create-react-app" ]; then continue; fi
+
+  mkdir -p "${__e2eSuites}/$t/dist"
+  cp "${__root}/packages/uppy/dist/uppy.min.css" "${__e2eSuites}/$t/dist"
+  cp "${__e2eSuites}/$t/index.html" "${__e2eSuites}/$t/dist"
+
+  entryPointName="main.mjs"
+  if [ "$t" = "typescript" ]; then entryPointName="main.ts"; fi
+
+  "$ESBUILD" "${__e2eSuites}/$t/$entryPointName" \
+    --bundle --target=es2017 \
+    --outfile="${__e2eSuites}/$t/dist/bundle.js"
 done
 
 # Speeecial tests that need custom builds.
-pushd "${__root}/test/endtoend/create-react-app"
+pushd "${__e2eSuites}/create-react-app"
   npm install
   REACT_APP_ON_TRAVIS="${TRAVIS:-}" npm run build
 popd
-pushd "${__root}/test/endtoend/typescript"
-  mkdir -p dist
-  cp "${__root}/packages/uppy/dist/uppy.min.css" dist/
-  cp index.html dist/
-  browserify main.ts -t @goto-bus-stop/envify -p [ tsify --target ES3 ] -o dist/bundle.js
-popd

+ 0 - 1
package.json

@@ -47,7 +47,6 @@
     "@babel/preset-env": "^7.14.7",
     "@babel/register": "^7.10.5",
     "@goto-bus-stop/envify": "^5.0.0",
-    "@jamen/lorem": "^0.2.0",
     "@size-limit/preset-big-lib": "7.0.4",
     "@types/jasmine": "file:./private/@types/jasmine",
     "@types/jasminewd2": "file:./private/@types/jasmine",

+ 5 - 6
test/endtoend/chaos-monkey/main.js → test/endtoend/chaos-monkey/main.mjs

@@ -1,10 +1,9 @@
-const Uppy = require('@uppy/core')
-const Dashboard = require('@uppy/dashboard')
-const Tus = require('@uppy/tus')
-const canvasToBlob = require('@uppy/utils/lib/canvasToBlob')
+import Uppy from '@uppy/core'
+import Dashboard from '@uppy/dashboard'
+import Tus from '@uppy/tus'
+import canvasToBlob from '@uppy/utils/lib/canvasToBlob'
 
-const isOnTravis = !!(process.env.TRAVIS && process.env.CI)
-const endpoint = isOnTravis ? 'http://companion.test:1081' : 'http://localhost:1081'
+const endpoint = 'http://localhost:1081'
 
 let id = 0
 window.setup = function setup (options) {

+ 4 - 5
test/endtoend/chaos-monkey/test.js

@@ -1,6 +1,5 @@
-/* global browser, expect  */
+/* global browser */
 const crypto = require('crypto')
-const lorem = require('@jamen/lorem')
 const { selectFakeFile } = require('../utils')
 
 const testURL = 'http://localhost:4567/chaos-monkey'
@@ -23,12 +22,12 @@ describe('Chaos monkey', function test () {
     const types = ['application/octet-stream', 'text/plain']
     const generate = {
       'application/octet-stream' () {
-        const len = Math.round(Math.random() * 5000000)
+        const len = Math.round(Math.random() * 5_000_000)
         return crypto.randomBytes(len)
       },
       'text/plain' () {
-        const len = Math.round(Math.random() * 5000000)
-        return Buffer.from(lorem(len))
+        const len = Math.round(Math.random() * 5_000_000 / 'Lorem ipsum'.length)
+        return Buffer.from('Lorem ipsum'.repeat(len))
       },
     }
 

Разница между файлами не показана из-за своего большого размера
+ 319 - 271
test/endtoend/create-react-app/package-lock.json


+ 4 - 5
test/endtoend/create-react-app/src/App.js

@@ -10,8 +10,7 @@ import '@uppy/core/dist/style.css'
 import '@uppy/dashboard/dist/style.css'
 /* eslint-enable import/no-extraneous-dependencies */
 
-const isOnTravis = process.env.REACT_APP_ON_TRAVIS
-const endpoint = isOnTravis ? 'http://companion.test:1080' : 'http://localhost:1080'
+const endpoint = 'http://localhost:1080'
 
 class App extends Component {
   constructor (props) {
@@ -44,7 +43,7 @@ class App extends Component {
   }
 
   render () {
-    const { showInlineDashboard } = this.state
+    const { showInlineDashboard, open } = this.state
     return (
       <div>
         <h1>React Examples</h1>
@@ -78,11 +77,11 @@ class App extends Component {
         <h2>Modal Dashboard</h2>
         <div id="modal-dashboard">
           <button onClick={this.handleModalClick} id="modal-dashboard-toggle" type="button">
-            {this.state.open ? 'Close dashboard' : 'Open dashboard'}
+            {open ? 'Close dashboard' : 'Open dashboard'}
           </button>
           <DashboardModal
             uppy={this.uppy2}
-            open={this.state.open}
+            open={open}
             target="#modal-dashboard"
             onRequestClose={() => this.setState({ open: false })}
           />

+ 1 - 1
test/endtoend/create-react-app/test.js

@@ -1,4 +1,4 @@
-/* global capabilities, browser, expect, $, $$ */
+/* global capabilities, browser, $, $$ */
 const testURL = 'http://localhost:4567/create-react-app'
 
 describe('webpack build', () => {

+ 6 - 5
test/endtoend/i18n-drag-drop/main.js → test/endtoend/i18n-drag-drop/main.mjs

@@ -1,8 +1,9 @@
-const Uppy = require('@uppy/core')
-const DragDrop = require('@uppy/drag-drop')
-const XHRUpload = require('@uppy/xhr-upload')
-const ProgressBar = require('@uppy/progress-bar')
-const DeepFrozenStore = require('../../resources/DeepFrozenStore.js')
+import Uppy from '@uppy/core'
+import DragDrop from '@uppy/drag-drop'
+import XHRUpload from '@uppy/xhr-upload'
+import ProgressBar from '@uppy/progress-bar'
+
+import DeepFrozenStore from '../../resources/DeepFrozenStore.js'
 
 const uppyi18n = new Uppy({
   id: 'uppyi18n',

+ 2 - 2
test/endtoend/i18n-drag-drop/test.js

@@ -1,4 +1,4 @@
-/* global browser, expect  */
+/* global browser */
 // const path = require('path')
 const { selectFakeFile, ensureInputVisible } = require('../utils')
 
@@ -24,7 +24,7 @@ describe('File upload with DragDrop + XHRUpload, i18n translated string', functi
     await browser.pause(5000)
     const percent = await browser.$('#uppyi18n-progress .uppy-ProgressBar-percentage')
     const html = await percent.getHTML(false)
-    expect(parseInt(html)).to.be.equal(100)
+    expect(Number(html)).to.be.equal(100)
   })
 
   it('should translate text strings into Russian', async () => {

+ 1 - 0
test/endtoend/package.json

@@ -9,6 +9,7 @@
     "@wdio/sauce-service": "^7.7.7",
     "brake": "^1.0.1",
     "chai": "^4.2.0",
+    "esbuild": "^0.14.1",
     "express": "^4.17.1",
     "glob": "^7.2.0",
     "http-proxy": "^1.18.1",

+ 8 - 9
test/endtoend/providers/main.js → test/endtoend/providers/main.mjs

@@ -1,13 +1,12 @@
-const Uppy = require('@uppy/core')
-const Dashboard = require('@uppy/dashboard')
-const GoogleDrive = require('@uppy/google-drive')
-const Instagram = require('@uppy/instagram')
-const Dropbox = require('@uppy/dropbox')
-const Box = require('@uppy/box')
-const Tus = require('@uppy/tus')
+import Uppy from '@uppy/core'
+import Dashboard from '@uppy/dashboard'
+import GoogleDrive from '@uppy/google-drive'
+import Instagram from '@uppy/instagram'
+import Dropbox from '@uppy/dropbox'
+import Box from '@uppy/box'
+import Tus from '@uppy/tus'
 
-const isOnTravis = !!(process.env.TRAVIS && process.env.CI)
-const companionUrl = isOnTravis ? 'http://companion.test:3030' : 'http://localhost:3020'
+const companionUrl = 'http://localhost:3020'
 
 window.uppy = new Uppy({
   id: 'uppyProvider',

+ 5 - 6
test/endtoend/thumbnails/main.js → test/endtoend/thumbnails/main.mjs

@@ -1,12 +1,11 @@
-/* eslint-disable */
-const Uppy = require('@uppy/core')
-const ThumbnailGenerator = require('@uppy/thumbnail-generator')
-const FileInput = require('@uppy/file-input')
+import Uppy from '@uppy/core'
+import ThumbnailGenerator from '@uppy/thumbnail-generator'
+import FileInput from '@uppy/file-input'
 
 const uppyThumbnails = new Uppy({
   id: 'uppyThumbnails',
   autoProceed: false,
-  debug: true
+  debug: true,
 })
 
 uppyThumbnails.use(ThumbnailGenerator, {})
@@ -27,7 +26,7 @@ uppyThumbnails.on('thumbnail:error', (file, err) => {
   document.body.appendChild(el)
 })
 
-uppyThumbnails.on('thumbnail:generated', (file, preview) => {
+uppyThumbnails.on('thumbnail:generated', (file) => {
   const img = new Image()
   img.src = file.preview
   img.className = 'file-preview'

+ 1 - 1
test/endtoend/thumbnails/test.js

@@ -1,4 +1,4 @@
-/* global browser, capabilities, expect, $, $$ */
+/* global browser, capabilities, $, $$ */
 const path = require('path')
 const fs = require('fs')
 const { selectFakeFile, supportsChooseFile } = require('../utils')

+ 3 - 3
test/endtoend/transloadit-assembly-options/main.js → test/endtoend/transloadit-assembly-options/main.mjs

@@ -1,6 +1,6 @@
-const Uppy = require('@uppy/core')
-const Dashboard = require('@uppy/dashboard')
-const Transloadit = require('@uppy/transloadit')
+import Uppy from '@uppy/core'
+import Dashboard from '@uppy/dashboard'
+import Transloadit from '@uppy/transloadit'
 
 function initUppyTransloadit (transloaditKey) {
   const uppyTransloadit = new Uppy({

+ 1 - 1
test/endtoend/transloadit-assembly-options/test.js

@@ -1,4 +1,4 @@
-/* global browser, expect, capabilities, $ */
+/* global browser, capabilities, $ */
 const path = require('path')
 const fs = require('fs')
 const { selectFakeFile, supportsChooseFile, ensureInputVisible } = require('../utils')

+ 7 - 10
test/endtoend/transloadit/main.js → test/endtoend/transloadit/main.mjs

@@ -1,6 +1,6 @@
-const Uppy = require('@uppy/core')
-const Dashboard = require('@uppy/dashboard')
-const Transloadit = require('@uppy/transloadit')
+import Uppy from '@uppy/core'
+import Dashboard from '@uppy/dashboard'
+import Transloadit from '@uppy/transloadit'
 
 function initUppyTransloadit (transloaditKey) {
   const uppyTransloadit = new Uppy({
@@ -33,15 +33,12 @@ function initUppyTransloadit (transloaditKey) {
 
   uppyTransloadit.on('transloadit:result', (stepName, result) => {
     // use transloadit encoding result here.
-    console.log('Result here ====>', stepName, result)
-    console.log('Cropped image url is here ====>', result.url)
-
     const img = new Image()
     img.onload = function onload () {
-      const result = document.createElement('div')
-      result.setAttribute('id', 'uppy-result')
-      result.textContent = 'ok'
-      document.body.appendChild(result)
+      const resultDiv = document.createElement('div')
+      resultDiv.setAttribute('id', 'uppy-result')
+      resultDiv.textContent = 'ok'
+      document.body.appendChild(resultDiv)
     }
     img.src = result.url
   })

+ 1 - 1
test/endtoend/transloadit/test.js

@@ -1,4 +1,4 @@
-/* global browser, expect, capabilities, $ */
+/* global browser, capabilities, $ */
 const path = require('path')
 const fs = require('fs')
 const { selectFakeFile, supportsChooseFile, ensureInputVisible } = require('../utils')

+ 0 - 18
test/endtoend/tus-dashboard/main.js

@@ -1,18 +0,0 @@
-const Uppy = require('@uppy/core')
-const Dashboard = require('@uppy/dashboard')
-const Tus = require('@uppy/tus')
-
-const isOnTravis = !!(process.env.TRAVIS && process.env.CI)
-const endpoint = isOnTravis ? 'http://companion.test:1080' : 'http://localhost:1080'
-
-const uppyDashboard = new Uppy({
-  id: 'uppyDashboard',
-  debug: true,
-})
-
-uppyDashboard
-  .use(Dashboard, {
-    target: '#uppyDashboard',
-    inline: true,
-  })
-  .use(Tus, { endpoint: `${endpoint}/files/` })

+ 17 - 0
test/endtoend/tus-dashboard/main.mjs

@@ -0,0 +1,17 @@
+import Uppy from '@uppy/core'
+import Dashboard from '@uppy/dashboard'
+import Tus from '@uppy/tus'
+
+const endpoint = 'http://localhost:1080'
+
+const uppyDashboard = new Uppy({
+  id: 'uppyDashboard',
+  debug: true,
+})
+
+uppyDashboard
+  .use(Dashboard, {
+    target: '#uppyDashboard',
+    inline: true,
+  })
+  .use(Tus, { endpoint: `${endpoint}/files/` })

+ 4 - 4
test/endtoend/tus-drag-drop/main.js → test/endtoend/tus-drag-drop/main.mjs

@@ -1,7 +1,7 @@
-const Uppy = require('@uppy/core')
-const DragDrop = require('@uppy/drag-drop')
-const Tus = require('@uppy/tus')
-const ProgressBar = require('@uppy/progress-bar')
+import Uppy from '@uppy/core'
+import DragDrop from '@uppy/drag-drop'
+import Tus from '@uppy/tus'
+import ProgressBar from '@uppy/progress-bar'
 
 // const endpoint = 'http://localhost:1080'
 const endpoint = 'https://tusd.tusdemo.net'

+ 2 - 2
test/endtoend/tus-drag-drop/test.js

@@ -1,4 +1,4 @@
-/* global browser, expect  */
+/* global browser */
 const path = require('path')
 const { selectFakeFile, supportsChooseFile, ensureInputVisible } = require('../utils')
 
@@ -23,6 +23,6 @@ describe('File upload with DragDrop + Tus', function test () {
     await browser.pause(3000)
     const percent = await browser.$('#uppyDragDrop-progress .uppy-ProgressBar-percentage')
     const html = await percent.getHTML(false)
-    expect(parseInt(html)).to.be.equal(100)
+    expect(Number(html)).to.be.equal(100)
   })
 })

+ 1 - 4
test/endtoend/typescript/main.ts

@@ -11,10 +11,7 @@ import {
   Form,
 } from 'uppy'
 
-declare let process: { env: Record<string, string> }
-
-const isOnTravis = !!(process.env.TRAVIS && process.env.CI)
-const TUS_ENDPOINT = `http://${isOnTravis ? 'companion.test' : 'localhost'}:1080/files/`
+const TUS_ENDPOINT = 'http://localhost:1080/files/'
 
 const uppy = new Core({
   debug: true,

+ 0 - 6
test/endtoend/typescript/package.json

@@ -1,6 +0,0 @@
-{
-  "private": true,
-  "dependencies": {
-    "uppy": "file:../../../packages/uppy"
-  }
-}

+ 1 - 1
test/endtoend/typescript/test.js

@@ -1,4 +1,4 @@
-/* global browser, expect  */
+/* global browser */
 describe('Project compiled with Uppy\'s TypeScript typings', () => {
   it('Should have correct imports (thus not crash)', async () => {
     await browser.url('http://localhost:4567/typescript')

+ 0 - 22
test/endtoend/url-plugin/main.js

@@ -1,22 +0,0 @@
-const Uppy = require('@uppy/core')
-const Dashboard = require('@uppy/dashboard')
-const Url = require('@uppy/url')
-const Tus = require('@uppy/tus')
-
-const isOnTravis = !!(process.env.TRAVIS && process.env.CI)
-const companionUrl = isOnTravis ? 'http://companion.test:3030' : 'http://localhost:3030'
-const endpoint = isOnTravis ? 'http://companion.test:1080' : 'http://localhost:1080'
-
-window.uppy = new Uppy({
-  id: 'uppyProvider',
-  debug: true,
-})
-  .use(Dashboard, {
-    target: '#uppyDashboard',
-    inline: true,
-  })
-  .use(Url, {
-    target: Dashboard,
-    companionUrl,
-  })
-  .use(Tus, { endpoint: `${endpoint}/files/` })

+ 21 - 0
test/endtoend/url-plugin/main.mjs

@@ -0,0 +1,21 @@
+import Uppy from '@uppy/core'
+import Dashboard from '@uppy/dashboard'
+import Url from '@uppy/url'
+import Tus from '@uppy/tus'
+
+const companionUrl = 'http://localhost:3030'
+const endpoint = 'http://localhost:1080'
+
+window.uppy = new Uppy({
+  id: 'uppyProvider',
+  debug: true,
+})
+  .use(Dashboard, {
+    target: '#uppyDashboard',
+    inline: true,
+  })
+  .use(Url, {
+    target: Dashboard,
+    companionUrl,
+  })
+  .use(Tus, { endpoint: `${endpoint}/files/` })

+ 1 - 1
test/endtoend/utils.js

@@ -1,5 +1,5 @@
 /* eslint-disable compat/compat */
-/* global window, capabilities */
+/* global capabilities */
 const path = require('path')
 const { spawn } = require('child_process')
 const { promisify } = require('util')

+ 3 - 3
test/endtoend/xhr-limit/main.js → test/endtoend/xhr-limit/main.mjs

@@ -1,6 +1,6 @@
-const Uppy = require('@uppy/core')
-const FileInput = require('@uppy/file-input')
-const XHRUpload = require('@uppy/xhr-upload')
+import Uppy from '@uppy/core'
+import FileInput from '@uppy/file-input'
+import XHRUpload from '@uppy/xhr-upload'
 
 function startXHRLimitTest (endpoint) {
   const uppy = new Uppy({

+ 183 - 13
yarn.lock

@@ -3074,17 +3074,6 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@jamen/lorem@npm:^0.2.0":
-  version: 0.2.0
-  resolution: "@jamen/lorem@npm:0.2.0"
-  dependencies:
-    bytes: ^3.0.0
-  bin:
-    lorem: src/lorem-cli.js
-  checksum: 04f2361538cdcfaecf8f77c901244f692f2435926b24980914ff303abc95580d5ed8d34b2e681a414b2e855717a4edcfc5e9f8a39629a32cede8b8b3378dc9f2
-  languageName: node
-  linkType: hard
-
 "@jest/console@npm:^24.9.0":
   version: 24.9.0
   resolution: "@jest/console@npm:24.9.0"
@@ -7460,7 +7449,6 @@ __metadata:
     "@babel/preset-env": ^7.14.7
     "@babel/register": ^7.10.5
     "@goto-bus-stop/envify": ^5.0.0
-    "@jamen/lorem": ^0.2.0
     "@size-limit/preset-big-lib": 7.0.4
     "@types/jasmine": "file:./private/@types/jasmine"
     "@types/jasminewd2": "file:./private/@types/jasmine"
@@ -7943,6 +7931,7 @@ __metadata:
     "@wdio/sauce-service": ^7.7.7
     brake: ^1.0.1
     chai: ^4.2.0
+    esbuild: ^0.14.1
     express: ^4.17.1
     glob: ^7.2.0
     http-proxy: ^1.18.1
@@ -12623,7 +12612,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"bytes@npm:3.1.1, bytes@npm:^3.0.0, bytes@npm:^3.1.0":
+"bytes@npm:3.1.1, bytes@npm:^3.1.0":
   version: 3.1.1
   resolution: "bytes@npm:3.1.1"
   checksum: 949ab99a385d6acf4d2c69f1afc618615dc905936e0b0b9aa94a9e94d722baaba44d6a0851536585a0892ae4d462b5a270ccb1b04c774640742cbde5538ca328
@@ -17261,6 +17250,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-android-arm64@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-android-arm64@npm:0.14.5"
+  conditions: os=android & cpu=arm64
+  languageName: node
+  linkType: hard
+
 "esbuild-darwin-64@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-darwin-64@npm:0.13.12"
@@ -17282,6 +17278,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-darwin-64@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-darwin-64@npm:0.14.5"
+  conditions: os=darwin & cpu=x64
+  languageName: node
+  linkType: hard
+
 "esbuild-darwin-arm64@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-darwin-arm64@npm:0.13.12"
@@ -17303,6 +17306,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-darwin-arm64@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-darwin-arm64@npm:0.14.5"
+  conditions: os=darwin & cpu=arm64
+  languageName: node
+  linkType: hard
+
 "esbuild-freebsd-64@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-freebsd-64@npm:0.13.12"
@@ -17324,6 +17334,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-freebsd-64@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-freebsd-64@npm:0.14.5"
+  conditions: os=freebsd & cpu=x64
+  languageName: node
+  linkType: hard
+
 "esbuild-freebsd-arm64@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-freebsd-arm64@npm:0.13.12"
@@ -17345,6 +17362,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-freebsd-arm64@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-freebsd-arm64@npm:0.14.5"
+  conditions: os=freebsd & cpu=arm64
+  languageName: node
+  linkType: hard
+
 "esbuild-linux-32@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-linux-32@npm:0.13.12"
@@ -17366,6 +17390,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-linux-32@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-linux-32@npm:0.14.5"
+  conditions: os=linux & cpu=ia32
+  languageName: node
+  linkType: hard
+
 "esbuild-linux-64@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-linux-64@npm:0.13.12"
@@ -17387,6 +17418,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-linux-64@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-linux-64@npm:0.14.5"
+  conditions: os=linux & cpu=x64
+  languageName: node
+  linkType: hard
+
 "esbuild-linux-arm64@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-linux-arm64@npm:0.13.12"
@@ -17408,6 +17446,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-linux-arm64@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-linux-arm64@npm:0.14.5"
+  conditions: os=linux & cpu=arm64
+  languageName: node
+  linkType: hard
+
 "esbuild-linux-arm@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-linux-arm@npm:0.13.12"
@@ -17429,6 +17474,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-linux-arm@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-linux-arm@npm:0.14.5"
+  conditions: os=linux & cpu=arm
+  languageName: node
+  linkType: hard
+
 "esbuild-linux-mips64le@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-linux-mips64le@npm:0.13.12"
@@ -17450,6 +17502,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-linux-mips64le@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-linux-mips64le@npm:0.14.5"
+  conditions: os=linux & cpu=mips64el
+  languageName: node
+  linkType: hard
+
 "esbuild-linux-ppc64le@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-linux-ppc64le@npm:0.13.12"
@@ -17471,6 +17530,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-linux-ppc64le@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-linux-ppc64le@npm:0.14.5"
+  conditions: os=linux & cpu=ppc64
+  languageName: node
+  linkType: hard
+
 "esbuild-netbsd-64@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-netbsd-64@npm:0.13.12"
@@ -17492,6 +17558,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-netbsd-64@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-netbsd-64@npm:0.14.5"
+  conditions: os=netbsd & cpu=x64
+  languageName: node
+  linkType: hard
+
 "esbuild-openbsd-64@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-openbsd-64@npm:0.13.12"
@@ -17513,6 +17586,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-openbsd-64@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-openbsd-64@npm:0.14.5"
+  conditions: os=openbsd & cpu=x64
+  languageName: node
+  linkType: hard
+
 "esbuild-sunos-64@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-sunos-64@npm:0.13.12"
@@ -17534,6 +17614,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-sunos-64@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-sunos-64@npm:0.14.5"
+  conditions: os=sunos & cpu=x64
+  languageName: node
+  linkType: hard
+
 "esbuild-wasm@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-wasm@npm:0.13.12"
@@ -17573,6 +17660,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-windows-32@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-windows-32@npm:0.14.5"
+  conditions: os=win32 & cpu=ia32
+  languageName: node
+  linkType: hard
+
 "esbuild-windows-64@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-windows-64@npm:0.13.12"
@@ -17594,6 +17688,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-windows-64@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-windows-64@npm:0.14.5"
+  conditions: os=win32 & cpu=x64
+  languageName: node
+  linkType: hard
+
 "esbuild-windows-arm64@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild-windows-arm64@npm:0.13.12"
@@ -17615,6 +17716,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild-windows-arm64@npm:0.14.5":
+  version: 0.14.5
+  resolution: "esbuild-windows-arm64@npm:0.14.5"
+  conditions: os=win32 & cpu=arm64
+  languageName: node
+  linkType: hard
+
 "esbuild@npm:0.13.12":
   version: 0.13.12
   resolution: "esbuild@npm:0.13.12"
@@ -17801,6 +17909,68 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild@npm:^0.14.1":
+  version: 0.14.5
+  resolution: "esbuild@npm:0.14.5"
+  dependencies:
+    esbuild-android-arm64: 0.14.5
+    esbuild-darwin-64: 0.14.5
+    esbuild-darwin-arm64: 0.14.5
+    esbuild-freebsd-64: 0.14.5
+    esbuild-freebsd-arm64: 0.14.5
+    esbuild-linux-32: 0.14.5
+    esbuild-linux-64: 0.14.5
+    esbuild-linux-arm: 0.14.5
+    esbuild-linux-arm64: 0.14.5
+    esbuild-linux-mips64le: 0.14.5
+    esbuild-linux-ppc64le: 0.14.5
+    esbuild-netbsd-64: 0.14.5
+    esbuild-openbsd-64: 0.14.5
+    esbuild-sunos-64: 0.14.5
+    esbuild-windows-32: 0.14.5
+    esbuild-windows-64: 0.14.5
+    esbuild-windows-arm64: 0.14.5
+  dependenciesMeta:
+    esbuild-android-arm64:
+      optional: true
+    esbuild-darwin-64:
+      optional: true
+    esbuild-darwin-arm64:
+      optional: true
+    esbuild-freebsd-64:
+      optional: true
+    esbuild-freebsd-arm64:
+      optional: true
+    esbuild-linux-32:
+      optional: true
+    esbuild-linux-64:
+      optional: true
+    esbuild-linux-arm:
+      optional: true
+    esbuild-linux-arm64:
+      optional: true
+    esbuild-linux-mips64le:
+      optional: true
+    esbuild-linux-ppc64le:
+      optional: true
+    esbuild-netbsd-64:
+      optional: true
+    esbuild-openbsd-64:
+      optional: true
+    esbuild-sunos-64:
+      optional: true
+    esbuild-windows-32:
+      optional: true
+    esbuild-windows-64:
+      optional: true
+    esbuild-windows-arm64:
+      optional: true
+  bin:
+    esbuild: bin/esbuild
+  checksum: 517ccbf91d580dfdd0610ff5a79837440dc29c440d341bf3a7a8dd2f6374ff249b5eb5cbfce6564ae4f14127d61e20bb47a593576a112a562c063d325ac6fa2e
+  languageName: node
+  linkType: hard
+
 "esbuild@npm:^0.8.12":
   version: 0.8.57
   resolution: "esbuild@npm:0.8.57"

Некоторые файлы не были показаны из-за большого количества измененных файлов