diff --git a/example/src/utils/CesiumMap/CesiumMap.ts b/example/src/utils/CesiumMap/CesiumMap.ts index a4c5ee6..e81edb8 100644 --- a/example/src/utils/CesiumMap/CesiumMap.ts +++ b/example/src/utils/CesiumMap/CesiumMap.ts @@ -117,7 +117,7 @@ export default class CesiumMap extends BaseMap { renderOptions, enablePickFeatures: true, projFunc: (code) => { - if (![4326].includes(code)) { + if (![4326, 3857, 900913].includes(code)) { { try { let prj = proj4("EPSG:4326", `EPSG:${code}`) diff --git a/package.json b/package.json index 3993cab..24806c4 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,11 @@ }, "devDependencies": { "conventional-changelog-cli": "^2.2.2", + "esbuild": "^0.19.2", "lerna": "^6.1.0", + "rimraf": "^5.0.1", + "rollup-plugin-dts": "^6.0.1", + "rollup-plugin-esbuild": "^5.0.0", "turbo": "^1.10.13" } } diff --git a/packages/TIFFImageryProvider/.gitignore b/packages/TIFFImageryProvider/.gitignore index 1ccc52a..b2d59d1 100644 --- a/packages/TIFFImageryProvider/.gitignore +++ b/packages/TIFFImageryProvider/.gitignore @@ -1,2 +1,2 @@ /node_modules -/lib \ No newline at end of file +/dist \ No newline at end of file diff --git a/packages/TIFFImageryProvider/README.md b/packages/TIFFImageryProvider/README.md index 5da116e..b795a70 100644 --- a/packages/TIFFImageryProvider/README.md +++ b/packages/TIFFImageryProvider/README.md @@ -13,10 +13,10 @@ Load GeoTIFF/COG(Cloud optimized GeoTIFF) on Cesium - Three band rendering. - Multi mode color rendering. - Support identify TIFF value with cartographic position. -- Support any projected TIFF. - Web Workers speed up. - WebGL accelerated rendering. - Band calculation. +- Support any projected TIFF (experimental). ## Install @@ -57,7 +57,7 @@ provider.readyPromise.then(() => { }) ``` -If TIFF's projection is not EPSG:4326, you can pass the ``projFunc`` to handle the projection +**Experimental** If TIFF's projection is not EPSG:4326 or EPSG:3857, you can pass the ``projFunc`` to handle the projection ```ts import proj4 from 'proj4'; diff --git a/packages/TIFFImageryProvider/package.json b/packages/TIFFImageryProvider/package.json index 671b3d2..69db72a 100644 --- a/packages/TIFFImageryProvider/package.json +++ b/packages/TIFFImageryProvider/package.json @@ -9,12 +9,12 @@ "cog", "webgl" ], - "main": "./lib/index.js", - "types": "./lib/index.d.ts", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", "exports": { ".": { - "import": "./lib/index.js", - "require": "./lib/index.js" + "import": "./dist/index.js", + "require": "./dist/index.js" } }, "repository": { @@ -22,8 +22,8 @@ "url": "git+https://github.com/hongfaqiu/tiff-imagery-provider.git" }, "scripts": { - "dev": "rollup -c -w", - "build": "rollup -c", + "dev": "rimraf dist && rollup -c --watch", + "build": "rimraf dist && rollup -c", "prepublish": "pnpm build" }, "author": "hongfaqiu", diff --git a/packages/TIFFImageryProvider/rollup.config.js b/packages/TIFFImageryProvider/rollup.config.js index 9ecd089..0834c0e 100644 --- a/packages/TIFFImageryProvider/rollup.config.js +++ b/packages/TIFFImageryProvider/rollup.config.js @@ -1,34 +1,54 @@ import resolve from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import typescript from '@rollup/plugin-typescript'; +import { readFileSync } from 'fs'; import webWorkerLoader from "rollup-plugin-web-worker-loader"; import { createRequire } from "module"; -const require = createRequire(import.meta.url); -const pkg = require("./package.json") +import esbuild from 'rollup-plugin-esbuild'; +import path from 'path'; +import dts from 'rollup-plugin-dts'; + +const pkg = JSON.parse( + readFileSync(new URL('./package.json', import.meta.url)).toString(), +); const deps = { ...pkg.dependencies, ...pkg.peerDependencies }; +const external = Object.keys(deps) /** * @type {import('rollup').RollupOptions} */ -const config = { - input: 'src/index.ts', - output: { - file: pkg.main, - sourcemap: true, - exports: "auto", +const config = [ + { + input: 'src/index.ts', + output: { + dir: path.dirname(pkg.main), + name: pkg.main, + format: 'esm', + sourcemap: true, + // preserveModules: true, + }, + external, + plugins: [ + webWorkerLoader({ + inline: true, + targetPlatform: "browser", + extensions: ["ts", "js"], + external, + }), + esbuild({ + target: 'node14', + }), + ] + }, + { + input: 'src/index.ts', + output: { + dir: path.dirname(pkg.types), + entryFileNames: '[name].d.ts', + format: 'esm', + }, + plugins: [dts()], }, - external: Object.keys(deps), - plugins: [ - resolve(), - commonjs(), - typescript(), - webWorkerLoader({ - inline: true, - targetPlatform: "browser", - extensions: ["ts", "js"], - external: [] - }), - ] -}; +]; export default config; \ No newline at end of file diff --git a/packages/TIFFImageryProvider/src/TIFFImageryProvider.ts b/packages/TIFFImageryProvider/src/TIFFImageryProvider.ts index b7c3b78..e1ed2c0 100644 --- a/packages/TIFFImageryProvider/src/TIFFImageryProvider.ts +++ b/packages/TIFFImageryProvider/src/TIFFImageryProvider.ts @@ -1,4 +1,4 @@ -import { Event, GeographicTilingScheme, Credit, Rectangle, ImageryLayerFeatureInfo, Math as CesiumMath, DeveloperError, defined, Cartesian2 } from "cesium"; +import { Event, GeographicTilingScheme, Credit, Rectangle, ImageryLayerFeatureInfo, Math as CesiumMath, DeveloperError, defined, Cartesian2, WebMercatorTilingScheme } from "cesium"; import GeoTIFF, { Pool, fromUrl, fromBlob, GeoTIFFImage } from 'geotiff'; import { addColorScale, plot } from './plotty' @@ -135,7 +135,6 @@ export interface TIFFImageryProviderOptions { resampleMethod?: 'nearest' | 'bilinear' | 'linear'; } const canvas = document.createElement('canvas'); - let workerPool: Pool; function getWorkerPool() { if (!workerPool) { @@ -146,7 +145,7 @@ function getWorkerPool() { export class TIFFImageryProvider { ready: boolean; - tilingScheme: TIFFImageryProviderTilingScheme | GeographicTilingScheme; + tilingScheme: TIFFImageryProviderTilingScheme | GeographicTilingScheme | WebMercatorTilingScheme; rectangle: Rectangle; tileSize: number; tileWidth: number; @@ -235,16 +234,14 @@ export class TIFFImageryProvider { rectangleSouthwestInMeters: new Cartesian2(west, south), ...this._proj }) - this.rectangle = this.tilingScheme.rectangle + } else if (prjCode === 3857 || prjCode === 900913) { + this.tilingScheme = new WebMercatorTilingScheme({ + rectangleNortheastInMeters: new Cartesian2(east, north), + rectangleSouthwestInMeters: new Cartesian2(west, south), + }) } else if (prjCode === 4326) { - this.rectangle = Rectangle.fromDegrees(...this.bbox) - // 处理跨180度经线的情况 - // https://github.com/CesiumGS/cesium/blob/da00d26473f663db180cacd8e662ca4309e09560/packages/engine/Source/Core/TileAvailability.js#L195 - if (this.rectangle.east < this.rectangle.west) { - this.rectangle.east += CesiumMath.TWO_PI; - } this.tilingScheme = new GeographicTilingScheme({ - rectangle: this.rectangle, + rectangle: Rectangle.fromDegrees(...this.bbox), numberOfLevelZeroTilesX: 1, numberOfLevelZeroTilesY: 1 }); @@ -253,6 +250,12 @@ export class TIFFImageryProvider { throw error; } + this.rectangle = this.tilingScheme.rectangle + // 处理跨180度经线的情况 + // https://github.com/CesiumGS/cesium/blob/da00d26473f663db180cacd8e662ca4309e09560/packages/engine/Source/Core/TileAvailability.js#L195 + if (this.rectangle.east < this.rectangle.west) { + this.rectangle.east += CesiumMath.TWO_PI; + } this._imageCount = await source.getImageCount(); this.tileSize = this.tileWidth = tileSize || (this._isTiled ? image.getTileWidth() : image.getWidth()) || 512; this.tileHeight = tileSize || (this._isTiled ? image.getTileHeight() : image.getHeight()) || 512; @@ -438,30 +441,35 @@ export class TIFFImageryProvider { const width = image.getWidth(); const height = image.getHeight(); - const lonlatRect = this.tilingScheme.tileXYToRectangle(x, y, z); - - if (lonlatRect.east < lonlatRect.west) { - lonlatRect.east += CesiumMath.TWO_PI; + const tileXNum = this.tilingScheme.getNumberOfXTilesAtLevel(z); + const tileYNum = this.tilingScheme.getNumberOfYTilesAtLevel(z); + const tilePixel = { + xWidth: width / tileXNum, + yWidth: height / tileYNum } - - let targetRect: Rectangle = lonlatRect, - nativeRect: Rectangle = this.rectangle; - - if (this.tilingScheme instanceof TIFFImageryProviderTilingScheme) { - targetRect = this.tilingScheme.tileXYToNativeRectangle(x, y, z); - nativeRect = this.tilingScheme.nativeRectangle; + let window = [ + Math.round(x * tilePixel.xWidth), + Math.round(y * tilePixel.yWidth), + Math.round((x + 1) * tilePixel.xWidth), + Math.round((y + 1) * tilePixel.yWidth), + ]; + + if (this._proj && this.tilingScheme instanceof TIFFImageryProviderTilingScheme) { + const targetRect = this.tilingScheme.tileXYToNativeRectangle2(x, y, z); + const nativeRect = this.tilingScheme.nativeRectangle; targetRect.west -= (nativeRect.width / width) targetRect.east += (nativeRect.width / width) targetRect.south -= (nativeRect.height / height) targetRect.north += (nativeRect.height / height) + + window = [ + ~~((targetRect.west - nativeRect.west) / nativeRect.width * width), + ~~((nativeRect.north - targetRect.north) / nativeRect.height * height), + ~~((targetRect.east - nativeRect.west) / nativeRect.width * width), + ~~((nativeRect.north - targetRect.south) / nativeRect.height * height), + ] } - let window = [ - ~~((targetRect.west - nativeRect.west) / nativeRect.width * width), - ~~((nativeRect.north - targetRect.north) / nativeRect.height * height), - ~~((targetRect.east - nativeRect.west) / nativeRect.width * width), - ~~((nativeRect.north - targetRect.south) / nativeRect.height * height), - ] const options = { window, @@ -470,6 +478,7 @@ export class TIFFImageryProvider { height: this.tileHeight, samples: this.readSamples, resampleMethod: this.options.resampleMethod, + fillValue: this.noData, interleave: false, } let res: TypedArray[]; @@ -479,10 +488,12 @@ export class TIFFImageryProvider { } else { res = await image.readRasters(options) as TypedArray[]; } - if (this._proj.project) { - const sourceBBox = [targetRect.west, targetRect.south, targetRect.east, targetRect.north] as any; + if (this._proj?.project && this.tilingScheme instanceof TIFFImageryProviderTilingScheme) { + const sourceRect = this.tilingScheme.tileXYToNativeRectangle2(x, y, z); + const targetRect = this.tilingScheme.tileXYToRectangle(x, y, z); + const sourceBBox = [sourceRect.west, sourceRect.south, sourceRect.east, sourceRect.north] as any; - const targetBBox = [lonlatRect.west, lonlatRect.south, lonlatRect.east, lonlatRect.north].map(CesiumMath.toDegrees) as any + const targetBBox = [targetRect.west, targetRect.south, targetRect.east, targetRect.north].map(CesiumMath.toDegrees) as any const result = []; for (let i = 0; i < res.length; i++) { @@ -494,7 +505,7 @@ export class TIFFImageryProvider { targetHeight: this.tileHeight, nodata: this.noData, project: this._proj.project, - bbox: sourceBBox, + sourceBBox, targetBBox }) result.push(prjData) @@ -609,24 +620,16 @@ export class TIFFImageryProvider { const width = image.getWidth(); const height = image.getHeight(); let posX: number, posY: number; - if (this._proj?.project) { - const [west, south, east, north] = this.bbox; - const [x, y] = this._proj.project([longitude, latitude].map(CesiumMath.toDegrees)); - const xWidth = east - west, yHeight = north - south; - posX = ~~(Math.abs((x - west) / xWidth) * width); - posY = ~~(Math.abs((y - south) / yHeight) * height); - } else { - const { west, south, north, width: lonWidth } = this.rectangle; - let lonGap = longitude - west; - // 处理跨180°经线的情况 - if (longitude < west) { - lonGap += CesiumMath.TWO_PI; - } - - posX = ~~(Math.abs(lonGap / lonWidth) * width); - posY = ~~(Math.abs((north - latitude) / (north - south)) * height); + const { west, south, north, width: lonWidth } = this.rectangle; + let lonGap = longitude - west; + // 处理跨180°经线的情况 + if (longitude < west) { + lonGap += CesiumMath.TWO_PI; } + posX = ~~(Math.abs(lonGap / lonWidth) * width); + posY = ~~(Math.abs((north - latitude) / (north - south)) * height); + const options = { window: [posX, posY, posX + 1, posY + 1], height: 1, diff --git a/packages/TIFFImageryProvider/src/TIFFImageryProviderTilingScheme.ts b/packages/TIFFImageryProvider/src/TIFFImageryProviderTilingScheme.ts index acd5613..4784daf 100644 --- a/packages/TIFFImageryProvider/src/TIFFImageryProviderTilingScheme.ts +++ b/packages/TIFFImageryProvider/src/TIFFImageryProviderTilingScheme.ts @@ -42,7 +42,7 @@ class TIFFImageryProviderTilingScheme extends WebMercatorTilingScheme { return Cartographic.fromDegrees(longitude, latitude, height, result); }, }; - + const swMeters = new Cartesian3(); options.rectangleSouthwestInMeters.clone(swMeters); const neMeters = new Cartesian3(); @@ -57,9 +57,10 @@ class TIFFImageryProviderTilingScheme extends WebMercatorTilingScheme { // @ts-ignore this._rectangle = Rectangle.fromCartographicArray([southwest, southeast, northwest, northeast]) + } - tileXYToNativeRectangle( + tileXYToNativeRectangle2( x: number, y: number, level: number, @@ -88,19 +89,15 @@ class TIFFImageryProviderTilingScheme extends WebMercatorTilingScheme { y: number, level: number, ) { - const xTiles = this.getNumberOfXTilesAtLevel(level); - const yTiles = this.getNumberOfYTilesAtLevel(level); + const rect = this.tileXYToNativeRectangle(x, y, level); - const xTileWidth = this.rectangle.width / xTiles; - const west = this.rectangle.west + x * xTileWidth; - const east = this.rectangle.west + (x + 1) * xTileWidth; - - const yTileHeight = this.rectangle.height / yTiles; - const north = this.rectangle.north - y * yTileHeight; - const south = this.rectangle.north - (y + 1) * yTileHeight; + const projection = this.projection; + const ws = projection.unproject(new Cartesian3(rect.west, rect.south)); + const wn = projection.unproject(new Cartesian3(rect.west, rect.north)); + const en = projection.unproject(new Cartesian3(rect.east, rect.north)); + const es = projection.unproject(new Cartesian3(rect.east, rect.south)); - const rectangle = new Rectangle(west, south, east, north); - return rectangle; + return Rectangle.fromCartographicArray([ws, wn, en, es]); }; } diff --git a/packages/TIFFImageryProvider/src/helpers/reprojection.ts b/packages/TIFFImageryProvider/src/helpers/reprojection.ts index 7b2549e..5b8c79e 100644 --- a/packages/TIFFImageryProvider/src/helpers/reprojection.ts +++ b/packages/TIFFImageryProvider/src/helpers/reprojection.ts @@ -1,6 +1,6 @@ export type ReprojectionOptions = { project: (pos: number[]) => number[]; - bbox: [minX: number, minY: number, maxX: number, maxY: number]; + sourceBBox: [minX: number, minY: number, maxX: number, maxY: number]; targetBBox: [minX: number, minY: number, maxX: number, maxY: number]; data: number[]; sourceWidth: number; @@ -19,10 +19,10 @@ function inRange(val: number, range: [number, number]) { } export function reprojection(options: ReprojectionOptions) { - const { data, bbox, targetBBox, project, sourceWidth, sourceHeight, nodata } = options; + const { data, sourceBBox, targetBBox, project, sourceWidth, sourceHeight, nodata } = options; const { targetWidth = sourceWidth, targetHeight = sourceHeight } = options; - const [minX, minY, maxX, maxY] = bbox; + const [minX, minY, maxX, maxY] = sourceBBox; const [minLon, minLat, maxLon, maxLat] = targetBBox; diff --git a/packages/TIFFImageryProvider/src/plotty/typing.ts b/packages/TIFFImageryProvider/src/plotty/typing.ts index 56b1e4b..d5cd8e8 100644 --- a/packages/TIFFImageryProvider/src/plotty/typing.ts +++ b/packages/TIFFImageryProvider/src/plotty/typing.ts @@ -1,4 +1,4 @@ -import { SingleBandRenderOptions } from "src/TIFFImageryProvider"; +import { SingleBandRenderOptions } from "../TIFFImageryProvider"; import { colorscales } from "./colorscales"; export type TypedArray = Uint8Array | Int8Array | Uint16Array | Int16Array | Uint32Array | Int32Array | Float32Array | Float64Array; diff --git a/packages/TIFFImageryProvider/src/utils/xyzTile.ts b/packages/TIFFImageryProvider/src/utils/xyzTile.ts new file mode 100644 index 0000000..53e8a2d --- /dev/null +++ b/packages/TIFFImageryProvider/src/utils/xyzTile.ts @@ -0,0 +1,39 @@ +const debugCanvas = document.createElement('canvas'); +debugCanvas.width = 512; +debugCanvas.height = 512; + +export function generateCanvasWithText(text: string) { + try { + // 获取 Canvas 元素 + const ctx = debugCanvas.getContext("2d"); + // 清除画布内容 + ctx.clearRect(0, 0, debugCanvas.width, debugCanvas.height); + + // 设置外边框样式 + ctx.strokeStyle = "yellow"; + ctx.lineWidth = 2; + + // 绘制外边框 + ctx.strokeRect(0, 0, debugCanvas.width, debugCanvas.height); + + // 设置文字样式 + ctx.font = "24px Arial"; + ctx.fillStyle = "white"; + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + + // 获取中间位置 + const centerX = debugCanvas.width / 2; + const centerY = debugCanvas.height / 2; + + // 绘制文字 + ctx.fillText(text, centerX, centerY); + const image = new Image(); + image.src = debugCanvas.toDataURL(); + return image; + + } catch (e) { + console.log(e); + return undefined; + } +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 650d1f4..43510fc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,9 +11,21 @@ importers: conventional-changelog-cli: specifier: ^2.2.2 version: 2.2.2 + esbuild: + specifier: ^0.19.2 + version: 0.19.2 lerna: specifier: ^6.1.0 version: 6.1.0 + rimraf: + specifier: ^5.0.1 + version: 5.0.1 + rollup-plugin-dts: + specifier: ^6.0.1 + version: 6.0.1(rollup@3.28.1)(typescript@5.1.6) + rollup-plugin-esbuild: + specifier: ^5.0.0 + version: 5.0.0(esbuild@0.19.2)(rollup@3.28.1) turbo: specifier: ^1.10.13 version: 1.10.13 @@ -167,6 +179,16 @@ packages: dependencies: '@babel/highlight': 7.18.6 + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + requiresBuild: true + dependencies: + '@babel/highlight': 7.22.13 + chalk: 2.4.2 + dev: true + optional: true + /@babel/generator@7.20.5: resolution: {integrity: sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==} engines: {node: '>=6.9.0'} @@ -212,6 +234,13 @@ packages: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.22.5: + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + engines: {node: '>=6.9.0'} + requiresBuild: true + dev: true + optional: true + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} @@ -220,6 +249,17 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/highlight@7.22.13: + resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} + engines: {node: '>=6.9.0'} + requiresBuild: true + dependencies: + '@babel/helper-validator-identifier': 7.22.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + optional: true + /@babel/parser@7.20.13: resolution: {integrity: sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==} engines: {node: '>=6.0.0'} @@ -442,7 +482,7 @@ packages: sass-loader: 10.4.1(sass@1.54.9)(webpack@5.88.2) semver: 7.3.2 style-loader: 1.3.0(webpack@5.88.2) - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.19.2) transitivePeerDependencies: - fibers - node-sass @@ -458,6 +498,14 @@ packages: dev: true optional: true + /@esbuild/android-arm64@0.19.2: + resolution: {integrity: sha512-lsB65vAbe90I/Qe10OjkmrdxSX4UJDjosDgb8sZUKcg3oefEuW2OT2Vozz8ef7wrJbMcmhvCC+hciF8jY/uAkw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-arm@0.17.19: resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} @@ -467,6 +515,14 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.19.2: + resolution: {integrity: sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-x64@0.17.19: resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} engines: {node: '>=12'} @@ -476,6 +532,14 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.19.2: + resolution: {integrity: sha512-qK/TpmHt2M/Hg82WXHRc/W/2SGo/l1thtDHZWqFq7oi24AjZ4O/CpPSu6ZuYKFkEgmZlFoa7CooAyYmuvnaG8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/darwin-arm64@0.17.19: resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} engines: {node: '>=12'} @@ -485,6 +549,14 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.19.2: + resolution: {integrity: sha512-Ora8JokrvrzEPEpZO18ZYXkH4asCdc1DLdcVy8TGf5eWtPO1Ie4WroEJzwI52ZGtpODy3+m0a2yEX9l+KUn0tA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/darwin-x64@0.17.19: resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} engines: {node: '>=12'} @@ -494,6 +566,14 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.19.2: + resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/freebsd-arm64@0.17.19: resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} @@ -503,6 +583,14 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.19.2: + resolution: {integrity: sha512-YbPY2kc0acfzL1VPVK6EnAlig4f+l8xmq36OZkU0jzBVHcOTyQDhnKQaLzZudNJQyymd9OqQezeaBgkTGdTGeQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/freebsd-x64@0.17.19: resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} engines: {node: '>=12'} @@ -512,6 +600,14 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.19.2: + resolution: {integrity: sha512-nSO5uZT2clM6hosjWHAsS15hLrwCvIWx+b2e3lZ3MwbYSaXwvfO528OF+dLjas1g3bZonciivI8qKR/Hm7IWGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/linux-arm64@0.17.19: resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} engines: {node: '>=12'} @@ -521,6 +617,14 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.19.2: + resolution: {integrity: sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-arm@0.17.19: resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} engines: {node: '>=12'} @@ -530,6 +634,14 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.19.2: + resolution: {integrity: sha512-Odalh8hICg7SOD7XCj0YLpYCEc+6mkoq63UnExDCiRA2wXEmGlK5JVrW50vZR9Qz4qkvqnHcpH+OFEggO3PgTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ia32@0.17.19: resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} engines: {node: '>=12'} @@ -539,6 +651,14 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.19.2: + resolution: {integrity: sha512-mLfp0ziRPOLSTek0Gd9T5B8AtzKAkoZE70fneiiyPlSnUKKI4lp+mGEnQXcQEHLJAcIYDPSyBvsUbKUG2ri/XQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-loong64@0.17.19: resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} @@ -548,6 +668,14 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.19.2: + resolution: {integrity: sha512-hn28+JNDTxxCpnYjdDYVMNTR3SKavyLlCHHkufHV91fkewpIyQchS1d8wSbmXhs1fiYDpNww8KTFlJ1dHsxeSw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-mips64el@0.17.19: resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} engines: {node: '>=12'} @@ -557,6 +685,14 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.19.2: + resolution: {integrity: sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ppc64@0.17.19: resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} engines: {node: '>=12'} @@ -566,6 +702,14 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.19.2: + resolution: {integrity: sha512-dJ0kE8KTqbiHtA3Fc/zn7lCd7pqVr4JcT0JqOnbj4LLzYnp+7h8Qi4yjfq42ZlHfhOCM42rBh0EwHYLL6LEzcw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-riscv64@0.17.19: resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} engines: {node: '>=12'} @@ -575,6 +719,14 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.19.2: + resolution: {integrity: sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-s390x@0.17.19: resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} engines: {node: '>=12'} @@ -584,6 +736,14 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.19.2: + resolution: {integrity: sha512-U+RinR6aXXABFCcAY4gSlv4CL1oOVvSSCdseQmGO66H+XyuQGZIUdhG56SZaDJQcLmrSfRmx5XZOWyCJPRqS7g==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-x64@0.17.19: resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} engines: {node: '>=12'} @@ -593,6 +753,14 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.19.2: + resolution: {integrity: sha512-oxzHTEv6VPm3XXNaHPyUTTte+3wGv7qVQtqaZCrgstI16gCuhNOtBXLEBkBREP57YTd68P0VgDgG73jSD8bwXQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/netbsd-x64@0.17.19: resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} engines: {node: '>=12'} @@ -602,6 +770,14 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.19.2: + resolution: {integrity: sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + /@esbuild/openbsd-x64@0.17.19: resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} engines: {node: '>=12'} @@ -611,6 +787,14 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.19.2: + resolution: {integrity: sha512-S6kI1aT3S++Dedb7vxIuUOb3oAxqxk2Rh5rOXOTYnzN8JzW1VzBd+IqPiSpgitu45042SYD3HCoEyhLKQcDFDw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + /@esbuild/sunos-x64@0.17.19: resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} engines: {node: '>=12'} @@ -620,6 +804,14 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.19.2: + resolution: {integrity: sha512-VXSSMsmb+Z8LbsQGcBMiM+fYObDNRm8p7tkUDMPG/g4fhFX5DEFmjxIEa3N8Zr96SjsJ1woAhF0DUnS3MF3ARw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + /@esbuild/win32-arm64@0.17.19: resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} engines: {node: '>=12'} @@ -629,6 +821,14 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.19.2: + resolution: {integrity: sha512-5NayUlSAyb5PQYFAU9x3bHdsqB88RC3aM9lKDAz4X1mo/EchMIT1Q+pSeBXNgkfNmRecLXA0O8xP+x8V+g/LKg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-ia32@0.17.19: resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} engines: {node: '>=12'} @@ -638,6 +838,14 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.19.2: + resolution: {integrity: sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-x64@0.17.19: resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} engines: {node: '>=12'} @@ -647,6 +855,14 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.19.2: + resolution: {integrity: sha512-tcuhV7ncXBqbt/Ybf0IyrMcwVOAPDckMK9rXNHtF17UTK18OKLpg08glminN06pt2WCoALhXdLfSPbVvK/6fxw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@eslint/eslintrc@1.4.0: resolution: {integrity: sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -701,6 +917,18 @@ packages: react: 18.2.0 dev: false + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + /@isaacs/string-locale-compare@1.1.0: resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} dev: true @@ -730,6 +958,10 @@ packages: /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + /@jridgewell/trace-mapping@0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: @@ -1929,6 +2161,13 @@ packages: typescript: 4.8.4 dev: true + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + /@pkgr/utils@2.3.1: resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -2494,6 +2733,11 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -2506,6 +2750,11 @@ packages: dependencies: color-convert: 2.0.1 + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -2974,6 +3223,7 @@ packages: /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + requiresBuild: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -3234,7 +3484,7 @@ packages: normalize-path: 3.0.0 schema-utils: 4.0.0 serialize-javascript: 6.0.0 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.19.2) dev: true /core-js-pure@3.26.1: @@ -3283,7 +3533,7 @@ packages: postcss-value-parser: 4.2.0 schema-utils: 2.7.1 semver: 7.3.8 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.19.2) dev: false /cssesc@3.0.0: @@ -3520,6 +3770,10 @@ packages: /earcut@2.2.4: resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true @@ -3541,7 +3795,6 @@ packages: /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: false /emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} @@ -3688,6 +3941,35 @@ packages: '@esbuild/win32-x64': 0.17.19 dev: true + /esbuild@0.19.2: + resolution: {integrity: sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.19.2 + '@esbuild/android-arm64': 0.19.2 + '@esbuild/android-x64': 0.19.2 + '@esbuild/darwin-arm64': 0.19.2 + '@esbuild/darwin-x64': 0.19.2 + '@esbuild/freebsd-arm64': 0.19.2 + '@esbuild/freebsd-x64': 0.19.2 + '@esbuild/linux-arm': 0.19.2 + '@esbuild/linux-arm64': 0.19.2 + '@esbuild/linux-ia32': 0.19.2 + '@esbuild/linux-loong64': 0.19.2 + '@esbuild/linux-mips64el': 0.19.2 + '@esbuild/linux-ppc64': 0.19.2 + '@esbuild/linux-riscv64': 0.19.2 + '@esbuild/linux-s390x': 0.19.2 + '@esbuild/linux-x64': 0.19.2 + '@esbuild/netbsd-x64': 0.19.2 + '@esbuild/openbsd-x64': 0.19.2 + '@esbuild/sunos-x64': 0.19.2 + '@esbuild/win32-arm64': 0.19.2 + '@esbuild/win32-ia32': 0.19.2 + '@esbuild/win32-x64': 0.19.2 + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -4151,6 +4433,14 @@ packages: optional: true dev: true + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -4358,6 +4648,18 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + /glob@10.3.4: + resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.1 + minimatch: 9.0.3 + minipass: 7.0.3 + path-scurry: 1.10.1 + dev: true + /glob@7.1.4: resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==} dependencies: @@ -4946,6 +5248,15 @@ packages: engines: {node: '>=0.10.0'} dev: true + /jackspeak@2.3.1: + resolution: {integrity: sha512-4iSY3Bh1Htv+kLhiiZunUhQ+OYXIn0ze3ulq8JeWrFKmhPAJSySV2+kdtRh2pGcCeF0s6oR8Oc+pYZynJj4t8A==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + /jake@10.8.5: resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} engines: {node: '>=10'} @@ -4965,6 +5276,11 @@ packages: merge-stream: 2.0.0 supports-color: 8.1.1 + /joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + dev: true + /js-cookie@2.2.1: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} dev: false @@ -5267,6 +5583,11 @@ packages: js-tokens: 4.0.0 dev: false + /lru-cache@10.0.1: + resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} + engines: {node: 14 || >=16.14} + dev: true + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -5291,6 +5612,13 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true + /magic-string@0.30.3: + resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -5434,6 +5762,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -5506,6 +5841,11 @@ packages: yallist: 4.0.0 dev: true + /minipass@7.0.3: + resolution: {integrity: sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} @@ -6196,6 +6536,14 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.0.1 + minipass: 7.0.3 + dev: true + /path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} engines: {node: '>=4'} @@ -6750,6 +7098,46 @@ packages: dependencies: glob: 7.2.3 + /rimraf@5.0.1: + resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.4 + dev: true + + /rollup-plugin-dts@6.0.1(rollup@3.28.1)(typescript@5.1.6): + resolution: {integrity: sha512-XJbCldVrp4TLc2Hg4DfrRiJgzJ73uhZB0sPSDizgdlrhSJ1bsIkkRMkwRKNQYgkbfMz4CHLdbnFKVivHE0vsPA==} + engines: {node: '>=16'} + peerDependencies: + rollup: ^3.25 + typescript: ^4.5 || ^5.0 + dependencies: + magic-string: 0.30.3 + rollup: 3.28.1 + typescript: 5.1.6 + optionalDependencies: + '@babel/code-frame': 7.22.13 + dev: true + + /rollup-plugin-esbuild@5.0.0(esbuild@0.19.2)(rollup@3.28.1): + resolution: {integrity: sha512-1cRIOHAPh8WQgdQQyyvFdeOdxuiyk+zB5zJ5+YOwrZP4cJ0MT3Fs48pQxrZeyZHcn+klFherytILVfE4aYrneg==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + peerDependencies: + esbuild: '>=0.10.1' + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.28.1) + debug: 4.3.4 + es-module-lexer: 1.3.0 + esbuild: 0.19.2 + joycon: 3.1.1 + jsonc-parser: 3.2.0 + rollup: 3.28.1 + transitivePeerDependencies: + - supports-color + dev: true + /rollup-plugin-external-globals@0.6.1(rollup@2.79.1): resolution: {integrity: sha512-mlp3KNa5sE4Sp9UUR2rjBrxjG79OyZAh/QC18RHIjM+iYkbBwNXSo8DHRMZWtzJTrH8GxQ+SJvCTN3i14uMXIA==} peerDependencies: @@ -6851,7 +7239,7 @@ packages: sass: 1.54.9 schema-utils: 3.1.1 semver: 7.3.8 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.19.2) dev: false /sass@1.54.9: @@ -7038,6 +7426,11 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -7162,6 +7555,15 @@ packages: strip-ansi: 6.0.1 dev: true + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + /string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: @@ -7209,6 +7611,13 @@ packages: dependencies: ansi-regex: 5.0.1 + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -7253,7 +7662,7 @@ packages: dependencies: loader-utils: 2.0.0 schema-utils: 2.7.1 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.19.2) dev: false /styled-jsx@5.1.0(react@18.2.0): @@ -7348,7 +7757,7 @@ packages: uuid: 3.4.0 dev: true - /terser-webpack-plugin@5.3.9(webpack@5.88.2): + /terser-webpack-plugin@5.3.9(esbuild@0.19.2)(webpack@5.88.2): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -7365,11 +7774,12 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.17 + esbuild: 0.19.2 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.19.2 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.19.2) /terser@5.19.2: resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} @@ -7812,7 +8222,7 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - /webpack@5.88.2: + /webpack@5.88.2(esbuild@0.19.2): resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -7843,7 +8253,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.88.2) + terser-webpack-plugin: 5.3.9(esbuild@0.19.2)(webpack@5.88.2) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -7903,6 +8313,15 @@ packages: strip-ansi: 6.0.1 dev: true + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} diff --git a/vite-example/src/index.ts b/vite-example/src/index.ts index 5727687..f04f659 100644 --- a/vite-example/src/index.ts +++ b/vite-example/src/index.ts @@ -25,7 +25,7 @@ ArcGisMapServerImageryProvider.fromUrl('https://services.arcgisonline.com/ArcGIS const provider: any = await TIFFImageryProvider.fromUrl('https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/56/J/NP/2023/4/S2A_56JNP_20230410_0_L2A/TCI.tif', { enablePickFeatures: true, projFunc: (code) => { - if (![4326].includes(code)) { + if (![4326, 3857, 900913].includes(code)) { { try { let prj = proj4("EPSG:4326", `EPSG:${code}`, )