From 0e3d9e6173bf90a700b3335240e682bc3d9f4725 Mon Sep 17 00:00:00 2001 From: Gabby Getz Date: Wed, 1 Nov 2023 13:49:14 -0400 Subject: [PATCH 01/24] Fix websiteRelease --- .github/workflows/prod.yml | 16 +++++----------- gulpfile.js | 2 ++ 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/.github/workflows/prod.yml b/.github/workflows/prod.yml index 1b7446028fdc..78d5fac0ffff 100644 --- a/.github/workflows/prod.yml +++ b/.github/workflows/prod.yml @@ -8,10 +8,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: install node 18 + - name: install node 20 uses: actions/setup-node@v3 with: - node-version: '18' + node-version: '20' - name: npm install run: npm install - name: lint *.js @@ -22,9 +22,6 @@ jobs: run: npm run prettier-check deploy: runs-on: ubuntu-latest - permissions: - statuses: write - contents: read env: PROD: true AWS_ACCESS_KEY_ID: ${{ secrets.PROD_AWS_ACCESS_KEY_ID }} @@ -36,10 +33,10 @@ jobs: GITHUB_SHA: ${{ github.sha }} steps: - uses: actions/checkout@v3 - - name: install node 18 + - name: install node 20 uses: actions/setup-node@v3 with: - node-version: '18' + node-version: '20' - name: npm install run: npm install - name: build website release @@ -48,7 +45,4 @@ jobs: run: npm run build-apps - name: deploy to cesium.com if: ${{ env.AWS_ACCESS_KEY_ID != '' }} - run: npm run deploy-s3 -- -b "cesium.com-next" -c 'public, max-age=1800'--skip --confirm - - name: set status - if: ${{ env.AWS_ACCESS_KEY_ID != '' }} - run: npm run deploy-status -- --status success --message Deployed \ No newline at end of file + run: npm run deploy-s3 -- -b "cesium.com-next" -c 'public, max-age=1800'--skip --confirm \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index a14de9b5b675..42b57f2f0cb9 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -442,6 +442,8 @@ function combineForSandcastle() { } export const websiteRelease = gulp.series( + buildEngine, + buildWidgets, function () { return buildCesium({ development: false, From 8b295035c5b71207d04dc5a47b25f6880e41261c Mon Sep 17 00:00:00 2001 From: Gabby Getz Date: Mon, 6 Nov 2023 09:08:35 -0500 Subject: [PATCH 02/24] Tweak CHANGES.md --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index d61a6c8b42c5..62d616442fd3 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,7 +10,7 @@ ##### Fixes :wrench: -- By default, `createGooglePhotorealistic3DTileset` no longer shows credits on screen, as this is compliant with the minimum required attribution. To restore this behavior, pass the option `showCreditsOnScreen: true`. [#11589](https://github.com/CesiumGS/cesium/pull/11589) +- By default, `createGooglePhotorealistic3DTileset` no longer shows credits on screen but links to them instead, as this is compliant with the minimum required attribution. To restore this behavior, pass the option `showCreditsOnScreen: true`. [#11589](https://github.com/CesiumGS/cesium/pull/11589) - Fixed an issue with polygon hole rendering. [#11583](https://github.com/CesiumGS/cesium/issues/11583) - Fixed error with rhumb lines that have a 0 degree heading. [#11573](https://github.com/CesiumGS/cesium/pull/11573) - Fixed `czm_normal`, `czm_normal3D`, `czm_inverseNormal`, and `czm_inverseNormal3D` for cases where the model matrix has non-uniform scale. [#11553](https://github.com/CesiumGS/cesium/pull/11553) From 003922bb52665f09c7d063a57b6ee585ec58f3c3 Mon Sep 17 00:00:00 2001 From: Gabby Getz Date: Mon, 6 Nov 2023 12:40:09 -0500 Subject: [PATCH 03/24] Fix production workflow command --- .github/workflows/prod.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/prod.yml b/.github/workflows/prod.yml index 78d5fac0ffff..a906ee8e309b 100644 --- a/.github/workflows/prod.yml +++ b/.github/workflows/prod.yml @@ -45,4 +45,4 @@ jobs: run: npm run build-apps - name: deploy to cesium.com if: ${{ env.AWS_ACCESS_KEY_ID != '' }} - run: npm run deploy-s3 -- -b "cesium.com-next" -c 'public, max-age=1800'--skip --confirm \ No newline at end of file + run: npm run deploy-s3 -- -b "cesium.com-next" -c 'public, max-age=1800' --skip --confirm \ No newline at end of file From 50b62414e8d2f4b8f3e902d5e239b00c3006be52 Mon Sep 17 00:00:00 2001 From: angrycat9000 Date: Mon, 13 Nov 2023 10:13:56 -0500 Subject: [PATCH 04/24] Update JSDoc for optional options Fixes #11623 and fixes #11624 --- packages/engine/Source/Scene/Cesium3DTileset.js | 2 +- packages/engine/Source/Scene/IonImageryProvider.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/engine/Source/Scene/Cesium3DTileset.js b/packages/engine/Source/Scene/Cesium3DTileset.js index c9964489ca10..0f5f3b56bcb9 100644 --- a/packages/engine/Source/Scene/Cesium3DTileset.js +++ b/packages/engine/Source/Scene/Cesium3DTileset.js @@ -1902,7 +1902,7 @@ Object.defineProperties(Cesium3DTileset.prototype, { * used for streaming massive heterogeneous 3D geospatial datasets, from a Cesium ion asset ID. * * @param {number} assetId The Cesium ion asset id. - * @param {Cesium3DTileset.ConstructorOptions} options An object describing initialization options + * @param {Cesium3DTileset.ConstructorOptions} [options] An object describing initialization options * @returns {Promise} * * @exception {DeveloperError} The tileset must be 3D Tiles version 0.0 or 1.0. diff --git a/packages/engine/Source/Scene/IonImageryProvider.js b/packages/engine/Source/Scene/IonImageryProvider.js index 17ef1d580094..5b1361bb734e 100644 --- a/packages/engine/Source/Scene/IonImageryProvider.js +++ b/packages/engine/Source/Scene/IonImageryProvider.js @@ -251,7 +251,7 @@ Object.defineProperties(IonImageryProvider.prototype, { * Creates a provider for tiled imagery using the Cesium ion REST API. * * @param {Number} assetId An ion imagery asset ID. - * @param {IonImageryProvider.ConstructorOptions} options Object describing initialization options. + * @param {IonImageryProvider.ConstructorOptions} [options] Object describing initialization options. * @returns {Promise} A promise which resolves to the created IonImageryProvider. * * @example From 66be01008e44ebe733f1ac7bd3b4700da0159ad3 Mon Sep 17 00:00:00 2001 From: angrycat9000 Date: Mon, 13 Nov 2023 10:20:32 -0500 Subject: [PATCH 05/24] update CONTRIBUTORS.md --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 20b960874675..4d222e51ef13 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -160,6 +160,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to contribute to Cesiu - [Daniel Krupka](https://github.com/krupkad) - [Jeshurun Hembd](https://github.com/jjhembd) - [Mia Tang](https://github.com/miatang13) + - [Mark Dane](https://github.com/angrycat9000) - [Northrop Grumman](http://www.northropgrumman.com) - [Joseph Stein](https://github.com/nahgrin) - [EOX IT Services GmbH](https://eox.at) From eacc000a2cb36f9cf51e56339e1743c2a7a12fce Mon Sep 17 00:00:00 2001 From: angrycat9000 Date: Mon, 13 Nov 2023 10:28:06 -0500 Subject: [PATCH 06/24] Update changes for optional typings --- CHANGES.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 62d616442fd3..279bdbce514c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,13 @@ # Change Log +### 1.112 - 2023-12-01 + +#### @cesium/engine + +##### Fixes :wrench: + +- Corrected JSDoc that marked optional arguments as required in `Cesium3dTileset.fromIonAssetId` [#11623](https://github.com/CesiumGS/cesium/issues/11623), and `IonImageryProvider.fromAssetId` [#11624](https://github.com/CesiumGS/cesium/issues/11624) + ### 1.111 - 2023-11-01 #### @cesium/engine From 69c68c2e6d12130776ac21b960f45f3472613514 Mon Sep 17 00:00:00 2001 From: angrycat9000 Date: Mon, 13 Nov 2023 11:23:33 -0500 Subject: [PATCH 07/24] Update to have changes include Typescript definitions --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 279bdbce514c..b25e6ee05e95 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,7 +6,7 @@ ##### Fixes :wrench: -- Corrected JSDoc that marked optional arguments as required in `Cesium3dTileset.fromIonAssetId` [#11623](https://github.com/CesiumGS/cesium/issues/11623), and `IonImageryProvider.fromAssetId` [#11624](https://github.com/CesiumGS/cesium/issues/11624) +- Corrected JSDoc and Typescript definitions that marked optional arguments as required in `Cesium3dTileset.fromIonAssetId` [#11623](https://github.com/CesiumGS/cesium/issues/11623), and `IonImageryProvider.fromAssetId` [#11624](https://github.com/CesiumGS/cesium/issues/11624) ### 1.111 - 2023-11-01 From 40cd32de7ccd2c001bbe18b535ede1edd77a22b4 Mon Sep 17 00:00:00 2001 From: "Marc E. Johnson" Date: Tue, 14 Nov 2023 06:29:18 -0600 Subject: [PATCH 08/24] handle undefined/deferred return --- .../Source/Core/CesiumTerrainProvider.js | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/packages/engine/Source/Core/CesiumTerrainProvider.js b/packages/engine/Source/Core/CesiumTerrainProvider.js index 84d43629725a..419736974ed0 100644 --- a/packages/engine/Source/Core/CesiumTerrainProvider.js +++ b/packages/engine/Source/Core/CesiumTerrainProvider.js @@ -897,11 +897,29 @@ CesiumTerrainProvider.prototype.requestTileGeometry = function ( if (!defined(layerToUse) && unknownAvailability) { // Try again when availability data is ready– Otherwise the tile will be marked as failed and never re-requested - return availabilityPromise.then(() => - this.requestTileGeometry(x, y, level, request) - ); + return availabilityPromise.then(() => { + // handle promise or undefined return + return new Promise((resolve, reject) => { + // defer execution to the next event loop + setTimeout(() => { + const originalResult = this.requestTileGeometry(x, y, level, request); + if (originalResult && typeof originalResult.then === "function") { + originalResult + .then((result) => { + resolve(result); + }) + .catch((err) => { + reject(err); + }); + } else { + // undefined means deferred, wait for the promise to resolve + return resolve(this.requestTileGeometry(x, y, level, request)); + } + }, 0); // next tick + }); + }); } - + // call overridden function below return requestTileGeometry(this, x, y, level, layerToUse, request); }; From b7280b223c5ce311bff5339cb3e3885cdad3444e Mon Sep 17 00:00:00 2001 From: "Marc E. Johnson" Date: Tue, 14 Nov 2023 06:52:09 -0600 Subject: [PATCH 09/24] following contribution guidelines --- CONTRIBUTORS.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 4d222e51ef13..6b4f70366e1b 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -185,6 +185,9 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to contribute to Cesiu - [Robert Irving](https://github.com/robert-irving-snc) - [General Atomics CCRi](https://www.ga-ccri.com/) - [matthias-ccri](https://github.com/matthias-ccri) +- [Terradepth, Inc.](https://www.terradepth.com/) + - [Marc Johnson](https://github.com/marcejohnson) + - [Jacob Frazer](https://github.com/coderjake91) ## [Individual CLA](Documentation/Contributors/CLAs/individual-contributor-license-agreement-v1.0.pdf) From 4737ed2b264719a69b2460658febccc86db7a591 Mon Sep 17 00:00:00 2001 From: "Marc E. Johnson" Date: Tue, 14 Nov 2023 07:19:04 -0600 Subject: [PATCH 10/24] change log --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index b25e6ee05e95..c93270ee6724 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -7,6 +7,7 @@ ##### Fixes :wrench: - Corrected JSDoc and Typescript definitions that marked optional arguments as required in `Cesium3dTileset.fromIonAssetId` [#11623](https://github.com/CesiumGS/cesium/issues/11623), and `IonImageryProvider.fromAssetId` [#11624](https://github.com/CesiumGS/cesium/issues/11624) +- Fixed terrain lockups in `requestTileGeometry` by ensuring promise handling aligns with CesiumJS's expectations. [#11630](https://github.com/CesiumGS/cesium/pull/11630) ### 1.111 - 2023-11-01 From cb0974a4baeb721148faa4547884c96ee09eba92 Mon Sep 17 00:00:00 2001 From: Gabby Getz Date: Thu, 16 Nov 2023 15:02:39 -0500 Subject: [PATCH 11/24] Update .slackbot.yml --- .slackbot.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.slackbot.yml b/.slackbot.yml index f1b54f977c8d..acb8a2a24bf6 100644 --- a/.slackbot.yml +++ b/.slackbot.yml @@ -4,5 +4,11 @@ releaseSchedule: - ggetz, 3/1/2023 - jjhembd, 4/3/2023 - ggetz, 5/1/2023 - -jjhembd, 6/1/2023 + - jjhembd, 6/1/2023 - ggetz, 7/1/2023 + - jjhembd, 8/1/2023 + - ggetz, 9/1/2023 + - jjhembd, 10/1/2023 + - ggetz, 11/1/2023 + - jjhembd, 12/1/2023 + - ggetz, 1/2/2023 From fd91a2b650e5f6a019a0102595de68e5095f3d0d Mon Sep 17 00:00:00 2001 From: Gabby Getz Date: Thu, 16 Nov 2023 15:02:51 -0500 Subject: [PATCH 12/24] Update .slackbot.yml --- .slackbot.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.slackbot.yml b/.slackbot.yml index acb8a2a24bf6..ca0d87fc8160 100644 --- a/.slackbot.yml +++ b/.slackbot.yml @@ -11,4 +11,4 @@ releaseSchedule: - jjhembd, 10/1/2023 - ggetz, 11/1/2023 - jjhembd, 12/1/2023 - - ggetz, 1/2/2023 + - ggetz, 1/2/2024 From fc60653766eeca7db59de343e0cf8d739facd2ee Mon Sep 17 00:00:00 2001 From: Marc Johnson Date: Tue, 21 Nov 2023 12:24:37 -0600 Subject: [PATCH 13/24] implicit promise handling Co-authored-by: Gabby Getz --- .../engine/Source/Core/CesiumTerrainProvider.js | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/packages/engine/Source/Core/CesiumTerrainProvider.js b/packages/engine/Source/Core/CesiumTerrainProvider.js index 419736974ed0..926278f420ee 100644 --- a/packages/engine/Source/Core/CesiumTerrainProvider.js +++ b/packages/engine/Source/Core/CesiumTerrainProvider.js @@ -899,22 +899,11 @@ CesiumTerrainProvider.prototype.requestTileGeometry = function ( // Try again when availability data is ready– Otherwise the tile will be marked as failed and never re-requested return availabilityPromise.then(() => { // handle promise or undefined return - return new Promise((resolve, reject) => { + return new Promise(resolve=> { // defer execution to the next event loop setTimeout(() => { - const originalResult = this.requestTileGeometry(x, y, level, request); - if (originalResult && typeof originalResult.then === "function") { - originalResult - .then((result) => { - resolve(result); - }) - .catch((err) => { - reject(err); - }); - } else { - // undefined means deferred, wait for the promise to resolve - return resolve(this.requestTileGeometry(x, y, level, request)); - } + const promise = this.requestTileGeometry(x, y, level, request); + resolve(promise); }, 0); // next tick }); }); From 6710e181cf4b371067b14ac3123c9fd6463e1bd0 Mon Sep 17 00:00:00 2001 From: "Marc E. Johnson" Date: Tue, 21 Nov 2023 13:03:19 -0600 Subject: [PATCH 14/24] prettier change --- packages/engine/Source/Core/CesiumTerrainProvider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/engine/Source/Core/CesiumTerrainProvider.js b/packages/engine/Source/Core/CesiumTerrainProvider.js index 926278f420ee..c70769c02fcf 100644 --- a/packages/engine/Source/Core/CesiumTerrainProvider.js +++ b/packages/engine/Source/Core/CesiumTerrainProvider.js @@ -899,7 +899,7 @@ CesiumTerrainProvider.prototype.requestTileGeometry = function ( // Try again when availability data is ready– Otherwise the tile will be marked as failed and never re-requested return availabilityPromise.then(() => { // handle promise or undefined return - return new Promise(resolve=> { + return new Promise((resolve) => { // defer execution to the next event loop setTimeout(() => { const promise = this.requestTileGeometry(x, y, level, request); From 892efa327a12d88f4edeac3e82289bac6940ed2c Mon Sep 17 00:00:00 2001 From: Gabby Getz Date: Wed, 22 Nov 2023 10:14:36 -0500 Subject: [PATCH 15/24] Replace use of smallTerrain in specs and smokescreen tests --- .../11_3027_1342.terrain | Bin 0 -> 8452 bytes Specs/test.cjs | 6 +-- Specs/test.mjs | 6 +-- .../Core/sampleTerrainMostDetailedSpec.js | 4 +- .../engine/Specs/Core/sampleTerrainSpec.js | 42 +++++++++++++++++- .../Scene/GlobeSurfaceTileProviderSpec.js | 38 +++++++++++++++- packages/engine/Specs/test.mjs | 4 +- 7 files changed, 85 insertions(+), 15 deletions(-) create mode 100644 Specs/Data/CesiumTerrainTileJson/11_3027_1342.terrain diff --git a/Specs/Data/CesiumTerrainTileJson/11_3027_1342.terrain b/Specs/Data/CesiumTerrainTileJson/11_3027_1342.terrain new file mode 100644 index 0000000000000000000000000000000000000000..ca4dabcf67ffb417d3dcbb34113c311ba78daeeb GIT binary patch literal 8452 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 NTh~DU4_Btl{{eygc3l7f literal 0 HcmV?d00001 diff --git a/Specs/test.cjs b/Specs/test.cjs index 11388433e704..c2d24da84ba8 100644 --- a/Specs/test.cjs +++ b/Specs/test.cjs @@ -5,15 +5,13 @@ const assert = require("node:assert"); const { - CesiumTerrainProvider, Cartographic, + createWorldTerrainAsync, sampleTerrain, } = require("cesium"); async function test() { - const provider = await CesiumTerrainProvider.fromUrl( - "https://s3.amazonaws.com/cesiumjs/smallTerrain" - ); + const provider = await createWorldTerrainAsync(); const results = await sampleTerrain(provider, 11, [ Cartographic.fromDegrees(86.925145, 27.988257), Cartographic.fromDegrees(87.0, 28.0), diff --git a/Specs/test.mjs b/Specs/test.mjs index 13ba4c1162ed..37bd1260575b 100644 --- a/Specs/test.mjs +++ b/Specs/test.mjs @@ -1,12 +1,10 @@ -import { Cartographic, CesiumTerrainProvider, sampleTerrain } from "cesium"; +import { Cartographic, createWorldTerrainAsync, sampleTerrain } from "cesium"; import assert from "node:assert"; // NodeJS smoke screen test async function test() { - const provider = await CesiumTerrainProvider.fromUrl( - "https://s3.amazonaws.com/cesiumjs/smallTerrain" - ); + const provider = await createWorldTerrainAsync(); const results = await sampleTerrain(provider, 11, [ Cartographic.fromDegrees(86.925145, 27.988257), Cartographic.fromDegrees(87.0, 28.0), diff --git a/packages/engine/Specs/Core/sampleTerrainMostDetailedSpec.js b/packages/engine/Specs/Core/sampleTerrainMostDetailedSpec.js index 3a55df6250dc..77635449b0d9 100644 --- a/packages/engine/Specs/Core/sampleTerrainMostDetailedSpec.js +++ b/packages/engine/Specs/Core/sampleTerrainMostDetailedSpec.js @@ -28,9 +28,9 @@ describe("Core/sampleTerrainMostDetailed", function () { expect(positions[1].height).toBeLessThan(10000); }); - it("should throw querying heights from Small Terrain", async function () { + it("should throw querying heights from terrain without availability", async function () { const terrainProvider = await CesiumTerrainProvider.fromUrl( - "https://s3.amazonaws.com/cesiumjs/smallTerrain" + "Data/CesiumTerrainTileJson/StandardHeightmap.tile.json" ); const positions = [ diff --git a/packages/engine/Specs/Core/sampleTerrainSpec.js b/packages/engine/Specs/Core/sampleTerrainSpec.js index 3369481f068d..c88c1a5ddff3 100644 --- a/packages/engine/Specs/Core/sampleTerrainSpec.js +++ b/packages/engine/Specs/Core/sampleTerrainSpec.js @@ -15,6 +15,11 @@ describe("Core/sampleTerrain", function () { worldTerrain = await createWorldTerrainAsync(); }); + afterEach(function () { + Resource._Implementations.loadWithXhr = + Resource._DefaultImplementations.loadWithXhr; + }); + it("queries heights", function () { const positions = [ Cartographic.fromDegrees(86.925145, 27.988257), @@ -32,9 +37,42 @@ describe("Core/sampleTerrain", function () { }); }); - it("queries heights from Small Terrain", async function () { + it("queries heights from terrain without availability", async function () { + // Mock terrain tile loading + Resource._Implementations.loadWithXhr = function ( + url, + responseType, + method, + data, + headers, + deferred, + overrideMimeType + ) { + if (defined(url.match(/\/\d+\/\d+\/\d+\.terrain/))) { + Resource._DefaultImplementations.loadWithXhr( + "Data/CesiumTerrainTileJson/11_3027_1342.terrain", + responseType, + method, + data, + headers, + deferred + ); + return; + } + + Resource._DefaultImplementations.loadWithXhr( + url, + responseType, + method, + data, + headers, + deferred, + overrideMimeType + ); + }; + const terrainProvider = await CesiumTerrainProvider.fromUrl( - "https://s3.amazonaws.com/cesiumjs/smallTerrain" + "Data/CesiumTerrainTileJson/StandardHeightmap.tile.json" ); const positions = [ diff --git a/packages/engine/Specs/Scene/GlobeSurfaceTileProviderSpec.js b/packages/engine/Specs/Scene/GlobeSurfaceTileProviderSpec.js index 129bb57b8cf0..9818f2534b2b 100644 --- a/packages/engine/Specs/Scene/GlobeSurfaceTileProviderSpec.js +++ b/packages/engine/Specs/Scene/GlobeSurfaceTileProviderSpec.js @@ -12,6 +12,7 @@ import { GeographicProjection, HeadingPitchRoll, Rectangle, + Resource, WebMercatorProjection, ContextLimits, RenderState, @@ -104,6 +105,8 @@ describe( afterEach(function () { scene.imageryLayers.removeAll(); scene.primitives.removeAll(); + Resource._Implementations.loadWithXhr = + Resource._DefaultImplementations.loadWithXhr; }); it("conforms to QuadtreeTileProvider interface", function () { @@ -902,8 +905,41 @@ describe( scene.imageryLayers.addImageryProvider(provider); const terrainCredit = new Credit("terrain credit"); + + // Mock terrain tile loading + Resource._Implementations.loadWithXhr = function ( + url, + responseType, + method, + data, + headers, + deferred, + overrideMimeType + ) { + if (defined(url.match(/\/\d+\/\d+\/\d+\.terrain/))) { + Resource._DefaultImplementations.loadWithXhr( + "Data/CesiumTerrainTileJson/tile.32bitIndices.terrain", + responseType, + method, + data, + headers, + deferred + ); + return; + } + + Resource._DefaultImplementations.loadWithXhr( + url, + responseType, + method, + data, + headers, + deferred, + overrideMimeType + ); + }; scene.terrainProvider = await CesiumTerrainProvider.fromUrl( - "https://s3.amazonaws.com/cesiumjs/smallTerrain", + "Data/CesiumTerrainTileJson/QuantizedMesh.tile.json", { credit: terrainCredit, } diff --git a/packages/engine/Specs/test.mjs b/packages/engine/Specs/test.mjs index 23f6bbf07cc3..1479b34b2dd2 100644 --- a/packages/engine/Specs/test.mjs +++ b/packages/engine/Specs/test.mjs @@ -1,9 +1,9 @@ -import { Cartographic, CesiumTerrainProvider, sampleTerrain } from "@cesium/engine"; +import { Cartographic, createWorldTerrainAsync, sampleTerrain } from "@cesium/engine"; import assert from "node:assert"; // NodeJS smoke screen test async function test() { - const provider = await CesiumTerrainProvider.fromUrl("https://s3.amazonaws.com/cesiumjs/smallTerrain"); + const provider = await createWorldTerrainAsync(); const results = await sampleTerrain(provider, 11, [ Cartographic.fromDegrees(86.925145, 27.988257), Cartographic.fromDegrees(87.0, 28.0), From d11f365b520dee2b0acdd32ece50e016fcfb17c2 Mon Sep 17 00:00:00 2001 From: Matthew Amato Date: Wed, 22 Nov 2023 15:06:50 -0500 Subject: [PATCH 16/24] Fix race condition in OctahedralProjectedCubeMapSpec.js `raises error event when environment map fails to load.` assumes that the errorEvent listener will always be fired before `projection.update` returns true, but inspecting the code shows that is clearly not the case. It's possible for an error to be thrown, the update to return true, another tick to run and then the error event is raised. This lead to a Jasmine `afterAll` failure pointing to line 222 of this file on my machine when running the tests. Wrapping the event in a promise and waiting for both `projection.update` to return true and the event to be handled is the way to ensure no race conditions in the spec itself. --- .../Scene/OctahedralProjectedCubeMapSpec.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/engine/Specs/Scene/OctahedralProjectedCubeMapSpec.js b/packages/engine/Specs/Scene/OctahedralProjectedCubeMapSpec.js index 4d888da1355d..2d13eba58fb1 100644 --- a/packages/engine/Specs/Scene/OctahedralProjectedCubeMapSpec.js +++ b/packages/engine/Specs/Scene/OctahedralProjectedCubeMapSpec.js @@ -208,7 +208,7 @@ describe( }); }); - it("raises error event when environment map fails to load.", function () { + it("raises error event when environment map fails to load.", async function () { if (!OctahedralProjectedCubeMap.isSupported(context)) { return; } @@ -217,17 +217,22 @@ describe( const frameState = createFrameState(context); let error; - const removeListener = projection.errorEvent.addEventListener((e) => { - error = e; - expect(error).toBeDefined(); - expect(projection.ready).toEqual(false); - removeListener(); + const promise = new Promise((resolve, reject) => { + const removeListener = projection.errorEvent.addEventListener((e) => { + error = e; + expect(error).toBeDefined(); + expect(projection.ready).toEqual(false); + removeListener(); + resolve(); + }); }); - return pollToPromise(function () { + await pollToPromise(function () { projection.update(frameState); return defined(error); }); + + return promise; }); }, "WebGL" From 310dc319340f04e66b3083f13607a423754aff61 Mon Sep 17 00:00:00 2001 From: Matthew Amato Date: Wed, 22 Nov 2023 18:32:32 -0500 Subject: [PATCH 17/24] Simplify deployments 1. Remove all custom AWS code and replace with aws cli usage 2. No longer gzip everything manually, let AWS compress automatically for us. 3. Remove no longer needed npm modules --- .github/workflows/dev.yml | 16 +- .github/workflows/prod.yml | 7 +- .../Contributors/BuildGuide/README.md | 5 +- gulpfile.js | 541 +----------------- package.json | 6 - 5 files changed, 24 insertions(+), 551 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index d9480677b484..8a510812a7ad 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -97,7 +97,21 @@ jobs: - uses: ./.github/actions/verify-package - name: deploy to s3 if: ${{ env.AWS_ACCESS_KEY_ID != '' }} - run: npm run deploy-s3 -- -b "cesium-public-builds" -d cesium/$BRANCH -c 'no-cache' --confirm + run: | + aws s3 sync . s3://cesium-public-builds/cesium/$BRANCH/ \ + --cache-control "no-cache" \ + --exclude ".git/*" \ + --exclude ".concierge/*" \ + --exclude ".github/*" \ + --exclude ".husky/*" \ + --exclude ".vscode/*" \ + --exclude "Build/Coverage/*" \ + --exclude "Build/CesiumDev/*" \ + --exclude "Documentation/*" \ + --exclude "node_modules/*" \ + --exclude "scripts/*" \ + --exclude "Tools/*" \ + --delete - name: set status if: ${{ env.AWS_ACCESS_KEY_ID != '' }} run: npm run deploy-status -- --status success --message Deployed diff --git a/.github/workflows/prod.yml b/.github/workflows/prod.yml index a906ee8e309b..e9e5a4b00847 100644 --- a/.github/workflows/prod.yml +++ b/.github/workflows/prod.yml @@ -45,4 +45,9 @@ jobs: run: npm run build-apps - name: deploy to cesium.com if: ${{ env.AWS_ACCESS_KEY_ID != '' }} - run: npm run deploy-s3 -- -b "cesium.com-next" -c 'public, max-age=1800' --skip --confirm \ No newline at end of file + run: | + unzip Cesium-$(cat package.json | jq -r '.version').zip -d Build/release/ -x "Apps" + aws s3 sync Build/release/ s3://cesium-website/cesiumjs/releases/$(cat package.json | jq -r '.version')/ --cache-control "public, max-age=1800" --delete + aws s3 sync Build/Documentation/ s3://cesium-website/cesiumjs/ref-doc/ --cache-control "public, max-age=1800" --delete + aws s3 sync Build/CesiumViewer/ s3://cesium-website/cesiumjs/cesium-viewer/ --cache-control "public, max-age=1800" --delete + aws s3 sync Build/Sandcastle/ s3://cesium-sandcastle-website/ --cache-control "public, max-age=1800" --delete diff --git a/Documentation/Contributors/BuildGuide/README.md b/Documentation/Contributors/BuildGuide/README.md index 3502e4899e3e..df4fa912da65 100644 --- a/Documentation/Contributors/BuildGuide/README.md +++ b/Documentation/Contributors/BuildGuide/README.md @@ -148,7 +148,6 @@ Here's the full set of scripts and what they do. - `test-webgl-validation` - Runs all tests with Karma and enables low-level WebGL validation - `test-release` - Runs all tests on the minified release version of built Cesium - **Deployment scripts** - - `deploy-s3` - Deploys the built CesiumJS files, the npm package, and the zip file to Amazon S3. This requires having credentials set up for the S3 bucket to which you are deploying - `deploy-status` - Sets the deployment statuses in GitHub, for use in CI - `deploy-set-version` - Sets the version of `package.json`, for use in CI @@ -179,7 +178,7 @@ aws s3 sync ./Build/Coverage s3://cesium-public-builds/cesium/$BRANCH/Build/Cove ``` ```yml -npm run deploy-s3 -- -b "cesium-public-builds" -d cesium/$BRANCH -c 'no-cache' --confirm +aws s3 sync Build/unzipped/ s3://cesium-public-builds/cesium/$BRANCH/Build/ --cache-control "no-cache" --delete ``` - In `gulpfile.js`, edit the following line: @@ -188,7 +187,7 @@ npm run deploy-s3 -- -b "cesium-public-builds" -d cesium/$BRANCH -c 'no-cache' - const devDeployUrl = "https://ci-builds.cesium.com/cesium/"; ``` -- Edit the URL to match the URL of the S3 bucket specified in the previous step. +- Edit the URL to match the URL hosting the S3 bucket specified in the previous step. ### Configure S3 Credentials diff --git a/gulpfile.js b/gulpfile.js index 42b57f2f0cb9..17ce9aee0d0d 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,11 +1,8 @@ /*eslint-env node*/ import { writeFileSync, copyFileSync, readFileSync, existsSync } from "fs"; import { readFile, writeFile } from "fs/promises"; -import { join, basename, resolve, posix, dirname } from "path"; +import { join, basename, resolve, dirname } from "path"; import { exec, execSync } from "child_process"; -import { createHash } from "crypto"; -import { gzipSync } from "zlib"; -import { createInterface } from "readline"; import fetch from "node-fetch"; import { createRequire } from "module"; @@ -22,21 +19,9 @@ import mergeStream from "merge-stream"; import streamToPromise from "stream-to-promise"; import karma from "karma"; import yargs from "yargs"; -import { - S3Client, - DeleteObjectsCommand, - HeadObjectCommand, - ListObjectsCommand, - PutObjectCommand, -} from "@aws-sdk/client-s3"; -import { Upload } from "@aws-sdk/lib-storage"; -import mime from "mime"; import typeScript from "typescript"; import { build as esbuild } from "esbuild"; import { createInstrumenter } from "istanbul-lib-instrument"; -import pLimit from "p-limit"; -import download from "download"; -import decompress from "decompress"; import { buildCesium, @@ -518,7 +503,6 @@ async function pruneScriptsForZip(packageJsonPath) { delete scripts.prettier; // Remove deploy tasks - delete scripts["deploy-s3"]; delete scripts["deploy-status"]; delete scripts["deploy-set-version"]; delete scripts["website-release"]; @@ -690,529 +674,6 @@ export const makeZip = gulp.series(release, async function () { ); }); -export async function deployS3() { - const argv = yargs(process.argv) - .usage("Usage: deploy-s3 -b [Bucket Name] -d [Upload Directory]") - .options({ - bucket: { - alias: "b", - description: "Bucket name.", - type: "string", - demandOption: true, - }, - directory: { - alias: "d", - description: "Upload directory.", - type: "string", - }, - "cache-control": { - alias: "c", - description: - "The cache control option set on the objects uploaded to S3.", - type: "string", - default: "max-age=3600", - }, - "dry-run": { - description: "Only print file paths and S3 keys.", - type: "boolean", - default: false, - }, - skip: { - description: "Skip re-uploading exisiting files.", - type: "boolean", - default: false, - }, - confirm: { - description: "Skip confirmation step, useful for CI.", - type: "boolean", - default: false, - }, - }).argv; - - const uploadDirectory = argv.directory; - const bucketName = argv.bucket; - const dryRun = argv.dryRun; - const cacheControl = argv.cacheControl ? argv.cacheControl : "max-age=3600"; - const skipFiles = argv.skip; - - if (argv.confirm) { - return deployCesium( - bucketName, - uploadDirectory, - cacheControl, - skipFiles, - dryRun - ); - } - - const iface = createInterface({ - input: process.stdin, - output: process.stdout, - }); - - return new Promise((resolve) => { - // prompt for confirmation - iface.question( - `Files from your computer will be published to the ${bucketName} bucket. Continue? [y/n] `, - function (answer) { - iface.close(); - if (answer === "y") { - resolve( - deployCesium( - bucketName, - uploadDirectory, - cacheControl, - skipFiles, - dryRun - ) - ); - } else { - console.log("Deploy aborted by user."); - resolve(); - } - } - ); - }); -} - -// Deploy cesium to s3 -async function deployCesium( - bucketName, - uploadDirectory, - cacheControl, - skipFiles, - dryRun -) { - // Limit promise concurrency since we are reading many - // files off disk in parallel - const limit = pLimit(2000); - - const refDocPrefix = "cesiumjs/ref-doc/"; - const sandcastlePrefix = "sandcastle/"; - const cesiumViewerPrefix = "cesiumjs/cesium-viewer/"; - - const s3Client = new S3Client({ - region: "us-east-1", - maxRetries: 10, - retryDelayOptions: { - base: 500, - }, - }); - - const existingBlobs = []; - let totalFiles = 0; - let uploaded = 0; - let skipped = 0; - const errors = []; - - if (!isProduction) { - await listAll(s3Client, bucketName, `${uploadDirectory}/`, existingBlobs); - } - - async function getContents(file, blobName) { - const mimeLookup = getMimeType(blobName); - const contentType = mimeLookup.type; - const compress = mimeLookup.compress; - const contentEncoding = compress ? "gzip" : undefined; - - totalFiles++; - - let content = await readFile(file); - - if (compress) { - const alreadyCompressed = content[0] === 0x1f && content[1] === 0x8b; - if (alreadyCompressed) { - if (verbose) { - console.log(`Skipping compressing already compressed file: ${file}`); - } - } else { - content = gzipSync(content); - } - } - - const computeEtag = (content) => { - return createHash("md5").update(content).digest("base64"); - }; - - const index = existingBlobs.indexOf(blobName); - if (index <= -1) { - return { - content, - etag: computeEtag(content), - contentType, - contentEncoding, - }; - } - - // remove files from the list to clean later - // as we find them on disk - existingBlobs.splice(index, 1); - - // get file info - const headObjectCommand = new HeadObjectCommand({ - Bucket: bucketName, - Key: blobName, - }); - const data = await s3Client.send(headObjectCommand); - const hash = createHash("md5").update(content).digest("hex"); - - if ( - !skipFiles || - data.ETag !== `"${hash}"` || - data.CacheControl !== cacheControl || - data.ContentType !== contentType || - data.ContentEncoding !== contentEncoding - ) { - return { - content, - etag: computeEtag(content), - contentType, - contentEncoding, - }; - } - - // We don't need to upload this file again - skipped++; - } - - async function readAndUpload(prefix, existingPrefix, file) { - const blobName = `${prefix}${file.replace(existingPrefix, "")}`; - - let fileContents; - try { - fileContents = await getContents(file, blobName); - } catch (e) { - errors.push(e); - } - - if (!fileContents) { - return; - } - - const content = fileContents.content; - const etag = fileContents.etag; - const contentType = fileContents.contentType; - const contentEncoding = fileContents.contentEncoding; - - if (verbose) { - console.log(`Uploading ${blobName}...`); - } - - const params = { - Bucket: bucketName, - Key: blobName, - Body: content, - ContentMD5: etag, - ContentType: contentType, - ContentEncoding: contentEncoding, - CacheControl: cacheControl, - }; - - const putObjectCommand = new PutObjectCommand(params); - - if (dryRun) { - uploaded++; - return; - } - - try { - await s3Client.send(putObjectCommand); - uploaded++; - } catch (e) { - errors.push(e); - } - } - - let uploads; - if (isProduction) { - const uploadSandcastle = async () => { - const files = await globby(["Build/Sandcastle/**"]); - return Promise.all( - files.map((file) => { - return limit(() => - readAndUpload(sandcastlePrefix, "Build/Sandcastle/", file) - ); - }) - ); - }; - - const uploadRefDoc = async () => { - const files = await globby(["Build/Documentation/**"]); - return Promise.all( - files.map((file) => { - return limit(() => - readAndUpload(refDocPrefix, "Build/Documentation/", file) - ); - }) - ); - }; - - const uploadCesiumViewer = async () => { - const files = await globby(["Build/CesiumViewer/**"]); - return Promise.all( - files.map((file) => { - return limit(() => - readAndUpload(cesiumViewerPrefix, "Build/CesiumViewer/", file) - ); - }) - ); - }; - - uploads = [ - uploadSandcastle(), - uploadRefDoc(), - uploadCesiumViewer(), - deployCesiumRelease(bucketName, s3Client, errors), - ]; - } else { - const files = await globby( - [ - "Apps/**", - "Build/**", - "!Build/CesiumDev/**", - "packages/**", - "Source/**", - "Specs/**", - "ThirdParty/**", - "*.md", - "favicon.ico", - "gulpfile.js", - "index.html", - "package.json", - "server.js", - "web.config", - "*.zip", - "*.tgz", - ], - { - dot: true, // include hidden files - } - ); - - uploads = files.map((file) => { - return limit(() => readAndUpload(`${uploadDirectory}/`, "", file)); - }); - } - - await Promise.all(uploads); - - console.log( - `Skipped ${skipped} files and successfully uploaded ${uploaded} files of ${ - totalFiles - skipped - } files.` - ); - - if (!isProduction && existingBlobs.length >= 0) { - const objectsToDelete = []; - existingBlobs.forEach(function (file) { - // Don't delete generated zip files - if (!/\.(zip|tgz)$/.test(file)) { - objectsToDelete.push({ Key: file }); - } - }); - - if (objectsToDelete.length > 0) { - console.log(`Cleaning ${objectsToDelete.length} files...`); - - // If more than 1000 files, we must issue multiple requests - const batches = []; - while (objectsToDelete.length > 1000) { - batches.push(objectsToDelete.splice(0, 1000)); - } - batches.push(objectsToDelete); - - const deleteObjects = async (objects) => { - const deleteObjectsCommand = new DeleteObjectsCommand({ - Bucket: bucketName, - Delete: { - Objects: objects, - }, - }); - - try { - if (!dryRun) { - await s3Client.send(deleteObjectsCommand); - } - } catch (e) { - errors.push(e); - } - - if (verbose) { - console.log(`Cleaned ${objects.length} files.`); - } - }; - - await Promise.all(batches.map(deleteObjects)); - } - } - - if (errors.length === 0) { - return; - } - - console.log("Errors: "); - errors.map(console.log); - return Promise.reject("There was an error while deploying Cesium"); -} - -async function deployCesiumRelease(bucketName, s3Client, errors) { - const releaseDir = "cesiumjs/releases"; - const quiet = process.env.CI; - - let release; - try { - // Deploy any new releases - const response = await fetch( - "https://api.github.com/repos/CesiumGS/cesium/releases/latest", - { - method: "GET", - headers: { - Authorization: process.env.GITHUB_TOKEN - ? `token ${process.env.GITHUB_TOKEN}` - : undefined, - "User-Agent": "cesium.com-build", - }, - } - ); - - const body = await response.json(); - - release = { - tag: body.tag_name, - name: body.name, - url: body.assets[0].browser_download_url, - }; - - const headObjectCommand = new HeadObjectCommand({ - Bucket: bucketName, - Key: posix.join(releaseDir, release.tag, "cesium.zip"), - }); - await s3Client.send(headObjectCommand); - console.log( - `Cesium version ${release.tag} up to date. Skipping release deployment.` - ); - } catch (error) { - if (error.$metadata) { - const { httpStatusCode } = error.$metadata; - // The current version is not uploaded - if (httpStatusCode === 404) { - console.log("Updating cesium version..."); - const data = await download(release.url); - // upload and unzip contents - const key = posix.join(releaseDir, release.tag, "cesium.zip"); - await uploadObject(bucketName, s3Client, key, data, quiet); - const files = await decompress(data); - const limit = pLimit(5); - return Promise.all( - files.map((file) => { - return limit(async () => { - if (file.path.startsWith("Apps")) { - // skip uploading apps and sandcastle - return; - } - - // Upload to release directory - const key = posix.join(releaseDir, release.tag, file.path); - return uploadObject(bucketName, s3Client, key, file.data, quiet); - }); - }) - ); - } - } - - // else, unexpected error - errors.push(error); - } -} - -async function uploadObject(bucketName, s3Client, key, contents, quiet) { - if (!quiet) { - console.log(`Uploading ${key}...`); - } - - const upload = new Upload({ - client: s3Client, - params: { - Bucket: bucketName, - Key: key, - Body: contents, - ContentType: mime.getType(key) || undefined, - CacheControl: "public, max-age=1800", - }, - }); - return upload.done(); -} - -function getMimeType(filename) { - //Remove page anchors from documentation, as mime does not properly handle them - filename = filename.split("#")[0]; - - const mimeType = mime.getType(filename); - if (mimeType) { - //Compress everything except zipfiles, binary images, and video - let compress = !/^(image\/|video\/|application\/zip|application\/gzip)/i.test( - mimeType - ); - if (mimeType === "image/svg+xml") { - compress = true; - } - return { type: mimeType, compress: compress }; - } - - //Non-standard mime types not handled by mime - if (/\.(glsl|LICENSE|config|state)$/i.test(filename)) { - return { type: "text/plain", compress: true }; - } else if (/\.(czml|topojson)$/i.test(filename)) { - return { type: "application/json", compress: true }; - } else if (/\.tgz$/i.test(filename)) { - return { type: "application/octet-stream", compress: false }; - } - - // Handle dotfiles, such as .jshintrc - const baseName = basename(filename); - if (baseName[0] === "." || baseName.indexOf(".") === -1) { - return { type: "text/plain", compress: true }; - } - - // Everything else can be octet-stream compressed but print a warning - // if we introduce a type we aren't specifically handling. - if (!/\.(terrain|b3dm|geom|pnts|vctr|cmpt|i3dm|metadata)$/i.test(filename)) { - console.log(`Unknown mime type for ${filename}`); - } - - return { type: "application/octet-stream", compress: true }; -} - -// get all files currently in bucket asynchronously -async function listAll(s3Client, bucketName, prefix, files, marker) { - const listObjectsCommand = new ListObjectsCommand({ - Bucket: bucketName, - MaxKeys: 1000, - Prefix: prefix, - Marker: marker, - }); - const data = await s3Client.send(listObjectsCommand); - const items = data.Contents; - if (!items) { - return; - } - - for (let i = 0; i < items.length; i++) { - files.push(items[i].Key); - } - - if (data.IsTruncated) { - // get next page of results - return listAll( - s3Client, - bucketName, - prefix, - files, - files[files.length - 1] - ); - } -} - export async function deploySetVersion() { const buildVersion = argv.buildVersion; if (buildVersion) { diff --git a/package.json b/package.json index bcf1bdf590c2..7d04ee64d158 100644 --- a/package.json +++ b/package.json @@ -54,14 +54,10 @@ "@cesium/widgets": "^4.3.0" }, "devDependencies": { - "@aws-sdk/client-s3": "^3.438.0", - "@aws-sdk/lib-storage": "^3.438.0", "@playwright/test": "^1.34.3", "chokidar": "^3.5.3", "cloc": "^2.8.0", "compression": "^1.7.4", - "decompress": "^4.2.1", - "download": "^8.0.0", "esbuild": "^0.19.2", "eslint": "^8.41.0", "eslint-config-cesium": "^10.0.1", @@ -100,7 +96,6 @@ "mkdirp": "^3.0.1", "node-fetch": "^3.2.10", "open": "^9.1.0", - "p-limit": "^4.0.0", "prettier": "2.1.2", "prismjs": "^1.28.0", "request": "^2.79.0", @@ -144,7 +139,6 @@ "test-e2e-release-all": "release=true playwright test -c Specs/e2e/playwright.config.js", "test-e2e-report": "playwright show-report Build/Specs/e2e/report", "test-e2e-update": "playwright test -c Specs/e2e/playwright.config.js --project=chromium -u", - "deploy-s3": "gulp deployS3", "deploy-status": "gulp deployStatus", "deploy-set-version": "gulp deploySetVersion", "prettier": "prettier --write --no-config \"**/*\"", From 57df63e7fb05b80e8ffb91a2c206d4c467db1aa0 Mon Sep 17 00:00:00 2001 From: Matthew Amato Date: Wed, 22 Nov 2023 19:59:23 -0500 Subject: [PATCH 18/24] Fix deploy URLs We were adding `index.html` to the deploy URL which made the derived URLs incorrect. Since index.html isn't needed, I just removed it and now deploy URLs should be fixed --- gulpfile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gulpfile.js b/gulpfile.js index 17ce9aee0d0d..3d22144b2bbb 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -687,7 +687,7 @@ export async function deployStatus() { const status = argv.status; const message = argv.message; - const deployUrl = `${devDeployUrl + process.env.BRANCH}/index.html`; + const deployUrl = `${devDeployUrl + process.env.BRANCH}/`; const zipUrl = `${deployUrl}Cesium-${version}.zip`; const npmUrl = `${deployUrl}cesium-${version}.tgz`; const coverageUrl = `${ From 1d426cb1a61681a2945023e122a37bc35c16e7b7 Mon Sep 17 00:00:00 2001 From: Matthew Amato Date: Fri, 1 Dec 2023 10:41:26 -0500 Subject: [PATCH 19/24] Changes after review * Remove unused `mime` package * Don't deploy `Build/Specs/e2e` --- .github/workflows/dev.yml | 1 + package.json | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 8a510812a7ad..3b982b06af77 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -107,6 +107,7 @@ jobs: --exclude ".vscode/*" \ --exclude "Build/Coverage/*" \ --exclude "Build/CesiumDev/*" \ + --exclude "Build/Specs/e2e" \ --exclude "Documentation/*" \ --exclude "node_modules/*" \ --exclude "scripts/*" \ diff --git a/package.json b/package.json index 7d04ee64d158..53e533dc0ef4 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,6 @@ "karma-spec-reporter": "^0.0.36", "markdownlint-cli": "^0.37.0", "merge-stream": "^2.0.0", - "mime": "^3.0.0", "mkdirp": "^3.0.1", "node-fetch": "^3.2.10", "open": "^9.1.0", From f2f9c1c23f7154f1600fde2efa6303945e3792ae Mon Sep 17 00:00:00 2001 From: Jeshurun Hembd Date: Fri, 1 Dec 2023 12:46:10 -0500 Subject: [PATCH 20/24] Update dependencies --- package.json | 13 +++++++------ packages/engine/package.json | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 53e533dc0ef4..80d3cac3bb9d 100644 --- a/package.json +++ b/package.json @@ -51,21 +51,22 @@ ], "dependencies": { "@cesium/engine": "^6.1.0", - "@cesium/widgets": "^4.3.0" + "@cesium/widgets": "^4.3.0", + "meshoptimizer": "^0.20.0" }, "devDependencies": { - "@playwright/test": "^1.34.3", + "@playwright/test": "^1.40.1", "chokidar": "^3.5.3", "cloc": "^2.8.0", "compression": "^1.7.4", - "esbuild": "^0.19.2", - "eslint": "^8.41.0", + "esbuild": "^0.19.8", + "eslint": "^8.54.0", "eslint-config-cesium": "^10.0.1", "eslint-plugin-es": "^4.1.0", "eslint-plugin-html": "^7.1.0", "eslint-plugin-node": "^11.1.0", "express": "^4.17.1", - "globby": "^13.1.3", + "globby": "^14.0.0", "glsl-strip-comments": "^1.0.0", "gulp": "^4.0.2", "gulp-clean-css": "^4.3.0", @@ -102,7 +103,7 @@ "sinon": "^17.0.0", "stream-to-promise": "^3.0.0", "tsd-jsdoc": "^2.5.0", - "typescript": "^5.0.2", + "typescript": "^5.3.2", "yargs": "^17.0.1" }, "scripts": { diff --git a/packages/engine/package.json b/packages/engine/package.json index 81ddf1a2a54b..5cd6e08584ab 100644 --- a/packages/engine/package.json +++ b/packages/engine/package.json @@ -45,7 +45,7 @@ "ktx-parse": "^0.6.0", "lerc": "^2.0.0", "mersenne-twister": "^1.1.0", - "meshoptimizer": "^0.19.0", + "meshoptimizer": "^0.20.0", "pako": "^2.0.4", "protobufjs": "^7.1.0", "rbush": "^3.0.1", From 247b05e3d38c1d1b26ee3d4e2d6b0ba857892d02 Mon Sep 17 00:00:00 2001 From: Jeshurun Hembd Date: Fri, 1 Dec 2023 12:49:45 -0500 Subject: [PATCH 21/24] Update gulp-zip --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 80d3cac3bb9d..3a79f66b782f 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "gulp-rename": "^2.0.0", "gulp-replace": "^1.1.3", "gulp-tap": "^2.0.0", - "gulp-zip": "^5.1.0", + "gulp-zip": "^6.0.0", "husky": "^8.0.2", "istanbul-lib-instrument": "^6.0.0", "jasmine-core": "^5.0.1", From 0d9305071398d035e4c66bfe35c9144f48254c2d Mon Sep 17 00:00:00 2001 From: Jeshurun Hembd <41167620+jjhembd@users.noreply.github.com> Date: Fri, 1 Dec 2023 13:12:41 -0500 Subject: [PATCH 22/24] Fix incorrectly installed dependency --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 3a79f66b782f..bdd3db8ea463 100644 --- a/package.json +++ b/package.json @@ -51,8 +51,7 @@ ], "dependencies": { "@cesium/engine": "^6.1.0", - "@cesium/widgets": "^4.3.0", - "meshoptimizer": "^0.20.0" + "@cesium/widgets": "^4.3.0" }, "devDependencies": { "@playwright/test": "^1.40.1", From 8b8c8647a085f9a89e04095119640ebbe84db032 Mon Sep 17 00:00:00 2001 From: Jeshurun Hembd Date: Fri, 1 Dec 2023 14:29:36 -0500 Subject: [PATCH 23/24] Updates for 1.112 release --- CHANGES.md | 2 +- package.json | 6 +++--- packages/engine/Source/Core/Ion.js | 2 +- packages/engine/Source/Scene/ArcGisMapService.js | 2 +- packages/engine/package.json | 2 +- packages/widgets/package.json | 4 ++-- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index c93270ee6724..90c14c5724a6 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,8 +6,8 @@ ##### Fixes :wrench: -- Corrected JSDoc and Typescript definitions that marked optional arguments as required in `Cesium3dTileset.fromIonAssetId` [#11623](https://github.com/CesiumGS/cesium/issues/11623), and `IonImageryProvider.fromAssetId` [#11624](https://github.com/CesiumGS/cesium/issues/11624) - Fixed terrain lockups in `requestTileGeometry` by ensuring promise handling aligns with CesiumJS's expectations. [#11630](https://github.com/CesiumGS/cesium/pull/11630) +- Corrected JSDoc and Typescript definitions that marked optional arguments as required in `Cesium3dTileset.fromIonAssetId` [#11623](https://github.com/CesiumGS/cesium/issues/11623), and `IonImageryProvider.fromAssetId` [#11624](https://github.com/CesiumGS/cesium/issues/11624) ### 1.111 - 2023-11-01 diff --git a/package.json b/package.json index bdd3db8ea463..fd9639e2e426 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cesium", - "version": "1.111.0", + "version": "1.112.0", "description": "CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin.", "homepage": "http://cesium.com/cesiumjs/", "license": "Apache-2.0", @@ -50,8 +50,8 @@ "./Specs/**/*" ], "dependencies": { - "@cesium/engine": "^6.1.0", - "@cesium/widgets": "^4.3.0" + "@cesium/engine": "^6.1.1", + "@cesium/widgets": "^4.3.1" }, "devDependencies": { "@playwright/test": "^1.40.1", diff --git a/packages/engine/Source/Core/Ion.js b/packages/engine/Source/Core/Ion.js index f0e351313fd5..3f7c2a48d1ef 100644 --- a/packages/engine/Source/Core/Ion.js +++ b/packages/engine/Source/Core/Ion.js @@ -4,7 +4,7 @@ import Resource from "./Resource.js"; let defaultTokenCredit; const defaultAccessToken = - "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIyMzVjZDg3Yi0wMjVkLTQ0MzctOTZjOC1jZjMwNjkzZmI5MWUiLCJpZCI6MjU5LCJpYXQiOjE2OTg4NTM0MDl9.L_g01CjNKNVijEJ_8kOxiO02OADnuSjRFLkZWvhupcc"; + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzN2UwMjViMC0xOTJhLTQxMmItOWEzMS1kMjJiNmZiY2E5N2YiLCJpZCI6MjU5LCJpYXQiOjE3MDE0NTc1NjB9.bMNhc7S4cuG1qUnRUiLxr5lunSH1k6-UfkRXSqVFYyM"; /** * Default settings for accessing the Cesium ion API. * diff --git a/packages/engine/Source/Scene/ArcGisMapService.js b/packages/engine/Source/Scene/ArcGisMapService.js index 9a6aaa9328e2..1920062edfe5 100644 --- a/packages/engine/Source/Scene/ArcGisMapService.js +++ b/packages/engine/Source/Scene/ArcGisMapService.js @@ -4,7 +4,7 @@ import Resource from "../Core/Resource.js"; let defaultTokenCredit; const defaultAccessToken = - "AAPK72121c3f05244af285ad75999db084bfDGkWA0QECX6QWOdaQmarXC21i1ogkvj8XCctaZExrW8Hw1AT58yG7twH3VFzZl13"; + "AAPK2b93071721df4cc78be0d8b3d79b1fd54YMocOcx2NxlbYTDkyO5gPk8XsDnguQgeMdFKepFwLwTgb8vHfPvSTdjy_KlMHlS"; /** * Default options for accessing the ArcGIS image tile service. * diff --git a/packages/engine/package.json b/packages/engine/package.json index 5cd6e08584ab..ee1c7b7a0681 100644 --- a/packages/engine/package.json +++ b/packages/engine/package.json @@ -1,6 +1,6 @@ { "name": "@cesium/engine", - "version": "6.1.0", + "version": "6.1.1", "description": "CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin.", "keywords": [ "3D", diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 0696b3475d11..5b121d5c1689 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -1,6 +1,6 @@ { "name": "@cesium/widgets", - "version": "4.3.0", + "version": "4.3.1", "description": "A widgets library for use with CesiumJS. CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin.", "keywords": [ "3D", @@ -28,7 +28,7 @@ "node": ">=14.0.0" }, "dependencies": { - "@cesium/engine": "^6.1.0", + "@cesium/engine": "^6.1.1", "nosleep.js": "^0.12.0" }, "type": "module", From b9db20e9d56c3b01f56304a51e5440e2b16a5159 Mon Sep 17 00:00:00 2001 From: Jeshurun Hembd Date: Fri, 1 Dec 2023 15:02:59 -0500 Subject: [PATCH 24/24] Update ThirdParty.json --- ThirdParty.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ThirdParty.json b/ThirdParty.json index 21ee7959ef66..5e1b954747a5 100644 --- a/ThirdParty.json +++ b/ThirdParty.json @@ -133,7 +133,7 @@ "license": [ "MIT" ], - "version": "0.19.0", + "version": "0.20.0", "url": "https://www.npmjs.com/package/meshoptimizer" }, {