diff --git a/README.md b/README.md index 6f1c4d2..c0a18fc 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@

-Size -Version +Size +Version 我的博客 diff --git a/images/前端杂烩/three.js/三角面-渐变色.png b/images/前端杂烩/three.js/三角面-渐变色.png new file mode 100644 index 0000000..aba8f2e Binary files /dev/null and b/images/前端杂烩/three.js/三角面-渐变色.png differ diff --git a/images/前端杂烩/three.js/点材质.png b/images/前端杂烩/three.js/点材质.png new file mode 100644 index 0000000..cac2d7e Binary files /dev/null and b/images/前端杂烩/three.js/点材质.png differ diff --git a/images/前端杂烩/three.js/点材质颜色.png b/images/前端杂烩/three.js/点材质颜色.png new file mode 100644 index 0000000..5d9eb95 Binary files /dev/null and b/images/前端杂烩/three.js/点材质颜色.png differ diff --git a/images/前端杂烩/three.js/线材质.png b/images/前端杂烩/three.js/线材质.png new file mode 100644 index 0000000..b6ae78e Binary files /dev/null and b/images/前端杂烩/three.js/线材质.png differ diff --git a/images/前端杂烩/three.js/网格-球形.png b/images/前端杂烩/three.js/网格-球形.png new file mode 100644 index 0000000..f0de18b Binary files /dev/null and b/images/前端杂烩/three.js/网格-球形.png differ diff --git a/images/前端杂烩/three.js/自定义图形.png b/images/前端杂烩/three.js/自定义图形.png new file mode 100644 index 0000000..d791bfa Binary files /dev/null and b/images/前端杂烩/three.js/自定义图形.png differ diff --git a/images/前端杂烩/three.js/顶点坐标复用.png b/images/前端杂烩/three.js/顶点坐标复用.png new file mode 100644 index 0000000..bf65cdb Binary files /dev/null and b/images/前端杂烩/three.js/顶点坐标复用.png differ diff --git a/source/_posts/前端杂烩/Hexo服务器静态化部署.md b/source/_posts/前端杂烩/Hexo服务器静态化部署.md index 0315023..2725225 100644 --- a/source/_posts/前端杂烩/Hexo服务器静态化部署.md +++ b/source/_posts/前端杂烩/Hexo服务器静态化部署.md @@ -17,8 +17,8 @@ npm install hexo-deployer-git --save-dev ``` #### 创建github仓库 仓库的名字必须是`[github用户名].github.io` -比如我的github用户名是sookie2010 -那么就应该创建名为 **sookie2010.github.io** 的仓库 +比如我的github用户名是colorfulsweet +那么就应该创建名为 **colorfulsweet.github.io** 的仓库 #### 添加配置项 在`_config.yml`当中配置 @@ -28,8 +28,8 @@ deploy: repo: git@github.com:[github用户名]/[github用户名].github.io.git branch: master ``` -比如我的github用户名是sookie2010 -那么repo就是 ` git@github.com:sookie2010/sookie2010.github.io.git` +比如我的github用户名是colorfulsweet +那么repo就是 ` git@github.com:colorfulsweet/colorfulsweet.github.io.git` #### 静态化与发布 ```bash diff --git a/source/_posts/前端杂烩/Three.js初见.md b/source/_posts/前端杂烩/Three.js初见(1).md similarity index 100% rename from source/_posts/前端杂烩/Three.js初见.md rename to source/_posts/前端杂烩/Three.js初见(1).md diff --git a/source/_posts/前端杂烩/Three.js初见(2).md b/source/_posts/前端杂烩/Three.js初见(2).md new file mode 100644 index 0000000..71aeb21 --- /dev/null +++ b/source/_posts/前端杂烩/Three.js初见(2).md @@ -0,0 +1,189 @@ +--- +title: Three.js初见(2) +date: 2022-04-10 22:02:34 +tags: + - 前端 + - Three.js +categories: + - 前端杂烩 +--- + +## 自定义几何体 + +Three.js当中的几何体都是由若干个三角形构成的 +哪怕是球形、圆柱形这些立体图形,也不存在真正的曲面,只不过这些三角形越是细小,拼凑起来越接近曲面的效果 + + + +![网格-球形](/images/前端杂烩/three.js/网格-球形.png) + +基于这种方式,我们可以构造自定义的图形 +需要使用类型化数组`TypedArray` + +```javascript +const geometry = new THREE.BufferGeometry(); //创建一个Buffer类型几何体对象 +// 类型数组创建顶点数据 +const vertices = new Uint8Array([ + 0, 0, 0, // 顶点1坐标 + 10, 0, 0, // 顶点2坐标 + 0, 20, 0, // 顶点3坐标 + 0, 0, 10, // 顶点4坐标 + 0, 0, 1, // 顶点5坐标 + 20, 0, 1, // 顶点6坐标 +]) +// 创建属性缓冲区对象 +const attribue = new THREE.BufferAttribute(vertices, 3) // 3个为一组,表示一个顶点的xyz坐标 +// 设置几何体的位置属性 +geometry.setAttribute('position', attribue) +// 三角面(网格)渲染模式 +const material = new THREE.MeshBasicMaterial({ + color: 0x0000ff, // 三角面颜色 + side: THREE.DoubleSide // 两面可见 +}) +const mesh = new THREE.Mesh(geometry, material) +scene.add(mesh) +``` +![自定义图形](/images/前端杂烩/three.js/自定义图形.png) + +上面的代码中使用的是`Uint8Array`, 实际上可以使用任何一种类型数组 + +### 点材质和线材质 +上面的例子当中使用的是**网格材质** +threejs还提供了**点材质**和**线材质** +```javascript +// 点材质 +const material = new THREE.PointsMaterial({ + color: 0x0000ff, + size: 2 +}) +const points = new THREE.Points(geometry, material) +scene.add(points) +``` +![点材质](/images/前端杂烩/three.js/点材质.png) + +```javascript +// 线材质 +const material = new THREE.LineBasicMaterial({ + color: 0x0000ff // 线条颜色 +}) +const line = new THREE.Line(geometry, material) // 线条模型对象 +scene.add(line) // 线条对象添加到场景中 +``` +![线材质](/images/前端杂烩/three.js/线材质.png) + + +### 设置每个顶点的颜色 +```javascript +const geometry = new THREE.BufferGeometry(); //创建一个Buffer类型几何体对象 +// 类型数组创建顶点数据 +const vertices = new Uint8Array([ + 0, 0, 0, // 顶点1坐标 + 10, 0, 0, // 顶点2坐标 + 0, 20, 0, // 顶点3坐标 + 0, 0, 10, // 顶点4坐标 + 0, 0, 1, // 顶点5坐标 + 20, 0, 1, // 顶点6坐标 +]) +// 创建属性缓冲区对象 +const attribue = new THREE.BufferAttribute(vertices, 3) // 3个为一组,表示一个顶点的xyz坐标 +// 设置几何体的位置属性 +geometry.setAttribute('position', attribue) + +// 点材质 +const material = new THREE.PointsMaterial({ + // color: 0x0000ff, + vertexColors: THREE.VertexColors, //以顶点颜色为准 + size: 2 +}) +const pointColors = new Uint8Array([ + 1, 0, 0, //顶点1颜色 + 0, 1, 0, //顶点2颜色 + 0, 0, 1, //顶点3颜色 + 1, 1, 0, //顶点4颜色 + 0, 1, 1, //顶点5颜色 + 1, 0, 1, //顶点6颜色 +]) +geometry.attributes.color = new THREE.BufferAttribute(pointColors, 3) // 3个为一组代表一个顶点的RGB值 +const points = new THREE.Points(geometry, material) +scene.add(points) +``` +![点材质颜色](/images/前端杂烩/three.js/点材质颜色.png) + +这个例子当中与上面的区别除了指定每个顶点的颜色之外 +还需要给材质的`vertexColors`设置为`THREE.VertexColors` +该属性的默认值是`THREE.NoColors`, 意思就是模型的颜色取决于材质的color + +如果把上述的方式使用到**三角面材质**上 +可以得到渐变色的面 +![三角面-渐变色](/images/前端杂烩/three.js/三角面-渐变色.png) + +### 顶点坐标复用 +由于threejs当中的图形都是由若干个三角形拼接而成 +所以实际应用当中, 肯定是多个相邻三角形的顶点重合 +如果每个三角形都要分别指定3个顶点的坐标, 数据肯定是非常冗余的 +所以可以进行顶点坐标的复用 +同时也不受限于坐标定义的顺序 + +```javascript +const geometry = new THREE.BufferGeometry(); //创建一个Buffer类型几何体对象 +// 类型数组创建顶点数据 +const vertices = new Int8Array([ + 0, 0, 0, + 10, 0, 0, + 10, 10, 0, + 0, 10, 0, + -10, 10, 0, + -10, 0, 0, +]) +// 创建属性缓冲区对象 +const attribue = new THREE.BufferAttribute(vertices, 3) // 3个为一组,表示一个顶点的xyz坐标 +// 设置几何体的位置属性 +geometry.setAttribute('position', attribue) +// Uint16Array类型数组创建顶点索引数据 +const indexes = new Uint8Array([ + // 0对应第1个顶点 + // 索引值3个为一组,表示一个三角形的3个顶点 + 0, 1, 2, + 0, 2, 3, + 0, 3, 4, + 0, 4, 5, +]) +// 索引数据赋值给几何体的index属性 +geometry.index = new THREE.BufferAttribute(indexes, 1) //1个为一组 +``` +![顶点坐标复用](/images/前端杂烩/three.js/顶点坐标复用.png) + +### Vector3和Color + +除了使用`BufferGeometry`之外, 我们也可以使用`Vector3`和`Color`来创建自定义几何体 +它们是基于`Geometry`这个API进行使用的 +Threejs渲染的时候会先把 Geometry 转化为 BufferGeometry 再解析几何体顶点数据进行渲染 + +**Vector3**表示三维向量, 也可以理解为点的坐标 + +```javascript +const geometry = new THREE.Geometry() +// 类型数组创建顶点数据 +geometry.vertices.push( + new THREE.Vector3(0, 0, 0), + new THREE.Vector3(10, 0, 0), + new THREE.Vector3(0, 20, 0), + new THREE.Vector3(0, 0, 10), + new THREE.Vector3(0, 0, 1), + new THREE.Vector3(20, 0, 1), +) +geometry.colors.push( + new THREE.Color(0xff0000), + new THREE.Color(0x00ff00), + new THREE.Color(0x0000ff), + new THREE.Color(0xffff00), + new THREE.Color(0x00ffff), + new THREE.Color(0xff00ff), +) +// 点材质 +const material = new THREE.PointsMaterial({ + vertexColors: THREE.VertexColors, //以顶点颜色为准 +}) +const points = new THREE.Points(geometry, material) +scene.add(points) +``` \ No newline at end of file diff --git a/source/_posts/前端杂烩/webpack4升级踩坑.md b/source/_posts/前端杂烩/webpack4升级踩坑.md index 0bf9d30..a8de227 100644 --- a/source/_posts/前端杂烩/webpack4升级踩坑.md +++ b/source/_posts/前端杂烩/webpack4升级踩坑.md @@ -228,4 +228,4 @@ module.exports = { --- 至此终于宣告完工, 打包可以正常运作 -附: [webpack.config.js文件](https://github.com/sookie2010/hexo_blog/blob/master/themes/yilia/webpack.config.js) \ No newline at end of file +附: [webpack.config.js文件](https://github.com/colorfulsweet/blog-web/blob/master/themes/yilia/webpack.config.js) \ No newline at end of file diff --git a/themes/yilia/_config.yml b/themes/yilia/_config.yml index 2b94dce..a9cfe42 100644 --- a/themes/yilia/_config.yml +++ b/themes/yilia/_config.yml @@ -18,7 +18,7 @@ menu: # SubNav subnav: github: - url: https://github.com/sookie2010 + url: https://github.com/colorfulsweet icon: github-alt alt: github_homepage weibo: diff --git a/themes/yilia/package-lock.json b/themes/yilia/package-lock.json index 7b5f260..e99109a 100644 --- a/themes/yilia/package-lock.json +++ b/themes/yilia/package-lock.json @@ -1638,6 +1638,20 @@ "node": ">=10.0.0" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", @@ -1647,6 +1661,25 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", @@ -1654,9 +1687,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -4377,10 +4410,13 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/miniprogram-api-typings": { "version": "2.12.0", @@ -5519,14 +5555,14 @@ } }, "node_modules/terser": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz", - "integrity": "sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" }, "bin": { @@ -5603,15 +5639,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -7156,12 +7183,39 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@jridgewell/resolve-uri": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", "dev": true }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", @@ -7169,9 +7223,9 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", @@ -9280,9 +9334,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "miniprogram-api-typings": { @@ -10128,14 +10182,14 @@ } }, "terser": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz", - "integrity": "sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" }, "dependencies": { @@ -10144,12 +10198,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true } } }, diff --git a/yarn.lock b/yarn.lock index 530d54a..a611e8f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2966,28 +2966,22 @@ moize@^6.1.0: fast-equals "^2.0.1" micro-memoize "^4.0.9" -moment-timezone@^0.5.14: - version "0.5.23" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.23.tgz#7cbb00db2c14c71b19303cb47b0fb0a6d8651463" +moment-timezone@^0.5.14, moment-timezone@^0.5.21: + version "0.5.37" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.37.tgz#adf97f719c4e458fdb12e2b4e87b8bec9f4eef1e" + integrity sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg== dependencies: moment ">= 2.9.0" -moment-timezone@^0.5.21: - version "0.5.32" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.32.tgz#db7677cc3cc680fd30303ebd90b0da1ca0dfecc2" - integrity sha512-Z8QNyuQHQAmWucp8Knmgei8YNo28aLjJq6Ma+jy1ZSpSk5nyfRT8xgUbSQvD2+2UajISfenndwvFuH3NGS+nvA== - dependencies: - moment ">= 2.9.0" +"moment@>= 2.9.0", moment@^2.10.6, moment@^2.19.4, moment@^2.22.2: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== -"moment@>= 2.9.0", moment@^2.10.6, moment@^2.19.4, moment@latest: +moment@latest: version "2.24.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" -moment@^2.22.2: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - morgan@^1.9.1: version "1.10.0" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7"