Enable import assertion syntax parsing (#33750)
## Feature Enable import assertion syntax parsing for ecmascript/typescript. Since webpack has already supported it, enable import assertion parsing and leave them to webpack to handle #### Upgration * tooling: `@swc/core`, `@swc/cli`, prettier to support importAssertion related flags * typescript related: `typescript` >= 4.5 * babel related: `@babel/plugin-syntax-import-assertions` * lint parser: `@typescript-eslint/parser` Co-authored-by: JJ Kasper <22380829+ijjk@users.noreply.github.com>
This commit is contained in:
parent
3dfb66fc19
commit
ff6b75027b
28 changed files with 341 additions and 171 deletions
|
@ -15,7 +15,7 @@
|
|||
"jsx": true
|
||||
},
|
||||
"babelOptions": {
|
||||
"presets": ["@babel/preset-env", "@babel/preset-react"],
|
||||
"presets": ["next/babel"],
|
||||
"caller": {
|
||||
// Eslint supports top level await when a parser for it is included. We enable the parser by default for Babel.
|
||||
"supportsTopLevelAwait": true
|
||||
|
|
10
examples/cms-tina/.tina/__generated__/types.ts
generated
10
examples/cms-tina/.tina/__generated__/types.ts
generated
|
@ -6,10 +6,12 @@ export type InputMaybe<T> = Maybe<T>
|
|||
export type Exact<T extends { [key: string]: unknown }> = {
|
||||
[K in keyof T]: T[K]
|
||||
}
|
||||
export type MakeOptional<T, K extends keyof T> = Omit<T, K> &
|
||||
{ [SubKey in K]?: Maybe<T[SubKey]> }
|
||||
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> &
|
||||
{ [SubKey in K]: Maybe<T[SubKey]> }
|
||||
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & {
|
||||
[SubKey in K]?: Maybe<T[SubKey]>
|
||||
}
|
||||
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & {
|
||||
[SubKey in K]: Maybe<T[SubKey]>
|
||||
}
|
||||
/** All built-in and custom scalars, mapped to their actual values */
|
||||
export type Scalars = {
|
||||
ID: string
|
||||
|
|
|
@ -139,7 +139,7 @@
|
|||
"postcss-short-size": "4.0.0",
|
||||
"postcss-trolling": "0.1.7",
|
||||
"pre-commit": "1.2.2",
|
||||
"prettier": "2.3.2",
|
||||
"prettier": "2.5.1",
|
||||
"pretty-bytes": "5.3.0",
|
||||
"pretty-ms": "7.0.0",
|
||||
"random-seed": "0.3.0",
|
||||
|
@ -165,7 +165,7 @@
|
|||
"tree-kill": "1.2.2",
|
||||
"tsec": "0.2.1",
|
||||
"turbo": "1.0.28",
|
||||
"typescript": "4.4.3",
|
||||
"typescript": "4.5.5",
|
||||
"wait-port": "0.2.2",
|
||||
"web-streams-polyfill": "2.1.1",
|
||||
"webpack": "link:./node_modules/webpack5",
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
"dependencies": {
|
||||
"@next/eslint-plugin-next": "12.1.1-canary.6",
|
||||
"@rushstack/eslint-patch": "1.0.8",
|
||||
"@typescript-eslint/parser": "5.0.0",
|
||||
"@typescript-eslint/parser": "5.10.1",
|
||||
"eslint-import-resolver-node": "0.3.4",
|
||||
"eslint-import-resolver-typescript": "2.4.0",
|
||||
"eslint-plugin-import": "2.25.2",
|
||||
|
|
|
@ -158,6 +158,7 @@ export default (
|
|||
},
|
||||
],
|
||||
require('next/dist/compiled/babel/plugin-syntax-dynamic-import'),
|
||||
require('next/dist/compiled/babel/plugin-syntax-import-assertions'),
|
||||
require('./plugins/react-loadable-plugin'),
|
||||
[
|
||||
require('next/dist/compiled/babel/plugin-proposal-class-properties'),
|
||||
|
|
|
@ -18,6 +18,7 @@ export function getParserOptions({ filename, jsConfig, ...rest }) {
|
|||
decorators: enableDecorators,
|
||||
// Exclude regular TypeScript files from React transformation to prevent e.g. generic parameters and angle-bracket type assertion from being interpreted as JSX tags.
|
||||
[isTypeScript ? 'tsx' : 'jsx']: isTSFile ? false : true,
|
||||
importAssertions: true,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -48,7 +49,9 @@ function getBaseSWCOptions({
|
|||
}
|
||||
: {}),
|
||||
parser: parserConfig,
|
||||
|
||||
experimental: {
|
||||
keepImportAssertions: true,
|
||||
},
|
||||
transform: {
|
||||
// Enables https://github.com/swc-project/swc/blob/0359deb4841be743d73db4536d4a22ac797d7f65/crates/swc_ecma_ext_transforms/src/jest.rs
|
||||
...(jest
|
||||
|
|
|
@ -40,6 +40,10 @@ function generator() {
|
|||
return require('@babel/generator')
|
||||
}
|
||||
|
||||
function parser() {
|
||||
return require('@babel/parser')
|
||||
}
|
||||
|
||||
function eslintParser() {
|
||||
return require('next/dist/compiled/babel-packages').eslintParser()
|
||||
}
|
||||
|
@ -68,6 +72,10 @@ function pluginSyntaxDynamicImport() {
|
|||
return require('next/dist/compiled/babel-packages').pluginSyntaxDynamicImport()
|
||||
}
|
||||
|
||||
function pluginSyntaxImportAssertions() {
|
||||
return require('next/dist/compiled/babel-packages').pluginSyntaxImportAssertions()
|
||||
}
|
||||
|
||||
function pluginSyntaxJsx() {
|
||||
return require('next/dist/compiled/babel-packages').pluginSyntaxJsx()
|
||||
}
|
||||
|
@ -112,12 +120,14 @@ module.exports = {
|
|||
generator,
|
||||
traverse,
|
||||
eslintParser,
|
||||
parser,
|
||||
pluginProposalClassProperties,
|
||||
pluginProposalExportNamespaceFrom,
|
||||
pluginProposalNumericSeparator,
|
||||
pluginProposalObjectRestSpread,
|
||||
pluginSyntaxBigint,
|
||||
pluginSyntaxDynamicImport,
|
||||
pluginSyntaxImportAssertions,
|
||||
pluginSyntaxJsx,
|
||||
pluginTransformDefine,
|
||||
pluginTransformModulesCommonjs,
|
||||
|
|
|
@ -28,6 +28,10 @@ function pluginSyntaxDynamicImport() {
|
|||
return require('@babel/plugin-syntax-dynamic-import')
|
||||
}
|
||||
|
||||
function pluginSyntaxImportAssertions() {
|
||||
return require('@babel/plugin-syntax-import-assertions')
|
||||
}
|
||||
|
||||
function pluginSyntaxJsx() {
|
||||
return require('@babel/plugin-syntax-jsx')
|
||||
}
|
||||
|
@ -68,6 +72,7 @@ module.exports = {
|
|||
pluginProposalObjectRestSpread,
|
||||
pluginSyntaxBigint,
|
||||
pluginSyntaxDynamicImport,
|
||||
pluginSyntaxImportAssertions,
|
||||
pluginSyntaxJsx,
|
||||
pluginTransformDefine,
|
||||
pluginTransformModulesCommonjs,
|
||||
|
|
1
packages/next/bundles/babel/packages/parser.js
Normal file
1
packages/next/bundles/babel/packages/parser.js
Normal file
|
@ -0,0 +1 @@
|
|||
module.exports = require('./bundle').parser()
|
|
@ -0,0 +1 @@
|
|||
module.exports = require('./bundle').pluginSyntaxImportAssertions()
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
packages/next/compiled/babel/parser.js
Normal file
1
packages/next/compiled/babel/parser.js
Normal file
|
@ -0,0 +1 @@
|
|||
module.exports = require('./bundle').parser()
|
|
@ -0,0 +1 @@
|
|||
module.exports = require('./bundle').pluginSyntaxImportAssertions()
|
|
@ -97,7 +97,7 @@
|
|||
"@ampproject/toolbox-optimizer": "2.7.1-alpha.0",
|
||||
"@babel/code-frame": "7.12.11",
|
||||
"@babel/core": "7.15.0",
|
||||
"@babel/eslint-parser": "7.13.14",
|
||||
"@babel/eslint-parser": "7.15.0",
|
||||
"@babel/generator": "7.15.0",
|
||||
"@babel/plugin-proposal-class-properties": "7.14.5",
|
||||
"@babel/plugin-proposal-export-namespace-from": "7.14.5",
|
||||
|
@ -105,6 +105,7 @@
|
|||
"@babel/plugin-proposal-object-rest-spread": "7.14.7",
|
||||
"@babel/plugin-syntax-bigint": "7.8.3",
|
||||
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
||||
"@babel/plugin-syntax-import-assertions": "7.16.7",
|
||||
"@babel/plugin-syntax-jsx": "7.14.5",
|
||||
"@babel/plugin-transform-modules-commonjs": "7.15.0",
|
||||
"@babel/plugin-transform-runtime": "7.15.0",
|
||||
|
|
|
@ -11,7 +11,11 @@ module.exports = function (task) {
|
|||
task.plugin(
|
||||
'swc',
|
||||
{},
|
||||
function* (file, serverOrClient, { stripExtension, dev } = {}) {
|
||||
function* (
|
||||
file,
|
||||
serverOrClient,
|
||||
{ stripExtension, keepImportAssertions = false } = {}
|
||||
) {
|
||||
// Don't compile .d.ts
|
||||
if (file.base.endsWith('.d.ts')) return
|
||||
|
||||
|
@ -29,8 +33,12 @@ module.exports = function (task) {
|
|||
parser: {
|
||||
syntax: 'typescript',
|
||||
dynamicImport: true,
|
||||
importAssertions: true,
|
||||
tsx: file.base.endsWith('.tsx'),
|
||||
},
|
||||
experimental: {
|
||||
keepImportAssertions,
|
||||
},
|
||||
transform: {
|
||||
react: {
|
||||
pragma: 'React.createElement',
|
||||
|
@ -59,8 +67,12 @@ module.exports = function (task) {
|
|||
parser: {
|
||||
syntax: 'typescript',
|
||||
dynamicImport: true,
|
||||
importAssertions: true,
|
||||
tsx: file.base.endsWith('.tsx'),
|
||||
},
|
||||
experimental: {
|
||||
keepImportAssertions,
|
||||
},
|
||||
transform: {
|
||||
react: {
|
||||
pragma: 'React.createElement',
|
||||
|
@ -82,6 +94,7 @@ module.exports = function (task) {
|
|||
const options = {
|
||||
filename: path.join(file.dir, file.base),
|
||||
sourceMaps: true,
|
||||
inlineSourcesContent: false,
|
||||
sourceFileName: path.relative(distFilePath, fullFilePath),
|
||||
|
||||
...swcOptions,
|
||||
|
|
|
@ -781,6 +781,7 @@ const babelCorePackages = {
|
|||
'@babel/traverse': 'next/dist/compiled/babel/traverse',
|
||||
'@babel/types': 'next/dist/compiled/babel/types',
|
||||
'@babel/core': 'next/dist/compiled/babel/core',
|
||||
'@babel/parser': 'next/dist/compiled/babel/parser',
|
||||
'@babel/core/lib/config': 'next/dist/compiled/babel/core-lib-config',
|
||||
'@babel/core/lib/transformation/normalize-file':
|
||||
'next/dist/compiled/babel/core-lib-normalize-config',
|
||||
|
@ -815,6 +816,20 @@ export async function ncc_babel_bundle(task, opts) {
|
|||
|
||||
// eslint-disable-next-line camelcase
|
||||
export async function ncc_babel_bundle_packages(task, opts) {
|
||||
const eslintParseFile = join(
|
||||
dirname(require.resolve('@babel/eslint-parser')),
|
||||
'./parse.cjs'
|
||||
)
|
||||
const content = fs.readFileSync(eslintParseFile, 'utf-8')
|
||||
// Let parser.cjs require @babel/parser directly
|
||||
const replacedContent = content
|
||||
.replace(
|
||||
`const babelParser = require((`,
|
||||
`function noop(){};\nconst babelParser = require('@babel/parser');noop((`
|
||||
)
|
||||
.replace(/require.resolve/g, 'noop')
|
||||
await fs.writeFile(eslintParseFile, replacedContent)
|
||||
|
||||
await task
|
||||
.source(opts.src || 'bundles/babel/packages-bundle.js')
|
||||
.ncc({
|
||||
|
@ -1810,28 +1825,28 @@ export async function nextbuildstatic(task, opts) {
|
|||
export async function pages_app(task, opts) {
|
||||
await task
|
||||
.source('pages/_app.tsx')
|
||||
.swc('client', { dev: opts.dev })
|
||||
.swc('client', { dev: opts.dev, keepImportAssertions: true })
|
||||
.target('dist/pages')
|
||||
}
|
||||
|
||||
export async function pages_error(task, opts) {
|
||||
await task
|
||||
.source('pages/_error.tsx')
|
||||
.swc('client', { dev: opts.dev })
|
||||
.swc('client', { dev: opts.dev, keepImportAssertions: true })
|
||||
.target('dist/pages')
|
||||
}
|
||||
|
||||
export async function pages_document(task, opts) {
|
||||
await task
|
||||
.source('pages/_document.tsx')
|
||||
.swc('server', { dev: opts.dev })
|
||||
.swc('server', { dev: opts.dev, keepImportAssertions: true })
|
||||
.target('dist/pages')
|
||||
}
|
||||
|
||||
export async function pages_document_server(task, opts) {
|
||||
await task
|
||||
.source('pages/_document-concurrent.tsx')
|
||||
.swc('client', { dev: opts.dev })
|
||||
.swc('client', { dev: opts.dev, keepImportAssertions: true })
|
||||
.target('dist/pages')
|
||||
}
|
||||
|
||||
|
|
2
test/integration/eslint/eslint-cache-custom-dir/.gitignore
vendored
Normal file
2
test/integration/eslint/eslint-cache-custom-dir/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
build
|
||||
|
|
@ -0,0 +1 @@
|
|||
{ "extends": "next", "root": true }
|
|
@ -254,7 +254,7 @@ describe('ESLint', () => {
|
|||
})
|
||||
|
||||
test('shows a successful message when completed', async () => {
|
||||
const { stdout, eslintrcJson } = await nextLintTemp()
|
||||
const { stdout } = await nextLintTemp()
|
||||
|
||||
expect(stdout).toContain(
|
||||
'ESLint has successfully been configured. Run next lint again to view warnings and errors'
|
||||
|
@ -332,7 +332,7 @@ describe('ESLint', () => {
|
|||
|
||||
test('success message when no warnings or errors', async () => {
|
||||
const eslintrcJson = join(dirFirstTimeSetup, '.eslintrc.json')
|
||||
await fs.writeFile(eslintrcJson, '{ "extends": "next", "root": true }')
|
||||
await fs.writeFile(eslintrcJson, '{ "extends": "next", "root": true }\n')
|
||||
|
||||
const { stdout, stderr } = await nextLint(dirFirstTimeSetup, [], {
|
||||
stdout: true,
|
||||
|
@ -511,7 +511,9 @@ describe('ESLint', () => {
|
|||
await fs.remove(cacheFile)
|
||||
await nextLint(dirEslintCache, ['--cache-location', cacheFile])
|
||||
|
||||
expect(fs.existsSync(cacheFile)).toBe(true)
|
||||
const hasCache = fs.existsSync(cacheFile)
|
||||
await fs.remove(cacheFile) // remove after generate
|
||||
expect(hasCache).toBe(true)
|
||||
})
|
||||
|
||||
const getEslintCacheContent = async (cacheDir) => {
|
||||
|
|
3
test/integration/import-assertion/data
Normal file
3
test/integration/import-assertion/data
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"foo": "foo"
|
||||
}
|
2
test/integration/import-assertion/data.d.ts
vendored
Normal file
2
test/integration/import-assertion/data.d.ts
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
declare const data: any
|
||||
export default data
|
5
test/integration/import-assertion/pages/es.js
Normal file
5
test/integration/import-assertion/pages/es.js
Normal file
|
@ -0,0 +1,5 @@
|
|||
import data from '../data' assert { type: 'json' }
|
||||
|
||||
export default function Es() {
|
||||
return data.foo
|
||||
}
|
5
test/integration/import-assertion/pages/ts.ts
Normal file
5
test/integration/import-assertion/pages/ts.ts
Normal file
|
@ -0,0 +1,5 @@
|
|||
import data from '../data' assert { type: 'json' }
|
||||
|
||||
export default function Ts() {
|
||||
return data.foo
|
||||
}
|
45
test/integration/import-assertion/test/index.test.js
Normal file
45
test/integration/import-assertion/test/index.test.js
Normal file
|
@ -0,0 +1,45 @@
|
|||
import { join } from 'path'
|
||||
import {
|
||||
nextBuild,
|
||||
nextStart,
|
||||
launchApp,
|
||||
killApp,
|
||||
findPort,
|
||||
renderViaHTTP,
|
||||
} from 'next-test-utils'
|
||||
|
||||
const appDir = join(__dirname, '../')
|
||||
|
||||
function runSuite(suiteName, env, runTests) {
|
||||
const context = { appDir }
|
||||
describe(`${suiteName} ${env}`, () => {
|
||||
if (env === 'prod') {
|
||||
beforeAll(async () => {
|
||||
context.appPort = await findPort()
|
||||
await nextBuild(context.appDir)
|
||||
context.server = await nextStart(context.appDir, context.appPort)
|
||||
})
|
||||
}
|
||||
if (env === 'dev') {
|
||||
beforeAll(async () => {
|
||||
context.appPort = await findPort()
|
||||
context.server = await launchApp(context.appDir, context.appPort)
|
||||
})
|
||||
}
|
||||
afterAll(async () => await killApp(context.server))
|
||||
|
||||
runTests(context, env)
|
||||
})
|
||||
}
|
||||
|
||||
function basic(context) {
|
||||
it('should handle json assertions', async () => {
|
||||
const esHtml = await renderViaHTTP(context.appPort, '/es')
|
||||
const tsHtml = await renderViaHTTP(context.appPort, '/ts')
|
||||
expect(esHtml).toContain('foo')
|
||||
expect(tsHtml).toContain('foo')
|
||||
})
|
||||
}
|
||||
|
||||
runSuite('import-assertion', 'dev', basic)
|
||||
runSuite('import-assertion', 'prod', basic)
|
20
test/integration/import-assertion/tsconfig.json
Normal file
20
test/integration/import-assertion/tsconfig.json
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"target": "es5",
|
||||
"lib": ["dom", "dom.iterable", "esnext"],
|
||||
"allowJs": true,
|
||||
"skipLibCheck": true,
|
||||
"strict": false,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"noEmit": true,
|
||||
"incremental": true,
|
||||
"esModuleInterop": true,
|
||||
"module": "esnext",
|
||||
"moduleResolution": "node",
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"jsx": "preserve"
|
||||
},
|
||||
"exclude": ["node_modules"],
|
||||
"include": ["**/*.d.ts", "**/*.ts", "**/*.tsx"]
|
||||
}
|
|
@ -20,16 +20,19 @@ export const getStaticPaths: GetStaticPaths<Params> = async () => {
|
|||
}
|
||||
}
|
||||
|
||||
export const getStaticProps: GetStaticProps<Props, Params, PreviewData> =
|
||||
async ({ params, previewData }) => {
|
||||
return {
|
||||
props: {
|
||||
data: params!.slug,
|
||||
title: previewData?.title || 'default title',
|
||||
},
|
||||
revalidate: false,
|
||||
}
|
||||
export const getStaticProps: GetStaticProps<
|
||||
Props,
|
||||
Params,
|
||||
PreviewData
|
||||
> = async ({ params, previewData }) => {
|
||||
return {
|
||||
props: {
|
||||
data: params!.slug,
|
||||
title: previewData?.title || 'default title',
|
||||
},
|
||||
revalidate: false,
|
||||
}
|
||||
}
|
||||
|
||||
export default function Page({ data, title }: Props) {
|
||||
return (
|
||||
|
|
130
yarn.lock
130
yarn.lock
|
@ -199,15 +199,6 @@
|
|||
json5 "^2.1.2"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/eslint-parser@7.13.14":
|
||||
version "7.13.14"
|
||||
resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.13.14.tgz#f80fd23bdd839537221914cb5d17720a5ea6ba3a"
|
||||
integrity sha512-I0HweR36D73Ibn/FfrRDMKlMqJHFwidIUgYdMpH+aXYuQC+waq59YaJ6t9e9N36axJ82v1jR041wwqDrDXEwRA==
|
||||
dependencies:
|
||||
eslint-scope "^5.1.0"
|
||||
eslint-visitor-keys "^1.3.0"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/eslint-parser@7.15.0":
|
||||
version "7.15.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.15.0.tgz#b54f06e04d0e93aebcba99f89251e3bf0ee39f21"
|
||||
|
@ -1404,6 +1395,13 @@
|
|||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.16.7"
|
||||
|
||||
"@babel/plugin-syntax-import-assertions@7.16.7":
|
||||
version "7.16.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.16.7.tgz#78288980e36f1614a4024d45937f4c8ca7185ac3"
|
||||
integrity sha512-DoM/wsaMaDXpM2fa+QkZeqqfYs340WTY+boLRiZ7ckqt3PAFt1CdGmMXVniFCcN8RuStim2Z4Co3bIKdWjTXIQ==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.16.7"
|
||||
|
||||
"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
|
||||
|
@ -5426,15 +5424,15 @@
|
|||
"@typescript-eslint/typescript-estree" "4.29.1"
|
||||
debug "^4.3.1"
|
||||
|
||||
"@typescript-eslint/parser@5.0.0":
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.0.0.tgz#50d1be2e0def82d73e863cceba74aeeac9973592"
|
||||
integrity sha512-B6D5rmmQ14I1fdzs71eL3DAuvnPHTY/t7rQABrL9BLnx/H51Un8ox1xqYAchs0/V2trcoyxB1lMJLlrwrJCDgw==
|
||||
"@typescript-eslint/parser@5.10.1":
|
||||
version "5.10.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.10.1.tgz#4ce9633cc33fc70bc13786cb793c1a76fe5ad6bd"
|
||||
integrity sha512-GReo3tjNBwR5RnRO0K2wDIDN31cM3MmDtgyQ85oAxAmC5K3j/g85IjP+cDfcqDsDDBf1HNKQAD0WqOYL8jXqUA==
|
||||
dependencies:
|
||||
"@typescript-eslint/scope-manager" "5.0.0"
|
||||
"@typescript-eslint/types" "5.0.0"
|
||||
"@typescript-eslint/typescript-estree" "5.0.0"
|
||||
debug "^4.3.1"
|
||||
"@typescript-eslint/scope-manager" "5.10.1"
|
||||
"@typescript-eslint/types" "5.10.1"
|
||||
"@typescript-eslint/typescript-estree" "5.10.1"
|
||||
debug "^4.3.2"
|
||||
|
||||
"@typescript-eslint/scope-manager@4.22.0":
|
||||
version "4.22.0"
|
||||
|
@ -5452,13 +5450,13 @@
|
|||
"@typescript-eslint/types" "4.29.1"
|
||||
"@typescript-eslint/visitor-keys" "4.29.1"
|
||||
|
||||
"@typescript-eslint/scope-manager@5.0.0":
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.0.0.tgz#aea0fb0e2480c1169a02e89d9005ac3f2835713f"
|
||||
integrity sha512-5RFjdA/ain/MDUHYXdF173btOKncIrLuBmA9s6FJhzDrRAyVSA+70BHg0/MW6TE+UiKVyRtX91XpVS0gVNwVDQ==
|
||||
"@typescript-eslint/scope-manager@5.10.1":
|
||||
version "5.10.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz#f0539c73804d2423506db2475352a4dec36cd809"
|
||||
integrity sha512-Lyvi559Gvpn94k7+ElXNMEnXu/iundV5uFmCUNnftbFrUbAJ1WBoaGgkbOBm07jVZa682oaBU37ao/NGGX4ZDg==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.0.0"
|
||||
"@typescript-eslint/visitor-keys" "5.0.0"
|
||||
"@typescript-eslint/types" "5.10.1"
|
||||
"@typescript-eslint/visitor-keys" "5.10.1"
|
||||
|
||||
"@typescript-eslint/types@4.22.0":
|
||||
version "4.22.0"
|
||||
|
@ -5470,10 +5468,10 @@
|
|||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.29.1.tgz#94cce6cf7cc83451df03339cda99d326be2feaf5"
|
||||
integrity sha512-Jj2yu78IRfw4nlaLtKjVaGaxh/6FhofmQ/j8v3NXmAiKafbIqtAPnKYrf0sbGjKdj0hS316J8WhnGnErbJ4RCA==
|
||||
|
||||
"@typescript-eslint/types@5.0.0":
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.0.0.tgz#25d93f6d269b2d25fdc51a0407eb81ccba60eb0f"
|
||||
integrity sha512-dU/pKBUpehdEqYuvkojmlv0FtHuZnLXFBn16zsDmlFF3LXkOpkAQ2vrKc3BidIIve9EMH2zfTlxqw9XM0fFN5w==
|
||||
"@typescript-eslint/types@5.10.1":
|
||||
version "5.10.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.1.tgz#dca9bd4cb8c067fc85304a31f38ec4766ba2d1ea"
|
||||
integrity sha512-ZvxQ2QMy49bIIBpTqFiOenucqUyjTQ0WNLhBM6X1fh1NNlYAC6Kxsx8bRTY3jdYsYg44a0Z/uEgQkohbR0H87Q==
|
||||
|
||||
"@typescript-eslint/typescript-estree@4.22.0":
|
||||
version "4.22.0"
|
||||
|
@ -5501,16 +5499,16 @@
|
|||
semver "^7.3.5"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/typescript-estree@5.0.0":
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.0.0.tgz#bc20f413c6e572c7309dbe5fa3be027984952af3"
|
||||
integrity sha512-V/6w+PPQMhinWKSn+fCiX5jwvd1vRBm7AX7SJQXEGQtwtBvjMPjaU3YTQ1ik2UF1u96X7tsB96HMnulG3eLi9Q==
|
||||
"@typescript-eslint/typescript-estree@5.10.1":
|
||||
version "5.10.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz#b268e67be0553f8790ba3fe87113282977adda15"
|
||||
integrity sha512-PwIGnH7jIueXv4opcwEbVGDATjGPO1dx9RkUl5LlHDSe+FXxPwFL5W/qYd5/NHr7f6lo/vvTrAzd0KlQtRusJQ==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.0.0"
|
||||
"@typescript-eslint/visitor-keys" "5.0.0"
|
||||
debug "^4.3.1"
|
||||
globby "^11.0.3"
|
||||
is-glob "^4.0.1"
|
||||
"@typescript-eslint/types" "5.10.1"
|
||||
"@typescript-eslint/visitor-keys" "5.10.1"
|
||||
debug "^4.3.2"
|
||||
globby "^11.0.4"
|
||||
is-glob "^4.0.3"
|
||||
semver "^7.3.5"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
|
@ -5530,12 +5528,12 @@
|
|||
"@typescript-eslint/types" "4.29.1"
|
||||
eslint-visitor-keys "^2.0.0"
|
||||
|
||||
"@typescript-eslint/visitor-keys@5.0.0":
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.0.0.tgz#b789f7cd105e59bee5c0983a353942a5a48f56df"
|
||||
integrity sha512-yRyd2++o/IrJdyHuYMxyFyBhU762MRHQ/bAGQeTnN3pGikfh+nEmM61XTqaDH1XDp53afZ+waXrk0ZvenoZ6xw==
|
||||
"@typescript-eslint/visitor-keys@5.10.1":
|
||||
version "5.10.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz#29102de692f59d7d34ecc457ed59ab5fc558010b"
|
||||
integrity sha512-NjQ0Xinhy9IL979tpoTRuLKxMc0zJC7QVSdeerXs2/QvOy2yRkzX5dRb10X5woNUdJgU8G3nYRDlI33sq1K4YQ==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.0.0"
|
||||
"@typescript-eslint/types" "5.10.1"
|
||||
eslint-visitor-keys "^3.0.0"
|
||||
|
||||
"@typescript/lib-dom@npm:@types/web":
|
||||
|
@ -8714,6 +8712,13 @@ debug@^4.3.1:
|
|||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
debug@^4.3.2:
|
||||
version "4.3.3"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
|
||||
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
debug@~0.8.1:
|
||||
version "0.8.1"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-0.8.1.tgz#20ff4d26f5e422cb68a1bacbbb61039ad8c1c130"
|
||||
|
@ -9635,7 +9640,7 @@ eslint-plugin-react@7.29.1:
|
|||
semver "^6.3.0"
|
||||
string.prototype.matchall "^4.0.6"
|
||||
|
||||
eslint-scope@5.1.1, eslint-scope@^5.1.0, eslint-scope@^5.1.1:
|
||||
eslint-scope@5.1.1, eslint-scope@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
|
||||
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
|
||||
|
@ -10174,6 +10179,17 @@ fast-glob@^3.2.5, fast-glob@^3.2.7:
|
|||
merge2 "^1.3.0"
|
||||
micromatch "^4.0.4"
|
||||
|
||||
fast-glob@^3.2.9:
|
||||
version "3.2.11"
|
||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
|
||||
integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
|
||||
dependencies:
|
||||
"@nodelib/fs.stat" "^2.0.2"
|
||||
"@nodelib/fs.walk" "^1.2.3"
|
||||
glob-parent "^5.1.2"
|
||||
merge2 "^1.3.0"
|
||||
micromatch "^4.0.4"
|
||||
|
||||
fast-json-stable-stringify@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
|
||||
|
@ -11081,6 +11097,18 @@ globby@^11.0.3:
|
|||
merge2 "^1.3.0"
|
||||
slash "^3.0.0"
|
||||
|
||||
globby@^11.0.4:
|
||||
version "11.1.0"
|
||||
resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
|
||||
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
|
||||
dependencies:
|
||||
array-union "^2.1.0"
|
||||
dir-glob "^3.0.1"
|
||||
fast-glob "^3.2.9"
|
||||
ignore "^5.2.0"
|
||||
merge2 "^1.4.1"
|
||||
slash "^3.0.0"
|
||||
|
||||
globby@^12.0.2:
|
||||
version "12.0.2"
|
||||
resolved "https://registry.yarnpkg.com/globby/-/globby-12.0.2.tgz#53788b2adf235602ed4cabfea5c70a1139e1ab11"
|
||||
|
@ -11763,7 +11791,7 @@ ignore@^5.0.0, ignore@^5.1.4:
|
|||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
|
||||
integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
|
||||
|
||||
ignore@^5.1.8:
|
||||
ignore@^5.1.8, ignore@^5.2.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
|
||||
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
|
||||
|
@ -17093,10 +17121,10 @@ preserve@^0.2.0:
|
|||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
|
||||
|
||||
prettier@2.3.2:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d"
|
||||
integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==
|
||||
prettier@2.5.1:
|
||||
version "2.5.1"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a"
|
||||
integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==
|
||||
|
||||
pretty-bytes@5.3.0:
|
||||
version "5.3.0"
|
||||
|
@ -20404,10 +20432,10 @@ typedarray@^0.0.6:
|
|||
version "0.0.6"
|
||||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
||||
|
||||
typescript@4.4.3:
|
||||
version "4.4.3"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324"
|
||||
integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==
|
||||
typescript@4.5.5:
|
||||
version "4.5.5"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3"
|
||||
integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
|
||||
|
||||
typescript@^4.1.3:
|
||||
version "4.1.3"
|
||||
|
|
Loading…
Reference in a new issue