refactor(heatmap): heatmap model

This commit is contained in:
thinkinggis 2019-11-19 19:03:17 +08:00
parent a317d8ed06
commit 57e4bb84a7
47 changed files with 795 additions and 547 deletions

View File

@ -2,5 +2,5 @@
title: Introduction
order: 0
redirect_from:
- /en/docs/API
- /en/docs/api/
---

View File

@ -2,5 +2,5 @@
title: 简介
order: 0
redirect_from:
- /zh/docs/API
- /zh/docs/api/
---

View File

@ -1,4 +1,4 @@
import { HeatMapHexagonLayer, HeatMapGrid3dLayer } from '@l7/layers';
import { HeatmapLayer } from '@l7/layers';
import { Scene } from '@l7/scene';
const scene = new Scene({
id: 'map',
@ -17,7 +17,7 @@ fetch(
)
.then((res) => res.text())
.then((data) => {
const layer = new HeatMapGrid3dLayer({})
const layer = new HeatmapLayer({})
.source(data, {
parser:{
@ -37,7 +37,7 @@ fetch(
.size('sum', (sum)=>{
return sum * 200;
})
.shape('hexagon')
.shape('hexagonColumn')
.style({
coverage: 0.8,
angle: 0,

View File

@ -2,5 +2,5 @@
title: Gallery
order: 0
redirect_from:
- /zh/examples/
- /en/examples/
---

View File

@ -1,4 +1,4 @@
import { HeatMapGridLayer, HeatMapGrid3dLayer } from '@l7/layers';
import { HeatmapLayer } from '@l7/layers';
import { Scene } from '@l7/scene';
const scene = new Scene({
id: 'map',
@ -14,7 +14,7 @@ fetch(
)
.then((res) => res.text())
.then((data) => {
const layer = new HeatMapGridLayer({})
const layer = new HeatmapLayer({})
.source(data, {
parser: {
type: 'csv',

View File

@ -1,4 +1,4 @@
import { HeatMapGridLayer, HeatMapGrid3dLayer } from '@l7/layers';
import { HeatmapLayer } from '@l7/layers';
import { Scene } from '@l7/scene';
const scene = new Scene({
id: 'map',
@ -14,7 +14,7 @@ fetch(
)
.then((res) => res.text())
.then((data) => {
const layer = new HeatMapGridLayer({})
const layer = new HeatmapLayer({})
.source(data, {
parser: {
type: 'csv',

View File

@ -1,4 +1,4 @@
import { HeatMapGridLayer } from '@l7/layers';
import { HeatmapLayer } from '@l7/layers';
import { Scene } from '@l7/scene';
const scene = new Scene({
id: 'map',
@ -15,7 +15,7 @@ fetch(
)
.then((res) => res.text())
.then((data) => {
const layer = new HeatMapGridLayer({})
const layer = new HeatmapLayer({})
.source(data, {
parser: {
type: 'csv',

View File

@ -1,4 +1,4 @@
import { HeatMapGridLayer, HeatMapGrid3dLayer } from '@l7/layers';
import { HeatmapLayer } from '@l7/layers';
import { Scene } from '@l7/scene';
const scene = new Scene({
id: 'map',
@ -15,7 +15,7 @@ fetch(
)
.then((res) => res.text())
.then((data) => {
const layer = new HeatMapGridLayer({})
const layer = new HeatmapLayer({})
.source(data, {
parser: {
type: 'csv',

View File

@ -1,5 +1,5 @@
import { Scene } from '@l7/scene';
import { HeatMapLayer } from '@l7/layers';
import { HeatmapLayer } from '@l7/layers';
const scene = new Scene({
id: 'map',
style: 'dark',
@ -13,9 +13,11 @@ fetch('https://gw.alipayobjects.com/os/basement_prod/d3564b06-670f-46ea-8edb-842
.then((res) => res.json())
.then((data) => {
const layer =
new HeatMapLayer({
new HeatmapLayer({
})
.source(data).size('mag', [0, 1.0]) // weight映射通道
.source(data)
.shape('heatmap')
.size('mag', [0, 1.0]) // weight映射通道
.style({
intensity: 2,
radius: 20,

View File

@ -1,5 +1,5 @@
import { Scene } from '@l7/scene';
import { HeatMapLayer } from '@l7/layers';
import { HeatmapLayer } from '@l7/layers';
const scene = new Scene({
id: 'map',
style: 'dark',
@ -14,7 +14,7 @@ fetch('https://gw.alipayobjects.com/os/basement_prod/337ddbb7-aa3f-4679-ab60-d64
.then((res) => res.json())
.then((data) => {
const layer =
new HeatMapLayer({
new HeatmapLayer({
})
.source(data)
.size('capacity', [0, 1])

View File

@ -1,5 +1,5 @@
import { Scene } from '@l7/scene';
import { HeatMapLayer } from '@l7/layers';
import { HeatmapLayer } from '@l7/layers';
const scene = new Scene({
id: 'map',
style: 'dark',
@ -13,9 +13,11 @@ fetch('https://gw.alipayobjects.com/os/basement_prod/d3564b06-670f-46ea-8edb-842
.then((res) => res.json())
.then((data) => {
const layer =
new HeatMapLayer({
new HeatmapLayer({
})
.source(data).size('mag', [0, 1.0]) // weight映射通道
.source(data)
.shape('heatmap')
.size('mag', [0, 1.0]) // weight映射通道
.style({
intensity: 2,
radius: 20,

View File

@ -1,6 +1,4 @@
---
title: HeatMap
order: 0
redirect_from:
- /en/examples/heatmap/
---

View File

@ -1,6 +1,4 @@
---
title: 经典热力图
order: 0
redirect_from:
- /zh/examples/heatmap/
---

View File

@ -1,4 +1,4 @@
import { HeatMapGridLayer, HeatMapGrid3dLayer } from '@l7/layers';
import { HeatmapLayer } from '@l7/layers';
import { Scene } from '@l7/scene';
const scene = new Scene({
id: 'map',
@ -14,7 +14,7 @@ fetch(
)
.then((res) => res.text())
.then((data) => {
const layer = new HeatMapGrid3dLayer({})
const layer = new HeatmapLayer({})
.source(data, {
parser: {
type: 'csv',
@ -33,7 +33,7 @@ fetch(
.size('sum',(value)=>{
return value * 20;
})
.shape('hexagon')
.shape('hexagonColumn')
.color('count',[
'#FF4818', '#F7B74A',
'#FFF598', '#FF40F3',

View File

@ -1,4 +1,4 @@
import { HeatMapGridLayer, HeatMapGrid3dLayer } from '@l7/layers';
import { HeatmapLayer } from '@l7/layers';
import { Scene } from '@l7/scene';
const scene = new Scene({
id: 'map',
@ -14,7 +14,7 @@ fetch(
)
.then((res) => res.json())
.then((data) => {
const layer = new HeatMapGrid3dLayer({})
const layer = new HeatmapLayer({})
.source(data, {
transforms: [
{
@ -26,7 +26,7 @@ fetch(
],
})
.size('sum', [0, 600])
.shape('hexagon')
.shape('hexagonColumn')
.style({
coverage: 0.8,
angle: 0,

View File

@ -37,7 +37,7 @@ fetch(
.size('sum', (sum)=>{
return sum * 200;
})
.shape('hexagon')
.shape('hexagonColumn')
.style({
coverage: 0.8,
angle: 0,

View File

@ -1,5 +1,5 @@
import { Scene } from '@l7/scene';
import { HeatMapGridLayer, HeatMapGrid3dLayer } from '@l7/layers';
import { HeatmapLayer } from '@l7/layers';
const scene = new Scene({
id: 'map',
style: 'light',
@ -13,7 +13,7 @@ fetch('https://gw.alipayobjects.com/os/basement_prod/337ddbb7-aa3f-4679-ab60-d64
.then((res) => res.json())
.then((data) => {
const layer =
new HeatMapGrid3dLayer({
new HeatmapLayer({
})
.source(data, {
transforms: [

View File

@ -1,6 +1,4 @@
---
title: Isoline Map
order: 2
redirect_from:
- /en/examples/line/
---

View File

@ -1,6 +1,4 @@
---
title: 等值线地图
order: 2
redirect_from:
- /zh/examples/line/
---

View File

@ -1,7 +1,5 @@
---
title: Path Map
order: 0
redirect_from:
- /en/examples/line/
---

View File

@ -1,6 +1,4 @@
---
title: 路径地图
order: 0
redirect_from:
- /zh/examples/line/
---

View File

@ -1,6 +1,4 @@
---
title: Extrude Map
order: 0
redirect_from:
- /en/examples/polygon/
---

View File

@ -1,6 +1,4 @@
---
title: 3D填充图
order: 0
redirect_from:
- /zh/examples/polygon/
---

View File

@ -1,6 +1,4 @@
---
title: Choropleth Map
order: 0
redirect_from:
- /en/examples
---

View File

@ -1,6 +1,4 @@
---
title: 填充地图
order: 0
redirect_from:
- /zh/examples
---

View File

@ -14,12 +14,12 @@ module.exports = {
githubUrl: 'https://github.com/antvis/L7',
navs: [
{
slug: 'docs/API',
slug: 'docs/api',
title: {
zh: '文档',
en: 'Document',
},
redirect: 'API/L7',
redirect: 'api/l7',
},
{
slug: 'docs/tutorial',

View File

@ -78,7 +78,6 @@
"react-dom": "^16.12.0",
"react-i18next": "^11.0.1",
"rimraf": "^2.6.2",
"geotiff": "^1.0.0-beta.6",
"rollup": "^1.27.0",
"rollup-plugin-analyzer": "^3.2.2",
"rollup-plugin-babel": "^4.3.3",

View File

@ -33,6 +33,7 @@ export interface ILayerModelInitializationOptions {
triangulation: Triangulation;
}
export interface ILayerModel {
render(): void;
getUninforms(): IModelUniform;
buildModels(): IModel[];
}

View File

@ -1,6 +1,7 @@
import {
AttributeType,
gl,
ICameraService,
IEncodeFeature,
IFontService,
IGlobalConfigService,
@ -13,12 +14,15 @@ import {
IModel,
IModelUniform,
IRendererService,
IShaderModuleService,
IStyleAttributeService,
lazyInject,
TYPES,
} from '@l7/core';
export default class BaseModel implements ILayerModel {
@lazyInject(TYPES.IStyleAttributeService)
public styleAttributeService: IStyleAttributeService;
protected layer: ILayer;
@lazyInject(TYPES.IGlobalConfigService)
@ -33,9 +37,15 @@ export default class BaseModel implements ILayerModel {
@lazyInject(TYPES.IRendererService)
protected readonly rendererService: IRendererService;
@lazyInject(TYPES.IShaderModuleService)
protected readonly shaderModuleService: IShaderModuleService;
@lazyInject(TYPES.IMapService)
protected readonly map: IMapService;
@lazyInject(TYPES.ICameraService)
protected readonly camera: ICameraService;
constructor(layer: ILayer) {
this.layer = layer;
this.registerBuiltinAttributes();
@ -49,6 +59,9 @@ export default class BaseModel implements ILayerModel {
throw new Error('Method not implemented.');
}
public render() {
throw new Error('Method not implemented.');
}
protected registerBuiltinAttributes() {
throw new Error('Method not implemented.');
}

View File

@ -315,13 +315,20 @@ function checkIsClosed(points: number[][][]) {
}
function getHeatmapGeometry(shape: ShapeType2D | ShapeType3D): IExtrudeGeomety {
const shape3d = [
'cylinder',
'triangleColumn',
'hexagonColumn',
'squareColumn',
];
const path = geometryShape[shape]
? geometryShape[shape]()
: geometryShape.circle();
// const geometry = ShapeType2D[str as ShapeType2D]
// ? fillPolygon([path])
// : extrudePolygon([path]);
const geometry = fillPolygon([path]);
const geometry =
shape3d.indexOf(shape) === -1
? fillPolygon([path])
: extrudePolygon([path]);
// const geometry = fillPolygon([path]);
return geometry;
}
// 热力图计算范围

View File

@ -1,112 +1,60 @@
// import {
// gl,
// IRendererService,
// IShaderModuleService,
// lazyInject,
// TYPES,
// } from '@l7/core';
// import BaseLayer from '../core/BaseLayer';
// import GridHeatMapBuffer from './buffers/GridBuffer';
// import hexagon_frag from './shaders/hexagon_frag.glsl';
// import hexagon_vert from './shaders/hexagon_vert.glsl';
import { AttributeType, gl, IEncodeFeature, ILayer } from '@l7/core';
import BaseLayer from '../core/BaseLayer';
import HeatMapModels, { HeatMapModelType } from './models';
interface IPointLayerStyleOptions {
opacity: number;
}
export default class HeatMapLayer extends BaseLayer<IPointLayerStyleOptions> {
public name: string = 'HeatMapLayer';
protected getConfigSchema() {
return {
properties: {
opacity: {
type: 'number',
minimum: 0,
maximum: 1,
},
},
};
}
// export default class HeatMapLayer extends BaseLayer {
// public name: string = 'HeatMapLayer';
protected renderModels() {
const shape = this.getModelType();
if (shape === 'heatmap') {
this.layerModel.render();
return;
}
this.models.forEach((model) =>
model.draw({
uniforms: this.layerModel.getUninforms(),
}),
);
return this;
}
// @lazyInject(TYPES.IShaderModuleService)
// private readonly shaderModule: IShaderModuleService;
// @lazyInject(TYPES.IRendererService)
// private readonly renderer: IRendererService;
// protected renderModels() {
// this.models.forEach((model) =>
// model.draw({
// uniforms: {
// u_ModelMatrix: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
// },
// }),
// );
// return this;
// }
// protected buildModels(): void {
// this.shaderModule.registerModule('grid', {
// vs: hexagon_vert,
// fs: hexagon_frag,
// });
// this.models = [];
// const { vs, fs, uniforms } = this.shaderModule.getModule('grid');
// const buffer = new GridHeatMapBuffer({
// data: this.getEncodedData(),
// });
// const {
// createAttribute,
// createBuffer,
// createElements,
// createModel,
// } = this.renderer;
// this.models.push(
// createModel({
// attributes: {
// a_miter: createAttribute({
// buffer: createBuffer({
// data: buffer.instanceGeometry.positions,
// type: gl.FLOAT,
// }),
// size: 3,
// divisor: 0,
// }),
// // a_normal: createAttribute({
// // buffer: createBuffer({
// // data: buffer.attributes.normals,
// // type: gl.FLOAT,
// // }),
// // size: 3,
// // }),
// a_color: createAttribute({
// buffer: createBuffer({
// data: buffer.attributes.colors,
// type: gl.FLOAT,
// }),
// size: 4,
// divisor: 1,
// }),
// // a_size: createAttribute({
// // buffer: createBuffer({
// // data: buffer.attributes.sizes,
// // type: gl.FLOAT,
// // }),
// // size: 1,
// // divisor: 1,
// // }),
// a_Position: createAttribute({
// buffer: createBuffer({
// data: buffer.attributes.positions,
// type: gl.FLOAT,
// }),
// size: 3,
// divisor: 1,
// }),
// },
// uniforms: {
// ...uniforms,
// u_opacity: (this.styleOption.opacity as number) || 1.0,
// u_radius: [
// this.getSource().data.xOffset,
// this.getSource().data.yOffset,
// ],
// },
// fs,
// vs,
// count: buffer.instanceGeometry.index.length,
// instances: buffer.verticesCount,
// elements: createElements({
// data: buffer.instanceGeometry.index,
// type: gl.UNSIGNED_INT,
// }),
// }),
// );
// }
// }
protected buildModels() {
const shape = this.getModelType();
this.layerModel = new HeatMapModels[shape](this);
this.models = this.layerModel.buildModels();
}
private getModelType(): HeatMapModelType {
const shapeAttribute = this.styleAttributeService.getLayerStyleAttribute(
'shape',
);
const { shape3d } = this.configService.getConfig();
const source = this.getSource();
const sourceType = source.data.type;
const shape =
(shapeAttribute?.scale?.field as HeatMapModelType) || 'heatmap';
if (shape === 'heatmap' || shape === 'heatmap3d') {
return 'heatmap';
}
if (sourceType === 'hexagon') {
return shape3d?.indexOf(shape) === -1 ? 'hexagon' : 'grid3d';
}
if (sourceType === 'grid') {
return shape3d?.indexOf(shape) === -1 ? 'grid' : 'grid3d';
}
return 'heatmap';
}
}

View File

@ -1,48 +1,39 @@
import { AttributeType, gl, IEncodeFeature, ILayer } from '@l7/core';
import BaseLayer from '../core/BaseLayer';
import { HeatmapGridTriangulation } from '../core/triangulation';
import heatmapGridVert from './shaders/grid_vert.glsl';
import heatmapGridFrag from './shaders/hexagon_frag.glsl';
import {
AttributeType,
gl,
IEncodeFeature,
ILayer,
ILayerModel,
IModel,
IModelUniform,
} from '@l7/core';
import BaseModel from '../../core/baseModel';
import { HeatmapGridTriangulation } from '../../core/triangulation';
import heatmapGridVert from '../shaders/grid_vert.glsl';
import heatmapGridFrag from '../shaders/hexagon_frag.glsl';
interface IHeatMapLayerStyleOptions {
opacity: number;
coverage: number;
}
export default class HeatMapGrid extends BaseLayer<IHeatMapLayerStyleOptions> {
public name: string = 'heatMapGridLayer';
protected getConfigSchema() {
export default class GridModel extends BaseModel {
public getUninforms(): IModelUniform {
const {
opacity,
coverage,
} = this.layer.getStyleOptions() as IHeatMapLayerStyleOptions;
return {
properties: {
opacity: {
type: 'number',
minimum: 0,
maximum: 1,
},
},
};
}
protected renderModels() {
const { opacity, coverage } = this.getStyleOptions();
this.models.forEach((model) =>
model.draw({
uniforms: {
u_opacity: opacity || 1.0,
u_coverage: coverage || 0.9,
u_radius: [
this.getSource().data.xOffset,
this.getSource().data.yOffset,
this.layer.getSource().data.xOffset,
this.layer.getSource().data.yOffset,
],
},
}),
);
return this;
};
}
protected buildModels() {
this.registerBuiltinAttributes(this);
this.models = [
this.buildLayerModel({
public buildModels(): IModel[] {
return [
this.layer.buildLayerModel({
moduleName: 'gridheatmap',
vertexShader: heatmapGridVert,
fragmentShader: heatmapGridFrag,
@ -52,10 +43,9 @@ export default class HeatMapGrid extends BaseLayer<IHeatMapLayerStyleOptions> {
}),
];
}
private registerBuiltinAttributes(layer: ILayer) {
protected registerBuiltinAttributes() {
// point layer size;
layer.styleAttributeService.registerStyleAttribute({
this.layer.styleAttributeService.registerStyleAttribute({
name: 'size',
type: AttributeType.Attribute,
descriptor: {
@ -80,7 +70,7 @@ export default class HeatMapGrid extends BaseLayer<IHeatMapLayerStyleOptions> {
});
// point layer size;
layer.styleAttributeService.registerStyleAttribute({
this.layer.styleAttributeService.registerStyleAttribute({
name: 'pos', // 顶点经纬度位置
type: AttributeType.Attribute,
descriptor: {

View File

@ -1,48 +1,40 @@
import { AttributeType, gl, IEncodeFeature, ILayer } from '@l7/core';
import BaseLayer from '../core/BaseLayer';
import { PointExtrudeTriangulation } from '../core/triangulation';
import heatmapGrid3dVert from './shaders/hexagon_3d_vert.glsl';
import heatmapGridFrag from './shaders/hexagon_frag.glsl';
import {
AttributeType,
gl,
IEncodeFeature,
ILayer,
ILayerModel,
IModel,
IModelUniform,
} from '@l7/core';
import BaseModel from '../../core/baseModel';
import { PointExtrudeTriangulation } from '../../core/triangulation';
import heatmapGrid3dVert from '../shaders/hexagon_3d_vert.glsl';
import heatmapGridFrag from '../shaders/hexagon_frag.glsl';
interface IHeatMapLayerStyleOptions {
opacity: number;
coverage: number;
}
export default class HeatMapGrid extends BaseLayer<IHeatMapLayerStyleOptions> {
public name: string = 'hexgaon';
protected getConfigSchema() {
export default class Grid3DModel extends BaseModel {
public getUninforms(): IModelUniform {
const {
opacity,
coverage,
} = this.layer.getStyleOptions() as IHeatMapLayerStyleOptions;
return {
properties: {
opacity: {
type: 'number',
minimum: 0,
maximum: 1,
},
},
};
}
protected renderModels() {
const { opacity, coverage } = this.getStyleOptions();
this.models.forEach((model) =>
model.draw({
uniforms: {
u_opacity: opacity || 1.0,
u_coverage: coverage || 1.0,
u_radius: [
this.getSource().data.xOffset,
this.getSource().data.yOffset,
this.layer.getSource().data.xOffset,
this.layer.getSource().data.yOffset,
],
},
}),
);
return this;
};
}
protected buildModels() {
this.registerBuiltinAttributes(this);
this.models = [
this.buildLayerModel({
public buildModels(): IModel[] {
return [
this.layer.buildLayerModel({
moduleName: 'grid3dheatmap',
vertexShader: heatmapGrid3dVert,
fragmentShader: heatmapGridFrag,
@ -51,10 +43,9 @@ export default class HeatMapGrid extends BaseLayer<IHeatMapLayerStyleOptions> {
}),
];
}
private registerBuiltinAttributes(layer: ILayer) {
protected registerBuiltinAttributes() {
// point layer size;
layer.styleAttributeService.registerStyleAttribute({
this.layer.styleAttributeService.registerStyleAttribute({
name: 'size',
type: AttributeType.Attribute,
descriptor: {
@ -79,7 +70,7 @@ export default class HeatMapGrid extends BaseLayer<IHeatMapLayerStyleOptions> {
});
// point layer size;
layer.styleAttributeService.registerStyleAttribute({
this.layer.styleAttributeService.registerStyleAttribute({
name: 'normal',
type: AttributeType.Attribute,
descriptor: {
@ -102,7 +93,7 @@ export default class HeatMapGrid extends BaseLayer<IHeatMapLayerStyleOptions> {
},
},
});
layer.styleAttributeService.registerStyleAttribute({
this.layer.styleAttributeService.registerStyleAttribute({
name: 'pos', // 顶点经纬度位置
type: AttributeType.Attribute,
descriptor: {

View File

@ -5,26 +5,24 @@ import {
IEncodeFeature,
IFramebuffer,
ILayer,
ILayerPlugin,
ILogService,
ILayerModel,
IModel,
IStyleAttributeService,
IModelUniform,
ITexture2D,
lazyInject,
TYPES,
} from '@l7/core';
import { mat4 } from 'gl-matrix';
import BaseLayer from '../core/BaseLayer';
import { HeatmapTriangulation } from '../core/triangulation';
import { generateColorRamp, IColorRamp } from '../utils/color';
import heatmap3DFrag from './shaders/heatmap_3d_frag.glsl';
import heatmap3DVert from './shaders/heatmap_3d_vert.glsl';
import heatmapColorFrag from './shaders/heatmap_frag.glsl';
import heatmapFrag from './shaders/heatmap_framebuffer_frag.glsl';
import heatmapVert from './shaders/heatmap_framebuffer_vert.glsl';
import heatmapColorVert from './shaders/heatmap_vert.glsl';
import { heatMap3DTriangulation } from './triangulation';
import BaseModel from '../../core/baseModel';
import { HeatmapTriangulation } from '../../core/triangulation';
import { generateColorRamp, IColorRamp } from '../../utils/color';
import heatmap3DFrag from '../shaders/heatmap_3d_frag.glsl';
import heatmap3DVert from '../shaders/heatmap_3d_vert.glsl';
import heatmapColorFrag from '../shaders/heatmap_frag.glsl';
import heatmapFrag from '../shaders/heatmap_framebuffer_frag.glsl';
import heatmapVert from '../shaders/heatmap_framebuffer_vert.glsl';
import heatmapColorVert from '../shaders/heatmap_vert.glsl';
import { heatMap3DTriangulation } from '../triangulation';
interface IHeatMapLayerStyleOptions {
opacity: number;
intensity: number;
@ -32,34 +30,16 @@ interface IHeatMapLayerStyleOptions {
rampColors: IColorRamp;
}
export default class HeatMapLayer extends BaseLayer<IHeatMapLayerStyleOptions> {
public name: string = 'HeatMapLayer';
export default class HeatMapModel extends BaseModel {
protected texture: ITexture2D;
protected colorTexture: ITexture2D;
@lazyInject(TYPES.ICameraService)
protected readonly camera: ICameraService;
protected heatmapFramerBuffer: IFramebuffer;
private intensityModel: IModel;
private colorModel: IModel;
private shapeType: string;
protected getConfigSchema() {
return {
properties: {
opacity: {
type: 'number',
minimum: 0,
maximum: 1,
},
},
};
}
protected renderModels() {
public render() {
const { clear, useFramebuffer } = this.rendererService;
const shapeAttr = this.styleAttributeService.getLayerStyleAttribute(
'shape',
);
const shapeType = shapeAttr?.scale?.field || 'heatmap';
useFramebuffer(this.heatmapFramerBuffer, () => {
clear({
color: [0, 0, 0, 0],
@ -69,27 +49,14 @@ export default class HeatMapLayer extends BaseLayer<IHeatMapLayerStyleOptions> {
});
this.drawIntensityMode();
});
// this.draw3DHeatMap();
shapeType === 'heatmap' ? this.drawColorMode() : this.draw3DHeatMap();
// this.drawIntensityMode();
return this;
this.shapeType === 'heatmap' ? this.drawColorMode() : this.draw3DHeatMap();
}
protected buildModels() {
const shapeAttr = this.styleAttributeService.getLayerStyleAttribute(
'shape',
);
const shapeType = shapeAttr?.scale?.field || 'heatmap';
this.registerBuiltinAttributes(this);
this.intensityModel = this.buildHeatMapIntensity();
this.models = [this.intensityModel];
this.colorModel =
shapeType === 'heatmap'
? this.buildHeatmapColor()
: this.build3dHeatMap();
this.models.push(this.colorModel);
const { rampColors } = this.getStyleOptions();
const imageData = generateColorRamp(rampColors as IColorRamp);
public getUninforms(): IModelUniform {
throw new Error('Method not implemented.');
}
public buildModels(): IModel[] {
const {
createFramebuffer,
clear,
@ -97,8 +64,26 @@ export default class HeatMapLayer extends BaseLayer<IHeatMapLayerStyleOptions> {
createTexture2D,
useFramebuffer,
} = this.rendererService;
const shapeAttr = this.layer.styleAttributeService.getLayerStyleAttribute(
'shape',
);
const shapeType = shapeAttr?.scale?.field || 'heatmap';
this.shapeType = shapeType as string;
// 生成热力图密度图
this.intensityModel = this.buildHeatMapIntensity();
// 渲染到屏幕
this.colorModel =
shapeType === 'heatmap'
? this.buildHeatmapColor() // 2D
: this.build3dHeatMap(); // 3D
const {
rampColors,
} = this.layer.getStyleOptions() as IHeatMapLayerStyleOptions;
const imageData = generateColorRamp(rampColors as IColorRamp);
const { width, height } = getViewportSize();
// 初始化密度图纹理
this.heatmapFramerBuffer = createFramebuffer({
color: createTexture2D({
width,
@ -110,6 +95,8 @@ export default class HeatMapLayer extends BaseLayer<IHeatMapLayerStyleOptions> {
}),
});
// 初始化颜色纹理
this.colorTexture = createTexture2D({
data: imageData.data,
width: imageData.width,
@ -120,10 +107,11 @@ export default class HeatMapLayer extends BaseLayer<IHeatMapLayerStyleOptions> {
mag: gl.LINEAR,
flipY: true,
});
}
private registerBuiltinAttributes(layer: ILayer) {
layer.styleAttributeService.registerStyleAttribute({
return [this.intensityModel, this.colorModel];
}
protected registerBuiltinAttributes() {
this.layer.styleAttributeService.registerStyleAttribute({
name: 'dir',
type: AttributeType.Attribute,
descriptor: {
@ -147,7 +135,7 @@ export default class HeatMapLayer extends BaseLayer<IHeatMapLayerStyleOptions> {
});
// point layer size;
layer.styleAttributeService.registerStyleAttribute({
this.layer.styleAttributeService.registerStyleAttribute({
name: 'size',
type: AttributeType.Attribute,
descriptor: {
@ -171,9 +159,8 @@ export default class HeatMapLayer extends BaseLayer<IHeatMapLayerStyleOptions> {
},
});
}
private buildHeatMapIntensity(): IModel {
return this.buildLayerModel({
return this.layer.buildLayerModel({
moduleName: 'heatmapintensity',
vertexShader: heatmapVert,
fragmentShader: heatmapFrag,
@ -250,8 +237,13 @@ export default class HeatMapLayer extends BaseLayer<IHeatMapLayerStyleOptions> {
}),
});
}
private drawIntensityMode() {
const { opacity, intensity = 10, radius = 5 } = this.getStyleOptions();
const {
opacity,
intensity = 10,
radius = 5,
} = this.layer.getStyleOptions() as IHeatMapLayerStyleOptions;
this.intensityModel.draw({
uniforms: {
u_opacity: opacity || 1.0,
@ -262,7 +254,9 @@ export default class HeatMapLayer extends BaseLayer<IHeatMapLayerStyleOptions> {
}
private drawColorMode() {
const { opacity } = this.getStyleOptions();
const {
opacity,
} = this.layer.getStyleOptions() as IHeatMapLayerStyleOptions;
this.colorModel.draw({
uniforms: {
u_opacity: opacity || 1.0,
@ -271,8 +265,11 @@ export default class HeatMapLayer extends BaseLayer<IHeatMapLayerStyleOptions> {
},
});
}
private draw3DHeatMap() {
const { opacity } = this.getStyleOptions();
const {
opacity,
} = this.layer.getStyleOptions() as IHeatMapLayerStyleOptions;
const invert = mat4.invert(
mat4.create(),
// @ts-ignore

View File

@ -1,48 +1,39 @@
import { AttributeType, gl, IEncodeFeature, ILayer } from '@l7/core';
import BaseLayer from '../core/BaseLayer';
import { HeatmapGridTriangulation } from '../core/triangulation';
import heatmapGridFrag from './shaders/hexagon_frag.glsl';
import heatmapGridVert from './shaders/hexagon_vert.glsl';
import {
AttributeType,
gl,
IEncodeFeature,
IModel,
IModelUniform,
} from '@l7/core';
import BaseModel from '../../core/baseModel';
import { HeatmapGridTriangulation } from '../../core/triangulation';
import heatmapGridFrag from '../shaders/hexagon_frag.glsl';
import heatmapGridVert from '../shaders/hexagon_vert.glsl';
interface IHeatMapLayerStyleOptions {
opacity: number;
coverage: number;
}
export default class HeatMapGrid extends BaseLayer<IHeatMapLayerStyleOptions> {
public name: string = 'heatMapGridLayer';
protected getConfigSchema() {
export default class HexagonModel extends BaseModel {
public getUninforms(): IModelUniform {
const {
opacity,
coverage,
} = this.layer.getStyleOptions() as IHeatMapLayerStyleOptions;
return {
properties: {
opacity: {
type: 'number',
minimum: 0,
maximum: 1,
},
},
};
}
protected renderModels() {
const { opacity, coverage } = this.getStyleOptions();
this.models.forEach((model) =>
model.draw({
uniforms: {
u_opacity: opacity || 1.0,
u_coverage: coverage || 0.9,
u_radius: [
this.getSource().data.xOffset,
this.getSource().data.yOffset,
this.layer.getSource().data.xOffset,
this.layer.getSource().data.yOffset,
],
},
}),
);
return this;
};
}
protected buildModels() {
this.registerBuiltinAttributes(this);
this.models = [
this.buildLayerModel({
public buildModels(): IModel[] {
return [
this.layer.buildLayerModel({
moduleName: 'hexagonheatmap',
vertexShader: heatmapGridVert,
fragmentShader: heatmapGridFrag,
@ -52,10 +43,9 @@ export default class HeatMapGrid extends BaseLayer<IHeatMapLayerStyleOptions> {
}),
];
}
private registerBuiltinAttributes(layer: ILayer) {
protected registerBuiltinAttributes() {
// point layer size;
layer.styleAttributeService.registerStyleAttribute({
this.layer.styleAttributeService.registerStyleAttribute({
name: 'size',
type: AttributeType.Attribute,
descriptor: {
@ -80,7 +70,7 @@ export default class HeatMapGrid extends BaseLayer<IHeatMapLayerStyleOptions> {
});
// point layer size;
layer.styleAttributeService.registerStyleAttribute({
this.layer.styleAttributeService.registerStyleAttribute({
name: 'pos', // 顶点经纬度位置
type: AttributeType.Attribute,
descriptor: {

View File

@ -0,0 +1,20 @@
import GridModel from './grid';
import Grid3DModel from './grid3d';
import HeatMapModel from './heatmap';
import HexagonModel from './hexagon';
export type HeatMapModelType =
| 'heatmap'
| 'heatmap3d'
| 'hexagon'
| 'grid'
| 'grid3d';
const HeatMapModels: { [key in HeatMapModelType]: any } = {
heatmap: HeatMapModel,
heatmap3d: HeatMapModel,
grid: GridModel,
grid3d: Grid3DModel,
hexagon: HexagonModel,
};
export default HeatMapModels;

View File

@ -1,21 +1,12 @@
import { container, ILayerPlugin, TYPES } from '@l7/core';
import BaseLayer from './core/BaseLayer';
import HeatMapGrid3dLayer from './heatmap/gird3d';
import HeatMapGridLayer from './heatmap/grid';
import HeatMapLayer from './heatmap/heatmap';
import HeatMapHexagonLayer from './heatmap/hexagon';
import HeatmapLayer from './heatmap';
import DashLineLayer from './line/dash';
import LineLayer from './line/index';
import PointLayer from './point';
import TextLayer from './point/text';
// import Point from './point/point';
import PolygonLayer from './polygon';
// import Polygon3DLayer from './polygon/polygon3D';
import ImageLayer from './raster/image';
import RasterLayer from './raster/raster';
import Raster2DLayer from './raster/raster2d';
import ConfigSchemaValidationPlugin from './plugins/ConfigSchemaValidationPlugin';
import DataMappingPlugin from './plugins/DataMappingPlugin';
@ -80,15 +71,7 @@ export {
PolygonLayer,
LineLayer,
DashLineLayer,
// Polygon3DLayer,
ImageLayer,
RasterLayer,
HeatMapLayer,
TextLayer,
HeatMapGrid3dLayer,
HeatMapHexagonLayer,
HeatMapGridLayer,
Raster2DLayer,
// ImageLayer,
// HeatMapLayer,
HeatmapLayer,
};

View File

@ -7,6 +7,7 @@ import {
ILayerPlugin,
ILogService,
IModel,
IModelUniform,
IStyleAttributeService,
lazyInject,
TYPES,
@ -22,7 +23,7 @@ interface IPointLayerStyleOptions {
strokeColor: string;
}
export default class FillModel extends BaseModel {
public getUninforms() {
public getUninforms(): IModelUniform {
const {
opacity = 1,
strokeColor = 'rgb(0,0,0,0)',

View File

@ -5,6 +5,7 @@ import {
ILayer,
ILayerModel,
IModel,
IModelUniform,
ITexture2D,
} from '@l7/core';
@ -19,7 +20,7 @@ interface IPointLayerStyleOptions {
export default class ImageModel extends BaseModel {
private texture: ITexture2D;
public getUninforms() {
public getUninforms(): IModelUniform {
const { opacity } = this.layer.getStyleOptions() as IPointLayerStyleOptions;
return {
u_opacity: opacity || 1.0,

View File

@ -5,6 +5,7 @@ import {
ILayer,
ILayerModel,
IModel,
IModelUniform,
} from '@l7/core';
import BaseModel from '../../core/baseModel';
@ -27,7 +28,7 @@ export function PointTriangulation(feature: IEncodeFeature) {
}
export default class NormalModel extends BaseModel {
public getUninforms() {
public getUninforms(): IModelUniform {
const {
opacity = 1,
strokeColor = 'rgb(0,0,0,0)',

View File

@ -5,26 +5,22 @@ import {
ILayer,
ILayerModel,
IModel,
IModelUniform,
} from '@l7/core';
import BaseLayer from '../core/BaseLayer';
import BaseModel from '../../core/baseModel';
import { PointExtrudeTriangulation } from '../core/triangulation';
import pointExtrudeFrag from './shaders/extrude_frag.glsl';
import pointExtrudeVert from './shaders/extrude_vert.glsl';
import pointExtrudeFrag from '../shaders/extrude_frag.glsl';
import pointExtrudeVert from '../shaders/extrude_vert.glsl';
export default class ExtrudeModel implements ILayerModel {
private layer: ILayer;
constructor(layer: ILayer) {
this.layer = layer;
this.registerBuiltinAttributes();
}
public getUninforms() {
export default class ExtrudeModel extends BaseModel {
public getUninforms(): IModelUniform {
throw new Error('Method not implemented.');
}
public buildModels(): IModel[] {
throw new Error('Method not implemented.');
}
private registerBuiltinAttributes() {
protected registerBuiltinAttributes() {
throw new Error('Method not implemented.');
}
}

View File

@ -23,6 +23,7 @@ export function aggregatorToGrid(data: IParserData, option: ITransform) {
yOffset: gridOffset.yOffset / 1.8,
xOffset: gridOffset.xOffset / 1.8,
radius: gridOffset.xOffset,
type: 'grid',
dataArray: layerData,
};
}

View File

@ -52,6 +52,7 @@ export function pointToHexbin(data: IParserData, option: ITransform) {
radius: pixlSize,
xOffset: pixlSize,
yOffset: pixlSize,
type: 'hexagon',
};
return result;
}

18
site/css/home.css Normal file
View File

@ -0,0 +1,18 @@
.home_l7_feature_img {
width:100px;
}
.feature-logo {
height: 100px !important;
}
.cover-image {
margin-top: 40px;
margin-left: 30px;
max-height: 600px;
}
@media only screen and (max-height: 800px) {
.cover-image {
margin-top: 40px;
margin-left: 270px;
max-height: 400px;
}
}

View File

@ -1,5 +1,6 @@
{
"L7 地理空间可视化引擎": "Geospatial Visualization <br> Analysis Framework",
"L7 地理空间可视化引擎": "Geospatial Visualization
Analysis Framework",
"地理空间数据可视化": "Geospatial Data Visualization Analysis Framework",
"L7 是由蚂蚁金服 AntV 数据可视化团队推出的基于WebGL的开源大规模地理空间数据可视分析开发框架。": "Large-scale WebGL-powered Geospatial data visualization analysis framework",
"架构上灵活可扩展":"Flexible and scalable",

View File

@ -4,6 +4,7 @@ import Cases from '@antv/gatsby-theme-antv/site/components/Cases';
import Companies from '@antv/gatsby-theme-antv/site/components/Companies';
import Features from '@antv/gatsby-theme-antv/site/components/Features';
import SEO from '@antv/gatsby-theme-antv/site/components/Seo';
import '../css/home.css';
import React from 'react';
import { useTranslation } from 'react-i18next';
@ -78,12 +79,7 @@ const IndexPage = () => {
<Banner
coverImage={
<img
class="Notification-module--number--31-3Z"
style={{
marginTop: '40px',
marginLeft: '30px',
maxHeight: '600px',
}}
className="cover-image"
src="https://gw.alipayobjects.com/mdn/antv_site/afts/img/A*VcojS5aWhMYAAAAAAAAAAABkARQnAQ"
/>
}

549
yarn.lock
View File

@ -89,9 +89,9 @@
wolfy87-eventemitter "~5.1.0"
"@antv/gatsby-theme-antv@^0.9.52":
version "0.9.58"
resolved "https://registry.npm.alibaba-inc.com/@antv/gatsby-theme-antv/download/@antv/gatsby-theme-antv-0.9.58.tgz#df9845c275ed5e5547beff11fd9024be02637367"
integrity sha1-35hFwnXtXlVHvv8R/ZAkvgJjc2c=
version "0.9.69"
resolved "https://registry.npm.alibaba-inc.com/@antv/gatsby-theme-antv/download/@antv/gatsby-theme-antv-0.9.69.tgz#039e5b13ebf0c77ab28265b07566a98a2dd60489"
integrity sha1-A55bE+vwx3qygmWwdWapii3WBIk=
dependencies:
"@babel/plugin-transform-modules-umd" "^7.2.0"
"@babel/preset-env" "^7.6.3"
@ -113,6 +113,7 @@
classnames "^2.2.6"
codemirror "^5.49.2"
codesandbox "^2.1.10"
docsearch.js "^2.6.3"
gatsby "^2.15.16"
gatsby-image "^2.2.19"
gatsby-plugin-antd "^2.0.2"
@ -166,7 +167,7 @@
react-slick "^0.25.2"
react-split-pane "^0.1.87"
react-test-renderer "^16.9.0"
react-use "^13.6.3"
react-use "^13.8.0"
release-it "^12.4.3"
shallowequal "^1.1.0"
slick-carousel "^1.8.1"
@ -1568,9 +1569,9 @@
yargs "^9.0.0"
"@hapi/address@2.x.x":
version "2.1.2"
resolved "https://registry.npm.alibaba-inc.com/@hapi/address/download/@hapi/address-2.1.2.tgz#1c794cd6dbf2354d1eb1ef10e0303f573e1c7222"
integrity sha1-HHlM1tvyNU0ese8Q4DA/Vz4cciI=
version "2.1.4"
resolved "https://registry.npm.alibaba-inc.com/@hapi/address/download/@hapi/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
integrity sha1-XWftQ/P9QaadS5/3tW58DR0KgeU=
"@hapi/bourne@1.x.x":
version "1.3.2"
@ -3723,7 +3724,12 @@
dependencies:
"@types/lodash" "*"
"@types/lodash@*", "@types/lodash@^4.14.138":
"@types/lodash@*":
version "4.14.149"
resolved "https://registry.npm.alibaba-inc.com/@types/lodash/download/@types/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440"
integrity sha1-E0LWPZSMYGKDj7+WEBL3TU5jhEA=
"@types/lodash@^4.14.138":
version "4.14.148"
resolved "https://registry.npm.alibaba-inc.com/@types/lodash/download/@types/lodash-4.14.148.tgz#ffa2786721707b335c6aa1465e6d3d74016fbd3e"
integrity sha1-/6J4ZyFwezNcaqFGXm09dAFvvT4=
@ -3745,7 +3751,12 @@
resolved "https://registry.npm.alibaba-inc.com/@types/mkdirp/download/@types/mkdirp-0.3.29.tgz#7f2ad7ec55f914482fc9b1ec4bb1ae6028d46066"
integrity sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY=
"@types/node@*", "@types/node@>= 8", "@types/node@^12.0.2", "@types/node@^12.7.3":
"@types/node@*", "@types/node@>= 8":
version "12.12.9"
resolved "https://registry.npm.alibaba-inc.com/@types/node/download/@types/node-12.12.9.tgz#0b5ae05516b757cbff2e82c04500190aef986c7b"
integrity sha1-C1rgVRa3V8v/LoLARQAZCu+YbHs=
"@types/node@^12.0.2", "@types/node@^12.7.3":
version "12.12.8"
resolved "https://registry.npm.alibaba-inc.com/@types/node/download/@types/node-12.12.8.tgz#dab418655af39ce2fa99286a0bed21ef8072ac9d"
integrity sha1-2rQYZVrznOL6mShqC+0h74ByrJ0=
@ -3942,42 +3953,43 @@
"@types/yargs-parser" "*"
"@typescript-eslint/eslint-plugin@^2.7.0":
version "2.7.0"
resolved "https://registry.npm.alibaba-inc.com/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-2.7.0.tgz#dff176bdb73dfd7e2e43062452189bd1b9db6021"
integrity sha1-3/F2vbc9/X4uQwYkUhib0bnbYCE=
version "2.8.0"
resolved "https://registry.npm.alibaba-inc.com/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-2.8.0.tgz#eca584d46094ebebc3cb3e9fb625bfbc904a534d"
integrity sha1-7KWE1GCU6+vDyz6ftiW/vJBKU00=
dependencies:
"@typescript-eslint/experimental-utils" "2.7.0"
eslint-utils "^1.4.2"
"@typescript-eslint/experimental-utils" "2.8.0"
eslint-utils "^1.4.3"
functional-red-black-tree "^1.0.1"
regexpp "^2.0.1"
regexpp "^3.0.0"
tsutils "^3.17.1"
"@typescript-eslint/experimental-utils@2.7.0":
version "2.7.0"
resolved "https://registry.npm.alibaba-inc.com/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-2.7.0.tgz#58d790a3884df3041b5a5e08f9e5e6b7c41864b5"
integrity sha1-WNeQo4hN8wQbWl4I+eXmt8QYZLU=
"@typescript-eslint/experimental-utils@2.8.0":
version "2.8.0"
resolved "https://registry.npm.alibaba-inc.com/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-2.8.0.tgz#208b4164d175587e9b03ce6fea97d55f19c30ca9"
integrity sha1-IItBZNF1WH6bA85v6pfVXxnDDKk=
dependencies:
"@types/json-schema" "^7.0.3"
"@typescript-eslint/typescript-estree" "2.7.0"
"@typescript-eslint/typescript-estree" "2.8.0"
eslint-scope "^5.0.0"
"@typescript-eslint/parser@^2.7.0":
version "2.7.0"
resolved "https://registry.npm.alibaba-inc.com/@typescript-eslint/parser/download/@typescript-eslint/parser-2.7.0.tgz#b5e6a4944e2b68dba1e7fbfd5242e09ff552fd12"
integrity sha1-teaklE4raNuh5/v9UkLgn/VS/RI=
version "2.8.0"
resolved "https://registry.npm.alibaba-inc.com/@typescript-eslint/parser/download/@typescript-eslint/parser-2.8.0.tgz#e10f7c40c8cf2fb19920c879311e6c46ad17bacb"
integrity sha1-4Q98QMjPL7GZIMh5MR5sRq0Xuss=
dependencies:
"@types/eslint-visitor-keys" "^1.0.0"
"@typescript-eslint/experimental-utils" "2.7.0"
"@typescript-eslint/typescript-estree" "2.7.0"
"@typescript-eslint/experimental-utils" "2.8.0"
"@typescript-eslint/typescript-estree" "2.8.0"
eslint-visitor-keys "^1.1.0"
"@typescript-eslint/typescript-estree@2.7.0":
version "2.7.0"
resolved "https://registry.npm.alibaba-inc.com/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-2.7.0.tgz#34fd98c77a07b40d04d5b4203eddd3abeab909f4"
integrity sha1-NP2Yx3oHtA0E1bQgPt3Tq+q5CfQ=
"@typescript-eslint/typescript-estree@2.8.0":
version "2.8.0"
resolved "https://registry.npm.alibaba-inc.com/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-2.8.0.tgz#fcc3fe6532840085d29b75432c8a59895876aeca"
integrity sha1-/MP+ZTKEAIXSm3VDLIpZiVh2rso=
dependencies:
debug "^4.1.1"
glob "^7.1.4"
eslint-visitor-keys "^1.1.0"
glob "^7.1.6"
is-glob "^4.0.1"
lodash.unescape "4.0.1"
semver "^6.3.0"
@ -4255,6 +4267,11 @@ agent-base@~4.2.1:
dependencies:
es6-promisify "^5.0.0"
agentkeepalive@^2.2.0:
version "2.2.0"
resolved "https://registry.npm.alibaba-inc.com/agentkeepalive/download/agentkeepalive-2.2.0.tgz#c5d1bd4b129008f1163f236f86e5faea2026e2ef"
integrity sha1-xdG9SxKQCPEWPyNvhuX66iAm4u8=
agentkeepalive@^3.3.0, agentkeepalive@^3.4.1:
version "3.5.2"
resolved "https://registry.npm.alibaba-inc.com/agentkeepalive/download/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67"
@ -4329,6 +4346,27 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
algoliasearch@^3.24.5:
version "3.35.1"
resolved "https://registry.npm.alibaba-inc.com/algoliasearch/download/algoliasearch-3.35.1.tgz#297d15f534a3507cab2f5dfb996019cac7568f0c"
integrity sha1-KX0V9TSjUHyrL137mWAZysdWjww=
dependencies:
agentkeepalive "^2.2.0"
debug "^2.6.9"
envify "^4.0.0"
es6-promise "^4.1.0"
events "^1.1.0"
foreach "^2.0.5"
global "^4.3.2"
inherits "^2.0.1"
isarray "^2.0.1"
load-script "^1.0.0"
object-keys "^1.0.11"
querystring-es3 "^0.2.1"
reduce "^1.0.1"
semver "^5.1.0"
tunnel-agent "^0.6.0"
align-text@^0.1.1, align-text@^0.1.3:
version "0.1.4"
resolved "https://registry.npm.alibaba-inc.com/align-text/download/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
@ -4373,11 +4411,11 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.2.0:
integrity sha1-h4C5j/nb9WOBUtHx/lwde0RCl2s=
ansi-escapes@^4.2.1:
version "4.2.1"
resolved "https://registry.npm.alibaba-inc.com/ansi-escapes/download/ansi-escapes-4.2.1.tgz#4dccdb846c3eee10f6d64dea66273eab90c37228"
integrity sha1-TczbhGw+7hD21k3qZic+q5DDcig=
version "4.3.0"
resolved "https://registry.npm.alibaba-inc.com/ansi-escapes/download/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d"
integrity sha1-pM4rM9ayFLeVDYWVwhLxKsnMVp0=
dependencies:
type-fest "^0.5.2"
type-fest "^0.8.1"
ansi-html@0.0.7:
version "0.0.7"
@ -4429,9 +4467,9 @@ ansicolors@~0.2.1:
integrity sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=
antd@^3.25.0:
version "3.25.1"
resolved "https://registry.npm.alibaba-inc.com/antd/download/antd-3.25.1.tgz#c23732e63fc01fed30d9ab708e9ef4e71527ed82"
integrity sha1-wjcy5j/AH+0w2atwjp705xUn7YI=
version "3.25.2"
resolved "https://registry.npm.alibaba-inc.com/antd/download/antd-3.25.2.tgz#6994e2f9639194c08dce4634c6296577ad44ac9d"
integrity sha1-aZTi+WORlMCNzkY0xilld61ErJ0=
dependencies:
"@ant-design/create-react-context" "^0.2.4"
"@ant-design/icons" "~2.1.1"
@ -4849,7 +4887,14 @@ auto-bind@^2.0.0:
dependencies:
"@types/react" "^16.8.12"
autoprefixer@^9.0.0, autoprefixer@^9.4.9, autoprefixer@^9.7.1:
autocomplete.js@0.36.0:
version "0.36.0"
resolved "https://registry.npm.alibaba-inc.com/autocomplete.js/download/autocomplete.js-0.36.0.tgz#94fe775fe64b6cd42e622d076dc7fd26bedd837b"
integrity sha1-lP53X+ZLbNQuYi0Hbcf9Jr7dg3s=
dependencies:
immediate "^3.2.3"
autoprefixer@^9.0.0, autoprefixer@^9.4.9:
version "9.7.1"
resolved "https://registry.npm.alibaba-inc.com/autoprefixer/download/autoprefixer-9.7.1.tgz#9ffc44c55f5ca89253d9bb7186cefb01ef57747f"
integrity sha1-n/xExV9cqJJT2btxhs77Ae9XdH8=
@ -4862,6 +4907,19 @@ autoprefixer@^9.0.0, autoprefixer@^9.4.9, autoprefixer@^9.7.1:
postcss "^7.0.21"
postcss-value-parser "^4.0.2"
autoprefixer@^9.7.1:
version "9.7.2"
resolved "https://registry.npm.alibaba-inc.com/autoprefixer/download/autoprefixer-9.7.2.tgz#26cf729fbb709323b40171a874304884dcceffed"
integrity sha1-Js9yn7twkyO0AXGodDBIhNzO/+0=
dependencies:
browserslist "^4.7.3"
caniuse-lite "^1.0.30001010"
chalk "^2.4.2"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
postcss "^7.0.23"
postcss-value-parser "^4.0.2"
awesome-typescript-loader@^5.2.1:
version "5.2.1"
resolved "https://registry.npm.alibaba-inc.com/awesome-typescript-loader/download/awesome-typescript-loader-5.2.1.tgz#a41daf7847515f4925cdbaa3075d61f289e913fc"
@ -5858,14 +5916,14 @@ browserslist@4.7.0:
electron-to-chromium "^1.3.247"
node-releases "^1.1.29"
browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.7.2:
version "4.7.2"
resolved "https://registry.npm.alibaba-inc.com/browserslist/download/browserslist-4.7.2.tgz#1bb984531a476b5d389cedecb195b2cd69fb1348"
integrity sha1-G7mEUxpHa104nO3ssZWyzWn7E0g=
browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.7.2, browserslist@^4.7.3:
version "4.7.3"
resolved "https://registry.npm.alibaba-inc.com/browserslist/download/browserslist-4.7.3.tgz#02341f162b6bcc1e1028e30624815d4924442dc3"
integrity sha1-AjQfFitrzB4QKOMGJIFdSSRELcM=
dependencies:
caniuse-lite "^1.0.30001004"
electron-to-chromium "^1.3.295"
node-releases "^1.1.38"
caniuse-lite "^1.0.30001010"
electron-to-chromium "^1.3.306"
node-releases "^1.1.40"
bs-logger@0.x:
version "0.2.6"
@ -6211,7 +6269,12 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001004, caniuse-lite@^1.0.30001006:
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001006, caniuse-lite@^1.0.30001010:
version "1.0.30001010"
resolved "https://registry.npm.alibaba-inc.com/caniuse-lite/download/caniuse-lite-1.0.30001010.tgz#397a14034d384260453cc81994f494626d34b938"
integrity sha1-OXoUA004QmBFPMgZlPSUYm00uTg=
caniuse-lite@^1.0.30000989:
version "1.0.30001009"
resolved "https://registry.npm.alibaba-inc.com/caniuse-lite/download/caniuse-lite-1.0.30001009.tgz#69b77997b882a7aee6af24c8d7d2fa27ee41f348"
integrity sha1-abd5l7iCp67mryTI19L6J+5B80g=
@ -8403,6 +8466,19 @@ dns-txt@^2.0.2:
dependencies:
buffer-indexof "^1.0.0"
docsearch.js@^2.6.3:
version "2.6.3"
resolved "https://registry.npm.alibaba-inc.com/docsearch.js/download/docsearch.js-2.6.3.tgz#57cb4600d3b6553c677e7cbbe6a734593e38625d"
integrity sha1-V8tGANO2VTxnfny75qc0WT44Yl0=
dependencies:
algoliasearch "^3.24.5"
autocomplete.js "0.36.0"
hogan.js "^3.0.2"
request "^2.87.0"
stack-utils "^1.0.1"
to-factory "^1.0.0"
zepto "^1.2.0"
doctrine@1.5.0:
version "1.5.0"
resolved "https://registry.npm.alibaba-inc.com/doctrine/download/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
@ -8672,7 +8748,7 @@ ejs@^2.6.1:
resolved "https://registry.npm.alibaba-inc.com/ejs/download/ejs-2.7.2.tgz#749037c4c09bd57626a6140afbe6b7e650661614"
integrity sha1-dJA3xMCb1XYmphQK++a35lBmFhQ=
electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.295, electron-to-chromium@^1.3.47:
electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.306, electron-to-chromium@^1.3.47:
version "1.3.306"
resolved "https://registry.npm.alibaba-inc.com/electron-to-chromium/download/electron-to-chromium-1.3.306.tgz#e8265301d053d5f74e36cb876486830261fbe946"
integrity sha1-6CZTAdBT1fdONsuHZIaDAmH76UY=
@ -8841,6 +8917,14 @@ envify@^3.0.0:
jstransform "^11.0.3"
through "~2.3.4"
envify@^4.0.0:
version "4.1.0"
resolved "https://registry.npm.alibaba-inc.com/envify/download/envify-4.1.0.tgz#f39ad3db9d6801b4e6b478b61028d3f0b6819f7e"
integrity sha1-85rT251oAbTmtHi2ECjT8LaBn34=
dependencies:
esprima "^4.0.0"
through "~2.3.4"
envinfo@^7.4.0:
version "7.4.0"
resolved "https://registry.npm.alibaba-inc.com/envinfo/download/envinfo-7.4.0.tgz#bef4ece9e717423aaf0c3584651430b735ad6630"
@ -8926,9 +9010,9 @@ err-code@^1.0.0:
integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=
errlop@^1.1.2:
version "1.2.0"
resolved "https://registry.npm.alibaba-inc.com/errlop/download/errlop-1.2.0.tgz#15d02f8232e788da39b6472fb76809fff423a7d8"
integrity sha1-FdAvgjLniNo5tkcvt2gJ//Qjp9g=
version "1.3.0"
resolved "https://registry.npm.alibaba-inc.com/errlop/download/errlop-1.3.0.tgz#ae6624cf8ba838ca0d34770606c230878586ee44"
integrity sha1-rmYkz4uoOMoNNHcGBsIwh4WG7kQ=
dependencies:
editions "^2.2.0"
@ -9001,7 +9085,7 @@ es6-iterator@~2.0.3:
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
es6-promise@^4.0.3:
es6-promise@^4.0.3, es6-promise@^4.1.0:
version "4.2.8"
resolved "https://registry.npm.alibaba-inc.com/es6-promise/download/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
integrity sha1-TrIVlMlyvEBVPSduUQU5FD21Pgo=
@ -9178,7 +9262,7 @@ eslint-scope@^5.0.0:
esrecurse "^4.1.0"
estraverse "^4.1.1"
eslint-utils@^1.4.2, eslint-utils@^1.4.3:
eslint-utils@^1.4.3:
version "1.4.3"
resolved "https://registry.npm.alibaba-inc.com/eslint-utils/download/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
integrity sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=
@ -9316,6 +9400,11 @@ eventlistener@0.0.1:
resolved "https://registry.npm.alibaba-inc.com/eventlistener/download/eventlistener-0.0.1.tgz#ed2baabb852227af2bcf889152c72c63ca532eb8"
integrity sha1-7Suqu4UiJ68rz4iRUscsY8pTLrg=
events@^1.1.0:
version "1.1.1"
resolved "https://registry.npm.alibaba-inc.com/events/download/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
events@^3.0.0:
version "3.0.0"
resolved "https://registry.npm.alibaba-inc.com/events/download/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
@ -10167,6 +10256,11 @@ for-own@^0.1.3:
dependencies:
for-in "^1.0.1"
foreach@^2.0.5:
version "2.0.5"
resolved "https://registry.npm.alibaba-inc.com/foreach/download/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.npm.alibaba-inc.com/forever-agent/download/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@ -10383,10 +10477,10 @@ fuse.js@^3.4.4:
resolved "https://registry.npm.alibaba-inc.com/fuse.js/download/fuse.js-3.4.5.tgz#8954fb43f9729bd5dbcb8c08f251db552595a7a6"
integrity sha1-iVT7Q/lym9Xby4wI8lHbVSWVp6Y=
gatsby-cli@^2.8.11:
version "2.8.11"
resolved "https://registry.npm.alibaba-inc.com/gatsby-cli/download/gatsby-cli-2.8.11.tgz#fafe232904183797a829fd94c8f8b54f590cc6c6"
integrity sha1-+v4jKQQYN5eoKf2UyPi1T1kMxsY=
gatsby-cli@^2.8.11, gatsby-cli@^2.8.12:
version "2.8.12"
resolved "https://registry.npm.alibaba-inc.com/gatsby-cli/download/gatsby-cli-2.8.12.tgz#e1d870a15258003b3ee6db68a24d5b6bc9d4368d"
integrity sha1-4dhwoVJYADs+5ttook1ba8nUNo0=
dependencies:
"@babel/code-frame" "^7.5.5"
"@babel/runtime" "^7.7.2"
@ -10403,8 +10497,8 @@ gatsby-cli@^2.8.11:
execa "^3.3.0"
fs-exists-cached "^1.0.0"
fs-extra "^8.1.0"
gatsby-core-utils "^1.0.19"
gatsby-telemetry "^1.1.37"
gatsby-core-utils "^1.0.20"
gatsby-telemetry "^1.1.38"
hosted-git-info "^3.0.2"
is-valid-path "^0.1.1"
lodash "^4.17.15"
@ -10431,10 +10525,10 @@ gatsby-cli@^2.8.11:
ink "^2.5.0"
ink-spinner "^3.0.1"
gatsby-core-utils@^1.0.19:
version "1.0.19"
resolved "https://registry.npm.alibaba-inc.com/gatsby-core-utils/download/gatsby-core-utils-1.0.19.tgz#670a0eefe8fc8517c5b87573be6cd817d4b1a96a"
integrity sha1-ZwoO7+j8hRfFuHVzvmzYF9SxqWo=
gatsby-core-utils@^1.0.19, gatsby-core-utils@^1.0.20:
version "1.0.20"
resolved "https://registry.npm.alibaba-inc.com/gatsby-core-utils/download/gatsby-core-utils-1.0.20.tgz#f4788c2591fa7165c87f0ee5e8edf664c91978ea"
integrity sha1-9HiMJZH6cWXIfw7l6O32ZMkZeOo=
dependencies:
ci-info "2.0.0"
@ -10463,19 +10557,19 @@ gatsby-link@^2.2.24:
"@types/reach__router" "^1.2.6"
prop-types "^15.7.2"
gatsby-page-utils@^0.0.30:
version "0.0.30"
resolved "https://registry.npm.alibaba-inc.com/gatsby-page-utils/download/gatsby-page-utils-0.0.30.tgz#dac099d695540f769fafaf156744f6017ea21a59"
integrity sha1-2sCZ1pVUD3afr68VZ0T2AX6iGlk=
gatsby-page-utils@^0.0.31:
version "0.0.31"
resolved "https://registry.npm.alibaba-inc.com/gatsby-page-utils/download/gatsby-page-utils-0.0.31.tgz#4314675d059627a56cc2ca66e921a5aa105058c0"
integrity sha1-QxRnXQWWJ6Vswspm6SGlqhBQWMA=
dependencies:
"@babel/runtime" "^7.7.2"
bluebird "^3.7.1"
chokidar "3.3.0"
fs-exists-cached "^1.0.0"
gatsby-core-utils "^1.0.20"
glob "^7.1.6"
lodash "^4.17.15"
micromatch "^3.1.10"
slash "^3.0.0"
gatsby-plugin-antd@^2.0.2:
version "2.1.0"
@ -10500,7 +10594,14 @@ gatsby-plugin-copy-files@^1.0.3:
dependencies:
fs-extra "^4.0.0"
gatsby-plugin-google-analytics@^2.1.16, gatsby-plugin-google-analytics@^2.1.27:
gatsby-plugin-google-analytics@^2.1.16:
version "2.1.28"
resolved "https://registry.npm.alibaba-inc.com/gatsby-plugin-google-analytics/download/gatsby-plugin-google-analytics-2.1.28.tgz#3f3b5105a1d47e3f07b1d4a4383e5173f483534c"
integrity sha1-PztRBaHUfj8HsdSkOD5Rc/SDU0w=
dependencies:
"@babel/runtime" "^7.7.2"
gatsby-plugin-google-analytics@^2.1.27:
version "2.1.27"
resolved "https://registry.npm.alibaba-inc.com/gatsby-plugin-google-analytics/download/gatsby-plugin-google-analytics-2.1.27.tgz#adbf24bb971ce3fb67ecdc3dcec36b833ff70abc"
integrity sha1-rb8ku5cc4/tn7Nw9zsNrgz/3Crw=
@ -10532,12 +10633,12 @@ gatsby-plugin-less@^3.0.6:
less-loader "^5.0.0"
gatsby-plugin-manifest@^2.2.16:
version "2.2.28"
resolved "https://registry.npm.alibaba-inc.com/gatsby-plugin-manifest/download/gatsby-plugin-manifest-2.2.28.tgz#17464f404c58b748ebd34efbf783a6f5b0f85f1b"
integrity sha1-F0ZPQExYt0jr007794Om9bD4Xxs=
version "2.2.29"
resolved "https://registry.npm.alibaba-inc.com/gatsby-plugin-manifest/download/gatsby-plugin-manifest-2.2.29.tgz#f5c4d65c424059007f8c23a49e332436614c03a4"
integrity sha1-9cTWXEJAWQB/jCOknjMkNmFMA6Q=
dependencies:
"@babel/runtime" "^7.7.2"
gatsby-core-utils "^1.0.19"
gatsby-core-utils "^1.0.20"
semver "^5.7.1"
sharp "^0.23.2"
@ -10557,27 +10658,27 @@ gatsby-plugin-nprogress@^2.1.12:
nprogress "^0.2.0"
gatsby-plugin-offline@^3.0.7:
version "3.0.21"
resolved "https://registry.npm.alibaba-inc.com/gatsby-plugin-offline/download/gatsby-plugin-offline-3.0.21.tgz#0fad8f372c6414ab7b3475838729126b13dd49e2"
integrity sha1-D62PNyxkFKt7NHWDhykSaxPdSeI=
version "3.0.22"
resolved "https://registry.npm.alibaba-inc.com/gatsby-plugin-offline/download/gatsby-plugin-offline-3.0.22.tgz#a8fb03e4d6abbd8cc14a03a9427424734675d484"
integrity sha1-qPsD5NarvYzBSgOpQnQkc0Z11IQ=
dependencies:
"@babel/runtime" "^7.7.2"
cheerio "^1.0.0-rc.3"
gatsby-core-utils "^1.0.20"
glob "^7.1.6"
idb-keyval "^3.2.0"
lodash "^4.17.15"
slash "^3.0.0"
workbox-build "^4.3.1"
gatsby-plugin-page-creator@^2.1.25, gatsby-plugin-page-creator@^2.1.30:
version "2.1.30"
resolved "https://registry.npm.alibaba-inc.com/gatsby-plugin-page-creator/download/gatsby-plugin-page-creator-2.1.30.tgz#ee57c6a8ac4cdbed7fa3ae99e6ada0df427d7fed"
integrity sha1-7lfGqKxM2+1/o66Z5q2g30J9f+0=
gatsby-plugin-page-creator@^2.1.25, gatsby-plugin-page-creator@^2.1.30, gatsby-plugin-page-creator@^2.1.31:
version "2.1.31"
resolved "https://registry.npm.alibaba-inc.com/gatsby-plugin-page-creator/download/gatsby-plugin-page-creator-2.1.31.tgz#21554d125d5bd333b5307ea12ece7da297a8eb89"
integrity sha1-IVVNEl1b0zO1MH6hLs59opeo64k=
dependencies:
"@babel/runtime" "^7.7.2"
bluebird "^3.7.1"
fs-exists-cached "^1.0.0"
gatsby-page-utils "^0.0.30"
gatsby-page-utils "^0.0.31"
glob "^7.1.6"
lodash "^4.17.15"
micromatch "^3.1.10"
@ -10597,15 +10698,15 @@ gatsby-plugin-remove-trailing-slashes@^2.1.9:
"@babel/runtime" "^7.7.2"
gatsby-plugin-sharp@^2.2.22:
version "2.3.0"
resolved "https://registry.npm.alibaba-inc.com/gatsby-plugin-sharp/download/gatsby-plugin-sharp-2.3.0.tgz#50f545f9b54c68727a560cc1f08590d032a787a0"
integrity sha1-UPVF+bVMaHJ6VgzB8IWQ0DKnh6A=
version "2.3.2"
resolved "https://registry.npm.alibaba-inc.com/gatsby-plugin-sharp/download/gatsby-plugin-sharp-2.3.2.tgz#bf9eb6234f7a6c38a9611466f4bd7fae14635dd4"
integrity sha1-v562I096bDipYRRm9L1/rhRjXdQ=
dependencies:
"@babel/runtime" "^7.7.2"
async "^2.6.3"
bluebird "^3.7.1"
fs-extra "^8.1.0"
gatsby-core-utils "^1.0.19"
gatsby-core-utils "^1.0.20"
got "^8.3.2"
imagemin "^6.1.0"
imagemin-mozjpeg "^8.0.0"
@ -10693,9 +10794,9 @@ gatsby-remark-reading-time@^1.0.1:
reading-time "^1.1.3"
gatsby-source-filesystem@^2.1.22:
version "2.1.37"
resolved "https://registry.npm.alibaba-inc.com/gatsby-source-filesystem/download/gatsby-source-filesystem-2.1.37.tgz#2738e3031028730952e042cf45421873c2f18d58"
integrity sha1-JzjjAxAocwlS4ELPRUIYc8LxjVg=
version "2.1.38"
resolved "https://registry.npm.alibaba-inc.com/gatsby-source-filesystem/download/gatsby-source-filesystem-2.1.38.tgz#174fbef19826844c92e5679cb2e379eeb52acf80"
integrity sha1-F0++8ZgmhEyS5WecsuN57rUqz4A=
dependencies:
"@babel/runtime" "^7.7.2"
better-queue "^3.8.10"
@ -10703,7 +10804,7 @@ gatsby-source-filesystem@^2.1.22:
chokidar "3.3.0"
file-type "^12.4.0"
fs-extra "^8.1.0"
gatsby-core-utils "^1.0.19"
gatsby-core-utils "^1.0.20"
got "^7.1.0"
md5-file "^3.2.3"
mime "^2.4.4"
@ -10722,10 +10823,10 @@ gatsby-source-github@^0.0.2:
lodash "~4.17.5"
yup "~0.24.1"
gatsby-telemetry@^1.1.37:
version "1.1.37"
resolved "https://registry.npm.alibaba-inc.com/gatsby-telemetry/download/gatsby-telemetry-1.1.37.tgz#bf640de90ae07c85587e70745472f0777998c468"
integrity sha1-v2QN6QrgfIVYfnB0VHLwd3mYxGg=
gatsby-telemetry@^1.1.37, gatsby-telemetry@^1.1.38:
version "1.1.38"
resolved "https://registry.npm.alibaba-inc.com/gatsby-telemetry/download/gatsby-telemetry-1.1.38.tgz#e8ac949565b87e37699ccbd067f55cc2fe62793e"
integrity sha1-6KyUlWW4fjdpnMvQZ/Vcwv5ieT4=
dependencies:
"@babel/code-frame" "^7.5.5"
"@babel/runtime" "^7.7.2"
@ -10734,7 +10835,7 @@ gatsby-telemetry@^1.1.37:
configstore "^5.0.0"
envinfo "^7.4.0"
fs-extra "^8.1.0"
gatsby-core-utils "^1.0.19"
gatsby-core-utils "^1.0.20"
git-up "4.0.1"
is-docker "2.0.0"
lodash "^4.17.15"
@ -10746,13 +10847,13 @@ gatsby-telemetry@^1.1.37:
uuid "3.3.3"
gatsby-transformer-remark@^2.6.24:
version "2.6.35"
resolved "https://registry.npm.alibaba-inc.com/gatsby-transformer-remark/download/gatsby-transformer-remark-2.6.35.tgz#f91ce377e6cc758515cf80d4b19169880e640c1b"
integrity sha1-+Rzjd+bMdYUVz4DUsZFpiA5kDBs=
version "2.6.37"
resolved "https://registry.npm.alibaba-inc.com/gatsby-transformer-remark/download/gatsby-transformer-remark-2.6.37.tgz#695202116d94a85f02a122753e8a1d22f73a12b3"
integrity sha1-aVICEW2UqF8CoSJ1PoodIvc6ErM=
dependencies:
"@babel/runtime" "^7.7.2"
bluebird "^3.7.1"
gatsby-core-utils "^1.0.19"
gatsby-core-utils "^1.0.20"
gray-matter "^4.0.2"
hast-util-raw "^4.0.0"
hast-util-to-html "^4.0.1"
@ -10785,7 +10886,144 @@ gatsby-transformer-sharp@^2.2.14:
semver "^5.7.1"
sharp "^0.23.2"
gatsby@^2.15.16, gatsby@^2.17.7:
gatsby@^2.15.16:
version "2.17.17"
resolved "https://registry.npm.alibaba-inc.com/gatsby/download/gatsby-2.17.17.tgz#f0999ce134d9abc8f29fc783abe90f69d3b08269"
integrity sha1-8Jmc4TTZq8jyn8eDq+kPadOwgmk=
dependencies:
"@babel/code-frame" "^7.5.5"
"@babel/core" "^7.7.2"
"@babel/parser" "^7.7.3"
"@babel/polyfill" "^7.7.0"
"@babel/runtime" "^7.7.2"
"@babel/traverse" "^7.7.2"
"@gatsbyjs/relay-compiler" "2.0.0-printer-fix.4"
"@hapi/joi" "^15.1.1"
"@mikaelkristiansson/domready" "^1.0.9"
"@pieh/friendly-errors-webpack-plugin" "1.7.0-chalk-2"
"@reach/router" "^1.2.1"
"@typescript-eslint/eslint-plugin" "^2.7.0"
"@typescript-eslint/parser" "^2.7.0"
address "1.1.2"
autoprefixer "^9.7.1"
axios "^0.19.0"
babel-core "7.0.0-bridge.0"
babel-eslint "^10.0.3"
babel-loader "^8.0.6"
babel-plugin-add-module-exports "^0.3.3"
babel-plugin-dynamic-import-node "^2.3.0"
babel-plugin-remove-graphql-queries "^2.7.16"
babel-preset-gatsby "^0.2.22"
better-opn "1.0.0"
better-queue "^3.8.10"
bluebird "^3.7.1"
browserslist "3.2.8"
cache-manager "^2.10.1"
cache-manager-fs-hash "^0.0.7"
chalk "^2.4.2"
chokidar "3.3.0"
common-tags "^1.8.0"
compression "^1.7.4"
convert-hrtime "^3.0.0"
copyfiles "^2.1.1"
core-js "^2.6.10"
cors "^2.8.5"
css-loader "^1.0.1"
debug "^3.2.6"
del "^5.1.0"
detect-port "^1.3.0"
devcert-san "^0.3.3"
dotenv "^8.2.0"
eslint "^6.6.0"
eslint-config-react-app "^5.0.2"
eslint-loader "^2.2.1"
eslint-plugin-flowtype "^3.13.0"
eslint-plugin-graphql "^3.1.0"
eslint-plugin-import "^2.18.2"
eslint-plugin-jsx-a11y "^6.2.3"
eslint-plugin-react "^7.16.0"
eslint-plugin-react-hooks "^1.7.0"
event-source-polyfill "^1.0.9"
express "^4.17.1"
express-graphql "^0.9.0"
fast-levenshtein "^2.0.6"
file-loader "^1.1.11"
flat "^4.1.0"
fs-exists-cached "1.0.0"
fs-extra "^8.1.0"
gatsby-cli "^2.8.12"
gatsby-core-utils "^1.0.20"
gatsby-graphiql-explorer "^0.2.28"
gatsby-link "^2.2.24"
gatsby-plugin-page-creator "^2.1.31"
gatsby-react-router-scroll "^2.1.16"
gatsby-telemetry "^1.1.38"
glob "^7.1.6"
got "8.3.2"
graphql "^14.5.8"
graphql-compose "^6.3.7"
graphql-playground-middleware-express "^1.7.12"
invariant "^2.2.4"
is-relative "^1.0.0"
is-relative-url "^3.0.0"
is-wsl "^2.1.1"
jest-worker "^24.9.0"
json-loader "^0.5.7"
json-stringify-safe "^5.0.1"
lodash "^4.17.15"
lokijs "^1.5.8"
md5 "^2.2.1"
md5-file "^3.2.3"
micromatch "^3.1.10"
mime "^2.4.4"
mini-css-extract-plugin "^0.8.0"
mitt "^1.2.0"
mkdirp "^0.5.1"
moment "^2.24.0"
name-all-modules-plugin "^1.0.1"
normalize-path "^2.1.1"
null-loader "^0.1.1"
opentracing "^0.14.4"
optimize-css-assets-webpack-plugin "^5.0.3"
parseurl "^1.3.3"
physical-cpu-count "^2.0.0"
pnp-webpack-plugin "^1.5.0"
postcss-flexbugs-fixes "^3.3.1"
postcss-loader "^2.1.6"
prompts "^2.3.0"
prop-types "^15.7.2"
raw-loader "^0.5.1"
react-dev-utils "^4.2.3"
react-error-overlay "^3.0.0"
react-hot-loader "^4.12.16"
redux "^4.0.4"
redux-thunk "^2.3.0"
semver "^5.7.1"
shallow-compare "^1.2.2"
sift "^5.1.0"
signal-exit "^3.0.2"
slugify "^1.3.6"
socket.io "^2.3.0"
stack-trace "^0.0.10"
string-similarity "^1.2.2"
style-loader "^0.23.1"
terser-webpack-plugin "1.4.1"
"true-case-path" "^2.2.1"
type-of "^2.0.1"
url-loader "^1.1.2"
util.promisify "^1.0.0"
uuid "^3.3.3"
v8-compile-cache "^1.1.2"
webpack "~4.41.2"
webpack-dev-middleware "^3.7.2"
webpack-dev-server "^3.9.0"
webpack-hot-middleware "^2.25.0"
webpack-merge "^4.2.2"
webpack-stats-plugin "^0.3.0"
xstate "^4.6.7"
yaml-loader "^0.5.0"
gatsby@^2.17.7:
version "2.17.15"
resolved "https://registry.npm.alibaba-inc.com/gatsby/download/gatsby-2.17.15.tgz#731e44f4292256889f374d434d56ace29ac2cfec"
integrity sha1-cx5E9CkiVoifN01DTVas4prCz+w=
@ -11770,9 +12008,9 @@ has-symbol-support-x@^1.4.1:
integrity sha1-FAn5i8ACR9pF2mfO4KNvKC/yZFU=
has-symbols@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.alibaba-inc.com/has-symbols/download/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
version "1.0.1"
resolved "https://registry.npm.alibaba-inc.com/has-symbols/download/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
integrity sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=
has-to-string-tag-x@^1.2.0:
version "1.4.1"
@ -11968,6 +12206,14 @@ hmac-drbg@^1.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
hogan.js@^3.0.2:
version "3.0.2"
resolved "https://registry.npm.alibaba-inc.com/hogan.js/download/hogan.js-3.0.2.tgz#4cd9e1abd4294146e7679e41d7898732b02c7bfd"
integrity sha1-TNnhq9QpQUbnZ55B14mHMrAse/0=
dependencies:
mkdirp "0.3.0"
nopt "1.0.10"
hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0:
version "2.5.5"
resolved "https://registry.npm.alibaba-inc.com/hoist-non-react-statics/download/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
@ -12398,6 +12644,11 @@ imagemin@^6.1.0:
pify "^4.0.1"
replace-ext "^1.0.0"
immediate@^3.2.3:
version "3.2.3"
resolved "https://registry.npm.alibaba-inc.com/immediate/download/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c"
integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=
immer@1.10.0:
version "1.10.0"
resolved "https://registry.npm.alibaba-inc.com/immer/download/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d"
@ -13387,6 +13638,11 @@ isarray@2.0.1:
resolved "https://registry.npm.alibaba-inc.com/isarray/download/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=
isarray@^2.0.1:
version "2.0.5"
resolved "https://registry.npm.alibaba-inc.com/isarray/download/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
integrity sha1-ivHkwSISRMxiRZ+vOJQNTmRKVyM=
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.alibaba-inc.com/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@ -14428,6 +14684,11 @@ load-json-file@^5.3.0:
strip-bom "^3.0.0"
type-fest "^0.3.0"
load-script@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.alibaba-inc.com/load-script/download/load-script-1.0.0.tgz#0491939e0bee5643ee494a7e3da3d2bac70c6ca4"
integrity sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ=
loader-fs-cache@^1.0.0:
version "1.0.2"
resolved "https://registry.npm.alibaba-inc.com/loader-fs-cache/download/loader-fs-cache-1.0.2.tgz#54cedf6b727e1779fd8f01205f05f6e88706f086"
@ -15580,6 +15841,11 @@ mkdirp@*, mkdirp@0.5.1, mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5
dependencies:
minimist "0.0.8"
mkdirp@0.3.0:
version "0.3.0"
resolved "https://registry.npm.alibaba-inc.com/mkdirp/download/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=
modify-values@^1.0.0:
version "1.0.1"
resolved "https://registry.npm.alibaba-inc.com/modify-values/download/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022"
@ -15993,7 +16259,7 @@ node-pre-gyp@^0.12.0:
semver "^5.3.0"
tar "^4"
node-releases@^1.1.29, node-releases@^1.1.38:
node-releases@^1.1.29, node-releases@^1.1.40:
version "1.1.40"
resolved "https://registry.npm.alibaba-inc.com/node-releases/download/node-releases-1.1.40.tgz#a94facfa8e2d612302601ca1361741d529c4515a"
integrity sha1-qU+s+o4tYSMCYByhNhdB1SnEUVo=
@ -16036,6 +16302,13 @@ noop-logger@^0.1.1:
resolved "https://registry.npm.alibaba-inc.com/noop-logger/download/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2"
integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=
nopt@1.0.10:
version "1.0.10"
resolved "https://registry.npm.alibaba-inc.com/nopt/download/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=
dependencies:
abbrev "1"
"nopt@2 || 3":
version "3.0.6"
resolved "https://registry.npm.alibaba-inc.com/nopt/download/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
@ -16326,7 +16599,7 @@ object-is@^1.0.1:
resolved "https://registry.npm.alibaba-inc.com/object-is/download/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6"
integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=
object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.0, object-keys@^1.1.1:
version "1.1.1"
resolved "https://registry.npm.alibaba-inc.com/object-keys/download/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
integrity sha1-HEfyct8nfzsdrwYWd9nILiMixg4=
@ -17849,7 +18122,16 @@ postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.2, postcss@^6.0.23, postcss@^6.0.8:
source-map "^0.6.1"
supports-color "^5.4.0"
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.18, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.5, postcss@^7.0.6, postcss@^7.0.7:
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.21, postcss@^7.0.23, postcss@^7.0.5:
version "7.0.23"
resolved "https://registry.npm.alibaba-inc.com/postcss/download/postcss-7.0.23.tgz#9f9759fad661b15964f3cfc3140f66f1e05eadc1"
integrity sha1-n5dZ+tZhsVlk88/DFA9m8eBercE=
dependencies:
chalk "^2.4.2"
source-map "^0.6.1"
supports-color "^6.1.0"
postcss@^7.0.13, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.18, postcss@^7.0.2, postcss@^7.0.6, postcss@^7.0.7:
version "7.0.21"
resolved "https://registry.npm.alibaba-inc.com/postcss/download/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17"
integrity sha1-BrsHgkwZwgIcXQVtWxDDW5iffhc=
@ -17870,7 +18152,7 @@ potrace@^2.1.2:
dependencies:
jimp "^0.6.4"
prebuild-install@^5.1.0, prebuild-install@^5.3.2:
prebuild-install@^5.1.0, prebuild-install@^5.3.3:
version "5.3.3"
resolved "https://registry.npm.alibaba-inc.com/prebuild-install/download/prebuild-install-5.3.3.tgz#ef4052baac60d465f5ba6bf003c9c1de79b9da8e"
integrity sha1-70BSuqxg1GX1umvwA8nB3nm52o4=
@ -18254,7 +18536,7 @@ query-string@^5.0.1:
object-assign "^4.1.0"
strict-uri-encode "^1.0.0"
querystring-es3@^0.2.0:
querystring-es3@^0.2.0, querystring-es3@^0.2.1:
version "0.2.1"
resolved "https://registry.npm.alibaba-inc.com/querystring-es3/download/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
@ -19218,7 +19500,7 @@ react-transition-group@^2.2.1:
prop-types "^15.6.2"
react-lifecycles-compat "^3.0.4"
react-use@^13.6.3:
react-use@^13.8.0:
version "13.8.0"
resolved "https://registry.npm.alibaba-inc.com/react-use/download/react-use-13.8.0.tgz#5e8badaaa5614a1925fd28ad22d01cc1c52e0ff1"
integrity sha1-XoutqqVhShkl/SitItAcwcUuD/E=
@ -19513,6 +19795,13 @@ redeyed@~0.4.0:
dependencies:
esprima "~1.0.4"
reduce@^1.0.1:
version "1.0.2"
resolved "https://registry.npm.alibaba-inc.com/reduce/download/reduce-1.0.2.tgz#0cd680ad3ffe0b060e57a5c68bdfce37168d361b"
integrity sha1-DNaArT/+CwYOV6XGi9/ONxaNNhs=
dependencies:
object-keys "^1.1.0"
redux-thunk@^2.3.0:
version "2.3.0"
resolved "https://registry.npm.alibaba-inc.com/redux-thunk/download/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622"
@ -19609,6 +19898,11 @@ regexpp@^2.0.1:
resolved "https://registry.npm.alibaba-inc.com/regexpp/download/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
integrity sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=
regexpp@^3.0.0:
version "3.0.0"
resolved "https://registry.npm.alibaba-inc.com/regexpp/download/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e"
integrity sha1-3WOYLuMwDme0HBlW+FCqaA2dMw4=
regexpu-core@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.alibaba-inc.com/regexpu-core/download/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
@ -20697,15 +20991,15 @@ sharkdown@^0.1.0:
split "~0.2.10"
sharp@^0.23.2:
version "0.23.2"
resolved "https://registry.npm.alibaba-inc.com/sharp/download/sharp-0.23.2.tgz#5f8b77513aa1f7e4d0dd969a3904ced75486c1d7"
integrity sha1-X4t3UTqh9+TQ3ZaaOQTO11SGwdc=
version "0.23.3"
resolved "https://registry.npm.alibaba-inc.com/sharp/download/sharp-0.23.3.tgz#549770a4c671b9bd221f00639452a3eb803a0ed1"
integrity sha1-VJdwpMZxub0iHwBjlFKj64A6DtE=
dependencies:
color "^3.1.2"
detect-libc "^1.0.3"
nan "^2.14.0"
npmlog "^4.1.2"
prebuild-install "^5.3.2"
prebuild-install "^5.3.3"
semver "^6.3.0"
simple-get "^3.1.0"
tar "^5.0.5"
@ -20892,6 +21186,11 @@ slide@^1.1.6:
resolved "https://registry.npm.alibaba-inc.com/slide/download/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=
slugify@^1.3.6:
version "1.3.6"
resolved "https://registry.npm.alibaba-inc.com/slugify/download/slugify-1.3.6.tgz#ba5fd6159b570fe4811d02ea9b1f4906677638c3"
integrity sha1-ul/WFZtXD+SBHQLqmx9JBmd2OMM=
smart-buffer@^1.0.13:
version "1.1.15"
resolved "https://registry.npm.alibaba-inc.com/smart-buffer/download/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16"
@ -22307,6 +22606,11 @@ to-buffer@^1.1.1:
resolved "https://registry.npm.alibaba-inc.com/to-buffer/download/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
integrity sha1-STvUj2LXxD/N7TE6A9ytsuEhOoA=
to-factory@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.alibaba-inc.com/to-factory/download/to-factory-1.0.0.tgz#8738af8bd97120ad1d4047972ada5563bf9479b1"
integrity sha1-hzivi9lxIK0dQEeXKtpVY7+UebE=
to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.alibaba-inc.com/to-fast-properties/download/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
@ -22559,16 +22863,16 @@ type-fest@^0.3.0:
resolved "https://registry.npm.alibaba-inc.com/type-fest/download/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"
integrity sha1-Y9ANIE4FlHT+Xht8ARESu9HcKeE=
type-fest@^0.5.2:
version "0.5.2"
resolved "https://registry.npm.alibaba-inc.com/type-fest/download/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2"
integrity sha1-1u9CoDVsbNRfSUhcO2KB/BSOSKI=
type-fest@^0.6.0:
version "0.6.0"
resolved "https://registry.npm.alibaba-inc.com/type-fest/download/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
integrity sha1-jSojcNPfiG61yQraHFv2GIrPg4s=
type-fest@^0.8.1:
version "0.8.1"
resolved "https://registry.npm.alibaba-inc.com/type-fest/download/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
integrity sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=
type-is@~1.6.17, type-is@~1.6.18:
version "1.6.18"
resolved "https://registry.npm.alibaba-inc.com/type-is/download/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
@ -23547,9 +23851,9 @@ which@1, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1:
isexe "^2.0.0"
which@^2.0.1:
version "2.0.1"
resolved "https://registry.npm.alibaba-inc.com/which/download/which-2.0.1.tgz#f1cf94d07a8e571b6ff006aeb91d0300c47ef0a4"
integrity sha1-8c+U0HqOVxtv8AauuR0DAMR+8KQ=
version "2.0.2"
resolved "https://registry.npm.alibaba-inc.com/which/download/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
integrity sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=
dependencies:
isexe "^2.0.0"
@ -24221,6 +24525,11 @@ yurnalist@^1.1.1:
strip-ansi "^5.2.0"
strip-bom "^4.0.0"
zepto@^1.2.0:
version "1.2.0"
resolved "https://registry.npm.alibaba-inc.com/zepto/download/zepto-1.2.0.tgz#e127bd9e66fd846be5eab48c1394882f7c0e4f98"
integrity sha1-4Se9nmb9hGvl6rSME5SIL3wOT5g=
zwitch@^1.0.0:
version "1.0.4"
resolved "https://registry.npm.alibaba-inc.com/zwitch/download/zwitch-1.0.4.tgz#93b1b993b13c8926753a41afaf8f27bbfac6be8b"