mirror of
https://github.com/vuejs/babel-plugin-jsx.git
synced 2025-03-13 14:14:40 +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,
|
jest: true,
|
||||||
es6: 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: {
|
rules: {
|
||||||
'no-nested-ternary': [0],
|
'no-nested-ternary': [0],
|
||||||
'no-param-reassign': [0],
|
'no-param-reassign': [0],
|
||||||
@ -20,6 +25,18 @@ module.exports = {
|
|||||||
'no-plusplus': [0],
|
'no-plusplus': [0],
|
||||||
'import/no-extraneous-dependencies': [0],
|
'import/no-extraneous-dependencies': [0],
|
||||||
'consistent-return': [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
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: install
|
- name: install
|
||||||
run: yarn install --pure-lockfile
|
run: yarn install
|
||||||
|
|
||||||
|
- name: lint
|
||||||
|
run: yarn lint
|
||||||
|
|
||||||
- name: test
|
- name: test
|
||||||
run: yarn test
|
run: yarn test
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"publish": "lerna publish",
|
"publish": "lerna publish",
|
||||||
"test": "lerna run test",
|
"test": "lerna run test",
|
||||||
|
"lint": "lerna run lint",
|
||||||
"dev": "node scripts/dev.js",
|
"dev": "node scripts/dev.js",
|
||||||
"site": "node scripts/site.js"
|
"site": "node scripts/site.js"
|
||||||
},
|
},
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "npm run build && webpack-dev-server",
|
"dev": "npm run build && webpack-dev-server",
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"lint": "eslint --ext .js src",
|
"lint": "eslint 'src/*.ts'",
|
||||||
"test": "npm run build && jest --coverage"
|
"test": "npm run build && jest --coverage"
|
||||||
},
|
},
|
||||||
"bugs": {
|
"bugs": {
|
||||||
@ -27,6 +27,7 @@
|
|||||||
"@ant-design-vue/babel-helper-vue-transform-on": "^1.0.0",
|
"@ant-design-vue/babel-helper-vue-transform-on": "^1.0.0",
|
||||||
"@babel/helper-module-imports": "^7.0.0",
|
"@babel/helper-module-imports": "^7.0.0",
|
||||||
"@babel/plugin-syntax-jsx": "^7.0.0",
|
"@babel/plugin-syntax-jsx": "^7.0.0",
|
||||||
|
"@babel/traverse": "^7.0.0",
|
||||||
"@babel/types": "^7.0.0",
|
"@babel/types": "^7.0.0",
|
||||||
"camelcase": "^6.0.0",
|
"camelcase": "^6.0.0",
|
||||||
"html-tags": "^3.1.0",
|
"html-tags": "^3.1.0",
|
||||||
@ -37,6 +38,8 @@
|
|||||||
"@babel/preset-env": "^7.0.0",
|
"@babel/preset-env": "^7.0.0",
|
||||||
"@rollup/plugin-babel": "^5.0.3",
|
"@rollup/plugin-babel": "^5.0.3",
|
||||||
"@types/svg-tags": "^1.0.0",
|
"@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/compiler-dom": "3.0.0-rc.1",
|
||||||
"@vue/test-utils": "2.0.0-beta.0",
|
"@vue/test-utils": "2.0.0-beta.0",
|
||||||
"babel-jest": "^26.0.1",
|
"babel-jest": "^26.0.1",
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
import * as t from '@babel/types';
|
import * as t from '@babel/types';
|
||||||
import { NodePath } from '@babel/traverse';
|
import { NodePath } from '@babel/traverse';
|
||||||
import { createIdentifier } from './utils';
|
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
|
* Get JSX element type
|
||||||
@ -17,9 +19,8 @@ const getType = (path: NodePath<t.JSXOpeningElement>) => {
|
|||||||
}
|
}
|
||||||
return t.isJSXIdentifier(attribute.get('name'))
|
return t.isJSXIdentifier(attribute.get('name'))
|
||||||
&& (attribute.get('name') as NodePath<t.JSXIdentifier>).get('name') === 'type'
|
&& (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') : '';
|
return typePath ? typePath.get('value.value') : '';
|
||||||
};
|
};
|
||||||
@ -27,22 +28,22 @@ const getType = (path: NodePath<t.JSXOpeningElement>) => {
|
|||||||
const parseModifiers = (value: t.Expression) => {
|
const parseModifiers = (value: t.Expression) => {
|
||||||
let modifiers: string[] = [];
|
let modifiers: string[] = [];
|
||||||
if (t.isArrayExpression(value)) {
|
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;
|
return modifiers;
|
||||||
}
|
};
|
||||||
|
|
||||||
const parseDirectives = (args: {
|
const parseDirectives = (args: {
|
||||||
name: string,
|
name: string,
|
||||||
path: NodePath<t.JSXAttribute>,
|
path: NodePath<t.JSXAttribute>,
|
||||||
value: t.StringLiteral | t.Expression | null,
|
value: t.StringLiteral | t.Expression | null,
|
||||||
state: State,
|
state: State,
|
||||||
tag: t.Identifier | t.MemberExpression | t.StringLiteral | t.CallExpression,
|
tag: Tag,
|
||||||
isComponent: boolean
|
isComponent: boolean
|
||||||
}) => {
|
}) => {
|
||||||
const {
|
const {
|
||||||
name, path, value, state, tag, isComponent,
|
name, path, value, state, tag, isComponent,
|
||||||
} = args
|
} = args;
|
||||||
let modifiers: string[] = name.split('_');
|
let modifiers: string[] = name.split('_');
|
||||||
let arg;
|
let arg;
|
||||||
let val;
|
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') {
|
if (directiveName === 'show') {
|
||||||
return createIdentifier(state, 'vShow');
|
return createIdentifier(state, 'vShow');
|
||||||
}
|
}
|
||||||
if (directiveName === 'model') {
|
if (directiveName === 'model') {
|
||||||
let modelToUse;
|
let modelToUse;
|
||||||
const type = getType(path.parentPath as NodePath<t.JSXOpeningElement>);
|
const type = getType(path.parentPath as NodePath<t.JSXOpeningElement>);
|
||||||
switch (tag.value) {
|
switch ((tag as t.StringLiteral).value) {
|
||||||
case 'select':
|
case 'select':
|
||||||
modelToUse = createIdentifier(state, 'vModelSelect');
|
modelToUse = createIdentifier(state, 'vModelSelect');
|
||||||
break;
|
break;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
// https://github.com/vuejs/vue-next/blob/master/packages/shared/src/patchFlags.ts
|
// https://github.com/vuejs/vue-next/blob/master/packages/shared/src/patchFlags.ts
|
||||||
|
// tslint:disable: no-bitwise
|
||||||
export const enum PatchFlags {
|
export const enum PatchFlags {
|
||||||
TEXT = 1,
|
TEXT = 1,
|
||||||
CLASS = 1 << 1,
|
CLASS = 1 << 1,
|
||||||
@ -17,17 +18,17 @@ export const enum PatchFlags {
|
|||||||
|
|
||||||
// dev only flag -> name mapping
|
// dev only flag -> name mapping
|
||||||
export const PatchFlagNames = {
|
export const PatchFlagNames = {
|
||||||
[PatchFlags.TEXT]: `TEXT`,
|
[PatchFlags.TEXT]: 'TEXT',
|
||||||
[PatchFlags.CLASS]: `CLASS`,
|
[PatchFlags.CLASS]: 'CLASS',
|
||||||
[PatchFlags.STYLE]: `STYLE`,
|
[PatchFlags.STYLE]: 'STYLE',
|
||||||
[PatchFlags.PROPS]: `PROPS`,
|
[PatchFlags.PROPS]: 'PROPS',
|
||||||
[PatchFlags.FULL_PROPS]: `FULL_PROPS`,
|
[PatchFlags.FULL_PROPS]: 'FULL_PROPS',
|
||||||
[PatchFlags.HYDRATE_EVENTS]: `HYDRATE_EVENTS`,
|
[PatchFlags.HYDRATE_EVENTS]: 'HYDRATE_EVENTS',
|
||||||
[PatchFlags.STABLE_FRAGMENT]: `STABLE_FRAGMENT`,
|
[PatchFlags.STABLE_FRAGMENT]: 'STABLE_FRAGMENT',
|
||||||
[PatchFlags.KEYED_FRAGMENT]: `KEYED_FRAGMENT`,
|
[PatchFlags.KEYED_FRAGMENT]: 'KEYED_FRAGMENT',
|
||||||
[PatchFlags.UNKEYED_FRAGMENT]: `UNKEYED_FRAGMENT`,
|
[PatchFlags.UNKEYED_FRAGMENT]: 'UNKEYED_FRAGMENT',
|
||||||
[PatchFlags.DYNAMIC_SLOTS]: `DYNAMIC_SLOTS`,
|
[PatchFlags.DYNAMIC_SLOTS]: 'DYNAMIC_SLOTS',
|
||||||
[PatchFlags.NEED_PATCH]: `NEED_PATCH`,
|
[PatchFlags.NEED_PATCH]: 'NEED_PATCH',
|
||||||
[PatchFlags.HOISTED]: `HOISTED`,
|
[PatchFlags.HOISTED]: 'HOISTED',
|
||||||
[PatchFlags.BAIL]: `BAIL`
|
[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 { addNamespace } from '@babel/helper-module-imports';
|
||||||
import { NodePath } from '@babel/traverse';
|
import { NodePath } from '@babel/traverse';
|
||||||
import { State } from './';
|
import { State } from '.';
|
||||||
|
|
||||||
const transformFragment = (path: NodePath<t.JSXElement>, Fragment: t.JSXMemberExpression) => {
|
const transformFragment = (path: NodePath<t.JSXElement>, Fragment: t.JSXMemberExpression) => {
|
||||||
const children = path.get('children') || [];
|
const children = path.get('children') || [];
|
||||||
|
@ -14,7 +14,7 @@ import {
|
|||||||
} from './utils';
|
} from './utils';
|
||||||
import parseDirectives from './parseDirectives';
|
import parseDirectives from './parseDirectives';
|
||||||
import { PatchFlags, PatchFlagNames } from './patchFlags';
|
import { PatchFlags, PatchFlagNames } from './patchFlags';
|
||||||
import { State, ExcludesBoolean } from './';
|
import { State, ExcludesBoolean } from '.';
|
||||||
|
|
||||||
const xlinkRE = /^xlink([A-Z])/;
|
const xlinkRE = /^xlink([A-Z])/;
|
||||||
const onRE = /^on[^a-z]/;
|
const onRE = /^on[^a-z]/;
|
||||||
@ -24,7 +24,7 @@ const isOn = (key: string) => onRE.test(key);
|
|||||||
const transformJSXSpreadAttribute = (
|
const transformJSXSpreadAttribute = (
|
||||||
nodePath: NodePath,
|
nodePath: NodePath,
|
||||||
path: NodePath<t.JSXSpreadAttribute>,
|
path: NodePath<t.JSXSpreadAttribute>,
|
||||||
mergeArgs: (t.ObjectProperty | t.Expression)[]
|
mergeArgs: (t.ObjectProperty | t.Expression)[],
|
||||||
) => {
|
) => {
|
||||||
const argument = path.get('argument') as NodePath<t.ObjectExpression>;
|
const argument = path.get('argument') as NodePath<t.ObjectExpression>;
|
||||||
const { properties } = argument.node;
|
const { properties } = argument.node;
|
||||||
@ -40,7 +40,7 @@ const transformJSXSpreadAttribute = (
|
|||||||
|
|
||||||
const getJSXAttributeValue = (
|
const getJSXAttributeValue = (
|
||||||
path: NodePath<t.JSXAttribute>,
|
path: NodePath<t.JSXAttribute>,
|
||||||
state: State
|
state: State,
|
||||||
): (
|
): (
|
||||||
t.StringLiteral | t.Expression | null
|
t.StringLiteral | t.Expression | null
|
||||||
) => {
|
) => {
|
||||||
@ -64,13 +64,13 @@ const getJSXAttributeValue = (
|
|||||||
* @returns boolean
|
* @returns boolean
|
||||||
*/
|
*/
|
||||||
const isConstant = (
|
const isConstant = (
|
||||||
node: t.Expression | t.Identifier | t.Literal | t.SpreadElement | null
|
node: t.Expression | t.Identifier | t.Literal | t.SpreadElement | null,
|
||||||
): boolean => {
|
): boolean => {
|
||||||
if (t.isIdentifier(node)) {
|
if (t.isIdentifier(node)) {
|
||||||
return node.name === 'undefined';
|
return node.name === 'undefined';
|
||||||
}
|
}
|
||||||
if (t.isArrayExpression(node)) {
|
if (t.isArrayExpression(node)) {
|
||||||
const elements = node.elements;
|
const { elements } = node;
|
||||||
return elements.every((element) => element && isConstant(element));
|
return elements.every((element) => element && isConstant(element));
|
||||||
}
|
}
|
||||||
if (t.isObjectExpression(node)) {
|
if (t.isObjectExpression(node)) {
|
||||||
@ -193,7 +193,9 @@ const buildProps = (path: NodePath<t.JSXElement>, state: State) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isDirective(name)) {
|
if (isDirective(name)) {
|
||||||
const { directive, modifiers, value, arg, directiveName } = parseDirectives({
|
const {
|
||||||
|
directive, modifiers, value, arg, directiveName,
|
||||||
|
} = parseDirectives({
|
||||||
tag,
|
tag,
|
||||||
isComponent,
|
isComponent,
|
||||||
name,
|
name,
|
||||||
@ -207,7 +209,7 @@ const buildProps = (path: NodePath<t.JSXElement>, state: State) => {
|
|||||||
if (directiveName === 'slots') {
|
if (directiveName === 'slots') {
|
||||||
slots = attributeValue;
|
slots = attributeValue;
|
||||||
return;
|
return;
|
||||||
} else if (directive) {
|
} if (directive) {
|
||||||
directives.push(t.arrayExpression(directive));
|
directives.push(t.arrayExpression(directive));
|
||||||
} else {
|
} else {
|
||||||
// must be v-model and is a component
|
// must be v-model and is a component
|
||||||
@ -258,11 +260,16 @@ const buildProps = (path: NodePath<t.JSXElement>, state: State) => {
|
|||||||
} else {
|
} else {
|
||||||
// JSXSpreadAttribute
|
// JSXSpreadAttribute
|
||||||
hasDynamicKeys = true;
|
hasDynamicKeys = true;
|
||||||
transformJSXSpreadAttribute(path as NodePath, prop as NodePath<t.JSXSpreadAttribute>, mergeArgs);
|
transformJSXSpreadAttribute(
|
||||||
|
path as NodePath,
|
||||||
|
prop as NodePath<t.JSXSpreadAttribute>,
|
||||||
|
mergeArgs,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// patchFlag analysis
|
// patchFlag analysis
|
||||||
|
// tslint:disable: no-bitwise
|
||||||
if (hasDynamicKeys) {
|
if (hasDynamicKeys) {
|
||||||
patchFlag |= PatchFlags.FULL_PROPS;
|
patchFlag |= PatchFlags.FULL_PROPS;
|
||||||
} else {
|
} else {
|
||||||
@ -342,49 +349,48 @@ const getChildren = (
|
|||||||
| t.JSXElement
|
| t.JSXElement
|
||||||
| t.JSXFragment
|
| t.JSXFragment
|
||||||
>[],
|
>[],
|
||||||
state: State
|
state: State,
|
||||||
): t.Expression[] =>
|
): t.Expression[] => paths
|
||||||
paths
|
.map((path) => {
|
||||||
.map((path) => {
|
if (path.isJSXText()) {
|
||||||
if (path.isJSXText()) {
|
const transformedText = transformJSXText(path);
|
||||||
const transformedText = transformJSXText(path);
|
if (transformedText) {
|
||||||
if (transformedText) {
|
return t.callExpression(createIdentifier(state, 'createTextVNode'), [transformedText]);
|
||||||
return t.callExpression(createIdentifier(state, 'createTextVNode'), [transformedText]);
|
|
||||||
}
|
|
||||||
return transformedText;
|
|
||||||
}
|
}
|
||||||
if (path.isJSXExpressionContainer()) {
|
return transformedText;
|
||||||
const expression = transformJSXExpressionContainer(path);
|
}
|
||||||
|
if (path.isJSXExpressionContainer()) {
|
||||||
|
const expression = transformJSXExpressionContainer(path);
|
||||||
|
|
||||||
if (t.isIdentifier(expression)) {
|
if (t.isIdentifier(expression)) {
|
||||||
const { name } = expression as t.Identifier;
|
const { name } = expression as t.Identifier;
|
||||||
const { referencePaths } = path.scope.getBinding(name) || {};
|
const { referencePaths = [] } = path.scope.getBinding(name) || {};
|
||||||
referencePaths?.forEach(referencePath => {
|
referencePaths.forEach((referencePath) => {
|
||||||
walksScope(referencePath, name);
|
walksScope(referencePath, name);
|
||||||
})
|
});
|
||||||
}
|
|
||||||
|
|
||||||
return expression;
|
|
||||||
}
|
}
|
||||||
if (t.isJSXSpreadChild(path)) {
|
|
||||||
return transformJSXSpreadChild(path as NodePath<t.JSXSpreadChild>);
|
return expression;
|
||||||
}
|
}
|
||||||
if (path.isCallExpression()) {
|
if (t.isJSXSpreadChild(path)) {
|
||||||
return path.node;
|
return transformJSXSpreadChild(path as NodePath<t.JSXSpreadChild>);
|
||||||
}
|
}
|
||||||
if (path.isJSXElement()) {
|
if (path.isCallExpression()) {
|
||||||
return transformJSXElement(path, state);
|
return path.node;
|
||||||
}
|
}
|
||||||
throw new Error(`getChildren: ${path.type} is not supported`);
|
if (path.isJSXElement()) {
|
||||||
}).filter(((value: any) => (
|
return transformJSXElement(path, state);
|
||||||
value !== undefined
|
}
|
||||||
|
throw new Error(`getChildren: ${path.type} is not supported`);
|
||||||
|
}).filter(((value: any) => (
|
||||||
|
value !== undefined
|
||||||
&& value !== null
|
&& value !== null
|
||||||
&& !t.isJSXEmptyExpression(value)
|
&& !t.isJSXEmptyExpression(value)
|
||||||
)) as any);
|
)) as any);
|
||||||
|
|
||||||
const transformJSXElement = (
|
const transformJSXElement = (
|
||||||
path: NodePath<t.JSXElement>,
|
path: NodePath<t.JSXElement>,
|
||||||
state: State
|
state: State,
|
||||||
): t.CallExpression => {
|
): t.CallExpression => {
|
||||||
const children = getChildren(path.get('children'), state);
|
const children = getChildren(path.get('children'), state);
|
||||||
const {
|
const {
|
||||||
@ -394,7 +400,7 @@ const transformJSXElement = (
|
|||||||
directives,
|
directives,
|
||||||
patchFlag,
|
patchFlag,
|
||||||
dynamicPropNames,
|
dynamicPropNames,
|
||||||
slots
|
slots,
|
||||||
} = buildProps(path, state);
|
} = buildProps(path, state);
|
||||||
|
|
||||||
const useOptimate = path.getData('optimize') !== false;
|
const useOptimate = path.getData('optimize') !== false;
|
||||||
@ -420,16 +426,16 @@ const transformJSXElement = (
|
|||||||
(children.length || slots) ? (
|
(children.length || slots) ? (
|
||||||
isComponent
|
isComponent
|
||||||
? t.objectExpression([
|
? t.objectExpression([
|
||||||
!!children.length && t.objectProperty(
|
!!children.length && t.objectProperty(
|
||||||
t.identifier('default'),
|
t.identifier('default'),
|
||||||
t.arrowFunctionExpression([], t.arrayExpression(children))
|
t.arrowFunctionExpression([], t.arrayExpression(children)),
|
||||||
),
|
),
|
||||||
...(slots ? (
|
...(slots ? (
|
||||||
t.isObjectExpression(slots)
|
t.isObjectExpression(slots)
|
||||||
? (slots as any as t.ObjectExpression).properties
|
? (slots as any as t.ObjectExpression).properties
|
||||||
: [t.spreadElement(slots as any)]
|
: [t.spreadElement(slots as any)]
|
||||||
) : [])
|
) : []),
|
||||||
].filter(Boolean as any as ExcludesBoolean))
|
].filter(Boolean as any as ExcludesBoolean))
|
||||||
: t.arrayExpression(children)
|
: t.arrayExpression(children)
|
||||||
) : t.nullLiteral(),
|
) : t.nullLiteral(),
|
||||||
!!patchFlag && usePatchFlag && (
|
!!patchFlag && usePatchFlag && (
|
||||||
@ -438,7 +444,9 @@ const transformJSXElement = (
|
|||||||
: t.numericLiteral(PatchFlags.BAIL)
|
: t.numericLiteral(PatchFlags.BAIL)
|
||||||
),
|
),
|
||||||
!!dynamicPropNames.size && usePatchFlag
|
!!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));
|
].filter(Boolean as any as ExcludesBoolean));
|
||||||
|
|
||||||
if (!directives.length) {
|
if (!directives.length) {
|
||||||
|
@ -2,16 +2,16 @@ import * as t from '@babel/types';
|
|||||||
import htmlTags from 'html-tags';
|
import htmlTags from 'html-tags';
|
||||||
import svgTags from 'svg-tags';
|
import svgTags from 'svg-tags';
|
||||||
import { NodePath } from '@babel/traverse';
|
import { NodePath } from '@babel/traverse';
|
||||||
import { State } from './';
|
import { State } from '.';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* create Identifier
|
* create Identifier
|
||||||
* @param state
|
* @param state
|
||||||
* @param id string
|
* @param id string
|
||||||
* @returns MemberExpression
|
* @returns MemberExpression
|
||||||
*/
|
*/
|
||||||
const createIdentifier = (
|
const createIdentifier = (
|
||||||
state: State, id: string
|
state: State, id: string,
|
||||||
): t.MemberExpression => t.memberExpression(state.get('vue'), t.identifier(id));
|
): 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
|
* @param {*} path JSXIdentifier | JSXMemberExpression | JSXNamespacedName
|
||||||
* @returns boolean
|
* @returns boolean
|
||||||
*/
|
*/
|
||||||
const isFragment = (path: NodePath<t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName>) =>
|
const isFragment = (
|
||||||
t.isJSXMemberExpression(path)
|
path:
|
||||||
|
NodePath<t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName>,
|
||||||
|
): boolean => t.isJSXMemberExpression(path)
|
||||||
&& (path.node as t.JSXMemberExpression).property.name === 'Fragment';
|
&& (path.node as t.JSXMemberExpression).property.name === 'Fragment';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,7 +56,9 @@ const checkIsComponent = (path: NodePath<t.JSXOpeningElement>): boolean => {
|
|||||||
* @param path JSXMemberExpression
|
* @param path JSXMemberExpression
|
||||||
* @returns MemberExpression
|
* @returns MemberExpression
|
||||||
*/
|
*/
|
||||||
const transformJSXMemberExpression = (path: NodePath<t.JSXMemberExpression>): t.MemberExpression => {
|
const transformJSXMemberExpression = (
|
||||||
|
path: NodePath<t.JSXMemberExpression>,
|
||||||
|
): t.MemberExpression => {
|
||||||
const objectPath = path.node.object;
|
const objectPath = path.node.object;
|
||||||
const propertyPath = path.node.property;
|
const propertyPath = path.node.property;
|
||||||
const transformedObject = t.isJSXMemberExpression(objectPath)
|
const transformedObject = t.isJSXMemberExpression(objectPath)
|
||||||
@ -70,9 +74,12 @@ const transformJSXMemberExpression = (path: NodePath<t.JSXMemberExpression>): t.
|
|||||||
* Get tag (first attribute for h) from JSXOpeningElement
|
* Get tag (first attribute for h) from JSXOpeningElement
|
||||||
* @param path JSXElement
|
* @param path JSXElement
|
||||||
* @param state State
|
* @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');
|
const namePath = path.get('openingElement').get('name');
|
||||||
if (namePath.isJSXIdentifier()) {
|
if (namePath.isJSXIdentifier()) {
|
||||||
const { name } = namePath.node;
|
const { name } = namePath.node;
|
||||||
@ -157,8 +164,9 @@ const transformJSXText = (path: NodePath<t.JSXText>): t.StringLiteral | null =>
|
|||||||
* @returns Expression
|
* @returns Expression
|
||||||
*/
|
*/
|
||||||
const transformJSXExpressionContainer = (
|
const transformJSXExpressionContainer = (
|
||||||
path: NodePath<t.JSXExpressionContainer>
|
path: NodePath<t.JSXExpressionContainer>,
|
||||||
): (t.Expression) => path.get('expression').node as t.Expression;
|
): (t.Expression
|
||||||
|
) => path.get('expression').node as t.Expression;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Transform JSXSpreadChild
|
* Transform JSXSpreadChild
|
||||||
@ -166,17 +174,17 @@ const transformJSXExpressionContainer = (
|
|||||||
* @returns SpreadElement
|
* @returns SpreadElement
|
||||||
*/
|
*/
|
||||||
const transformJSXSpreadChild = (
|
const transformJSXSpreadChild = (
|
||||||
path: NodePath<t.JSXSpreadChild>
|
path: NodePath<t.JSXSpreadChild>,
|
||||||
): t.SpreadElement => t.spreadElement(path.get('expression').node);
|
): 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 (path.scope.hasBinding(name) && path.parentPath) {
|
||||||
if (t.isJSXElement(path.parentPath.node)) {
|
if (t.isJSXElement(path.parentPath.node)) {
|
||||||
path.parentPath.setData('optimize', false);
|
path.parentPath.setData('optimize', false);
|
||||||
}
|
}
|
||||||
walksScope(path.parentPath, name);
|
walksScope(path.parentPath, name);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
export {
|
export {
|
||||||
createIdentifier,
|
createIdentifier,
|
||||||
|
180
yarn.lock
180
yarn.lock
@ -50,6 +50,15 @@
|
|||||||
lodash "^4.17.13"
|
lodash "^4.17.13"
|
||||||
source-map "^0.5.0"
|
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":
|
"@babel/helper-annotate-as-pure@^7.10.4":
|
||||||
version "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"
|
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"
|
resolved "https://r.cnpmjs.org/@babel/parser/download/@babel/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64"
|
||||||
integrity sha1-nu3yfhmY2Hc5+1AopRIFV8BqGmQ=
|
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":
|
"@babel/plugin-proposal-async-generator-functions@^7.10.4":
|
||||||
version "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"
|
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/parser" "^7.10.4"
|
||||||
"@babel/types" "^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":
|
"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4":
|
||||||
version "7.10.4"
|
version "7.10.4"
|
||||||
resolved "https://r.cnpmjs.org/@babel/traverse/download/@babel/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818"
|
resolved "https://r.cnpmjs.org/@babel/traverse/download/@babel/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818"
|
||||||
@ -825,6 +854,15 @@
|
|||||||
lodash "^4.17.13"
|
lodash "^4.17.13"
|
||||||
to-fast-properties "^2.0.0"
|
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":
|
"@bcoe/v8-coverage@^0.2.3":
|
||||||
version "0.2.3"
|
version "0.2.3"
|
||||||
resolved "https://r.cnpmjs.org/@bcoe/v8-coverage/download/@bcoe/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
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"
|
resolved "https://r.cnpmjs.org/@types/color-name/download/@types/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
|
||||||
integrity sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=
|
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":
|
"@types/estree@0.0.39":
|
||||||
version "0.0.39"
|
version "0.0.39"
|
||||||
resolved "https://r.cnpmjs.org/@types/estree/download/@types/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
|
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-coverage" "*"
|
||||||
"@types/istanbul-lib-report" "*"
|
"@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"
|
version "7.0.5"
|
||||||
resolved "https://r.cnpmjs.org/@types/json-schema/download/@types/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd"
|
resolved "https://r.cnpmjs.org/@types/json-schema/download/@types/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd"
|
||||||
integrity sha1-3M5EMOZLRDuolF8CkPtWStW6xt0=
|
integrity sha1-3M5EMOZLRDuolF8CkPtWStW6xt0=
|
||||||
@ -2115,6 +2158,66 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/yargs-parser" "*"
|
"@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":
|
"@vue/compiler-core@3.0.0-rc.1":
|
||||||
version "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"
|
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"
|
ieee754 "^1.1.4"
|
||||||
isarray "^1.0.0"
|
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:
|
builtin-status-codes@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://r.cnpmjs.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
|
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:
|
dependencies:
|
||||||
delayed-stream "~1.0.0"
|
delayed-stream "~1.0.0"
|
||||||
|
|
||||||
commander@^2.20.0:
|
commander@^2.12.1, commander@^2.20.0:
|
||||||
version "2.20.3"
|
version "2.20.3"
|
||||||
resolved "https://r.cnpmjs.org/commander/download/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
resolved "https://r.cnpmjs.org/commander/download/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||||
integrity sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=
|
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"
|
resolved "https://r.cnpmjs.org/diff-sequences/download/diff-sequences-26.0.0.tgz#0760059a5c287637b842bd7085311db7060e88a6"
|
||||||
integrity sha1-B2AFmlwodje4Qr1whTEdtwYOiKY=
|
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:
|
diffie-hellman@^5.0.0:
|
||||||
version "5.0.3"
|
version "5.0.3"
|
||||||
resolved "https://r.cnpmjs.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
|
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:
|
dependencies:
|
||||||
eslint-visitor-keys "^1.1.0"
|
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:
|
eslint-visitor-keys@^1.1.0:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://r.cnpmjs.org/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
|
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"
|
resolved "https://r.cnpmjs.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
|
||||||
integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
|
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"
|
version "7.1.6"
|
||||||
resolved "https://r.cnpmjs.org/glob/download/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
resolved "https://r.cnpmjs.org/glob/download/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||||
integrity sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=
|
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"
|
resolved "https://r.cnpmjs.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
||||||
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
|
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"
|
version "4.17.19"
|
||||||
resolved "https://r.cnpmjs.org/lodash/download/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
|
resolved "https://r.cnpmjs.org/lodash/download/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
|
||||||
integrity sha1-5I3e2+MLMyF4PFtDAfvTU7weSks=
|
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"
|
resolved "https://r.cnpmjs.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
||||||
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
|
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:
|
pretty-error@^2.1.1:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://r.cnpmjs.org/pretty-error/download/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
|
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"
|
resolved "https://r.cnpmjs.org/regexpp/download/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
|
||||||
integrity sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=
|
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:
|
regexpu-core@^4.7.0:
|
||||||
version "4.7.0"
|
version "4.7.0"
|
||||||
resolved "https://r.cnpmjs.org/regexpu-core/download/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938"
|
resolved "https://r.cnpmjs.org/regexpu-core/download/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938"
|
||||||
@ -9057,7 +9187,7 @@ selfsigned@^1.10.7:
|
|||||||
dependencies:
|
dependencies:
|
||||||
node-forge "0.9.0"
|
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"
|
version "5.7.1"
|
||||||
resolved "https://r.cnpmjs.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
resolved "https://r.cnpmjs.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||||
integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=
|
integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=
|
||||||
@ -9998,11 +10128,49 @@ tsconfig-paths@^3.9.0:
|
|||||||
minimist "^1.2.0"
|
minimist "^1.2.0"
|
||||||
strip-bom "^3.0.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"
|
version "1.13.0"
|
||||||
resolved "https://r.cnpmjs.org/tslib/download/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
|
resolved "https://r.cnpmjs.org/tslib/download/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
|
||||||
integrity sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM=
|
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:
|
tty-browserify@0.0.0:
|
||||||
version "0.0.0"
|
version "0.0.0"
|
||||||
resolved "https://r.cnpmjs.org/tty-browserify/download/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
|
resolved "https://r.cnpmjs.org/tty-browserify/download/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user