diff --git a/package.json b/package.json index 942d6dcd6ffafc..a57b37225146a0 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "@typescript-eslint/eslint-plugin": "^5.42.0", "@typescript-eslint/parser": "^5.42.0", "conventional-changelog-cli": "^2.2.2", - "esbuild": "^0.14.47", + "esbuild": "^0.15.9", "eslint": "^8.27.0", "eslint-define-config": "^1.11.0", "eslint-plugin-import": "^2.26.0", diff --git a/packages/plugin-react/src/index.ts b/packages/plugin-react/src/index.ts index 3617605afc686d..fe7b209c44ed12 100644 --- a/packages/plugin-react/src/index.ts +++ b/packages/plugin-react/src/index.ts @@ -1,7 +1,6 @@ -import path from 'node:path' import type { ParserOptions, TransformOptions, types as t } from '@babel/core' import * as babel from '@babel/core' -import { createFilter, normalizePath } from 'vite' +import { createFilter } from 'vite' import type { Plugin, PluginOption, ResolvedConfig } from 'vite' import MagicString from 'magic-string' import type { SourceMap } from 'magic-string' @@ -12,8 +11,6 @@ import { runtimeCode, runtimePublicPath } from './fast-refresh' -import { babelImportToRequire } from './jsx-runtime/babel-import-to-require' -import { restoreJSX } from './jsx-runtime/restore-jsx' export interface Options { include?: string | RegExp | Array @@ -40,11 +37,6 @@ export interface Options { * @default true */ jsxPure?: boolean - /** - * Toggles whether or not to throw an error if an XML namespaced tag name is used. - * @default true - */ - jsxThrowIfNamespace?: boolean /** * Babel configuration applied in both dev and prod. */ @@ -100,7 +92,6 @@ const prependReactImportCode = "import React from 'react'; " export default function viteReact(opts: Options = {}): PluginOption[] { // Provide default values for Rollup compat. let devBase = '/' - let resolvedCacheDir: string let filter = createFilter(opts.include, opts.exclude) let needHiresSourcemap = false let isProduction = true @@ -127,13 +118,30 @@ export default function viteReact(opts: Options = {}): PluginOption[] { const viteBabel: Plugin = { name: 'vite:react-babel', enforce: 'pre', - config() { + config(_, { mode }) { + // Copied from https://github.com/vitejs/vite/blob/4e9bdd4fb3654a9d43917e1cb682d3d2bad25115/packages/vite/src/node/config.ts#L488-L490 + const isProduction = + (process.env.NODE_ENV || process.env.VITE_USER_NODE_ENV || mode) === + 'production' + if (opts.jsxRuntime === 'classic') { return { esbuild: { logOverride: { 'this-is-undefined-in-esm': 'silent' - } + }, + jsx: 'transform', + jsxImportSource: opts.jsxImportSource, + jsxSideEffects: opts.jsxPure === false + } + } + } else { + return { + esbuild: { + jsxDev: !isProduction, + jsx: 'automatic', + jsxImportSource: opts.jsxImportSource, + jsxSideEffects: opts.jsxPure === false } } } @@ -141,7 +149,6 @@ export default function viteReact(opts: Options = {}): PluginOption[] { configResolved(config) { devBase = config.base projectRoot = config.root - resolvedCacheDir = normalizePath(path.resolve(config.cacheDir)) filter = createFilter(opts.include, opts.exclude, { resolve: projectRoot }) @@ -231,39 +238,7 @@ export default function viteReact(opts: Options = {}): PluginOption[] { let ast: t.File | null | undefined let prependReactImport = false if (!isProjectFile || isJSX) { - if (useAutomaticRuntime) { - // By reverse-compiling "React.createElement" calls into JSX, - // React elements provided by dependencies will also use the - // automatic runtime! - // Avoid parsing the optimized react-dom since it will never - // contain compiled JSX and it's a pretty big file (800kb). - const isOptimizedReactDom = - id.startsWith(resolvedCacheDir) && id.includes('/react-dom.js') - const [restoredAst, isCommonJS] = - !isProjectFile && !isJSX && !isOptimizedReactDom - ? await restoreJSX(babel, code, id) - : [null, false] - - if (isJSX || (ast = restoredAst)) { - plugins.push([ - await loadPlugin( - '@babel/plugin-transform-react-jsx' + - (isProduction ? '' : '-development') - ), - { - runtime: 'automatic', - importSource: opts.jsxImportSource, - pure: opts.jsxPure !== false, - throwIfNamespace: opts.jsxThrowIfNamespace - } - ]) - - // Avoid inserting `import` statements into CJS modules. - if (isCommonJS) { - plugins.push(babelImportToRequire) - } - } - } else if (isProjectFile) { + if (!useAutomaticRuntime && isProjectFile) { // These plugins are only needed for the classic runtime. if (!isProduction) { plugins.push( diff --git a/packages/plugin-react/src/jsx-runtime/babel-import-to-require.ts b/packages/plugin-react/src/jsx-runtime/babel-import-to-require.ts deleted file mode 100644 index cd6608221512c9..00000000000000 --- a/packages/plugin-react/src/jsx-runtime/babel-import-to-require.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type * as babelCore from '@babel/core' - -/** - * Replace this: - * - * import { jsx as _jsx } from "react/jsx-runtime" - * - * with this: - * - * var _jsx = require("react/jsx-runtime").jsx - */ -export function babelImportToRequire({ types: t }: typeof babelCore): { - visitor: babelCore.Visitor -} { - return { - visitor: { - ImportDeclaration(path) { - const decl = path.node - const spec = decl.specifiers[0] as babelCore.types.ImportSpecifier - - path.replaceWith( - t.variableDeclaration('var', [ - t.variableDeclarator( - spec.local, - t.memberExpression( - t.callExpression(t.identifier('require'), [decl.source]), - spec.imported - ) - ) - ]) - ) - } - } - } -} diff --git a/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.spec.ts b/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.spec.ts deleted file mode 100644 index 5590bfb9d7fa5f..00000000000000 --- a/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.spec.ts +++ /dev/null @@ -1,132 +0,0 @@ -import * as babel from '@babel/core' -import { describe, expect, it } from 'vitest' -import babelRestoreJSX from './babel-restore-jsx' - -function jsx(code: string) { - return babel.transform(code, { - parserOpts: { plugins: ['jsx'] }, - plugins: [babelRestoreJSX] - })?.code -} - -// Tests adapted from: https://github.com/flying-sheep/babel-plugin-transform-react-createelement-to-jsx/blob/63137b6/test/index.js -describe('babel-restore-jsx', () => { - it('should convert 1-argument calls', () => { - expect(jsx('React.createElement("h1")')).toMatchInlineSnapshot(`"

;"`) - expect(jsx('React.createElement(Foo)')).toMatchInlineSnapshot(`";"`) - expect(jsx('React.createElement(Foo.Bar)')).toMatchInlineSnapshot( - `";"` - ) - expect(jsx('React.createElement(Foo.Bar.Baz)')).toMatchInlineSnapshot( - `";"` - ) - }) - - it('should convert effective 1-argument calls (with null or undefined)', () => { - expect(jsx('React.createElement("h1", null)')).toMatchInlineSnapshot( - `"

;"` - ) - expect(jsx('React.createElement("h2", null, null)')).toMatchInlineSnapshot( - `"

;"` - ) - expect(jsx('React.createElement("h3", undefined)')).toMatchInlineSnapshot( - `"

;"` - ) - }) - - it('should handle props without children', () => { - expect(jsx('React.createElement("h1", {hi: there})')).toMatchInlineSnapshot( - `"

;"` - ) - expect( - jsx('React.createElement("h2", {"hi": there})') - ).toMatchInlineSnapshot(`"

;"`) - expect( - jsx('React.createElement("h3", {hi: "there"})') - ).toMatchInlineSnapshot(`"

;"`) - }) - - it('should handle spread props', () => { - expect(jsx('React.createElement("h1", props)')).toMatchInlineSnapshot( - `"

;"` - ) - expect(jsx('React.createElement("h1", getProps())')).toMatchInlineSnapshot( - `"

;"` - ) - }) - - it('should handle mixed props', () => { - expect( - jsx('React.createElement("h1", _extends({ hi: "there" }, props))') - ).toMatchInlineSnapshot(`"

;"`) - expect( - jsx('React.createElement("h1", _extends({}, props, { hi: "there" }))') - ).toMatchInlineSnapshot(`"

;"`) - expect( - jsx('React.createElement("h1", { ...props, hi: "there" })') - ).toMatchInlineSnapshot(`"

;"`) - }) - - it('should handle props and ignore “null”/“undefined” children', () => { - expect( - jsx('React.createElement("h1", {hi: there}, null, undefined)') - ).toMatchInlineSnapshot(`"

;"`) - }) - - it('should ignore “null”/“undefined” props and handle children', () => { - expect( - jsx('React.createElement("h1", null, "Header")') - ).toMatchInlineSnapshot(`"

Header

;"`) - //this can be created from e.g. '

Header{"harhar"}

', but i think there’s no downside to merging it - expect( - jsx('React.createElement("h2", null, "Header", "harhar")') - ).toMatchInlineSnapshot(`"

Headerharhar

;"`) - expect( - jsx('React.createElement("h3", null, React.createElement("i"))') - ).toMatchInlineSnapshot(`"

;"`) - expect( - jsx('React.createElement("h4", null, "a", React.createElement("b"), "c")') - ).toMatchInlineSnapshot(`"

ac

;"`) - }) - - it('should handle props and children', () => { - //we extensively tested props and children separately, so only sth. basic - expect( - jsx('React.createElement("h1", {hi: there}, "Header")') - ).toMatchInlineSnapshot(`"

Header

;"`) - }) - - it('should ignore intermingled “null”/“undefined” children', () => { - expect( - jsx('React.createElement("h1", null, null, "Header", undefined)') - ).toMatchInlineSnapshot(`"

Header

;"`) - }) - - it('should handle children in nested expressions', () => { - expect( - jsx( - 'React.createElement("h1", null, foo ? React.createElement("p") : null)' - ) - ).toMatchInlineSnapshot(`"

{foo ?

: null}

;"`) - }) - - it('should handle lowercase component names', () => { - expect(jsx('React.createElement(aaa)')).toMatchInlineSnapshot( - `"React.createElement(aaa);"` - ) - }) - - it('should not handle contains __self prop', () => { - expect( - jsx('React.createElement(Provider, { __self: this })') - ).toMatchInlineSnapshot('";"') - }) - - it('should not handle contains __source prop', () => { - expect( - jsx( - 'React.createElement(Provider, { __source: { fileName: _jsxFileName, lineNumber: 133 }})' - ) - ).toMatchInlineSnapshot('";"') - }) -}) diff --git a/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.ts b/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.ts deleted file mode 100644 index e5ee9ce454b555..00000000000000 --- a/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.ts +++ /dev/null @@ -1,232 +0,0 @@ -/** - * https://github.com/flying-sheep/babel-plugin-transform-react-createelement-to-jsx - * @license GNU General Public License v3.0 - */ -import type * as babel from '@babel/core' - -interface PluginOptions { - reactAlias: string -} - -/** - * Visitor factory for babel, converting React.createElement(...) to ... - * - * What we want to handle here is this CallExpression: - * - * React.createElement( - * type: StringLiteral|Identifier|MemberExpression, - * [props: ObjectExpression|Expression], - * [...children: StringLiteral|Expression] - * ) - * - * Any of those arguments might also be missing (undefined) and/or invalid. - */ -export default function ( - { types: t }: typeof babel, - { reactAlias = 'React' }: PluginOptions -): babel.PluginObj { - /** - * Get a `JSXElement` from a `CallExpression`. - * Returns `null` if this impossible. - */ - function getJSXNode(node: any): any { - if (!isReactCreateElement(node)) { - return null - } - - //nameNode and propsNode may be undefined, getJSX* need to handle that - const [nameNode, propsNode, ...childNodes] = node.arguments - - const name = getJSXName(nameNode) - if (name == null) { - return null //name is required - } - - const props = getJSXProps(propsNode) - if (props == null) { - return null //no props → [], invalid → null - } - - const children = getJSXChildren(childNodes) - if (children == null) { - return null //no children → [], invalid → null - } - - if ( - t.isJSXMemberExpression(name) && - t.isJSXIdentifier(name.object) && - name.object.name === reactAlias && - name.property.name === 'Fragment' - ) { - return t.jsxFragment( - t.jsxOpeningFragment(), - t.jsxClosingFragment(), - children - ) - } - - // self-closing tag if no children - const selfClosing = children.length === 0 - const startTag = t.jsxOpeningElement(name, props, selfClosing) - startTag.loc = node.loc - const endTag = selfClosing ? null : t.jsxClosingElement(name) - - return t.jsxElement(startTag, endTag, children, selfClosing) - } - - /** - * Get a JSXIdentifier or JSXMemberExpression from a Node of known type. - * Returns null if an unknown node type, null or undefined is passed. - */ - function getJSXName(node: any): any { - if (node == null) { - return null - } - - const name = getJSXIdentifier(node, true) - if (name != null) { - return name - } - - if (!t.isMemberExpression(node)) { - return null - } - const object = getJSXName(node.object) - const property = getJSXName(node.property) - if (object == null || property == null) { - return null - } - return t.jsxMemberExpression(object, property) - } - - /** - * Get an array of JSX(Spread)Attribute from a props ObjectExpression. - * Handles the _extends Expression babel creates from SpreadElement nodes. - * Returns null if a validation error occurs. - */ - function getJSXProps(node: any): any[] | null { - if (node == null || isNullLikeNode(node)) { - return [] - } - - if ( - t.isCallExpression(node) && - t.isIdentifier(node.callee, { name: '_extends' }) - ) { - const props: any[] = node.arguments.map(getJSXProps) - //if calling this recursively works, flatten. - if (props.every((prop) => prop != null)) { - return [].concat(...props) - } - } - - if (!t.isObjectExpression(node) && t.isExpression(node)) - return [t.jsxSpreadAttribute(node)] - - if (!isPlainObjectExpression(node)) { - return null - } - return node.properties - .map((prop: any) => - t.isObjectProperty(prop) - ? t.jsxAttribute( - getJSXIdentifier(prop.key)!, - getJSXAttributeValue(prop.value) - ) - : t.jsxSpreadAttribute(prop.argument) - ) - .filter((prop: any) => - t.isJSXIdentifier(prop.name) - ? prop.name.name !== '__self' && prop.name.name !== '__source' - : true - ) - } - - function getJSXChild(node: any) { - if (t.isStringLiteral(node)) { - return t.jsxText(node.value) - } - if (isReactCreateElement(node)) { - return getJSXNode(node) - } - if (t.isExpression(node)) { - return t.jsxExpressionContainer(node) - } - return null - } - - function getJSXChildren(nodes: any[]) { - const children = nodes - .filter((node) => !isNullLikeNode(node)) - .map(getJSXChild) - if (children.some((child) => child == null)) { - return null - } - return children - } - - function getJSXIdentifier(node: any, tag = false) { - //TODO: JSXNamespacedName - if (t.isIdentifier(node) && (!tag || node.name.match(/^[A-Z]/))) { - return t.jsxIdentifier(node.name) - } - if (t.isStringLiteral(node)) { - return t.jsxIdentifier(node.value) - } - return null - } - - function getJSXAttributeValue(node: any) { - if (t.isStringLiteral(node)) { - return node - } - if (t.isJSXElement(node)) { - return node - } - if (t.isExpression(node)) { - return t.jsxExpressionContainer(node) - } - return null - } - - /** - * Tests if a node is a CallExpression with callee `React.createElement` - */ - const isReactCreateElement = (node: any) => - t.isCallExpression(node) && - t.isMemberExpression(node.callee) && - t.isIdentifier(node.callee.object, { name: reactAlias }) && - t.isIdentifier(node.callee.property, { name: 'createElement' }) && - !node.callee.computed - - /** - * Tests if a node is `null` or `undefined` - */ - const isNullLikeNode = (node: any) => - t.isNullLiteral(node) || t.isIdentifier(node, { name: 'undefined' }) - - /** - * Tests if a node is an object expression with noncomputed, nonmethod attrs - */ - const isPlainObjectExpression = (node: any) => - t.isObjectExpression(node) && - node.properties.every( - (property) => - t.isSpreadElement(property) || - (t.isObjectProperty(property, { computed: false }) && - getJSXIdentifier(property.key) != null && - getJSXAttributeValue(property.value) != null) - ) - - return { - visitor: { - CallExpression(path) { - const node = getJSXNode(path.node) - if (node == null) { - return null - } - path.replaceWith(node) - } - } - } -} diff --git a/packages/plugin-react/src/jsx-runtime/restore-jsx.spec.ts b/packages/plugin-react/src/jsx-runtime/restore-jsx.spec.ts deleted file mode 100644 index 00ea39673ec415..00000000000000 --- a/packages/plugin-react/src/jsx-runtime/restore-jsx.spec.ts +++ /dev/null @@ -1,147 +0,0 @@ -import * as babel from '@babel/core' -import { describe, expect, it } from 'vitest' -import { parseReactAlias, restoreJSX } from './restore-jsx' - -describe('parseReactAlias', () => { - it('handles cjs require', () => { - expect(parseReactAlias(`const React = require("react")`)) - .toMatchInlineSnapshot(` - [ - "React", - true, - ] - `) - }) - - it('handles cjs require (minified)', () => { - expect(parseReactAlias(`var F=require('foo');var R=require('react')`)) - .toMatchInlineSnapshot(` - [ - "R", - true, - ] - `) - }) - - it('does not handle destructured cjs require', () => { - expect(parseReactAlias(`var {createElement} = require("react")`)) - .toMatchInlineSnapshot(` - [ - undefined, - false, - ] - `) - }) - - it('handles esm import', () => { - expect(parseReactAlias(`import React from 'react'`)).toMatchInlineSnapshot(` - [ - "React", - false, - ] - `) - }) - - it('handles esm import namespace', () => { - expect(parseReactAlias(`import * as React from "react"`)) - .toMatchInlineSnapshot(` - [ - "React", - false, - ] - `) - }) - - it('does not handle destructured esm import', () => { - expect(parseReactAlias(`import {createElement} from "react"`)) - .toMatchInlineSnapshot(` - [ - undefined, - false, - ] - `) - }) -}) - -async function jsx(sourceCode: string) { - const [ast] = await restoreJSX(babel, sourceCode, 'test.js') - if (ast == null) { - return ast - } - const { code } = await babel.transformFromAstAsync(ast, null, { - configFile: false - }) - return code -} -// jsx(`import React__default, { PureComponent, Component, forwardRef, memo, createElement } from 'react'; -// React__default.createElement(Foo)`) -// Tests adapted from: https://github.com/flying-sheep/babel-plugin-transform-react-createelement-to-jsx/blob/63137b6/test/index.js -describe('restore-jsx', () => { - it('should trans to ', async () => { - expect( - await jsx(`import React__default, { PureComponent, Component, forwardRef, memo, createElement } from 'react'; - React__default.createElement(foo)`) - ).toMatchInlineSnapshot(` - "import React__default, { PureComponent, Component, forwardRef, memo, createElement } from 'react'; - React__default.createElement(foo);" - `) - expect( - await jsx(`import React__default, { PureComponent, Component, forwardRef, memo, createElement } from 'react'; - React__default.createElement("h1")`) - ).toMatch(`

;`) - expect( - await jsx(`import React__default, { PureComponent, Component, forwardRef, memo, createElement } from 'react'; - React__default.createElement(Foo)`) - ).toMatch(`;`) - expect( - await jsx(`import React__default, { PureComponent, Component, forwardRef, memo, createElement } from 'react'; - React__default.createElement(Foo.Bar)`) - ).toMatch(`;`) - expect( - await jsx(`import React__default, { PureComponent, Component, forwardRef, memo, createElement } from 'react'; - React__default.createElement(Foo.Bar.Baz)`) - ).toMatch(`;`) - }) - - it('should handle props', async () => { - expect( - await jsx(`import React__default, { PureComponent, Component, forwardRef, memo, createElement } from 'react'; - React__default.createElement(foo, {hi: there})`) - ).toMatchInlineSnapshot(` - "import React__default, { PureComponent, Component, forwardRef, memo, createElement } from 'react'; - React__default.createElement(foo, { - hi: there - });" - `) - expect( - await jsx(`import React__default, { PureComponent, Component, forwardRef, memo, createElement } from 'react'; - React__default.createElement("h1", {hi: there})`) - ).toMatch(`

;`) - expect( - await jsx(`import React__default, { PureComponent, Component, forwardRef, memo, createElement } from 'react'; - React__default.createElement(Foo, {hi: there})`) - ).toMatch(`;`) - }) - - it('should handle Fragment', async () => { - expect( - await jsx(`import R, { Fragment } from 'react'; - R.createElement(Fragment) - `) - ).toMatchInlineSnapshot(` - "import R, { Fragment } from 'react'; - ;" - `) - }) - - it('should handle Fragment alias', async () => { - expect( - await jsx(`import RA, { Fragment as F } from 'react'; - RA.createElement(F, null, RA.createElement(RA.Fragment)) - `) - ).toMatchInlineSnapshot(` - "import RA, { Fragment as F } from 'react'; - <>;" - `) - }) -}) diff --git a/packages/plugin-react/src/jsx-runtime/restore-jsx.ts b/packages/plugin-react/src/jsx-runtime/restore-jsx.ts deleted file mode 100644 index ddc3c1530e0d9f..00000000000000 --- a/packages/plugin-react/src/jsx-runtime/restore-jsx.ts +++ /dev/null @@ -1,74 +0,0 @@ -import type * as babelCore from '@babel/core' - -type RestoredJSX = [ - result: babelCore.types.File | null | undefined, - isCommonJS: boolean -] - -let babelRestoreJSX: Promise | undefined - -const jsxNotFound: RestoredJSX = [null, false] - -async function getBabelRestoreJSX() { - if (!babelRestoreJSX) - babelRestoreJSX = import('./babel-restore-jsx').then((r) => { - const fn = r.default - if ('default' in fn) - // @ts-expect-error - return fn.default - return fn - }) - return babelRestoreJSX -} - -/** Restore JSX from `React.createElement` calls */ -export async function restoreJSX( - babel: typeof babelCore, - code: string, - filename: string -): Promise { - const [reactAlias, isCommonJS] = parseReactAlias(code) - - if (!reactAlias) { - return jsxNotFound - } - - const reactJsxRE = new RegExp( - `\\b${reactAlias}\\.(createElement|Fragment)\\b`, - 'g' - ) - - if (!reactJsxRE.test(code)) { - return jsxNotFound - } - - const result = await babel.transformAsync(code, { - babelrc: false, - configFile: false, - ast: true, - code: false, - filename, - parserOpts: { - plugins: ['jsx'] - }, - plugins: [[await getBabelRestoreJSX(), { reactAlias }]] - }) - - return [result?.ast, isCommonJS] -} - -export function parseReactAlias( - code: string -): [alias: string | undefined, isCommonJS: boolean] { - let match = code.match( - /\b(var|let|const)\s+([^=\{\s]+)\s*=\s*require\(["']react["']\)/ - ) - if (match) { - return [match[2], true] - } - match = code.match(/^import\s+(?:\*\s+as\s+)?(\w+).+?\bfrom\s*["']react["']/m) - if (match) { - return [match[1], false] - } - return [undefined, false] -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a48b5f5c09e7cc..ed473b103d5b8d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,7 +35,7 @@ importers: '@typescript-eslint/eslint-plugin': ^5.42.0 '@typescript-eslint/parser': ^5.42.0 conventional-changelog-cli: ^2.2.2 - esbuild: ^0.14.47 + esbuild: ^0.15.9 eslint: ^8.27.0 eslint-define-config: ^1.11.0 eslint-plugin-import: ^2.26.0 @@ -91,7 +91,7 @@ importers: '@typescript-eslint/eslint-plugin': 5.42.0_xnrifqqquo32u4dxm4cl6xdau4 '@typescript-eslint/parser': 5.42.0_hsmo2rtalirsvadpuxki35bq2i conventional-changelog-cli: 2.2.2 - esbuild: 0.14.47 + esbuild: 0.15.11 eslint: 8.27.0 eslint-define-config: 1.11.0 eslint-plugin-import: 2.26.0_zql2fvxzk4tmut73fmbaoimchq @@ -2000,7 +2000,7 @@ packages: dev: true /@esbuild/android-arm/0.15.11: - resolution: {integrity: sha512-PzMcQLazLBkwDEkrNPi9AbjFt6+3I7HKbiYF2XtWQ7wItrHvEOeO3T8Am434zAozWtVP7lrTue1bEfc2nYWeCA==} + resolution: {integrity: sha1-vdnD4JgYO9ypcHWqTD4BUu0+EO4=, tarball: '%40esbuild%2Fandroid-arm/-/android-arm-0.15.11.tgz'} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2009,7 +2009,7 @@ packages: optional: true /@esbuild/android-arm/0.15.9: - resolution: {integrity: sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==} + resolution: {integrity: sha1-fhIhYEq4jtUCHq10+ozKRAXh5DE=, tarball: '%40esbuild%2Fandroid-arm/-/android-arm-0.15.9.tgz'} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2018,7 +2018,7 @@ packages: optional: true /@esbuild/linux-loong64/0.15.11: - resolution: {integrity: sha512-geWp637tUhNmhL3Xgy4Bj703yXB9dqiLJe05lCUfjSFDrQf9C/8pArusyPUbUbPwlC/EAUjBw32sxuIl/11dZw==} + resolution: {integrity: sha1-L0+aEIPctPxlIztvWQA8QGq/MuU=, tarball: '%40esbuild%2Flinux-loong64/-/linux-loong64-0.15.11.tgz'} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2027,7 +2027,7 @@ packages: optional: true /@esbuild/linux-loong64/0.15.9: - resolution: {integrity: sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==} + resolution: {integrity: sha1-tlipe6vx9AeDNUr3A5uEw/38P8M=, tarball: '%40esbuild%2Flinux-loong64/-/linux-loong64-0.15.9.tgz'} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -4130,7 +4130,7 @@ packages: dev: true /errno/0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + resolution: {integrity: sha1-i7Ppx9Rjvkl2/4iPdrSAnrwugR8=} hasBin: true requiresBuild: true dependencies: @@ -4216,17 +4216,8 @@ packages: ext: 1.6.0 dev: false - /esbuild-android-64/0.14.47: - resolution: {integrity: sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /esbuild-android-64/0.14.50: - resolution: {integrity: sha512-H7iUEm7gUJHzidsBlFPGF6FTExazcgXL/46xxLo6i6bMtPim6ZmXyTccS8yOMpy6HAC6dPZ/JCQqrkkin69n6Q==} + resolution: {integrity: sha1-pG/ID6IAdpDmR2gNg3SDp1CjCX8=} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -4235,7 +4226,7 @@ packages: optional: true /esbuild-android-64/0.15.11: - resolution: {integrity: sha512-rrwoXEiuI1kaw4k475NJpexs8GfJqQUKcD08VR8sKHmuW9RUuTR2VxcupVvHdiGh9ihxL9m3lpqB1kju92Ialw==} + resolution: {integrity: sha1-UEAhKcPoW7BkNOISN0xfaT5MXwE=} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -4244,7 +4235,7 @@ packages: optional: true /esbuild-android-64/0.15.9: - resolution: {integrity: sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==} + resolution: {integrity: sha1-Sn6zIMqNOjBfFHkgYf2WFMzrt8A=} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -4252,17 +4243,8 @@ packages: dev: false optional: true - /esbuild-android-arm64/0.14.47: - resolution: {integrity: sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /esbuild-android-arm64/0.14.50: - resolution: {integrity: sha512-NFaoqEwa+OYfoYVpQWDMdKII7wZZkAjtJFo1WdnBeCYlYikvUhTnf2aPwPu5qEAw/ie1NYK0yn3cafwP+kP+OQ==} + resolution: {integrity: sha1-vdp4Ufp/X3cNb/CtWTqJRdOg/N0=} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -4271,7 +4253,7 @@ packages: optional: true /esbuild-android-arm64/0.15.11: - resolution: {integrity: sha512-/hDubOg7BHOhUUsT8KUIU7GfZm5bihqssvqK5PfO4apag7YuObZRZSzViyEKcFn2tPeHx7RKbSBXvAopSHDZJQ==} + resolution: {integrity: sha1-Sb7jUhjqLM8aDF8Yevd8HApd7nE=} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -4280,7 +4262,7 @@ packages: optional: true /esbuild-android-arm64/0.15.9: - resolution: {integrity: sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==} + resolution: {integrity: sha1-yUjlaG3yCFetNh7GfgcNQNfKuYU=} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -4288,17 +4270,8 @@ packages: dev: false optional: true - /esbuild-darwin-64/0.14.47: - resolution: {integrity: sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /esbuild-darwin-64/0.14.50: - resolution: {integrity: sha512-gDQsCvGnZiJv9cfdO48QqxkRV8oKAXgR2CGp7TdIpccwFdJMHf8hyIJhMW/05b/HJjET/26Us27Jx91BFfEVSA==} + resolution: {integrity: sha1-8FNUNfl2B2bzDbFKmR7lypTAIqQ=} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -4307,7 +4280,7 @@ packages: optional: true /esbuild-darwin-64/0.15.11: - resolution: {integrity: sha512-1DqHD0ms3AhiwkKnjRUzmiW7JnaJJr5FKrPiR7xuyMwnjDqvNWDdMq4rKSD9OC0piFNK6n0LghsglNMe2MwJtA==} + resolution: {integrity: sha1-iakMjPbwAprEFpv+3QEqBBLBV18=} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -4316,7 +4289,7 @@ packages: optional: true /esbuild-darwin-64/0.15.9: - resolution: {integrity: sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==} + resolution: {integrity: sha1-JfVk+ks5wc7ITcRrzlY0/bzh1eQ=} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -4324,17 +4297,8 @@ packages: dev: false optional: true - /esbuild-darwin-arm64/0.14.47: - resolution: {integrity: sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /esbuild-darwin-arm64/0.14.50: - resolution: {integrity: sha512-36nNs5OjKIb/Q50Sgp8+rYW/PqirRiFN0NFc9hEvgPzNJxeJedktXwzfJSln4EcRFRh5Vz4IlqFRScp+aiBBzA==} + resolution: {integrity: sha1-dqQaQOiUehWuYpcOntKFOIPEsWw=} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -4343,7 +4307,7 @@ packages: optional: true /esbuild-darwin-arm64/0.15.11: - resolution: {integrity: sha512-OMzhxSbS0lwwrW40HHjRCeVIJTURdXFA8c3GU30MlHKuPCcvWNUIKVucVBtNpJySXmbkQMDJdJNrXzNDyvoqvQ==} + resolution: {integrity: sha1-VW9DhcbegGzIETLde4rwD+nSkt8=} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -4352,7 +4316,7 @@ packages: optional: true /esbuild-darwin-arm64/0.15.9: - resolution: {integrity: sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==} + resolution: {integrity: sha1-YPrqPtldFSOVNqqI0Gu4KyknioY=} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -4360,17 +4324,8 @@ packages: dev: false optional: true - /esbuild-freebsd-64/0.14.47: - resolution: {integrity: sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /esbuild-freebsd-64/0.14.50: - resolution: {integrity: sha512-/1pHHCUem8e/R86/uR+4v5diI2CtBdiWKiqGuPa9b/0x3Nwdh5AOH7lj+8823C6uX1e0ufwkSLkS+aFZiBCWxA==} + resolution: {integrity: sha1-LtZjPBftQsIKG9aOgsS7x16k+1c=} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -4379,7 +4334,7 @@ packages: optional: true /esbuild-freebsd-64/0.15.11: - resolution: {integrity: sha512-8dKP26r0/Qyez8nTCwpq60QbuYKOeBygdgOAWGCRalunyeqWRoSZj9TQjPDnTTI9joxd3QYw3UhVZTKxO9QdRg==} + resolution: {integrity: sha1-/Yb9GztlNmBI81uZbZzfNUc4Tu4=} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -4388,7 +4343,7 @@ packages: optional: true /esbuild-freebsd-64/0.15.9: - resolution: {integrity: sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==} + resolution: {integrity: sha1-AznvHJCpGRdeeBZ4giRReJZleg4=} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -4396,17 +4351,8 @@ packages: dev: false optional: true - /esbuild-freebsd-arm64/0.14.47: - resolution: {integrity: sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /esbuild-freebsd-arm64/0.14.50: - resolution: {integrity: sha512-iKwUVMQztnPZe5pUYHdMkRc9aSpvoV1mkuHlCoPtxZA3V+Kg/ptpzkcSY+fKd0kuom+l6Rc93k0UPVkP7xoqrw==} + resolution: {integrity: sha1-yxFfTNr+nNvliHW6SC/MxU0yqkM=} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -4415,7 +4361,7 @@ packages: optional: true /esbuild-freebsd-arm64/0.15.11: - resolution: {integrity: sha512-aSGiODiukLGGnSg/O9+cGO2QxEacrdCtCawehkWYTt5VX1ni2b9KoxpHCT9h9Y6wGqNHmXFnB47RRJ8BIqZgmQ==} + resolution: {integrity: sha1-00a8rP6XeevBoR7awb3t7/bdo7E=} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -4424,7 +4370,7 @@ packages: optional: true /esbuild-freebsd-arm64/0.15.9: - resolution: {integrity: sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==} + resolution: {integrity: sha1-Mqv8C+OuPdOOWoapvq27z1kvG1c=} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -4432,17 +4378,8 @@ packages: dev: false optional: true - /esbuild-linux-32/0.14.47: - resolution: {integrity: sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-32/0.14.50: - resolution: {integrity: sha512-sWUwvf3uz7dFOpLzYuih+WQ7dRycrBWHCdoXJ4I4XdMxEHCECd8b7a9N9u7FzT6XR2gHPk9EzvchQUtiEMRwqw==} + resolution: {integrity: sha1-/itySZTc8dTkjcSDL/AIrX0AvP0=} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -4451,7 +4388,7 @@ packages: optional: true /esbuild-linux-32/0.15.11: - resolution: {integrity: sha512-lsrAfdyJBGx+6aHIQmgqUonEzKYeBnyfJPkT6N2dOf1RoXYYV1BkWB6G02tjsrz1d5wZzaTc3cF+TKmuTo/ZwA==} + resolution: {integrity: sha1-ZLUOd0v3Wvfcxqc61Qny6wrESHs=} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -4460,7 +4397,7 @@ packages: optional: true /esbuild-linux-32/0.15.9: - resolution: {integrity: sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==} + resolution: {integrity: sha1-k1gTSKTaftKym8VTnyYFrX/O53s=} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -4468,17 +4405,8 @@ packages: dev: false optional: true - /esbuild-linux-64/0.14.47: - resolution: {integrity: sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-64/0.14.50: - resolution: {integrity: sha512-u0PQxPhaeI629t4Y3EEcQ0wmWG+tC/LpP2K7yDFvwuPq0jSQ8SIN+ARNYfRjGW15O2we3XJvklbGV0wRuUCPig==} + resolution: {integrity: sha1-eFGrUVHflQGiGHvUkJxZStIytiM=} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -4487,7 +4415,7 @@ packages: optional: true /esbuild-linux-64/0.15.11: - resolution: {integrity: sha512-Y2Rh+PcyVhQqXKBTacPCltINN3uIw2xC+dsvLANJ1SpK5NJUtxv8+rqWpjmBgaNWKQT1/uGpMmA9olALy9PLVA==} + resolution: {integrity: sha1-+6Oni5V2l3KGP49twxarylXPhBY=} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -4496,7 +4424,7 @@ packages: optional: true /esbuild-linux-64/0.15.9: - resolution: {integrity: sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==} + resolution: {integrity: sha1-DRceeUbJXQ0+1IJgJq8sVjLX3MQ=} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -4504,17 +4432,8 @@ packages: dev: false optional: true - /esbuild-linux-arm/0.14.47: - resolution: {integrity: sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-arm/0.14.50: - resolution: {integrity: sha512-VALZq13bhmFJYFE/mLEb+9A0w5vo8z+YDVOWeaf9vOTrSC31RohRIwtxXBnVJ7YKLYfEMzcgFYf+OFln3Y0cWg==} + resolution: {integrity: sha1-bXqMBxIJGww6Zo3V2LXJJK266xI=} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -4523,7 +4442,7 @@ packages: optional: true /esbuild-linux-arm/0.15.11: - resolution: {integrity: sha512-TJllTVk5aSyqPFvvcHTvf6Wu1ZKhWpJ/qNmZO8LL/XeB+LXCclm7HQHNEIz6MT7IX8PmlC1BZYrOiw2sXSB95A==} + resolution: {integrity: sha1-eCTSAJmXeqZxAWx956UDjJhwAQ8=} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -4532,7 +4451,7 @@ packages: optional: true /esbuild-linux-arm/0.15.9: - resolution: {integrity: sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==} + resolution: {integrity: sha1-3Ols2Be8c3b2rzlnZJxKsfL3lQY=} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -4540,17 +4459,8 @@ packages: dev: false optional: true - /esbuild-linux-arm64/0.14.47: - resolution: {integrity: sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-arm64/0.14.50: - resolution: {integrity: sha512-ZyfoNgsTftD7Rp5S7La5auomKdNeB3Ck+kSKXC4pp96VnHyYGjHHXWIlcbH8i+efRn9brszo1/Thl1qn8RqmhQ==} + resolution: {integrity: sha1-dqdq/vSEoFEvH7vMdi7dcF3uiJI=} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -4559,7 +4469,7 @@ packages: optional: true /esbuild-linux-arm64/0.15.11: - resolution: {integrity: sha512-uhcXiTwTmD4OpxJu3xC5TzAAw6Wzf9O1XGWL448EE9bqGjgV1j+oK3lIHAfsHnuIn8K4nDW8yjX0Sv5S++oRuw==} + resolution: {integrity: sha1-wMsxmA7uBmv9OaRZNmCg7OvpJss=} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -4568,7 +4478,7 @@ packages: optional: true /esbuild-linux-arm64/0.15.9: - resolution: {integrity: sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==} + resolution: {integrity: sha1-mDh5Wjcgy+c207wgYhvTZurCLyQ=} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -4576,17 +4486,8 @@ packages: dev: false optional: true - /esbuild-linux-mips64le/0.14.47: - resolution: {integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-mips64le/0.14.50: - resolution: {integrity: sha512-ygo31Vxn/WrmjKCHkBoutOlFG5yM9J2UhzHb0oWD9O61dGg+Hzjz9hjf5cmM7FBhAzdpOdEWHIrVOg2YAi6rTw==} + resolution: {integrity: sha1-Q0JpCcGITF3GtAdlZzoIp+wdIGQ=} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -4595,7 +4496,7 @@ packages: optional: true /esbuild-linux-mips64le/0.15.11: - resolution: {integrity: sha512-WD61y/R1M4BLe4gxXRypoQ0Ci+Vjf714QYzcPNkiYv5I8K8WDz2ZR8Bm6cqKxd6rD+e/rZgPDbhQ9PCf7TMHmA==} + resolution: {integrity: sha1-EGJzMckBZOVTQp7SXgJRhLukhbY=} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -4604,7 +4505,7 @@ packages: optional: true /esbuild-linux-mips64le/0.15.9: - resolution: {integrity: sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==} + resolution: {integrity: sha1-AzWgc55hqpfLm0oBjj+s/Mqc3P0=} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -4612,17 +4513,8 @@ packages: dev: false optional: true - /esbuild-linux-ppc64le/0.14.47: - resolution: {integrity: sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-ppc64le/0.14.50: - resolution: {integrity: sha512-xWCKU5UaiTUT6Wz/O7GKP9KWdfbsb7vhfgQzRfX4ahh5NZV4ozZ4+SdzYG8WxetsLy84UzLX3Pi++xpVn1OkFQ==} + resolution: {integrity: sha1-x1TqPaHdGAxum2tQjcGM6YPZKxE=} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -4631,7 +4523,7 @@ packages: optional: true /esbuild-linux-ppc64le/0.15.11: - resolution: {integrity: sha512-JVleZS9oPVLTlBhPTWgOwxFWU/wMUdlBwTbGA4GF8c38sLbS13cupj+C8bLq929jU7EMWry4SaL+tKGIaTlqKg==} + resolution: {integrity: sha1-vkJnmjalJGuJP8i4mBNeustaChQ=} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -4640,7 +4532,7 @@ packages: optional: true /esbuild-linux-ppc64le/0.15.9: - resolution: {integrity: sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==} + resolution: {integrity: sha1-GEgq+5W4pwXi2gpZ1xMb/yISgfk=} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -4648,17 +4540,8 @@ packages: dev: false optional: true - /esbuild-linux-riscv64/0.14.47: - resolution: {integrity: sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-riscv64/0.14.50: - resolution: {integrity: sha512-0+dsneSEihZTopoO9B6Z6K4j3uI7EdxBP7YSF5rTwUgCID+wHD3vM1gGT0m+pjCW+NOacU9kH/WE9N686FHAJg==} + resolution: {integrity: sha1-87LdPEwrkb8ZHTuYqYGciqb1rX8=} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -4667,7 +4550,7 @@ packages: optional: true /esbuild-linux-riscv64/0.15.11: - resolution: {integrity: sha512-9aLIalZ2HFHIOZpmVU11sEAS9F8TnHw49daEjcgMpBXHFF57VuT9f9/9LKJhw781Gda0P9jDkuCWJ0tFbErvJw==} + resolution: {integrity: sha1-OsLzKOPbc8v/gzralDFNjnlQPlQ=} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -4676,7 +4559,7 @@ packages: optional: true /esbuild-linux-riscv64/0.15.9: - resolution: {integrity: sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==} + resolution: {integrity: sha1-A7b5cIJywRcAa5zhya6Kq5G1pbY=} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -4684,17 +4567,8 @@ packages: dev: false optional: true - /esbuild-linux-s390x/0.14.47: - resolution: {integrity: sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-s390x/0.14.50: - resolution: {integrity: sha512-tVjqcu8o0P9H4StwbIhL1sQYm5mWATlodKB6dpEZFkcyTI8kfIGWiWcrGmkNGH2i1kBUOsdlBafPxR3nzp3TDA==} + resolution: {integrity: sha1-PfvEV4sqgZlcqrt53ytijqhqU5A=} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -4703,7 +4577,7 @@ packages: optional: true /esbuild-linux-s390x/0.15.11: - resolution: {integrity: sha512-sZHtiXXOKsLI3XGBGoYO4qKBzJlb8xNsWmvFiwFMHFzA4AXgDP1KDp7Dawe9C2pavTRBDvl+Ok4n/DHQ59oaTg==} + resolution: {integrity: sha1-53Tg3wYbaEfYZ4O/PIxDAKcuA60=} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -4712,7 +4586,7 @@ packages: optional: true /esbuild-linux-s390x/0.15.9: - resolution: {integrity: sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==} + resolution: {integrity: sha1-ZftkViPVdXgPFV8O5Sk15i+cyk8=} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -4720,17 +4594,8 @@ packages: dev: false optional: true - /esbuild-netbsd-64/0.14.47: - resolution: {integrity: sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /esbuild-netbsd-64/0.14.50: - resolution: {integrity: sha512-0R/glfqAQ2q6MHDf7YJw/TulibugjizBxyPvZIcorH0Mb7vSimdHy0XF5uCba5CKt+r4wjax1mvO9lZ4jiAhEg==} + resolution: {integrity: sha1-F9v1HqpI2YPnlLWI0ZVBVBDvjIU=} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -4739,7 +4604,7 @@ packages: optional: true /esbuild-netbsd-64/0.15.11: - resolution: {integrity: sha512-hUC9yN06K9sg7ju4Vgu9ChAPdsEgtcrcLfyNT5IKwKyfpLvKUwCMZSdF+gRD3WpyZelgTQfJ+pDx5XFbXTlB0A==} + resolution: {integrity: sha1-VeJl+kSJ4/OWsWyB9vWhHWyiqaQ=} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -4748,7 +4613,7 @@ packages: optional: true /esbuild-netbsd-64/0.15.9: - resolution: {integrity: sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==} + resolution: {integrity: sha1-eJQpe7nhHz0vbzHv7NG+ThgfDVQ=} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -4756,17 +4621,8 @@ packages: dev: false optional: true - /esbuild-openbsd-64/0.14.47: - resolution: {integrity: sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /esbuild-openbsd-64/0.14.50: - resolution: {integrity: sha512-7PAtmrR5mDOFubXIkuxYQ4bdNS6XCK8AIIHUiZxq1kL8cFIH5731jPcXQ4JNy/wbj1C9sZ8rzD8BIM80Tqk29w==} + resolution: {integrity: sha1-z2saUMjPZ7ByWqpLzpdzl2FoxQ4=} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -4775,7 +4631,7 @@ packages: optional: true /esbuild-openbsd-64/0.15.11: - resolution: {integrity: sha512-0bBo9SQR4t66Wd91LGMAqmWorzO0TTzVjYiifwoFtel8luFeXuPThQnEm5ztN4g0fnvcp7AnUPPzS/Depf17wQ==} + resolution: {integrity: sha1-vAQQPM/YwvIkHhrdC1GglZVbc8Q=} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -4784,7 +4640,7 @@ packages: optional: true /esbuild-openbsd-64/0.15.9: - resolution: {integrity: sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==} + resolution: {integrity: sha1-D51Ma2dyrlDUkdaK1MwCgwDdp8A=} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -4792,17 +4648,8 @@ packages: dev: false optional: true - /esbuild-sunos-64/0.14.47: - resolution: {integrity: sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /esbuild-sunos-64/0.14.50: - resolution: {integrity: sha512-gBxNY/wyptvD7PkHIYcq7se6SQEXcSC8Y7mE0FJB+CGgssEWf6vBPfTTZ2b6BWKnmaP6P6qb7s/KRIV5T2PxsQ==} + resolution: {integrity: sha1-9wWuDdkUw7RdxDMZxPUyIWw9hB8=} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -4811,7 +4658,7 @@ packages: optional: true /esbuild-sunos-64/0.15.11: - resolution: {integrity: sha512-EuBdTGlsMTjEl1sQnBX2jfygy7iR6CKfvOzi+gEOfhDqbHXsmY1dcpbVtcwHAg9/2yUZSfMJHMAgf1z8M4yyyw==} + resolution: {integrity: sha1-zNWAMF0x/eB7XDhtp5yUKq8GkBM=} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -4820,7 +4667,7 @@ packages: optional: true /esbuild-sunos-64/0.15.9: - resolution: {integrity: sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==} + resolution: {integrity: sha1-wyt85XSwj4FN6BDOfB40uEN2gSY=} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -4828,17 +4675,8 @@ packages: dev: false optional: true - /esbuild-windows-32/0.14.47: - resolution: {integrity: sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /esbuild-windows-32/0.14.50: - resolution: {integrity: sha512-MOOe6J9cqe/iW1qbIVYSAqzJFh0p2LBLhVUIWdMVnNUNjvg2/4QNX4oT4IzgDeldU+Bym9/Tn6+DxvUHJXL5Zw==} + resolution: {integrity: sha1-Y2SQWpnB5sHi/nv8zr2VgTGxzWw=} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -4847,7 +4685,7 @@ packages: optional: true /esbuild-windows-32/0.15.11: - resolution: {integrity: sha512-O0/Wo1Wk6dc0rZSxkvGpmTNIycEznHmkObTFz2VHBhjPsO4ZpCgfGxNkCpz4AdAIeMczpTXt/8d5vdJNKEGC+Q==} + resolution: {integrity: sha1-QP4dSPmyCnb221EJqq8VEa7VjHE=} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -4856,7 +4694,7 @@ packages: optional: true /esbuild-windows-32/0.15.9: - resolution: {integrity: sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==} + resolution: {integrity: sha1-N6j3z8zbIXfNRmE6Gh4fy0GdNt8=} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -4864,17 +4702,8 @@ packages: dev: false optional: true - /esbuild-windows-64/0.14.47: - resolution: {integrity: sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /esbuild-windows-64/0.14.50: - resolution: {integrity: sha512-r/qE5Ex3w1jjGv/JlpPoWB365ldkppUlnizhMxJgojp907ZF1PgLTuW207kgzZcSCXyquL9qJkMsY+MRtaZ5yQ==} + resolution: {integrity: sha1-VmA8tjZ+MNFAmN63feaqGNdt2Js=} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -4883,7 +4712,7 @@ packages: optional: true /esbuild-windows-64/0.15.11: - resolution: {integrity: sha512-x977Q4HhNjnHx00b4XLAnTtj5vfbdEvkxaQwC1Zh5AN8g5EX+izgZ6e5QgqJgpzyRNJqh4hkgIJF1pyy1be0mQ==} + resolution: {integrity: sha1-gMWLHvL/Awx446BuepIndsxMtoc=} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -4892,7 +4721,7 @@ packages: optional: true /esbuild-windows-64/0.15.9: - resolution: {integrity: sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==} + resolution: {integrity: sha1-X+Hnb8E91/Ug/r7K6hELbxZJx7I=} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -4900,17 +4729,8 @@ packages: dev: false optional: true - /esbuild-windows-arm64/0.14.47: - resolution: {integrity: sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /esbuild-windows-arm64/0.14.50: - resolution: {integrity: sha512-EMS4lQnsIe12ZyAinOINx7eq2mjpDdhGZZWDwPZE/yUTN9cnc2Ze/xUTYIAyaJqrqQda3LnDpADKpvLvol6ENQ==} + resolution: {integrity: sha1-593eapcZQFGlpKwF9PWQDpIqfqU=} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -4919,7 +4739,7 @@ packages: optional: true /esbuild-windows-arm64/0.15.11: - resolution: {integrity: sha512-VwUHFACuBahrvntdcMKZteUZ9HaYrBRODoKe4tIWxguQRvvYoYb7iu5LrcRS/FQx8KPZNaa72zuqwVtHeXsITw==} + resolution: {integrity: sha1-AYYkAjtcPwzKM0zJn173E005YzM=} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -4928,7 +4748,7 @@ packages: optional: true /esbuild-windows-arm64/0.15.9: - resolution: {integrity: sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==} + resolution: {integrity: sha1-mFBEKPe6fSz8EZQL5o7hE5Fz/c4=} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -4936,36 +4756,8 @@ packages: dev: false optional: true - /esbuild/0.14.47: - resolution: {integrity: sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - esbuild-android-64: 0.14.47 - esbuild-android-arm64: 0.14.47 - esbuild-darwin-64: 0.14.47 - esbuild-darwin-arm64: 0.14.47 - esbuild-freebsd-64: 0.14.47 - esbuild-freebsd-arm64: 0.14.47 - esbuild-linux-32: 0.14.47 - esbuild-linux-64: 0.14.47 - esbuild-linux-arm: 0.14.47 - esbuild-linux-arm64: 0.14.47 - esbuild-linux-mips64le: 0.14.47 - esbuild-linux-ppc64le: 0.14.47 - esbuild-linux-riscv64: 0.14.47 - esbuild-linux-s390x: 0.14.47 - esbuild-netbsd-64: 0.14.47 - esbuild-openbsd-64: 0.14.47 - esbuild-sunos-64: 0.14.47 - esbuild-windows-32: 0.14.47 - esbuild-windows-64: 0.14.47 - esbuild-windows-arm64: 0.14.47 - dev: true - /esbuild/0.14.50: - resolution: {integrity: sha512-SbC3k35Ih2IC6trhbMYW7hYeGdjPKf9atTKwBUHqMCYFZZ9z8zhuvfnZihsnJypl74FjiAKjBRqFkBkAd0rS/w==} + resolution: {integrity: sha1-emZTksjflL9uGuHpmZZqXuYsbLw=} engines: {node: '>=12'} hasBin: true requiresBuild: true @@ -4993,7 +4785,7 @@ packages: dev: true /esbuild/0.15.11: - resolution: {integrity: sha512-OgHGuhlfZ//mToxjte1D5iiiQgWfJ2GByVMwEC/IuoXsBGkuyK1+KrjYu0laSpnN/L1UmLUCv0s25vObdc1bVg==} + resolution: {integrity: sha1-Uk1IYSqap+3BdTyDRZy2/K4Mtm4=} engines: {node: '>=12'} hasBin: true requiresBuild: true @@ -5575,7 +5367,7 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + resolution: {integrity: sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -5957,7 +5749,7 @@ packages: dev: true /image-size/0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + resolution: {integrity: sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=} engines: {node: '>=0.10.0'} hasBin: true requiresBuild: true @@ -6572,7 +6364,7 @@ packages: sourcemap-codec: 1.4.8 /make-dir/2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + resolution: {integrity: sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=} engines: {node: '>=6'} requiresBuild: true dependencies: @@ -6854,7 +6646,7 @@ packages: dev: true /needle/3.1.0: - resolution: {integrity: sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==} + resolution: {integrity: sha1-O/XNCQwo6xVkQYGrZpngJ71sU8k=} engines: {node: '>= 4.4.x'} hasBin: true requiresBuild: true @@ -8885,7 +8677,7 @@ packages: dev: true /uglify-js/3.16.1: - resolution: {integrity: sha512-X5BGTIDH8U6IQ1TIRP62YC36k+ULAa1d59BxlWvPUJ1NkW5L3FwcGfEzuVvGmhJFBu0YJ5Ge25tmRISqCmLiRQ==} + resolution: {integrity: sha1-Dn7JKLPQseHZUrzmNMOE/VY3cxc=} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true