diff --git a/.gitignore b/.gitignore
index 1538210768..1dc69bff9f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -65,6 +65,7 @@ jspm_packages/
# End of https://www.gitignore.io/api/node
lib/
+dist/
.DS_Store
public
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000000..7da54ea95c
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Alipay.inc
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/babel.config.js b/babel.config.js
index 3830e7567d..3a9db5974d 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -38,6 +38,9 @@ module.exports = (api) => {
browsers: 'Last 2 Chrome versions, Firefox ESR',
node: 'current',
},
+ // set `modules: false` when building CDN bundle, let rollup do commonjs works
+ // @see https://github.com/rollup/rollup-plugin-babel#modules
+ modules: api.env('bundle') ? false : 'auto',
},
],
[
@@ -65,8 +68,11 @@ module.exports = (api) => {
}
],
'@babel/plugin-syntax-dynamic-import',
- '@babel/plugin-transform-modules-commonjs',
- [
+ // let rollup do commonjs works
+ // @see https://github.com/rollup/rollup-plugin-babel#modules
+ api.env('bundle') ? {} : '@babel/plugin-transform-modules-commonjs',
+ // 开发模式下以原始文本引入,便于调试
+ api.env('bundle') ? {} : [
// import glsl as raw text
'babel-plugin-inline-import',
{
@@ -84,11 +90,10 @@ module.exports = (api) => {
transform: 'constObject',
}
],
- // TODO:减少最终打包产物大小
- // 1. 去除 Shader 中的注释
- // @see https://www.npmjs.com/package/babel-plugin-remove-glsl-comments
- // 2. 内联 WebGL 常量
- // @see https://www.npmjs.com/package/babel-plugin-inline-webgl-constants
+ // 按需引用 @see https://github.com/lodash/babel-plugin-lodash
+ 'lodash',
+ // 内联 WebGL 常量 @see https://www.npmjs.com/package/babel-plugin-inline-webgl-constants
+ api.env('bundle') ? 'inline-webgl-constants' : {},
],
env: {
build: {
diff --git a/build/bundle.ts b/build/bundle.ts
new file mode 100644
index 0000000000..ce3a796bbe
--- /dev/null
+++ b/build/bundle.ts
@@ -0,0 +1,4 @@
+// @ts-ignore
+export * from '@l7/scene';
+// @ts-ignore
+export * from '@l7/layers';
diff --git a/build/rollup-plugin-glsl.js b/build/rollup-plugin-glsl.js
new file mode 100644
index 0000000000..892ddbe944
--- /dev/null
+++ b/build/rollup-plugin-glsl.js
@@ -0,0 +1,33 @@
+import { createFilter } from 'rollup-pluginutils';
+
+// borrow from https://github.com/uber/luma.gl/blob/master/dev-modules/babel-plugin-remove-glsl-comments/index.js#L4-L5
+const INLINE_COMMENT_REGEX = /\s*\/\/.*[\n\r]/g;
+const BLOCK_COMMENT_REGEX = /\s*\/\*(\*(?!\/)|[^*])*\*\//g;
+
+// 生产环境压缩 GLSL
+export default function glsl(include, minify) {
+ const filter = createFilter(include);
+ return {
+ name: 'glsl',
+ transform(code, id) {
+ if (!filter(id)) return;
+
+ if (minify) {
+ code = code
+ .trim() // strip whitespace at the start/end
+ .replace(/\n+/g, '\n') // collapse multi line breaks
+ // remove comments
+ .replace(INLINE_COMMENT_REGEX, '\n')
+ .replace(BLOCK_COMMENT_REGEX, '')
+ .replace(/\n\s+/g, '\n') // strip identation
+ // .replace(/\s?([+-\/*=,])\s?/g, '$1') // strip whitespace around operators
+ // .replace(/([;\(\),\{\}])\n(?=[^#])/g, '$1'); // strip more line breaks
+ }
+
+ return {
+ code: `export default ${JSON.stringify(code)};`,
+ map: { mappings: '' }
+ };
+ }
+ };
+}
\ No newline at end of file
diff --git a/build/rollup.config.js b/build/rollup.config.js
new file mode 100644
index 0000000000..cf07153724
--- /dev/null
+++ b/build/rollup.config.js
@@ -0,0 +1,79 @@
+import path from 'path';
+import alias from '@rollup/plugin-alias';
+import json from '@rollup/plugin-json';
+import resolve from 'rollup-plugin-node-resolve';
+import commonjs from 'rollup-plugin-commonjs';
+import { terser } from "rollup-plugin-terser";
+import analyze from 'rollup-plugin-analyzer';
+import babel from 'rollup-plugin-babel';
+import glsl from './rollup-plugin-glsl';
+
+function resolveFile(filePath) {
+ return path.join(__dirname, '..', filePath)
+}
+
+module.exports = [
+ {
+ input: resolveFile('build/bundle.ts'),
+ output: {
+ file: resolveFile('dist/bundle.js'),
+ format: 'umd',
+ name: 'L7',
+ globals: {
+ 'mapbox-gl': 'mapboxgl',
+ },
+ },
+ external: [
+ 'mapbox-gl',
+ ],
+ treeshake: true,
+ plugins: [
+ alias(
+ {
+ resolve: ['.tsx', '.ts'],
+ entries: [
+ {
+ find: /^@l7\/(.*)/,
+ replacement: resolveFile('packages/$1/src'),
+ },
+ ]
+ },
+ ),
+ resolve({
+ browser: true,
+ preferBuiltins: false,
+ extensions: ['.js', '.ts'],
+ }),
+ glsl(
+ ['**/*.glsl'],
+ true,
+ ),
+ json(),
+ // @see https://github.com/rollup/rollup-plugin-node-resolve#using-with-rollup-plugin-commonjs
+ commonjs({
+ namedExports: {
+ eventemitter3: [ 'EventEmitter' ],
+ // @see https://github.com/rollup/rollup-plugin-commonjs/issues/266
+ lodash: [
+ 'isNil',
+ 'uniq',
+ 'clamp',
+ 'isObject',
+ 'isFunction',
+ 'cloneDeep',
+ 'isString',
+ 'isNumber',
+ ],
+ }
+ }),
+ babel({
+ extensions: ['.js', '.ts'],
+ }),
+ terser(),
+ analyze({
+ summaryOnly: true,
+ limit: 20,
+ }),
+ ],
+ },
+];
diff --git a/dev-docs/使用方法.md b/dev-docs/使用方法.md
new file mode 100644
index 0000000000..912ac3639b
--- /dev/null
+++ b/dev-docs/使用方法.md
@@ -0,0 +1,230 @@
+# 使用方法
+
+L7 提供三种使用方式:CDN、Submodule 以及 React 组件。
+
+## 通过 CDN 使用
+
+首先在 `
` 中引入 L7 CDN 版本的 JS 和 CSS 文件:
+```html
+
+
+
+
+```
+
+如果使用 Mapbox,还需要额外引入 Mapbox 的 JS 和 CSS 文件,这一步可以参考 [Mapbox 文档](https://docs.mapbox.com/mapbox-gl-js/overview/#quickstart):
+```html
+
+
+
+
+
+```
+⚠️高德采用异步加载,因此不需要引入任何额外静态文件。
+
+然后在 `` 中定义一个容器并设置一个 `id`。通过全局 `L7` 这个命名空间可以获取场景 `L7.Scene` 和图层 `L7.PolygonLayer`:
+```html
+
+
+
+
+```
+
+⚠️需要获取高德或者 Mapbox 的使用 token 并传入 `L7.Scene` 的构造函数,获取方式如下:
+* 高德地图开发者 Key [申请方法](https://lbs.amap.com/dev/key/)
+* [Mapbox Access Tokens](https://docs.mapbox.com/help/how-mapbox-works/access-tokens/#creating-and-managing-access-tokens)
+
+## 通过 Submodule 使用
+
+首先通过 `npm/yarn` 安装 `@l7/scene` 和 `@l7/layers`:
+```bash
+npm install --save @l7/scene @l7/layers
+// or
+yarn add @l7/scene @l7/layers
+```
+
+然后就可以使用其中包含的场景和各类图层:
+```typescript
+import { Scene } from '@l7/scene';
+import { PolygonLayer } from '@l7/layers';
+
+(async function() {
+ // 获取数据
+ const response = await fetch(
+ 'https://gw.alipayobjects.com/os/basement_prod/d2e0e930-fd44-4fca-8872-c1037b0fee7b.json',
+ );
+ const data = await response.json();
+
+ // 创建场景
+ const scene = new Scene({
+ center: [110.19382669582967, 50.258134],
+ id: 'map',
+ pitch: 0,
+ style: 'dark',
+ type: 'amap',
+ zoom: 3,
+ token: 'pg.xxx', // 高德或者 Mapbox 的 token
+ });
+
+ // 创建图层
+ const layer = new PolygonLayer({});
+ layer
+ .source(data)
+ .size('name', [0, 10000, 50000, 30000, 100000])
+ .color('name', [
+ '#2E8AE6',
+ '#69D1AB',
+ '#DAF291',
+ '#FFD591',
+ '#FF7A45',
+ '#CF1D49',
+ ])
+ .shape('fill')
+ .style({
+ opacity: 0.8,
+ });
+
+ // 添加图层到场景中
+ scene.addLayer(layer);
+
+ // 渲染场景
+ scene.render();
+})();
+```
+
+最后在 `` 中引入 L7 CDN 版本的 CSS 文件:
+```html
+
+
+
+```
+
+L7 目前的文档都通过这种方式使用,可以参考项目中的 stories:
+* [高德地图](https://github.com/antvis/L7/blob/next/stories/MapAdaptor/components/AMap.tsx)
+* [Mapbox](https://github.com/antvis/L7/blob/next/stories/MapAdaptor/components/Mapbox.tsx)
+
+
+## [WIP] React
+
+React 组件待开发,目前可以暂时以 Submodule 方式使用:
+```tsx
+import { Scene } from '@l7/scene';
+import { PolygonLayer } from '@l7/layers';
+import * as React from 'react';
+
+export default class AMap extends React.Component {
+ private scene: Scene;
+
+ public componentWillUnmount() {
+ this.scene.destroy();
+ }
+
+ public async componentDidMount() {
+ const response = await fetch(
+ 'https://gw.alipayobjects.com/os/basement_prod/d2e0e930-fd44-4fca-8872-c1037b0fee7b.json',
+ );
+ const scene = new Scene({
+ center: [110.19382669582967, 50.258134],
+ id: 'map',
+ pitch: 0,
+ style: 'dark',
+ type: 'amap',
+ zoom: 3,
+ token: 'pg.xxx', // 高德或者 Mapbox 的 token
+ });
+ const layer = new PolygonLayer({});
+
+ layer
+ .source(await response.json())
+ .size('name', [0, 10000, 50000, 30000, 100000])
+ .color('name', [
+ '#2E8AE6',
+ '#69D1AB',
+ '#DAF291',
+ '#FFD591',
+ '#FF7A45',
+ '#CF1D49',
+ ])
+ .shape('fill')
+ .style({
+ opacity: 0.8,
+ });
+ scene.addLayer(layer);
+ scene.render();
+ this.scene = scene;
+ }
+
+ public render() {
+ return (
+
+ );
+ }
+}
+```
+
+⚠️组件 Unmount 时需要通过 `scene.destroy()` 手动销毁场景。
diff --git a/dev-docs/构建方案.md b/dev-docs/构建方案.md
new file mode 100644
index 0000000000..d371cec52c
--- /dev/null
+++ b/dev-docs/构建方案.md
@@ -0,0 +1,286 @@
+# 构建方案
+
+考虑到 L7 提供的三种[使用方法](./使用方法.md):CDN、Submodule 和 React 组件,我们需要提供对应的构建方案。
+
+由于 React 组件待开发,下面我们将从方案技术细节、优化手段两方面介绍 CDN 和 Submodule 的构建方案。
+
+## CDN
+
+考虑到后续将引入 WebWorker 特性,目前 Webpack4 暂时还不支持多种 target(web + webworker)混合的输出模式,相关 [ISSUE](https://github.com/webpack/webpack/issues/6525)。
+如果后续支持,配合 SplitChunksPlugin 应该能解决在 Worker 和不同 entry 之间共享代码的问题。
+
+因此目前和 Mapbox 做法一样,我们使用 Rollup 构建 CDN Bundler。
+
+打包命令如下,会在 `dist/` 下输出产物:
+```bash
+yarn bundle
+```
+
+### UMD
+
+以 L7 为命名空间,让用户可以通过类似 `L7.Scene` 的方式使用。同时以 UMD 为构建目标:
+```javascript
+{
+ input: resolveFile('build/bundle.ts'),
+ output: {
+ file: resolveFile('dist/bundle.js'),
+ format: 'umd',
+ name: 'L7',
+ },
+}
+```
+
+目前只需要暴露场景以及图层相关的 API,因此 Bundler 非常简单:
+```typescript
+// build/bundle.ts
+export * from '@l7/scene';
+export * from '@l7/layers';
+```
+
+### Alias
+
+为了帮助 resolver 定位 lerna packages,需要重命名类似 `@l7/scene` 这样的依赖路径:
+```javascript
+import alias from '@rollup/plugin-alias';
+
+plugins: [
+ alias(
+ {
+ resolve: ['.tsx', '.ts'],
+ entries: [
+ {
+ find: /^@l7\/(.*)/,
+ replacement: resolveFile('packages/$1/src'),
+ },
+ ]
+ },
+ ),
+]
+```
+
+配合 [`terser`](https://github.com/TrySound/rollup-plugin-terser) 压缩后,我们就能得到可运行的 CDN 版本了,但从减少构建产物大小出发还有很多优化可以做。
+
+### 减少包大小
+
+除了 Rollup 提供的 TreeShaking,我们主要从三个方面考虑:
+* 减少第三方依赖大小尤其是 Lodash
+* external Mapbox 依赖
+* 压缩 GLSL 代码
+ * 去除多余空格、换行符和注释
+ * 内联 WebGL 常量
+ * 预计算 define 变量
+
+#### Lodash 按需引用
+
+通过 analysis 插件可以看到第三方依赖大小占比:
+```
+/node_modules/lodash/lodash.js
+███████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 23.79 % (540.328 KB)
+/node_modules/regl/dist/regl.js
+██████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 12.21 % (277.403 KB)
+/node_modules/hammerjs/hammer.js
+█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 3.25 % (73.847 KB)
+/node_modules/uri-js/dist/es5/uri.all.js
+█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 2.28 % (51.721 KB)
+```
+
+仔细查看 Lodash 的引用情况:
+```
+███████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
+file: /node_modules/lodash/lodash.js
+bundle space: 23.79 %
+rendered size: 540.328 KB
+original size: 540.51 KB
+code reduction: 0.03 %
+dependents: 13
+ - /packages/core/src/services/layer/StyleAttribute.ts
+ - /packages/core/src/services/shader/ShaderModuleService.ts
+ - /packages/core/src/services/renderer/passes/post-processing/BlurHPass.ts
+```
+
+按需引用 Lodash 常见的做法有几种:
+* [loash-es](https://github.com/lodash/lodash/tree/es)
+* babel-plugin-lodash
+* lodash-webpack-plugin
+
+由于我们使用 Rollup 以及 `rollup-plugin-babel`,[babel-plugin-lodash](https://github.com/lodash/babel-plugin-lodash) 可以很好地解决这个问题。该插件的[原理](https://github.com/rollup/rollup/issues/610#issuecomment-270801483)其实也是引用 `lodash-es`:
+```javascript
+// this...
+import { template } from 'lodash-es';
+
+// ...basically becomes this:
+import template from 'lodash-es/template.js';
+```
+
+最终的效果还是很明显的:
+```
+/node_modules/regl/dist/regl.js
+████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 16.55 % (277.403 KB)
+/node_modules/hammerjs/hammer.js
+██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 4.41 % (73.847 KB)
+/node_modules/uri-js/dist/es5/uri.all.js
+█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 3.09 % (51.721 KB)
+/node_modules/lodash.mergewith/index.js
+█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 3.06 % (51.256 KB)
+```
+
+#### 剔除 Mapbox
+
+不同于高德异步加载的方式,Mapbox 用户需要手动引入 Mapbox 的 JS 和 CSS,因此 L7 CDN 版本就需要剔除了。通过 `globals` 假定用户负责引入 Mapbox 的 CDN 版本:
+```javascript
+{
+ output: {
+ globals: {
+ 'mapbox-gl': 'mapboxgl',
+ },
+ },
+ external: [
+ 'mapbox-gl',
+ ],
+}
+```
+
+这样 L7 Bundler 中就不包含 Mapbox 的 Module Bundler(mapbox-gl) 了。
+
+#### 内联 WebGL 常量
+
+在构建阶段可以将 WebGL 常量替换成对应的值,可以减少字符长度:
+```javascript
+// from
+const max = gl.MAX_VERTEX_ATTRIBS;
+// to
+const max = 34921;
+```
+
+luma.gl 和 deck.gl 都使用了 [babel-plugin-inline-webgl-constants](https://www.npmjs.com/package/babel-plugin-inline-webgl-constants)。
+
+来看一下实际效果,在压缩前就能减少字符长度:
+```javascript
+// 内联前
+const usageMap = {
+ [gl.STATIC_DRAW]: 'static',
+ [gl.DYNAMIC_DRAW]: 'dynamic',
+ [gl.STREAM_DRAW]: 'stream'
+};
+// 内联后
+const usageMap = {
+ [35044]: 'static',
+ [35048]: 'dynamic',
+ [35040]: 'stream'
+};
+```
+
+#### 压缩 GLSL 代码
+
+在开发编写 Shader 时,我们是不需要对 GLSL 代码进行压缩的,因为在 Shader 编译失败时能根据错误信息定位到具体行列。
+
+但是在生产环境下,我们就需要把 GLSL 源代码中包含的**多余**的换行、空格以及注释去掉,减少最终引入字符串的大小。
+
+这里需要注意的是并不是所有换行都可以简单去除,例如 `define` 语句末尾的换行一定要保留。
+
+luma.gl 和 deck.gl 使用了 [babel-plugin-remove-glsl-comments](https://github.com/uber/luma.gl/tree/master/dev-modules/babel-plugin-remove-glsl-comments) 简单地移除注释,但很明显,多余的空格和换行符依然存在。
+
+因此我们需要写一个简单的 Rollup 插件:
+```javascript
+export default function glsl(include, minify) {
+ const filter = createFilter(include);
+ return {
+ name: 'glsl',
+ transform(code, id) {
+ if (!filter(id)) return;
+
+ if (minify) {
+ code = code
+ .trim() // strip whitespace at the start/end
+ .replace(/\n+/g, '\n') // collapse multi line breaks
+ // remove comments
+ .replace(INLINE_COMMENT_REGEX, '\n')
+ .replace(BLOCK_COMMENT_REGEX, '')
+ .replace(/\n\s+/g, '\n') // strip identation
+ }
+
+ return {
+ code: `export default ${JSON.stringify(code)};`,
+ map: { mappings: '' }
+ };
+ }
+ };
+}
+```
+
+#### GLSL minifier
+
+以上针对 GLSL 的压缩仅限于字符替换,更彻底的优化必然需要生成 GLSL 对应的 AST,从而进行变量重命名、死代码消除等等更高级的优化手段。[glsl-minifier](https://github.com/TimvanScherpenzeel/glsl-minifier) 就是这样一个 CLI 工具。
+
+其中的预计算特性有点类似 [Prepack](https://github.com/facebook/prepack),在构建阶段就计算出 `define` 变量的值:
+```glsl
+#define SPREAD 8.00
+#define MAX_DIR_LIGHTS 0
+#define MAX_POINT_LIGHTS 0
+#define MAX_SPOT_LIGHTS 0
+#define MAX_HEMI_LIGHTS 0
+#define MAX_SHADOWS 0
+#define GAMMA_FACTOR 2
+
+uniform mat4 viewMatrix;
+uniform vec3 cameraPosition;
+
+uniform vec2 resolution;
+uniform float time;
+uniform sampler2D texture;
+
+void main() {
+ vec2 uv = gl_FragCoord.xy / resolution.xy;
+
+ float v = texture2D( texture, uv ).x;
+
+ if (v == 1000.) discard;
+ v = sqrt(v);
+
+ gl_FragColor = vec4( vec3( 1. - v / SPREAD ), 1.0 );
+}
+```
+
+上述代码压缩结果如下,`define` 统统不见了,变量名也进行了改写:
+```glsl
+uniform highp vec2 resolution;uniform sampler2D texture;void main(){highp vec2 a;a=(gl_FragCoord.xy/resolution);lowp vec4 b;b=texture2D(texture,a);if((b.x==1000.0)){discard;}lowp vec4 c;c.w=1.0;c.xyz=vec3((1.0-(sqrt(b.x)/8.0)));gl_FragColor=c;}
+```
+
+当然 glsl-minifier 做的远不止这些,还会应用变量名改写、死代码消除等等优化手段:
+> Optimisations include function inlining, dead code removal, copy propagation, constant folding, constant propagation, arithmetic optimizations and so on. Minifications includes variable rewriting and whitespace trimming.
+
+显然这种手段要求我们的 Shader 代码在构建时是稳定的,然而 L7 使用的 GLSL 模块化方案需要在运行时进行模块拼接,如果在构建时代码片段中包含的变量发生了改写,势必影响运行时的拼接结果。另外 minifier 会校验代码的正确性,不理解我们自定义的模块引入语句 `pragma include 'module'` 是一定会报错的。
+
+以这样的 Shader 为例:
+```glsl
+#pragma include "project"
+
+void main() {
+ // 从 project 模块引入方法
+ project(position);
+}
+```
+
+执行压缩时会报错:
+```bash
+$ node_modules/.bin/glsl-minifier -i ./build/example.frag -o ./build/example.min.frag
+Error:
+(28,2): error: no function with name 'project'
+
+Exiting glsl-minifier!
+```
+
+因此要想使用这个终极压缩方案,需要修改 L7 目前的 GLSL 模块化方案,代码拼接不能在运行时而需要在构建时完成。但这样就很难兼顾扩展性,毕竟用户自定义图层的 Shader 代码肯定只有运行时才能拿到。
+
+所以一个折中的办法是在构建时先对 L7 内置图层的 Shader 代码进行模块化处理,得到最终的 GLSL 文本,然后再 minify。同时保留运行时模块化拼接的能力,应对用户自定义图层。
+
+## Submodule
+
+使用 Yarn workspaces + Lerna。
+
+### 异步加载 Mapbox
+
+以 L7 Bundler 方式使用时,由于需要在运行时根据用户配置项选择地图底图,会导致构建时需要将全部地图依赖引入,无法进行 TreeShaking。
+目前高德地图使用运行时异步加载方式引入,不会导致该问题,但 Mapbox 同样使用 Bundler,对于高德用户就多余了。
+
+一个可能的方案是对于 Mapbox 使用 CodeSplitting。在容器首次获取 Mapbox 地图服务时异步加载并缓存。
\ No newline at end of file
diff --git a/lerna.json b/lerna.json
index 129044dfec..9d523790c5 100644
--- a/lerna.json
+++ b/lerna.json
@@ -4,10 +4,7 @@
],
"command": {
"publish": {
- "npmClient": "yarn",
"ignoreChanges": ["*.md"],
- "verifyAccess": false,
- "verifyRegistry": false,
"allowBranch": [
"master",
"develop",
@@ -18,5 +15,8 @@
},
"version": "0.0.1",
"npmClient": "yarn",
- "useWorkspaces": true
+ "useWorkspaces": true,
+ "publishConfig": {
+ "access": "public"
+ }
}
\ No newline at end of file
diff --git a/package.json b/package.json
index 8ca1cd7d9d..f42e50ab96 100644
--- a/package.json
+++ b/package.json
@@ -16,6 +16,8 @@
"@babel/preset-typescript": "^7.3.3",
"@commitlint/cli": "^8.1.0",
"@commitlint/config-conventional": "^8.1.0",
+ "@rollup/plugin-alias": "^2.2.0",
+ "@rollup/plugin-json": "^4.0.0",
"@storybook/addon-actions": "^5.1.9",
"@storybook/addon-console": "^1.2.1",
"@storybook/addon-info": "^5.1.9",
@@ -37,6 +39,8 @@
"babel-plugin-const-enum": "^0.0.2",
"babel-plugin-css-modules-transform": "^1.6.2",
"babel-plugin-inline-import": "^3.0.0",
+ "babel-plugin-inline-webgl-constants": "^1.0.1",
+ "babel-plugin-lodash": "^3.3.4",
"babel-plugin-transform-postcss": "^0.3.0",
"babel-preset-gatsby": "^0.2.20",
"clean-webpack-plugin": "^0.1.19",
@@ -54,6 +58,7 @@
"geotiff": "^1.0.0-beta.6",
"gh-pages": "^2.1.1",
"gl": "^4.4.0",
+ "glsl-minifier": "^0.0.13",
"html-webpack-plugin": "^3.2.0",
"husky": "^3.0.9",
"jest": "^24.9.0",
@@ -71,6 +76,13 @@
"react-dom": "^16.8.6",
"react-i18next": "^11.0.1",
"rimraf": "^2.6.2",
+ "rollup": "^1.27.0",
+ "rollup-plugin-analyzer": "^3.2.2",
+ "rollup-plugin-babel": "^4.3.3",
+ "rollup-plugin-commonjs": "^10.1.0",
+ "rollup-plugin-node-resolve": "^5.2.0",
+ "rollup-plugin-terser": "^5.1.2",
+ "rollup-pluginutils": "^2.8.2",
"sass-loader": "^7.1.0",
"style-loader": "^1.0.0",
"styled-components": "^3.4.6",
@@ -109,13 +121,15 @@
"commit": "git-cz",
"version": "lerna version --conventional-commits",
"prerelease": "yarn build",
- "release": "lerna publish from-git",
+ "release": "lerna publish from-package --registry https://registry.npmjs.com/",
"storybook": "start-storybook -p 6006",
"test": "jest",
"coveralls": "jest --coverage && cat ./tests/coverage/lcov.info | coveralls",
"tsc": "tsc",
"build:declarations": "lerna exec --stream --no-bail 'tsc --project ./tsconfig.build.json'",
- "watch": "lerna exec --parallel 'BABEL_ENV=build babel --watch src --root-mode upward --out-dir dist --source-maps --extensions .ts,.tsx --delete-dir-on-start --no-comments'"
+ "watch": "lerna exec --parallel 'BABEL_ENV=build babel --watch src --root-mode upward --out-dir dist --source-maps --extensions .ts,.tsx --delete-dir-on-start --no-comments'",
+ "bundle": "NODE_ENV=bundle node_modules/.bin/rollup -c ./build/rollup.config.js",
+ "glsl-minify": "node_modules/.bin/glsl-minifier -i ./build/example.frag -o ./build/example.min.frag"
},
"workspaces": [
"packages/*",
diff --git a/packages/component/package.json b/packages/component/package.json
index f787d917e7..73f46470ca 100644
--- a/packages/component/package.json
+++ b/packages/component/package.json
@@ -24,10 +24,13 @@
"@l7/core": "0.0.1",
"@l7/utils": "0.0.1",
"@turf/distance": "^6.0.1",
- "eventemitter3": "^3.1.0",
+ "eventemitter3": "^4.0.0",
"inversify": "^5.0.1",
"inversify-inject-decorators": "^3.1.0",
"inversify-logging": "^0.2.1"
},
- "devDependencies": {}
+ "gitHead": "0563f357f3a07c099bf1ffa9350e6fa3c88353ae",
+ "publishConfig": {
+ "access": "public"
+ }
}
diff --git a/packages/component/src/control/BaseControl.ts b/packages/component/src/control/BaseControl.ts
index d3ce12e732..6911adb15a 100644
--- a/packages/component/src/control/BaseControl.ts
+++ b/packages/component/src/control/BaseControl.ts
@@ -8,7 +8,6 @@ import {
} from '@l7/core';
import { DOM } from '@l7/utils';
import { EventEmitter } from 'eventemitter3';
-import { inject } from 'inversify';
export enum PositionType {
'TOPRIGHT' = 'topright',
diff --git a/packages/core/package.json b/packages/core/package.json
index f142886cd2..39779b6c9d 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -22,7 +22,7 @@
"@l7/utils": "0.0.1",
"@mapbox/tiny-sdf": "^1.1.1",
"ajv": "^6.10.2",
- "eventemitter3": "^3.1.0",
+ "eventemitter3": "^4.0.0",
"gl-matrix": "^3.1.0",
"hammerjs": "^2.0.8",
"inversify": "^5.0.1",
@@ -40,5 +40,9 @@
"@types/hammerjs": "^2.0.36",
"@types/lodash": "^4.14.138",
"@types/viewport-mercator-project": "^6.1.0"
+ },
+ "gitHead": "0563f357f3a07c099bf1ffa9350e6fa3c88353ae",
+ "publishConfig": {
+ "access": "public"
}
}
diff --git a/packages/core/src/inversify.config.ts b/packages/core/src/inversify.config.ts
index be2e81e98d..6249fa31f5 100644
--- a/packages/core/src/inversify.config.ts
+++ b/packages/core/src/inversify.config.ts
@@ -64,7 +64,8 @@ container
.inSingletonScope();
container
.bind(TYPES.IStyleAttributeService)
- .to(StyleAttributeService);
+ .to(StyleAttributeService)
+ .inRequestScope();
container
.bind(TYPES.ICameraService)
.to(CameraService)
@@ -126,9 +127,11 @@ export const lazyInject = (
// make it work as usual
original.call(this, proto, key);
// return link to proto, so own value wont be 'undefined' after component's creation
- descriptor!.initializer = () => {
- return proto[key];
- };
+ if (descriptor) {
+ descriptor.initializer = () => {
+ return proto[key];
+ };
+ }
};
};
export const lazyMultiInject = (
@@ -145,10 +148,12 @@ export const lazyMultiInject = (
): void {
// make it work as usual
original.call(this, proto, key);
- // return link to proto, so own value wont be 'undefined' after component's creation
- descriptor!.initializer = () => {
- return proto[key];
- };
+ if (descriptor) {
+ // return link to proto, so own value wont be 'undefined' after component's creation
+ descriptor!.initializer = () => {
+ return proto[key];
+ };
+ }
};
};
diff --git a/packages/core/src/services/layer/StyleAttributeService.ts b/packages/core/src/services/layer/StyleAttributeService.ts
index cb11db5b3d..94dbbe3ce4 100644
--- a/packages/core/src/services/layer/StyleAttributeService.ts
+++ b/packages/core/src/services/layer/StyleAttributeService.ts
@@ -23,6 +23,8 @@ const bytesPerElementMap = {
[gl.UNSIGNED_SHORT]: 2,
};
+let counter = 0;
+
/**
* 每个 Layer 都拥有一个,用于管理样式属性的注册和更新
*/
@@ -33,6 +35,8 @@ export default class StyleAttributeService implements IStyleAttributeService {
private attributes: IStyleAttribute[] = [];
+ private c = counter++;
+
private featureLayout: {
sizePerElement: number;
elements: Array<{
diff --git a/packages/core/src/services/renderer/gl.ts b/packages/core/src/services/renderer/gl.ts
index 21210d721d..6b58e0386f 100644
--- a/packages/core/src/services/renderer/gl.ts
+++ b/packages/core/src/services/renderer/gl.ts
@@ -1,7 +1,7 @@
/**
* WebGL 枚举值
* @see http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14
- * TODO: 使用 babel 插件对常量进行内联,以减少最终打包产物大小
+ * 使用 babel 插件对常量进行内联,以减少最终打包产物大小
* @see https://github.com/uber/deck.gl/blob/7.1-release/dev-docs/roadmaps/dist-size-roadmap.md#inline-gl-constants
*/
diff --git a/packages/core/src/services/scene/ISceneService.ts b/packages/core/src/services/scene/ISceneService.ts
index e0b742e5d4..373238cf55 100644
--- a/packages/core/src/services/scene/ISceneService.ts
+++ b/packages/core/src/services/scene/ISceneService.ts
@@ -1,5 +1,3 @@
-import { EventEmitter } from 'eventemitter3';
-import { IImage } from '../asset/IIconService';
import { ILayer } from '../layer/ILayerService';
import { IMapConfig } from '../map/IMapService';
import { IRenderConfig } from '../renderer/IRendererService';
diff --git a/packages/layers/package.json b/packages/layers/package.json
index e96ded78e8..b62d4f93eb 100644
--- a/packages/layers/package.json
+++ b/packages/layers/package.json
@@ -23,20 +23,20 @@
"@l7/source": "^0.0.1",
"@l7/utils": "^0.0.1",
"@mapbox/martini": "^0.1.0",
- "reflect-metadata": "^0.1.13",
"@turf/meta": "^6.0.2",
"@types/d3-color": "^1.2.2",
"d3-array": "^2.3.1",
"d3-color": "^1.4.0",
"d3-scale": "^3.1.0",
"earcut": "^2.2.1",
- "eventemitter3": "^3.1.0",
+ "eventemitter3": "^4.0.0",
"gl-matrix": "^3.1.0",
"gl-vec2": "^1.3.0",
"inversify": "^5.0.1",
"lodash": "^4.17.15",
"merge-json-schemas": "1.0.0",
"polyline-miter-util": "^1.0.1",
+ "reflect-metadata": "^0.1.13",
"tapable": "^2.0.0-beta.8"
},
"devDependencies": {
@@ -45,5 +45,9 @@
"@types/earcut": "^2.1.0",
"@types/gl-matrix": "^2.4.5",
"@types/lodash": "^4.14.138"
+ },
+ "gitHead": "0563f357f3a07c099bf1ffa9350e6fa3c88353ae",
+ "publishConfig": {
+ "access": "public"
}
}
diff --git a/packages/layers/src/raster/index.ts b/packages/layers/src/raster/index.ts
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/packages/maps/package.json b/packages/maps/package.json
index ecb4f0c73e..9e2e404c3f 100644
--- a/packages/maps/package.json
+++ b/packages/maps/package.json
@@ -21,10 +21,10 @@
"license": "ISC",
"dependencies": {
"@l7/core": "^0.0.1",
+ "@l7/utils": "0.0.1",
"gl-matrix": "^3.1.0",
"inversify": "^5.0.1",
"mapbox-gl": "^1.2.1",
- "@l7/utils": "0.0.1",
"viewport-mercator-project": "^6.2.1"
},
"devDependencies": {
@@ -32,5 +32,9 @@
"@types/gl-matrix": "^2.4.5",
"@types/mapbox-gl": "^0.54.3",
"@types/viewport-mercator-project": "^6.1.0"
+ },
+ "gitHead": "0563f357f3a07c099bf1ffa9350e6fa3c88353ae",
+ "publishConfig": {
+ "access": "public"
}
}
diff --git a/packages/maps/src/amap/index.ts b/packages/maps/src/amap/index.ts
index 7c4db32837..6263ab1702 100644
--- a/packages/maps/src/amap/index.ts
+++ b/packages/maps/src/amap/index.ts
@@ -186,6 +186,7 @@ export default class AMapService implements IMapService {
style = 'light',
minZoom = 0,
maxZoom = 18,
+ token = AMAP_API_KEY,
...rest
} = mapConfig;
@@ -212,7 +213,7 @@ export default class AMapService implements IMapService {
resolve();
};
- const url: string = `https://webapi.amap.com/maps?v=${AMAP_VERSION}&key=${AMAP_API_KEY}&plugin=Map3D&callback=onload`;
+ const url: string = `https://webapi.amap.com/maps?v=${AMAP_VERSION}&key=${token}&plugin=Map3D&callback=onload`;
this.$jsapi = document.createElement('script');
this.$jsapi.charset = 'utf-8';
this.$jsapi.src = url;
diff --git a/packages/maps/src/mapbox/index.ts b/packages/maps/src/mapbox/index.ts
index c96dee68eb..e316a5ae17 100644
--- a/packages/maps/src/mapbox/index.ts
+++ b/packages/maps/src/mapbox/index.ts
@@ -26,8 +26,7 @@ const EventMap: {
camerachange: 'move',
};
import { MapTheme } from './theme';
-mapboxgl.accessToken =
- 'pk.eyJ1IjoieGlhb2l2ZXIiLCJhIjoiY2pxcmc5OGNkMDY3cjQzbG42cXk5NTl3YiJ9.hUC5Chlqzzh0FFd_aEc-uQ';
+
const LNGLAT_OFFSET_ZOOM_THRESHOLD = 12;
/**
@@ -45,7 +44,6 @@ export default class MapboxService implements IMapService {
private markerContainer: HTMLElement;
private cameraChangedCallback: (viewport: IViewport) => void;
private $mapContainer: HTMLElement | null;
- private $link: HTMLLinkElement;
// init
public addMarkerContainer(): void {
@@ -175,6 +173,7 @@ export default class MapboxService implements IMapService {
id,
attributionControl = false,
style = 'light',
+ token = 'pk.eyJ1IjoieGlhb2l2ZXIiLCJhIjoiY2pxcmc5OGNkMDY3cjQzbG42cXk5NTl3YiJ9.hUC5Chlqzzh0FFd_aEc-uQ',
...rest
} = mapConfig;
this.$mapContainer = document.getElementById(id);
@@ -185,6 +184,7 @@ export default class MapboxService implements IMapService {
* TODO: 使用 mapbox v0.53.x 版本 custom layer,需要共享 gl context
* @see https://github.com/mapbox/mapbox-gl-js/blob/master/debug/threejs.html#L61-L64
*/
+ mapboxgl.accessToken = token;
// @ts-ignore
this.map = new mapboxgl.Map({
container: id,
@@ -197,20 +197,13 @@ export default class MapboxService implements IMapService {
// 不同于高德地图,需要手动触发首次渲染
this.handleCameraChanged();
-
- this.$link = document.createElement('link');
- this.$link.href =
- 'https://api.tiles.mapbox.com/mapbox-gl-js/v1.2.1/mapbox-gl.css';
this.removeLogoControl();
- this.$link.rel = 'stylesheet';
- document.head.appendChild(this.$link);
}
public destroy() {
this.eventEmitter.removeAllListeners();
if (this.map) {
this.map.remove();
- document.head.removeChild(this.$link);
this.$mapContainer = null;
}
}
diff --git a/packages/renderer/package.json b/packages/renderer/package.json
index 9ead971908..4ac550ae11 100644
--- a/packages/renderer/package.json
+++ b/packages/renderer/package.json
@@ -20,10 +20,14 @@
"license": "ISC",
"dependencies": {
"@l7/core": "^0.0.1",
+ "gl": "^4.4.0",
"inversify": "^5.0.1",
"inversify-logging": "^0.2.1",
"reflect-metadata": "^0.1.13",
- "regl": "^1.3.11",
- "gl": "^4.4.0"
+ "regl": "^1.3.11"
+ },
+ "gitHead": "0563f357f3a07c099bf1ffa9350e6fa3c88353ae",
+ "publishConfig": {
+ "access": "public"
}
}
diff --git a/packages/scene/package.json b/packages/scene/package.json
index 1787e32e86..280684d364 100644
--- a/packages/scene/package.json
+++ b/packages/scene/package.json
@@ -19,13 +19,17 @@
"author": "xiaoiver",
"license": "ISC",
"dependencies": {
+ "@l7/component": "^0.0.1",
"@l7/core": "^0.0.1",
"@l7/maps": "^0.0.1",
"@l7/renderer": "^0.0.1",
- "@l7/component": "^0.0.1",
- "mapbox-gl": "^1.2.1",
"inversify": "^5.0.1",
"inversify-inject-decorators": "^3.1.0",
+ "mapbox-gl": "^1.2.1",
"reflect-metadata": "^0.1.13"
+ },
+ "gitHead": "0563f357f3a07c099bf1ffa9350e6fa3c88353ae",
+ "publishConfig": {
+ "access": "public"
}
}
diff --git a/packages/source/package.json b/packages/source/package.json
index c96f31b7bd..65d79c2026 100644
--- a/packages/source/package.json
+++ b/packages/source/package.json
@@ -29,7 +29,7 @@
"@turf/meta": "^6.0.2",
"d3-dsv": "^1.1.1",
"d3-hexbin": "^0.2.2",
- "eventemitter3": "^3.1.0",
+ "eventemitter3": "^4.0.0",
"gl-matrix": "^3.1.0",
"inversify": "^5.0.1",
"inversify-inject-decorators": "^3.1.0",
@@ -45,5 +45,9 @@
"@types/gl-matrix": "^2.4.5",
"@types/lodash": "^4.14.138",
"@types/viewport-mercator-project": "^6.1.0"
+ },
+ "gitHead": "0563f357f3a07c099bf1ffa9350e6fa3c88353ae",
+ "publishConfig": {
+ "access": "public"
}
}
diff --git a/packages/utils/package.json b/packages/utils/package.json
index 81efd0c239..9bec371a4d 100644
--- a/packages/utils/package.json
+++ b/packages/utils/package.json
@@ -20,7 +20,7 @@
"license": "ISC",
"dependencies": {
"@turf/helpers": "^6.1.4",
- "eventemitter3": "^3.1.0",
+ "eventemitter3": "^4.0.0",
"gl-matrix": "^3.1.0",
"inversify": "^5.0.1",
"inversify-inject-decorators": "^3.1.0",
@@ -32,5 +32,9 @@
"devDependencies": {
"@types/gl-matrix": "^2.4.5",
"@types/lodash": "^4.14.138"
+ },
+ "gitHead": "0563f357f3a07c099bf1ffa9350e6fa3c88353ae",
+ "publishConfig": {
+ "access": "public"
}
}
diff --git a/yarn.lock b/yarn.lock
index 1787145932..d2a5018382 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -553,7 +553,7 @@
dependencies:
"@babel/types" "^7.0.0"
-"@babel/helper-module-imports@^7.7.0":
+"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.7.0":
version "7.7.0"
resolved "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.7.0.tgz#99c095889466e5f7b6d66d98dffc58baaf42654d"
integrity sha1-mcCViJRm5fe21m2Y3/xYuq9CZU0=
@@ -1723,7 +1723,7 @@
lodash "^4.17.13"
to-fast-properties "^2.0.0"
-"@babel/types@^7.7.0", "@babel/types@^7.7.1", "@babel/types@^7.7.2":
+"@babel/types@^7.0.0-beta.49", "@babel/types@^7.7.0", "@babel/types@^7.7.1", "@babel/types@^7.7.2":
version "7.7.2"
resolved "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.7.2.tgz#550b82e5571dcd174af576e23f0adba7ffc683f7"
integrity sha1-VQuC5VcdzRdK9XbiPwrbp//Gg/c=
@@ -3190,6 +3190,11 @@
npmlog "^4.1.2"
write-file-atomic "^2.3.0"
+"@luma.gl/constants@^7.3.0-alpha.1":
+ version "7.3.2"
+ resolved "https://registry.npm.taobao.org/@luma.gl/constants/download/@luma.gl/constants-7.3.2.tgz#99c5d665f9e6d21192525038e47ec4acfbbbe0a6"
+ integrity sha1-mcXWZfnm0hGSUlA45H7ErPu74KY=
+
"@mapbox/geojson-area@0.2.2":
version "0.2.2"
resolved "https://registry.yarnpkg.com/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz#18d7814aa36bf23fbbcc379f8e26a22927debf10"
@@ -3423,6 +3428,20 @@
react-lifecycles-compat "^3.0.4"
warning "^3.0.0"
+"@rollup/plugin-alias@^2.2.0":
+ version "2.2.0"
+ resolved "https://registry.npm.taobao.org/@rollup/plugin-alias/download/@rollup/plugin-alias-2.2.0.tgz#3ac52ece8b39583249884adb90fb316484389fe5"
+ integrity sha1-OsUuzos5WDJJiErbkPsxZIQ4n+U=
+ dependencies:
+ slash "^3.0.0"
+
+"@rollup/plugin-json@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npm.taobao.org/@rollup/plugin-json/download/@rollup/plugin-json-4.0.0.tgz#4462e83c7ad5544bef4a601a6e8450daedc4b69b"
+ integrity sha1-RGLoPHrVVEvvSmAaboRQ2u3Etps=
+ dependencies:
+ rollup-pluginutils "^2.5.0"
+
"@samverschueren/stream-to-observable@^0.3.0":
version "0.3.0"
resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
@@ -4129,7 +4148,7 @@
resolved "https://registry.npm.taobao.org/@types/eslint-visitor-keys/download/@types/eslint-visitor-keys-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Feslint-visitor-keys%2Fdownload%2F%40types%2Feslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d"
integrity sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=
-"@types/estree@*":
+"@types/estree@*", "@types/estree@0.0.39":
version "0.0.39"
resolved "https://registry.npm.taobao.org/@types/estree/download/@types/estree-0.0.39.tgz?cache=0&sync_timestamp=1572461973040&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Festree%2Fdownload%2F%40types%2Festree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha1-4Xfmme4bjCLSMXTKqnQiZEOJUJ8=
@@ -4365,6 +4384,13 @@
"@types/prop-types" "*"
csstype "^2.2.0"
+"@types/resolve@0.0.8":
+ version "0.0.8"
+ resolved "https://registry.npm.taobao.org/@types/resolve/download/@types/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194"
+ integrity sha1-8mB00jjgJlnjI84aE9BB7uKA4ZQ=
+ dependencies:
+ "@types/node" "*"
+
"@types/semver@^6.0.1":
version "6.2.0"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.2.0.tgz#d688d574400d96c5b0114968705366f431831e1a"
@@ -5056,7 +5082,7 @@ are-we-there-yet@~1.1.2:
delegates "^1.0.0"
readable-stream "^2.0.6"
-argparse@^1.0.7:
+argparse@^1.0.10, argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
@@ -5581,6 +5607,13 @@ babel-plugin-inline-import@^3.0.0:
dependencies:
require-resolve "0.0.2"
+babel-plugin-inline-webgl-constants@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npm.taobao.org/babel-plugin-inline-webgl-constants/download/babel-plugin-inline-webgl-constants-1.0.1.tgz#ca81b3e3c3816356a23414a44bf367f51c5b7a89"
+ integrity sha1-yoGz48OBY1aiNBSkS/Nn9Rxbeok=
+ dependencies:
+ "@luma.gl/constants" "^7.3.0-alpha.1"
+
babel-plugin-istanbul@^5.1.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854"
@@ -5598,6 +5631,17 @@ babel-plugin-jest-hoist@^24.9.0:
dependencies:
"@types/babel__traverse" "^7.0.6"
+babel-plugin-lodash@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.npm.taobao.org/babel-plugin-lodash/download/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196"
+ integrity sha1-T2hENYoTQLrtGCrb7/qN+ZZ7wZY=
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0-beta.49"
+ "@babel/types" "^7.0.0-beta.49"
+ glob "^7.1.1"
+ lodash "^4.17.10"
+ require-package-name "^2.0.1"
+
babel-plugin-macros@2.6.1, babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.4.5, babel-plugin-macros@^2.6.1:
version "2.6.1"
resolved "https://registry.npm.taobao.org/babel-plugin-macros/download/babel-plugin-macros-2.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-plugin-macros%2Fdownload%2Fbabel-plugin-macros-2.6.1.tgz#41f7ead616fc36f6a93180e89697f69f51671181"
@@ -5697,6 +5741,13 @@ babel-plugin-react-docgen@^3.0.0:
react-docgen "^4.1.1"
recast "^0.14.7"
+babel-plugin-remove-glsl-comments@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npm.taobao.org/babel-plugin-remove-glsl-comments/download/babel-plugin-remove-glsl-comments-1.0.0.tgz#62c0910707798a60504b70d09f9e2733ae10fc93"
+ integrity sha1-YsCRBwd5imBQS3DQn54nM64Q/JM=
+ dependencies:
+ minimatch "^3.0.0"
+
babel-plugin-remove-graphql-queries@^2.7.15:
version "2.7.15"
resolved "https://registry.npm.taobao.org/babel-plugin-remove-graphql-queries/download/babel-plugin-remove-graphql-queries-2.7.15.tgz#d1f9dcf885dfc0141cf3ac203f94050bf0f94ea4"
@@ -6446,7 +6497,7 @@ builtin-modules@^1.1.1:
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
-builtin-modules@^3.0.0:
+builtin-modules@^3.0.0, builtin-modules@^3.1.0:
version "3.1.0"
resolved "https://registry.npm.taobao.org/builtin-modules/download/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484"
integrity sha1-qtl8FRMet2tltQ7yCOdYTNdqdIQ=
@@ -7999,6 +8050,20 @@ css@^2.2.4:
source-map-resolve "^0.5.2"
urix "^0.1.0"
+cssauron-glsl@X.X.X:
+ version "1.0.0"
+ resolved "https://registry.npm.taobao.org/cssauron-glsl/download/cssauron-glsl-1.0.0.tgz#9873641442b52bae08b9103f8546885af69c74cc"
+ integrity sha1-mHNkFEK1K64IuRA/hUaIWvacdMw=
+ dependencies:
+ cssauron "~1.0.0"
+
+cssauron@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npm.taobao.org/cssauron/download/cssauron-1.0.0.tgz#3c9891541075be90ee59c0c2a3d400e4fffec42d"
+ integrity sha1-PJiRVBB1vpDuWcDCo9QA5P/+xC0=
+ dependencies:
+ through X.X.X
+
csscolorparser@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b"
@@ -9613,6 +9678,11 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+estree-walker@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npm.taobao.org/estree-walker/download/estree-walker-0.6.1.tgz?cache=0&sync_timestamp=1572191010814&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festree-walker%2Fdownload%2Festree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
+ integrity sha1-UwSRQ/QMbrkYsjZx0f4yGfOhs2I=
+
esutils@^2.0.0, esutils@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
@@ -11648,7 +11718,45 @@ globule@^1.0.0:
lodash "~4.17.10"
minimatch "~3.0.2"
-glsl-tokenizer@^2.0.2:
+glsl-deparser@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npm.taobao.org/glsl-deparser/download/glsl-deparser-1.0.0.tgz#5e7eb363ec54af92916ccffc82ed03e9bfe33e0c"
+ integrity sha1-Xn6zY+xUr5KRbM/8gu0D6b/jPgw=
+ dependencies:
+ cssauron-glsl X.X.X
+ through "~1.1.2"
+
+glsl-min-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npm.taobao.org/glsl-min-stream/download/glsl-min-stream-1.0.0.tgz#b6bfe6353a42b15b1fac354290cb3551e0582812"
+ integrity sha1-tr/mNTpCsVsfrDVCkMs1UeBYKBI=
+ dependencies:
+ cssauron-glsl X.X.X
+ shortest "0.0.0"
+ through "~1.1.2"
+
+glsl-minifier@^0.0.13:
+ version "0.0.13"
+ resolved "https://registry.npm.taobao.org/glsl-minifier/download/glsl-minifier-0.0.13.tgz#12c92150f6da4a4f417059ff02ead2b986552fee"
+ integrity sha1-EskhUPbaSk9BcFn/AurSuYZVL+4=
+ dependencies:
+ argparse "^1.0.10"
+ glsl-deparser "^1.0.0"
+ glsl-min-stream "^1.0.0"
+ glsl-parser "^2.0.1"
+ glsl-tokenizer "^2.1.4"
+ string-to-stream "^1.1.1"
+
+glsl-parser@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npm.taobao.org/glsl-parser/download/glsl-parser-2.0.1.tgz#3ffac4ee05cc4d8141fd6b1e41e82b3766ff61b9"
+ integrity sha1-P/rE7gXMTYFB/WseQegrN2b/Ybk=
+ dependencies:
+ glsl-tokenizer "^2.1.4"
+ through "2.3.4"
+ through2 "^0.6.3"
+
+glsl-tokenizer@^2.0.2, glsl-tokenizer@^2.1.4:
version "2.1.5"
resolved "https://registry.yarnpkg.com/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz#1c2e78c16589933c274ba278d0a63b370c5fee1a"
integrity sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==
@@ -13228,6 +13336,11 @@ is-jpg@^2.0.0:
resolved "https://registry.npm.taobao.org/is-jpg/download/is-jpg-2.0.0.tgz#2e1997fa6e9166eaac0242daae443403e4ef1d97"
integrity sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc=
+is-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npm.taobao.org/is-module/download/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
+ integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
+
is-natural-number@^4.0.1:
version "4.0.1"
resolved "https://registry.npm.taobao.org/is-natural-number/download/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
@@ -13347,6 +13460,13 @@ is-redirect@^1.0.0:
resolved "https://registry.npm.taobao.org/is-redirect/download/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=
+is-reference@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.npm.taobao.org/is-reference/download/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427"
+ integrity sha1-P5WEmIbdtwJWo+bQYrGmjBPFFCc=
+ dependencies:
+ "@types/estree" "0.0.39"
+
is-regex@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
@@ -14779,7 +14899,7 @@ lodash@4.17.14:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba"
integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==
-lodash@4.17.15, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.1, lodash@^4.15.0, lodash@^4.16.5, lodash@^4.17.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.10, lodash@~4.17.5:
+lodash@4.17.15, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.1, lodash@^4.15.0, lodash@^4.16.5, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.10, lodash@~4.17.5:
version "4.17.15"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
@@ -14968,6 +15088,13 @@ macos-release@^2.2.0:
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f"
integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==
+magic-string@^0.25.2:
+ version "0.25.4"
+ resolved "https://registry.npm.taobao.org/magic-string/download/magic-string-0.25.4.tgz#325b8a0a79fc423db109b77fd5a19183b7ba5143"
+ integrity sha1-MluKCnn8Qj2xCbd/1aGRg7e6UUM=
+ dependencies:
+ sourcemap-codec "^1.4.4"
+
make-dir@^1.0.0, make-dir@^1.2.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
@@ -15513,7 +15640,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2:
+"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
@@ -19406,7 +19533,7 @@ read@1, read@^1.0.7, read@~1.0.1:
dependencies:
mute-stream "~0.0.4"
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.0, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
@@ -19988,6 +20115,11 @@ require-main-filename@^2.0.0:
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+require-package-name@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npm.taobao.org/require-package-name/download/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9"
+ integrity sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=
+
require-resolve@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/require-resolve/-/require-resolve-0.0.2.tgz#bab410ab1aee2f3f55b79317451dd3428764e6f3"
@@ -20059,7 +20191,7 @@ resolve@1.1.7:
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
-resolve@1.x, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1:
+resolve@1.x, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1:
version "1.12.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
@@ -20169,6 +20301,68 @@ rmc-feedback@^2.0.0:
babel-runtime "6.x"
classnames "^2.2.5"
+rollup-plugin-analyzer@^3.2.2:
+ version "3.2.2"
+ resolved "https://registry.npm.taobao.org/rollup-plugin-analyzer/download/rollup-plugin-analyzer-3.2.2.tgz#1ea109d164ac8cdbfeaacf1cf271bb66ca643d94"
+ integrity sha1-HqEJ0WSsjNv+qs8c8nG7ZspkPZQ=
+
+rollup-plugin-babel@^4.3.3:
+ version "4.3.3"
+ resolved "https://registry.npm.taobao.org/rollup-plugin-babel/download/rollup-plugin-babel-4.3.3.tgz#7eb5ac16d9b5831c3fd5d97e8df77ba25c72a2aa"
+ integrity sha1-frWsFtm1gxw/1dl+jfd7olxyoqo=
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ rollup-pluginutils "^2.8.1"
+
+rollup-plugin-commonjs@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.npm.taobao.org/rollup-plugin-commonjs/download/rollup-plugin-commonjs-10.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frollup-plugin-commonjs%2Fdownload%2Frollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb"
+ integrity sha1-QXrztUUDh44ITRJ6300cr4vrhvs=
+ dependencies:
+ estree-walker "^0.6.1"
+ is-reference "^1.1.2"
+ magic-string "^0.25.2"
+ resolve "^1.11.0"
+ rollup-pluginutils "^2.8.1"
+
+rollup-plugin-node-resolve@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.npm.taobao.org/rollup-plugin-node-resolve/download/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523"
+ integrity sha1-cw+T0Q7SAkc7H7VKWZen24xthSM=
+ dependencies:
+ "@types/resolve" "0.0.8"
+ builtin-modules "^3.1.0"
+ is-module "^1.0.0"
+ resolve "^1.11.1"
+ rollup-pluginutils "^2.8.1"
+
+rollup-plugin-terser@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npm.taobao.org/rollup-plugin-terser/download/rollup-plugin-terser-5.1.2.tgz#3e41256205cb75f196fc70d4634227d1002c255c"
+ integrity sha1-PkElYgXLdfGW/HDUY0In0QAsJVw=
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ jest-worker "^24.6.0"
+ rollup-pluginutils "^2.8.1"
+ serialize-javascript "^1.7.0"
+ terser "^4.1.0"
+
+rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2:
+ version "2.8.2"
+ resolved "https://registry.npm.taobao.org/rollup-pluginutils/download/rollup-pluginutils-2.8.2.tgz?cache=0&sync_timestamp=1568405888956&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frollup-pluginutils%2Fdownload%2Frollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
+ integrity sha1-cvKvB0i1kjZNvTOJ5gDlqURKNR4=
+ dependencies:
+ estree-walker "^0.6.1"
+
+rollup@^1.27.0:
+ version "1.27.0"
+ resolved "https://registry.npm.taobao.org/rollup/download/rollup-1.27.0.tgz?cache=0&sync_timestamp=1573576528242&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frollup%2Fdownload%2Frollup-1.27.0.tgz#7afe0da89c967cec5ccea7e919da6c89a1a68666"
+ integrity sha1-ev4NqJyWfOxczqfpGdpsiaGmhmY=
+ dependencies:
+ "@types/estree" "*"
+ "@types/node" "*"
+ acorn "^7.1.0"
+
rst-selector-parser@^2.2.3:
version "2.2.3"
resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91"
@@ -20683,6 +20877,11 @@ shellwords@^0.1.1:
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
+shortest@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.npm.taobao.org/shortest/download/shortest-0.0.0.tgz#dc4c8d0722e7a9208ec7d2098e4cda8cac6e567d"
+ integrity sha1-3EyNByLnqSCOx9IJjkzajKxuVn0=
+
sift@^5.1.0:
version "5.1.0"
resolved "https://registry.npm.taobao.org/sift/download/sift-5.1.0.tgz?cache=0&sync_timestamp=1571575345522&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsift%2Fdownload%2Fsift-5.1.0.tgz#1bbf2dfb0eb71e56c4cc7fb567fbd1351b65015e"
@@ -21005,9 +21204,15 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+<<<<<<< HEAD
sourcemap-codec@^1.4.1:
version "1.4.6"
resolved "https://registry.npm.taobao.org/sourcemap-codec/download/sourcemap-codec-1.4.6.tgz?cache=0&sync_timestamp=1562200915929&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsourcemap-codec%2Fdownload%2Fsourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9"
+=======
+sourcemap-codec@^1.4.4:
+ version "1.4.6"
+ resolved "https://registry.npm.taobao.org/sourcemap-codec/download/sourcemap-codec-1.4.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsourcemap-codec%2Fdownload%2Fsourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9"
+>>>>>>> next
integrity sha1-4wp08EArrQmAdkDTnpcQkKCM4ek=
space-separated-tokens@^1.0.0:
@@ -21305,6 +21510,14 @@ string-similarity@^1.2.2:
lodash.map "^4.6.0"
lodash.maxby "^4.6.0"
+string-to-stream@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npm.taobao.org/string-to-stream/download/string-to-stream-1.1.1.tgz#aba78f73e70661b130ee3e1c0192be4fef6cb599"
+ integrity sha1-q6ePc+cGYbEw7j4cAZK+T+9stZk=
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.1.0"
+
string-width@^1.0.1, string-width@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -21964,6 +22177,15 @@ terser-webpack-plugin@1.4.1, terser-webpack-plugin@^1.2.4, terser-webpack-plugin
webpack-sources "^1.4.0"
worker-farm "^1.7.0"
+terser@^4.1.0:
+ version "4.4.0"
+ resolved "https://registry.npm.taobao.org/terser/download/terser-4.4.0.tgz?cache=0&sync_timestamp=1573407784308&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser%2Fdownload%2Fterser-4.4.0.tgz#22c46b4817cf4c9565434bfe6ad47336af259ac3"
+ integrity sha1-IsRrSBfPTJVlQ0v+atRzNq8lmsM=
+ dependencies:
+ commander "^2.20.0"
+ source-map "~0.6.1"
+ source-map-support "~0.5.12"
+
terser@^4.1.2:
version "4.3.9"
resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.9.tgz#e4be37f80553d02645668727777687dad26bbca8"
@@ -22045,11 +22267,21 @@ through2@^3.0.0:
dependencies:
readable-stream "2 || 3"
-through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3.4:
+through@2, "through@>=2.2.7 <3", through@X.X.X, through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3.4:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+through@2.3.4:
+ version "2.3.4"
+ resolved "https://registry.npm.taobao.org/through/download/through-2.3.4.tgz#495e40e8d8a8eaebc7c275ea88c2b8fc14c56455"
+ integrity sha1-SV5A6Nio6uvHwnXqiMK4/BTFZFU=
+
+through@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npm.taobao.org/through/download/through-1.1.2.tgz#344a5425a3773314ca7e0eb6512fbafaf76c0bfe"
+ integrity sha1-NEpUJaN3MxTKfg62US+6+vdsC/4=
+
thunky@^1.0.2:
version "1.1.0"
resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"