mirror of
https://github.com/vuejs/babel-plugin-jsx.git
synced 2024-11-10 09:39:14 +08:00
chore: add tslint (#37)
* chore: tslint * chore: workflow lint Co-authored-by: Amour1688 <lcz_1996@foxmail.com>
This commit is contained in:
parent
6b0b7534a4
commit
ee0d544c24
21
.eslintrc.js
21
.eslintrc.js
@ -12,7 +12,12 @@ module.exports = {
|
||||
jest: true,
|
||||
es6: true,
|
||||
},
|
||||
extends: 'eslint-config-airbnb-base',
|
||||
parser: '@typescript-eslint/parser',
|
||||
plugins: ['@typescript-eslint', 'import'],
|
||||
extends: [
|
||||
'eslint-config-airbnb-base',
|
||||
'plugin:@typescript-eslint/recommended'
|
||||
],
|
||||
rules: {
|
||||
'no-nested-ternary': [0],
|
||||
'no-param-reassign': [0],
|
||||
@ -20,6 +25,18 @@ module.exports = {
|
||||
'no-plusplus': [0],
|
||||
'import/no-extraneous-dependencies': [0],
|
||||
'consistent-return': [0],
|
||||
'no-bitwise': [0]
|
||||
'no-bitwise': [0],
|
||||
'prefer-destructuring': [2, { 'array': false }],
|
||||
'import/extensions': [2, 'ignorePackages', { ts: 'never' }],
|
||||
'@typescript-eslint/ban-ts-comment': [0],
|
||||
'@typescript-eslint/explicit-module-boundary-types': [0],
|
||||
'@typescript-eslint/no-explicit-any': [0]
|
||||
},
|
||||
settings: {
|
||||
'import/resolver': {
|
||||
node: {
|
||||
extensions: ['.js', '.jsx', '.ts', '.tsx']
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
7
.github/workflows/test.yml
vendored
7
.github/workflows/test.yml
vendored
@ -10,7 +10,10 @@ jobs:
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: install
|
||||
run: yarn install --pure-lockfile
|
||||
|
||||
run: yarn install
|
||||
|
||||
- name: lint
|
||||
run: yarn lint
|
||||
|
||||
- name: test
|
||||
run: yarn test
|
||||
|
@ -6,6 +6,7 @@
|
||||
"scripts": {
|
||||
"publish": "lerna publish",
|
||||
"test": "lerna run test",
|
||||
"lint": "lerna run lint",
|
||||
"dev": "node scripts/dev.js",
|
||||
"site": "node scripts/site.js"
|
||||
},
|
||||
|
@ -13,7 +13,7 @@
|
||||
"scripts": {
|
||||
"dev": "npm run build && webpack-dev-server",
|
||||
"build": "tsc",
|
||||
"lint": "eslint --ext .js src",
|
||||
"lint": "eslint 'src/*.ts'",
|
||||
"test": "npm run build && jest --coverage"
|
||||
},
|
||||
"bugs": {
|
||||
@ -27,6 +27,7 @@
|
||||
"@ant-design-vue/babel-helper-vue-transform-on": "^1.0.0",
|
||||
"@babel/helper-module-imports": "^7.0.0",
|
||||
"@babel/plugin-syntax-jsx": "^7.0.0",
|
||||
"@babel/traverse": "^7.0.0",
|
||||
"@babel/types": "^7.0.0",
|
||||
"camelcase": "^6.0.0",
|
||||
"html-tags": "^3.1.0",
|
||||
@ -37,6 +38,8 @@
|
||||
"@babel/preset-env": "^7.0.0",
|
||||
"@rollup/plugin-babel": "^5.0.3",
|
||||
"@types/svg-tags": "^1.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "^3.6.1",
|
||||
"@typescript-eslint/parser": "^3.6.1",
|
||||
"@vue/compiler-dom": "3.0.0-rc.1",
|
||||
"@vue/test-utils": "2.0.0-beta.0",
|
||||
"babel-jest": "^26.0.1",
|
||||
|
@ -1,7 +1,9 @@
|
||||
import * as t from '@babel/types';
|
||||
import { NodePath } from '@babel/traverse';
|
||||
import { createIdentifier } from './utils';
|
||||
import { State, ExcludesBoolean } from './';
|
||||
import { State, ExcludesBoolean } from '.';
|
||||
|
||||
type Tag = t.Identifier | t.MemberExpression | t.StringLiteral | t.CallExpression;
|
||||
|
||||
/**
|
||||
* Get JSX element type
|
||||
@ -17,9 +19,8 @@ const getType = (path: NodePath<t.JSXOpeningElement>) => {
|
||||
}
|
||||
return t.isJSXIdentifier(attribute.get('name'))
|
||||
&& (attribute.get('name') as NodePath<t.JSXIdentifier>).get('name') === 'type'
|
||||
&& t.isStringLiteral(attribute.get('value'))
|
||||
},
|
||||
);
|
||||
&& t.isStringLiteral(attribute.get('value'));
|
||||
});
|
||||
|
||||
return typePath ? typePath.get('value.value') : '';
|
||||
};
|
||||
@ -27,22 +28,22 @@ const getType = (path: NodePath<t.JSXOpeningElement>) => {
|
||||
const parseModifiers = (value: t.Expression) => {
|
||||
let modifiers: string[] = [];
|
||||
if (t.isArrayExpression(value)) {
|
||||
modifiers = (value as t.ArrayExpression).elements.map(el => t.isStringLiteral(el) ? el.value : '').filter(Boolean)
|
||||
modifiers = (value as t.ArrayExpression).elements.map((el) => (t.isStringLiteral(el) ? el.value : '')).filter(Boolean);
|
||||
}
|
||||
return modifiers;
|
||||
}
|
||||
};
|
||||
|
||||
const parseDirectives = (args: {
|
||||
name: string,
|
||||
path: NodePath<t.JSXAttribute>,
|
||||
value: t.StringLiteral | t.Expression | null,
|
||||
state: State,
|
||||
tag: t.Identifier | t.MemberExpression | t.StringLiteral | t.CallExpression,
|
||||
tag: Tag,
|
||||
isComponent: boolean
|
||||
}) => {
|
||||
const {
|
||||
name, path, value, state, tag, isComponent,
|
||||
} = args
|
||||
} = args;
|
||||
let modifiers: string[] = name.split('_');
|
||||
let arg;
|
||||
let val;
|
||||
@ -93,14 +94,19 @@ const parseDirectives = (args: {
|
||||
};
|
||||
};
|
||||
|
||||
const resolveDirective = (path: NodePath<t.JSXAttribute>, state: State, tag: any, directiveName: string) => {
|
||||
const resolveDirective = (
|
||||
path: NodePath<t.JSXAttribute>,
|
||||
state: State,
|
||||
tag: Tag,
|
||||
directiveName: string,
|
||||
) => {
|
||||
if (directiveName === 'show') {
|
||||
return createIdentifier(state, 'vShow');
|
||||
}
|
||||
if (directiveName === 'model') {
|
||||
let modelToUse;
|
||||
const type = getType(path.parentPath as NodePath<t.JSXOpeningElement>);
|
||||
switch (tag.value) {
|
||||
switch ((tag as t.StringLiteral).value) {
|
||||
case 'select':
|
||||
modelToUse = createIdentifier(state, 'vModelSelect');
|
||||
break;
|
||||
|
@ -1,4 +1,5 @@
|
||||
// https://github.com/vuejs/vue-next/blob/master/packages/shared/src/patchFlags.ts
|
||||
// tslint:disable: no-bitwise
|
||||
export const enum PatchFlags {
|
||||
TEXT = 1,
|
||||
CLASS = 1 << 1,
|
||||
@ -17,17 +18,17 @@ export const enum PatchFlags {
|
||||
|
||||
// dev only flag -> name mapping
|
||||
export const PatchFlagNames = {
|
||||
[PatchFlags.TEXT]: `TEXT`,
|
||||
[PatchFlags.CLASS]: `CLASS`,
|
||||
[PatchFlags.STYLE]: `STYLE`,
|
||||
[PatchFlags.PROPS]: `PROPS`,
|
||||
[PatchFlags.FULL_PROPS]: `FULL_PROPS`,
|
||||
[PatchFlags.HYDRATE_EVENTS]: `HYDRATE_EVENTS`,
|
||||
[PatchFlags.STABLE_FRAGMENT]: `STABLE_FRAGMENT`,
|
||||
[PatchFlags.KEYED_FRAGMENT]: `KEYED_FRAGMENT`,
|
||||
[PatchFlags.UNKEYED_FRAGMENT]: `UNKEYED_FRAGMENT`,
|
||||
[PatchFlags.DYNAMIC_SLOTS]: `DYNAMIC_SLOTS`,
|
||||
[PatchFlags.NEED_PATCH]: `NEED_PATCH`,
|
||||
[PatchFlags.HOISTED]: `HOISTED`,
|
||||
[PatchFlags.BAIL]: `BAIL`
|
||||
}
|
||||
[PatchFlags.TEXT]: 'TEXT',
|
||||
[PatchFlags.CLASS]: 'CLASS',
|
||||
[PatchFlags.STYLE]: 'STYLE',
|
||||
[PatchFlags.PROPS]: 'PROPS',
|
||||
[PatchFlags.FULL_PROPS]: 'FULL_PROPS',
|
||||
[PatchFlags.HYDRATE_EVENTS]: 'HYDRATE_EVENTS',
|
||||
[PatchFlags.STABLE_FRAGMENT]: 'STABLE_FRAGMENT',
|
||||
[PatchFlags.KEYED_FRAGMENT]: 'KEYED_FRAGMENT',
|
||||
[PatchFlags.UNKEYED_FRAGMENT]: 'UNKEYED_FRAGMENT',
|
||||
[PatchFlags.DYNAMIC_SLOTS]: 'DYNAMIC_SLOTS',
|
||||
[PatchFlags.NEED_PATCH]: 'NEED_PATCH',
|
||||
[PatchFlags.HOISTED]: 'HOISTED',
|
||||
[PatchFlags.BAIL]: 'BAIL',
|
||||
};
|
||||
|
@ -1,7 +1,7 @@
|
||||
import * as t from '@babel/types'
|
||||
import * as t from '@babel/types';
|
||||
import { addNamespace } from '@babel/helper-module-imports';
|
||||
import { NodePath } from '@babel/traverse';
|
||||
import { State } from './';
|
||||
import { State } from '.';
|
||||
|
||||
const transformFragment = (path: NodePath<t.JSXElement>, Fragment: t.JSXMemberExpression) => {
|
||||
const children = path.get('children') || [];
|
||||
|
@ -14,7 +14,7 @@ import {
|
||||
} from './utils';
|
||||
import parseDirectives from './parseDirectives';
|
||||
import { PatchFlags, PatchFlagNames } from './patchFlags';
|
||||
import { State, ExcludesBoolean } from './';
|
||||
import { State, ExcludesBoolean } from '.';
|
||||
|
||||
const xlinkRE = /^xlink([A-Z])/;
|
||||
const onRE = /^on[^a-z]/;
|
||||
@ -24,7 +24,7 @@ const isOn = (key: string) => onRE.test(key);
|
||||
const transformJSXSpreadAttribute = (
|
||||
nodePath: NodePath,
|
||||
path: NodePath<t.JSXSpreadAttribute>,
|
||||
mergeArgs: (t.ObjectProperty | t.Expression)[]
|
||||
mergeArgs: (t.ObjectProperty | t.Expression)[],
|
||||
) => {
|
||||
const argument = path.get('argument') as NodePath<t.ObjectExpression>;
|
||||
const { properties } = argument.node;
|
||||
@ -40,7 +40,7 @@ const transformJSXSpreadAttribute = (
|
||||
|
||||
const getJSXAttributeValue = (
|
||||
path: NodePath<t.JSXAttribute>,
|
||||
state: State
|
||||
state: State,
|
||||
): (
|
||||
t.StringLiteral | t.Expression | null
|
||||
) => {
|
||||
@ -64,13 +64,13 @@ const getJSXAttributeValue = (
|
||||
* @returns boolean
|
||||
*/
|
||||
const isConstant = (
|
||||
node: t.Expression | t.Identifier | t.Literal | t.SpreadElement | null
|
||||
node: t.Expression | t.Identifier | t.Literal | t.SpreadElement | null,
|
||||
): boolean => {
|
||||
if (t.isIdentifier(node)) {
|
||||
return node.name === 'undefined';
|
||||
}
|
||||
if (t.isArrayExpression(node)) {
|
||||
const elements = node.elements;
|
||||
const { elements } = node;
|
||||
return elements.every((element) => element && isConstant(element));
|
||||
}
|
||||
if (t.isObjectExpression(node)) {
|
||||
@ -193,7 +193,9 @@ const buildProps = (path: NodePath<t.JSXElement>, state: State) => {
|
||||
return;
|
||||
}
|
||||
if (isDirective(name)) {
|
||||
const { directive, modifiers, value, arg, directiveName } = parseDirectives({
|
||||
const {
|
||||
directive, modifiers, value, arg, directiveName,
|
||||
} = parseDirectives({
|
||||
tag,
|
||||
isComponent,
|
||||
name,
|
||||
@ -207,7 +209,7 @@ const buildProps = (path: NodePath<t.JSXElement>, state: State) => {
|
||||
if (directiveName === 'slots') {
|
||||
slots = attributeValue;
|
||||
return;
|
||||
} else if (directive) {
|
||||
} if (directive) {
|
||||
directives.push(t.arrayExpression(directive));
|
||||
} else {
|
||||
// must be v-model and is a component
|
||||
@ -258,11 +260,16 @@ const buildProps = (path: NodePath<t.JSXElement>, state: State) => {
|
||||
} else {
|
||||
// JSXSpreadAttribute
|
||||
hasDynamicKeys = true;
|
||||
transformJSXSpreadAttribute(path as NodePath, prop as NodePath<t.JSXSpreadAttribute>, mergeArgs);
|
||||
transformJSXSpreadAttribute(
|
||||
path as NodePath,
|
||||
prop as NodePath<t.JSXSpreadAttribute>,
|
||||
mergeArgs,
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
// patchFlag analysis
|
||||
// tslint:disable: no-bitwise
|
||||
if (hasDynamicKeys) {
|
||||
patchFlag |= PatchFlags.FULL_PROPS;
|
||||
} else {
|
||||
@ -342,49 +349,48 @@ const getChildren = (
|
||||
| t.JSXElement
|
||||
| t.JSXFragment
|
||||
>[],
|
||||
state: State
|
||||
): t.Expression[] =>
|
||||
paths
|
||||
.map((path) => {
|
||||
if (path.isJSXText()) {
|
||||
const transformedText = transformJSXText(path);
|
||||
if (transformedText) {
|
||||
return t.callExpression(createIdentifier(state, 'createTextVNode'), [transformedText]);
|
||||
}
|
||||
return transformedText;
|
||||
state: State,
|
||||
): t.Expression[] => paths
|
||||
.map((path) => {
|
||||
if (path.isJSXText()) {
|
||||
const transformedText = transformJSXText(path);
|
||||
if (transformedText) {
|
||||
return t.callExpression(createIdentifier(state, 'createTextVNode'), [transformedText]);
|
||||
}
|
||||
if (path.isJSXExpressionContainer()) {
|
||||
const expression = transformJSXExpressionContainer(path);
|
||||
return transformedText;
|
||||
}
|
||||
if (path.isJSXExpressionContainer()) {
|
||||
const expression = transformJSXExpressionContainer(path);
|
||||
|
||||
if (t.isIdentifier(expression)) {
|
||||
const { name } = expression as t.Identifier;
|
||||
const { referencePaths } = path.scope.getBinding(name) || {};
|
||||
referencePaths?.forEach(referencePath => {
|
||||
walksScope(referencePath, name);
|
||||
})
|
||||
}
|
||||
|
||||
return expression;
|
||||
if (t.isIdentifier(expression)) {
|
||||
const { name } = expression as t.Identifier;
|
||||
const { referencePaths = [] } = path.scope.getBinding(name) || {};
|
||||
referencePaths.forEach((referencePath) => {
|
||||
walksScope(referencePath, name);
|
||||
});
|
||||
}
|
||||
if (t.isJSXSpreadChild(path)) {
|
||||
return transformJSXSpreadChild(path as NodePath<t.JSXSpreadChild>);
|
||||
}
|
||||
if (path.isCallExpression()) {
|
||||
return path.node;
|
||||
}
|
||||
if (path.isJSXElement()) {
|
||||
return transformJSXElement(path, state);
|
||||
}
|
||||
throw new Error(`getChildren: ${path.type} is not supported`);
|
||||
}).filter(((value: any) => (
|
||||
value !== undefined
|
||||
|
||||
return expression;
|
||||
}
|
||||
if (t.isJSXSpreadChild(path)) {
|
||||
return transformJSXSpreadChild(path as NodePath<t.JSXSpreadChild>);
|
||||
}
|
||||
if (path.isCallExpression()) {
|
||||
return path.node;
|
||||
}
|
||||
if (path.isJSXElement()) {
|
||||
return transformJSXElement(path, state);
|
||||
}
|
||||
throw new Error(`getChildren: ${path.type} is not supported`);
|
||||
}).filter(((value: any) => (
|
||||
value !== undefined
|
||||
&& value !== null
|
||||
&& !t.isJSXEmptyExpression(value)
|
||||
)) as any);
|
||||
)) as any);
|
||||
|
||||
const transformJSXElement = (
|
||||
path: NodePath<t.JSXElement>,
|
||||
state: State
|
||||
state: State,
|
||||
): t.CallExpression => {
|
||||
const children = getChildren(path.get('children'), state);
|
||||
const {
|
||||
@ -394,7 +400,7 @@ const transformJSXElement = (
|
||||
directives,
|
||||
patchFlag,
|
||||
dynamicPropNames,
|
||||
slots
|
||||
slots,
|
||||
} = buildProps(path, state);
|
||||
|
||||
const useOptimate = path.getData('optimize') !== false;
|
||||
@ -420,16 +426,16 @@ const transformJSXElement = (
|
||||
(children.length || slots) ? (
|
||||
isComponent
|
||||
? t.objectExpression([
|
||||
!!children.length && t.objectProperty(
|
||||
t.identifier('default'),
|
||||
t.arrowFunctionExpression([], t.arrayExpression(children))
|
||||
),
|
||||
...(slots ? (
|
||||
t.isObjectExpression(slots)
|
||||
? (slots as any as t.ObjectExpression).properties
|
||||
: [t.spreadElement(slots as any)]
|
||||
) : [])
|
||||
].filter(Boolean as any as ExcludesBoolean))
|
||||
!!children.length && t.objectProperty(
|
||||
t.identifier('default'),
|
||||
t.arrowFunctionExpression([], t.arrayExpression(children)),
|
||||
),
|
||||
...(slots ? (
|
||||
t.isObjectExpression(slots)
|
||||
? (slots as any as t.ObjectExpression).properties
|
||||
: [t.spreadElement(slots as any)]
|
||||
) : []),
|
||||
].filter(Boolean as any as ExcludesBoolean))
|
||||
: t.arrayExpression(children)
|
||||
) : t.nullLiteral(),
|
||||
!!patchFlag && usePatchFlag && (
|
||||
@ -438,7 +444,9 @@ const transformJSXElement = (
|
||||
: t.numericLiteral(PatchFlags.BAIL)
|
||||
),
|
||||
!!dynamicPropNames.size && usePatchFlag
|
||||
&& t.arrayExpression([...dynamicPropNames.keys()].map((name) => t.stringLiteral(name as string))),
|
||||
&& t.arrayExpression(
|
||||
[...dynamicPropNames.keys()].map((name) => t.stringLiteral(name as string)),
|
||||
),
|
||||
].filter(Boolean as any as ExcludesBoolean));
|
||||
|
||||
if (!directives.length) {
|
||||
|
@ -2,16 +2,16 @@ import * as t from '@babel/types';
|
||||
import htmlTags from 'html-tags';
|
||||
import svgTags from 'svg-tags';
|
||||
import { NodePath } from '@babel/traverse';
|
||||
import { State } from './';
|
||||
import { State } from '.';
|
||||
|
||||
/**
|
||||
* create Identifier
|
||||
* @param state
|
||||
* @param id string
|
||||
* @returns MemberExpression
|
||||
* @param id string
|
||||
* @returns MemberExpression
|
||||
*/
|
||||
const createIdentifier = (
|
||||
state: State, id: string
|
||||
state: State, id: string,
|
||||
): t.MemberExpression => t.memberExpression(state.get('vue'), t.identifier(id));
|
||||
|
||||
/**
|
||||
@ -26,8 +26,10 @@ const isDirective = (src: string): boolean => src.startsWith('v-')
|
||||
* @param {*} path JSXIdentifier | JSXMemberExpression | JSXNamespacedName
|
||||
* @returns boolean
|
||||
*/
|
||||
const isFragment = (path: NodePath<t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName>) =>
|
||||
t.isJSXMemberExpression(path)
|
||||
const isFragment = (
|
||||
path:
|
||||
NodePath<t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName>,
|
||||
): boolean => t.isJSXMemberExpression(path)
|
||||
&& (path.node as t.JSXMemberExpression).property.name === 'Fragment';
|
||||
|
||||
/**
|
||||
@ -54,7 +56,9 @@ const checkIsComponent = (path: NodePath<t.JSXOpeningElement>): boolean => {
|
||||
* @param path JSXMemberExpression
|
||||
* @returns MemberExpression
|
||||
*/
|
||||
const transformJSXMemberExpression = (path: NodePath<t.JSXMemberExpression>): t.MemberExpression => {
|
||||
const transformJSXMemberExpression = (
|
||||
path: NodePath<t.JSXMemberExpression>,
|
||||
): t.MemberExpression => {
|
||||
const objectPath = path.node.object;
|
||||
const propertyPath = path.node.property;
|
||||
const transformedObject = t.isJSXMemberExpression(objectPath)
|
||||
@ -70,9 +74,12 @@ const transformJSXMemberExpression = (path: NodePath<t.JSXMemberExpression>): t.
|
||||
* Get tag (first attribute for h) from JSXOpeningElement
|
||||
* @param path JSXElement
|
||||
* @param state State
|
||||
* @returns Identifier | StringLiteral | MemberExpression
|
||||
* @returns Identifier | StringLiteral | MemberExpression | CallExpression
|
||||
*/
|
||||
const getTag = (path: NodePath<t.JSXElement>, state: State) => {
|
||||
const getTag = (
|
||||
path: NodePath<t.JSXElement>,
|
||||
state: State,
|
||||
): t.Identifier | t.CallExpression | t.StringLiteral | t.MemberExpression => {
|
||||
const namePath = path.get('openingElement').get('name');
|
||||
if (namePath.isJSXIdentifier()) {
|
||||
const { name } = namePath.node;
|
||||
@ -157,8 +164,9 @@ const transformJSXText = (path: NodePath<t.JSXText>): t.StringLiteral | null =>
|
||||
* @returns Expression
|
||||
*/
|
||||
const transformJSXExpressionContainer = (
|
||||
path: NodePath<t.JSXExpressionContainer>
|
||||
): (t.Expression) => path.get('expression').node as t.Expression;
|
||||
path: NodePath<t.JSXExpressionContainer>,
|
||||
): (t.Expression
|
||||
) => path.get('expression').node as t.Expression;
|
||||
|
||||
/**
|
||||
* Transform JSXSpreadChild
|
||||
@ -166,17 +174,17 @@ const transformJSXExpressionContainer = (
|
||||
* @returns SpreadElement
|
||||
*/
|
||||
const transformJSXSpreadChild = (
|
||||
path: NodePath<t.JSXSpreadChild>
|
||||
path: NodePath<t.JSXSpreadChild>,
|
||||
): t.SpreadElement => t.spreadElement(path.get('expression').node);
|
||||
|
||||
const walksScope = (path: NodePath, name: string) => {
|
||||
const walksScope = (path: NodePath, name: string): void => {
|
||||
if (path.scope.hasBinding(name) && path.parentPath) {
|
||||
if (t.isJSXElement(path.parentPath.node)) {
|
||||
path.parentPath.setData('optimize', false);
|
||||
}
|
||||
walksScope(path.parentPath, name);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export {
|
||||
createIdentifier,
|
||||
|
180
yarn.lock
180
yarn.lock
@ -50,6 +50,15 @@
|
||||
lodash "^4.17.13"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/generator@^7.10.5":
|
||||
version "7.10.5"
|
||||
resolved "https://r.cnpmjs.org/@babel/generator/download/@babel/generator-7.10.5.tgz#1b903554bc8c583ee8d25f1e8969732e6b829a69"
|
||||
integrity sha1-G5A1VLyMWD7o0l8eiWlzLmuCmmk=
|
||||
dependencies:
|
||||
"@babel/types" "^7.10.5"
|
||||
jsesc "^2.5.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/helper-annotate-as-pure@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://r.cnpmjs.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3"
|
||||
@ -257,6 +266,11 @@
|
||||
resolved "https://r.cnpmjs.org/@babel/parser/download/@babel/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64"
|
||||
integrity sha1-nu3yfhmY2Hc5+1AopRIFV8BqGmQ=
|
||||
|
||||
"@babel/parser@^7.10.5":
|
||||
version "7.10.5"
|
||||
resolved "https://r.cnpmjs.org/@babel/parser/download/@babel/parser-7.10.5.tgz#e7c6bf5a7deff957cec9f04b551e2762909d826b"
|
||||
integrity sha1-58a/Wn3v+VfOyfBLVR4nYpCdgms=
|
||||
|
||||
"@babel/plugin-proposal-async-generator-functions@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://r.cnpmjs.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6"
|
||||
@ -801,6 +815,21 @@
|
||||
"@babel/parser" "^7.10.4"
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/traverse@^7.0.0":
|
||||
version "7.10.5"
|
||||
resolved "https://r.cnpmjs.org/@babel/traverse/download/@babel/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564"
|
||||
integrity sha1-d85GT1sli+Jlr2GNj93wU28gtWQ=
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.10.4"
|
||||
"@babel/generator" "^7.10.5"
|
||||
"@babel/helper-function-name" "^7.10.4"
|
||||
"@babel/helper-split-export-declaration" "^7.10.4"
|
||||
"@babel/parser" "^7.10.5"
|
||||
"@babel/types" "^7.10.5"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
lodash "^4.17.19"
|
||||
|
||||
"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://r.cnpmjs.org/@babel/traverse/download/@babel/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818"
|
||||
@ -825,6 +854,15 @@
|
||||
lodash "^4.17.13"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.10.5":
|
||||
version "7.10.5"
|
||||
resolved "https://r.cnpmjs.org/@babel/types/download/@babel/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15"
|
||||
integrity sha1-2Irn4v3oa/v+hR1Nga+nCpl7XRU=
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.10.4"
|
||||
lodash "^4.17.19"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@bcoe/v8-coverage@^0.2.3":
|
||||
version "0.2.3"
|
||||
resolved "https://r.cnpmjs.org/@bcoe/v8-coverage/download/@bcoe/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||
@ -1975,6 +2013,11 @@
|
||||
resolved "https://r.cnpmjs.org/@types/color-name/download/@types/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
|
||||
integrity sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=
|
||||
|
||||
"@types/eslint-visitor-keys@^1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://r.cnpmjs.org/@types/eslint-visitor-keys/download/@types/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d"
|
||||
integrity sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=
|
||||
|
||||
"@types/estree@0.0.39":
|
||||
version "0.0.39"
|
||||
resolved "https://r.cnpmjs.org/@types/estree/download/@types/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
|
||||
@ -2020,7 +2063,7 @@
|
||||
"@types/istanbul-lib-coverage" "*"
|
||||
"@types/istanbul-lib-report" "*"
|
||||
|
||||
"@types/json-schema@^7.0.4":
|
||||
"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4":
|
||||
version "7.0.5"
|
||||
resolved "https://r.cnpmjs.org/@types/json-schema/download/@types/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd"
|
||||
integrity sha1-3M5EMOZLRDuolF8CkPtWStW6xt0=
|
||||
@ -2115,6 +2158,66 @@
|
||||
dependencies:
|
||||
"@types/yargs-parser" "*"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@^3.6.1":
|
||||
version "3.6.1"
|
||||
resolved "https://r.cnpmjs.org/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-3.6.1.tgz#5ced8fd2087fbb83a76973dea4a0d39d9cb4a642"
|
||||
integrity sha1-XO2P0gh/u4OnaXPepKDTnZy0pkI=
|
||||
dependencies:
|
||||
"@typescript-eslint/experimental-utils" "3.6.1"
|
||||
debug "^4.1.1"
|
||||
functional-red-black-tree "^1.0.1"
|
||||
regexpp "^3.0.0"
|
||||
semver "^7.3.2"
|
||||
tsutils "^3.17.1"
|
||||
|
||||
"@typescript-eslint/experimental-utils@3.6.1":
|
||||
version "3.6.1"
|
||||
resolved "https://r.cnpmjs.org/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-3.6.1.tgz#b5a2738ebbceb3fa90c5b07d50bb1225403c4a54"
|
||||
integrity sha1-taJzjrvOs/qQxbB9ULsSJUA8SlQ=
|
||||
dependencies:
|
||||
"@types/json-schema" "^7.0.3"
|
||||
"@typescript-eslint/types" "3.6.1"
|
||||
"@typescript-eslint/typescript-estree" "3.6.1"
|
||||
eslint-scope "^5.0.0"
|
||||
eslint-utils "^2.0.0"
|
||||
|
||||
"@typescript-eslint/parser@^3.6.1":
|
||||
version "3.6.1"
|
||||
resolved "https://r.cnpmjs.org/@typescript-eslint/parser/download/@typescript-eslint/parser-3.6.1.tgz#216e8adf4ee9c629f77c985476a2ea07fb80e1dc"
|
||||
integrity sha1-IW6K307pxin3fJhUdqLqB/uA4dw=
|
||||
dependencies:
|
||||
"@types/eslint-visitor-keys" "^1.0.0"
|
||||
"@typescript-eslint/experimental-utils" "3.6.1"
|
||||
"@typescript-eslint/types" "3.6.1"
|
||||
"@typescript-eslint/typescript-estree" "3.6.1"
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
|
||||
"@typescript-eslint/types@3.6.1":
|
||||
version "3.6.1"
|
||||
resolved "https://r.cnpmjs.org/@typescript-eslint/types/download/@typescript-eslint/types-3.6.1.tgz#87600fe79a1874235d3cc1cf5c7e1a12eea69eee"
|
||||
integrity sha1-h2AP55oYdCNdPMHPXH4aEu6mnu4=
|
||||
|
||||
"@typescript-eslint/typescript-estree@3.6.1":
|
||||
version "3.6.1"
|
||||
resolved "https://r.cnpmjs.org/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-3.6.1.tgz#a5c91fcc5497cce7922ff86bc37d5e5891dcdefa"
|
||||
integrity sha1-pckfzFSXzOeSL/hrw31eWJHc3vo=
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "3.6.1"
|
||||
"@typescript-eslint/visitor-keys" "3.6.1"
|
||||
debug "^4.1.1"
|
||||
glob "^7.1.6"
|
||||
is-glob "^4.0.1"
|
||||
lodash "^4.17.15"
|
||||
semver "^7.3.2"
|
||||
tsutils "^3.17.1"
|
||||
|
||||
"@typescript-eslint/visitor-keys@3.6.1":
|
||||
version "3.6.1"
|
||||
resolved "https://r.cnpmjs.org/@typescript-eslint/visitor-keys/download/@typescript-eslint/visitor-keys-3.6.1.tgz#5c57a7772f4dd623cfeacc219303e7d46f963b37"
|
||||
integrity sha1-XFendy9N1iPP6swhkwPn1G+WOzc=
|
||||
dependencies:
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
|
||||
"@vue/compiler-core@3.0.0-rc.1":
|
||||
version "3.0.0-rc.1"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.0-rc.1.tgz#66459f085b07408ddff0868199e2ceb7ddf8845a"
|
||||
@ -3036,6 +3139,11 @@ buffer@^4.3.0:
|
||||
ieee754 "^1.1.4"
|
||||
isarray "^1.0.0"
|
||||
|
||||
builtin-modules@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://r.cnpmjs.org/builtin-modules/download/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
|
||||
integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
|
||||
|
||||
builtin-status-codes@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://r.cnpmjs.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
|
||||
@ -3423,7 +3531,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
|
||||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
commander@^2.20.0:
|
||||
commander@^2.12.1, commander@^2.20.0:
|
||||
version "2.20.3"
|
||||
resolved "https://r.cnpmjs.org/commander/download/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||
integrity sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=
|
||||
@ -4073,6 +4181,11 @@ diff-sequences@^26.0.0:
|
||||
resolved "https://r.cnpmjs.org/diff-sequences/download/diff-sequences-26.0.0.tgz#0760059a5c287637b842bd7085311db7060e88a6"
|
||||
integrity sha1-B2AFmlwodje4Qr1whTEdtwYOiKY=
|
||||
|
||||
diff@^4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://r.cnpmjs.org/diff/download/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
|
||||
integrity sha1-YPOuy4nV+uUgwRqhnvwruYKq3n0=
|
||||
|
||||
diffie-hellman@^5.0.0:
|
||||
version "5.0.3"
|
||||
resolved "https://r.cnpmjs.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
|
||||
@ -4471,6 +4584,13 @@ eslint-utils@^1.4.3:
|
||||
dependencies:
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
|
||||
eslint-utils@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://r.cnpmjs.org/eslint-utils/download/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
|
||||
integrity sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=
|
||||
dependencies:
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
|
||||
eslint-visitor-keys@^1.1.0:
|
||||
version "1.3.0"
|
||||
resolved "https://r.cnpmjs.org/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
|
||||
@ -5207,7 +5327,7 @@ glob-to-regexp@^0.3.0:
|
||||
resolved "https://r.cnpmjs.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
|
||||
integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
|
||||
|
||||
glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
|
||||
glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
|
||||
version "7.1.6"
|
||||
resolved "https://r.cnpmjs.org/glob/download/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||
integrity sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=
|
||||
@ -6901,7 +7021,7 @@ lodash.uniq@^4.5.0:
|
||||
resolved "https://r.cnpmjs.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
||||
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
|
||||
|
||||
lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.2.1:
|
||||
lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.2.1:
|
||||
version "4.17.19"
|
||||
resolved "https://r.cnpmjs.org/lodash/download/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
|
||||
integrity sha1-5I3e2+MLMyF4PFtDAfvTU7weSks=
|
||||
@ -8279,6 +8399,11 @@ prelude-ls@~1.1.2:
|
||||
resolved "https://r.cnpmjs.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
||||
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
|
||||
|
||||
prettier@2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://r.cnpmjs.org/prettier/download/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4"
|
||||
integrity sha1-1tVigkVSQ/L5LMFxZpLAiqMVItQ=
|
||||
|
||||
pretty-error@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://r.cnpmjs.org/pretty-error/download/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
|
||||
@ -8724,6 +8849,11 @@ regexpp@^2.0.1:
|
||||
resolved "https://r.cnpmjs.org/regexpp/download/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
|
||||
integrity sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=
|
||||
|
||||
regexpp@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://r.cnpmjs.org/regexpp/download/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
|
||||
integrity sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI=
|
||||
|
||||
regexpu-core@^4.7.0:
|
||||
version "4.7.0"
|
||||
resolved "https://r.cnpmjs.org/regexpu-core/download/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938"
|
||||
@ -9057,7 +9187,7 @@ selfsigned@^1.10.7:
|
||||
dependencies:
|
||||
node-forge "0.9.0"
|
||||
|
||||
"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
|
||||
"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
|
||||
version "5.7.1"
|
||||
resolved "https://r.cnpmjs.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||
integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=
|
||||
@ -9998,11 +10128,49 @@ tsconfig-paths@^3.9.0:
|
||||
minimist "^1.2.0"
|
||||
strip-bom "^3.0.0"
|
||||
|
||||
tslib@^1.10.0, tslib@^1.9.0:
|
||||
tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
|
||||
version "1.13.0"
|
||||
resolved "https://r.cnpmjs.org/tslib/download/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
|
||||
integrity sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM=
|
||||
|
||||
tslint-config-prettier@^1.18.0:
|
||||
version "1.18.0"
|
||||
resolved "https://r.cnpmjs.org/tslint-config-prettier/download/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37"
|
||||
integrity sha1-dfFAvelH012PDSOODr+AnWRZLDc=
|
||||
|
||||
tslint@^6.1.2:
|
||||
version "6.1.2"
|
||||
resolved "https://r.cnpmjs.org/tslint/download/tslint-6.1.2.tgz#2433c248512cc5a7b2ab88ad44a6b1b34c6911cf"
|
||||
integrity sha1-JDPCSFEsxaeyq4itRKaxs0xpEc8=
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0"
|
||||
builtin-modules "^1.1.1"
|
||||
chalk "^2.3.0"
|
||||
commander "^2.12.1"
|
||||
diff "^4.0.1"
|
||||
glob "^7.1.1"
|
||||
js-yaml "^3.13.1"
|
||||
minimatch "^3.0.4"
|
||||
mkdirp "^0.5.3"
|
||||
resolve "^1.3.2"
|
||||
semver "^5.3.0"
|
||||
tslib "^1.10.0"
|
||||
tsutils "^2.29.0"
|
||||
|
||||
tsutils@^2.29.0:
|
||||
version "2.29.0"
|
||||
resolved "https://r.cnpmjs.org/tsutils/download/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99"
|
||||
integrity sha1-MrSIUBRnrL7dS4VJhnOggSrKC5k=
|
||||
dependencies:
|
||||
tslib "^1.8.1"
|
||||
|
||||
tsutils@^3.17.1:
|
||||
version "3.17.1"
|
||||
resolved "https://r.cnpmjs.org/tsutils/download/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
|
||||
integrity sha1-7XGZF/EcoN7lhicrKsSeAVot11k=
|
||||
dependencies:
|
||||
tslib "^1.8.1"
|
||||
|
||||
tty-browserify@0.0.0:
|
||||
version "0.0.0"
|
||||
resolved "https://r.cnpmjs.org/tty-browserify/download/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
|
||||
|
Loading…
Reference in New Issue
Block a user