diff --git a/README.md b/README.md index 0bf14deee..7c6820011 100644 --- a/README.md +++ b/README.md @@ -181,8 +181,8 @@ If you need even more flexibility, you need to dig into the Vue files and their ### Basemaps The file `basemaps.config.js` contains the configuration for the basemaps. -You can update either just the `BASEMAPS` object or you can write a custom function `configureBasemap` that returns the desired options for [vue2-leaflet](https://vue2-leaflet.netlify.app/). -[XYZ](https://vue2-leaflet.netlify.app/components/LTileLayer.html#props) and [WMS](https://vue2-leaflet.netlify.app/components/LWMSTileLayer.html#props) basemaps are supported and have different options that you can set. +You can update either just the `BASEMAPS` object or you can write a custom function `configureBasemap` that returns the desired options for OpenLayers. +XYZ, WMTS, and WMS basemaps are supported and have different options that you can set. ### Actions diff --git a/basemaps.config.js b/basemaps.config.js index e6e5f464d..667e00890 100644 --- a/basemaps.config.js +++ b/basemaps.config.js @@ -1,74 +1,91 @@ -import { CRS } from 'leaflet'; -import STAC from './src/models/stac'; +import { Collection, Item } from './src/models/stac'; import Utils from './src/utils'; const USGS_ATTRIBUTION = 'USGS Astrogeology'; -const WMS = 'LWMSTileLayer'; -const XYZ = 'LTileLayer'; +const WMS = 'TileWMS'; +const XYZ = 'XYZ'; +// All options (except for 'is') follow the OpenLayers options for the respective source class. +// Projections (except for EPSG:3857 and EPSG:4326) must be listed in the `crs` array in the config.js. +// +// There's a layerCreated callback that can be used to modify the layer and source after it has been created: +// async layerCreated(Layer layer, Source source) => Layer const BASEMAPS = { - earth: { - url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', - name: 'OpenStreetMap', - is: XYZ, - attribution: '© OpenStreetMap contributors.' - }, - europa: { - baseUrl: 'https://planetarymaps.usgs.gov/cgi-bin/mapserv?map=/maps/jupiter/europa_simp_cyl.map', - is: WMS, - name: 'USGS Europa', - attribution: USGS_ATTRIBUTION, - crs: CRS.EPSG4326, - format: 'image/png', - layers: 'GALILEO_VOYAGER' - }, - mars: { - baseUrl: 'https://planetarymaps.usgs.gov/cgi-bin/mapserv?map=/maps/mars/mars_simp_cyl.map', - is: WMS, - name: 'USGS Mars', - attribution: USGS_ATTRIBUTION, - crs: CRS.EPSG4326, - format: 'image/png', - layers: 'MDIM21' - }, - moon: { - baseUrl: 'https://planetarymaps.usgs.gov/cgi-bin/mapserv?map=/maps/earth/moon_simp_cyl.map', - is: WMS, - name: 'USGS Moon', - attribution: USGS_ATTRIBUTION, - crs: CRS.EPSG4326, - format: 'image/png', - layers: 'LROC_WAC' - } + earth: [ + { + url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', + is: XYZ, + title: 'OpenStreetMap', + attributions: '© OpenStreetMap contributors.', + projection: "EPSG:3857" + } + ], + europa: [ + { + url: 'https://planetarymaps.usgs.gov/cgi-bin/mapserv?map=/maps/jupiter/europa_simp_cyl.map', + is: WMS, + title: 'USGS Europa', + attributions: USGS_ATTRIBUTION, + projection: 'EPSG:4326', + params: { + FORMAT: 'image/png', + LAYERS: 'GALILEO_VOYAGER' + } + }, + ], + mars: [ + { + url: 'https://planetarymaps.usgs.gov/cgi-bin/mapserv?map=/maps/mars/mars_simp_cyl.map', + is: WMS, + title: 'USGS Mars', + attributions: USGS_ATTRIBUTION, + projection: 'EPSG:4326', + params: { + FORMAT: 'image/png', + LAYERS: 'MDIM21' + } + } + ], + moon: [ + { + url: 'https://planetarymaps.usgs.gov/cgi-bin/mapserv?map=/maps/earth/moon_simp_cyl.map', + is: WMS, + title: 'USGS Moon', + attributions: USGS_ATTRIBUTION, + projection: 'EPSG:4326', + params: { + FORMAT: 'image/png', + LAYERS: 'LROC_WAC' + } + } + ], }; -/** - * @typedef BasemapOptions - * @type {Object} - * @property {string} is Component: LWMSTileLayer or LTileLayer - * @see https://vue2-leaflet.netlify.app/components/ - */ - /** * * @param {Object} stac The STAC object - * @param {Object} map The Leaflet map object * @param {Object} i18n Vue I18N object * @returns {Array.} */ -export default function configureBasemap(stac, map, i18n) { - let targets = ['earth']; - if (stac instanceof STAC) { - if (stac.isCollection() && Utils.isObject(stac.summaries) && Array.isArray(stac.summaries['ssys:targets'])) { - targets = stac.summaries['ssys:targets']; - } - else if (stac.isCollection() && Array.isArray(stac['ssys:targets'])) { - targets = stac['ssys:targets']; - } - else if (stac.isItem() && Array.isArray(stac.properties['ssys:targets'])) { - targets = stac.properties['ssys:targets']; - } +export default function configureBasemap(stac, i18n) { + let targets; + if (stac instanceof Collection) { + targets = stac.getSummary('ssys:targets'); + } + if (!targets) { + targets = stac.getMetadata('ssys:targets'); + } + if (!targets) { + targets = ['earth']; } - return targets.map(target => BASEMAPS[target.toLowerCase()]); + let layers = []; + for (const target of targets) { + const maps = BASEMAPS[target.toLowerCase()]; + if (!Array.isArray(maps)) { + continue; + } + layers = layers.concat(maps); + } + return layers; }; diff --git a/config.js b/config.js index 68ecd09cc..3c6b17449 100644 --- a/config.js +++ b/config.js @@ -27,9 +27,9 @@ module.exports = { "id" ], apiCatalogPriority: null, - useTileLayerAsFallback: true, + useTileLayerAsFallback: false, displayGeoTiffByDefault: false, - buildTileUrlTemplate: ({href, asset}) => "https://tiles.rdnt.io/tiles/{z}/{x}/{y}@2x?url=" + encodeURIComponent(href), + buildTileUrlTemplate: null, stacProxyUrl: null, pathPrefix: "/", historyMode: "history", @@ -38,16 +38,15 @@ module.exports = { showKeywordsInItemCards: false, showKeywordsInCatalogCards: false, showThumbnailsAsAssets: false, - geoTiffResolution: 128, redirectLegacyUrls: false, itemsPerPage: 12, maxItemsPerPage: 1000, defaultThumbnailSize: null, - maxPreviewsOnMap: 50, crossOriginMedia: null, requestHeaders: {}, requestQueryParameters: {}, socialSharing: ['email', 'bsky', 'mastodon', 'x'], preprocessSTAC: null, - authConfig: null + authConfig: null, + crs: {} }; diff --git a/config.schema.json b/config.schema.json index 3ea5286ca..1716a0919 100644 --- a/config.schema.json +++ b/config.schema.json @@ -152,12 +152,6 @@ "boolean" ] }, - "geoTiffResolution": { - "type": [ - "integer" - ], - "minimum": 1 - }, "redirectLegacyUrls": { "type": [ "boolean" @@ -188,12 +182,6 @@ ] } }, - "maxPreviewsOnMap": { - "type": [ - "integer" - ], - "minimum": 1 - }, "crossOriginMedia": { "type": [ "string", @@ -243,6 +231,11 @@ "$ref": "https://stac-extensions.github.io/authentication/v1.1.0/schema.json" } ] + }, + "crs": { + "type": [ + "object" + ] } } } diff --git a/docs/options.md b/docs/options.md index 04e2c4fb9..a8bdcb162 100644 --- a/docs/options.md +++ b/docs/options.md @@ -4,6 +4,7 @@ STAC Browser exposes a wide variety of configuration options. The following options can be provided in various ways to STAC Browser, either when running it or when building it. The following ways to set config options are possible: + - Customize the **[config file](../config.js)** (recommended) - Additionally, some options can be [provided through the **root catalog**](../README.md#customize-through-root-catalog) for consistency across multiple deployments (recommended) - Append them to the **CLI** command as parameter (see [Get Started](../README.md#get-started) for an example) @@ -13,51 +14,57 @@ The following ways to set config options are possible: Enable this by removing the `` around the `` in the [`public/index.html`](../public/index.html). Then run the build procedure and after completion, you can fill the `dist/config.js` with any options that you want to customize. -**The following options are available:** - -- [catalogUrl](#catalogurl) -- [catalogTitle](#catalogtitle) -- [allowExternalAccess](#allowexternalaccess) -- [allowedDomains](#alloweddomains) -- [apiCatalogPriority](#apicatalogpriority) -- [detectLocaleFromBrowser](#detectlocalefrombrowser) -- [storeLocale](#storelocale) -- [locale](#locale) -- [fallbackLocale](#fallbacklocale) -- [supportedLocales](#supportedlocales) -- [historyMode](#historymode) - - [`history`](#history) - - [`hash`](#hash) -- [pathPrefix](#pathprefix) -- [stacProxyUrl](#stacproxyurl) -- [buildTileUrlTemplate](#buildtileurltemplate) -- [useTileLayerAsFallback](#usetilelayerasfallback) -- [displayGeoTiffByDefault](#displaygeotiffbydefault) -- [redirectLegacyUrls](#redirectlegacyurls) -- [itemsPerPage](#itemsperpage) -- [maxItemsPerPage](#maxitemsperpage) -- [maxPreviewsOnMap](#maxpreviewsonmap) -- [cardViewMode](#cardviewmode) -- [cardViewSort](#cardviewsort) -- [showKeywordsInItemCards](#showkeywordsinitemcards) -- [showKeywordsInCatalogCards](#showkeywordsincatalogcards) -- [showThumbnailsAsAssets](#showthumbnailsasassets) -- [defaultThumbnailSize](#defaultthumbnailsize) -- [crossOriginMedia](#crossoriginmedia) -- [requestHeaders](#requestheaders) -- [requestQueryParameters](#requestqueryparameters) -- [socialSharing](#socialsharing) -- [authConfig](#authconfig) - - [API Keys](#api-keys) - - [Example 1: HTTP Request Header Value](#example-1-http-request-header-value) - - [Example 2: Query Parameter Value](#example-2-query-parameter-value) - - [HTTP Basic](#http-basic) - - [OpenID Connect](#openid-connect) - - [Example](#example) -- [preprocessSTAC](#preprocessstac) - - [Example: Update root catalog](#example-update-root-catalog) - -## catalogUrl +## Table of Contents + +- [Basic configuration](#basic-configuration) + - [catalogUrl](#catalogurl) + - [catalogTitle](#catalogtitle) + - [apiCatalogPriority](#apicatalogpriority) +- [Deployment](#deployment) + - [historyMode](#historymode) + - [`history`](#history) + - [`hash`](#hash) + - [pathPrefix](#pathprefix) + - [stacProxyUrl](#stacproxyurl) + - [redirectLegacyUrls](#redirectlegacyurls) +- [Security](#security) + - [allowExternalAccess](#allowexternalaccess) + - [allowedDomains](#alloweddomains) + - [crossOriginMedia](#crossoriginmedia) + - [authConfig](#authconfig) + - [API Keys](#api-keys) + - [HTTP Basic](#http-basic) + - [OpenID Connect](#openid-connect) +- [Internationalization and Localization](#internationalization-and-localization) + - [locale](#locale) + - [fallbackLocale](#fallbacklocale) + - [supportedLocales](#supportedlocales) + - [detectLocaleFromBrowser](#detectlocalefrombrowser) + - [storeLocale](#storelocale) +- [Mapping](#mapping) + - [buildTileUrlTemplate](#buildtileurltemplate) + - [useTileLayerAsFallback](#usetilelayerasfallback) + - [displayGeoTiffByDefault](#displaygeotiffbydefault) + - [crs](#crs) +- [User Interface](#user-interface) + - [itemsPerPage](#itemsperpage) + - [maxItemsPerPage](#maxitemsperpage) + - [cardViewMode](#cardviewmode) + - [cardViewSort](#cardviewsort) + - [showKeywordsInItemCards](#showkeywordsinitemcards) + - [showKeywordsInCatalogCards](#showkeywordsincatalogcards) + - [showThumbnailsAsAssets](#showthumbnailsasassets) + - [defaultThumbnailSize](#defaultthumbnailsize) +- [Service Integration](#service-integration) + - [socialSharing](#socialsharing) +- [Advanced](#advanced) + - [preprocessSTAC](#preprocessstac) + - [requestHeaders](#requestheaders) + - [requestQueryParameters](#requestqueryparameters) + +## Basic configuration + +### catalogUrl The URL of the catalog to show by default. @@ -67,83 +74,41 @@ This is usually a URL provided as string, but in the config file you can also pr If `catalogUrl` is empty or set to `null` STAC Browser switches to a mode where it defaults to a screen where you can either insert a catalog URL or select a catalog from [stacindex.org](https://stacindex.org). -## catalogTitle +### catalogTitle The default title shown if no title can be read from the root STAC catalog. -## allowExternalAccess - -This allows or disallows loading and browsing external STAC data. -External STAC data is any data that is not a children of the given `catalogUrl`. -Must be set to `true` if a `catalogUrl` is not given as otherwise you won't be able to browse anything. - -## allowedDomains - -You can list additional domains (e.g. `example.com`) that private data is sent to, e.g. authentication data. -This applies to query paramaters and request headers. - -## apiCatalogPriority +### apiCatalogPriority For STAC APIs there are two potential sources for catalogs and collections: + 1. Collections loaded from `/collections` and detected through the `data` link 2. Childs (i.e. Catalogs and Collections) loaded from various sources and detected through the `child` links By default, STAC Browser loads and shows data from both sources, but tries to eliminate duplicates. If you only want to show the data from one of the sources, you can use this option. The following options are available: + - `collections`: Show only collections - `childs`: Show only children - `null`: Default behavior -## detectLocaleFromBrowser - -If set to `true`, tries to detect the preferred language of the user from the Browser. -Otherwise, defaults to the language set for `locale`. - -## storeLocale - -If set to `true` (default), stores the locale selected by the user in the storage of the browser. -If set to `false`, doesn't store the locale across browser sessions. - -Depending on the browser settings, this may store in either: -- `localeStorage` -- `sessionStorage` -- cookies +## Deployment -In some countries this may have implications with regards to GDPR etc. -If you want to avoid this, disable this setting. +### historyMode -## locale - -The default language to use for STAC Browser, defaults to `en` (English). -The language given here must be present in `supportedLocales`. - -## fallbackLocale - -The language to use if individual phrases are not available in the default language, defaults to `en` (English). -The language given here must be present in `supportedLocales`. - -## supportedLocales - -A list of languages to show in the STAC Browser UI. -The languages given here must have a corresponding JS and JSON file in the `src/locales` folder, -e.g. provide `en` (English) for the files in `src/locales/en`. - -In CLI, please provide the languages separated by a space, e.g. `--supportedLocales en de fr it` - -Please note that only left-to-right languages have been tested. -I'd need help to test support for right-to-left languages. +***build-only option*** -## historyMode +This options handles how navigation between two pages is handled in this single-page application. +There are two options available: -***build-only option*** +#### `history` -### `history` -STAC Browser defaults to _history mode_ (value `history` in the config file), which is based on +STAC Browser defaults to and recommends *history mode* when possible (value `history` in the config file), which is based on [HTML5 History Mode](https://v3.router.vuejs.org/guide/essentials/history-mode.html#html5-history-mode). It gives the best experience and allows search engines to better crawl STAC Browser so that it can be found in search engines. -**History mode requires that you enable custom URL rewriting rules on your host/server**, otherwise people can not reload pages +**History mode requires that you enable custom URL rewriting rules on your host/server**, otherwise people can not reload pages or share URLs without getting a "page not found" error (404). The following link explains the details and provides examples for various common server software: **** @@ -152,12 +117,13 @@ Please note that you can't host any other files in the folder that STAC Browser will redirect all requests to these (sub)-folders and included files to STAC Browser. This also excludes hosting your STAC catalog in the STAC Browser (sub-)folders. -### `hash` -If your host/server doesn't support URL rewriting or you experience other related problems, you can enable _hash mode_. +#### `hash` + +If your host/server doesn't support URL rewriting or you experience other related problems, you can enable *hash mode*. Either set this option to `hash` in the config file or append `--historyMode=hash` when running or building. Known hosts that require hash mode are Amazon S3 and GitHub Pages. -## pathPrefix +### pathPrefix ***build-only option*** @@ -171,7 +137,7 @@ npm run build -- --pathPrefix="/browser/" This will build STAC Browser in a way that it can be hosted at `https://example.com/browser` for example. Using this parameter for the dev server will make STAC Browser available at `http://localhost:8080/browser`. -## stacProxyUrl +### stacProxyUrl **DEPRECATED!** @@ -184,137 +150,44 @@ npm start -- --open --stacProxyUrl=/home/user http://localhost:8888 ``` Notice the format of the value: -* In CLI it is the original location and the proxy location separated by a space character, i.e. `{original} {proxy}` as in the example above. -* In the config file it is a two-element array with the original location as first element and the proxy location as the second element. Set the option to `null` to disable it (default). + +- In CLI it is the original location and the proxy location separated by a space character, i.e. `{original} {proxy}` as in the example above. +- In the config file it is a two-element array with the original location as first element and the proxy location as the second element. Set the option to `null` to disable it (default). In this example, any href contained in the STAC (including link or asset hrefs) will replace any occurrence of `/home/user/` with `http://localhost:8888`. This can also be helpful when proxying a STAC that does not have cors enabled; by using stacProxyUrl you can proxy the original STAC server with one that enables cors and be able to browse that catalog. -## buildTileUrlTemplate - -The option controls the tile layer that is used to render imagery such as (cloud-optimized) GeoTiffs. - -See the [documentation for the corresponding stac-layer option](https://github.com/stac-utils/stac-layer#buildtileurltemplate) for details. - -Please note that this option can only be provided through a config file and is not available via CLI/ENV. - -If the option `useTileLayerAsFallback` is set to `true`, the tile server is only used as a fallback. - -**Note:** This option replaces the v2 options `TILE_SOURCE_TEMPLATE` and `TILE_PROXY_URL`. -The v3-dev option `tileSourceTemplate` has been removed in favor of this option. - -## useTileLayerAsFallback - -Depending on this option, either client-side or server-side rendering of imagery such as (cloud-optimized) GeoTiffs can be enabled/disabled. - -If `buildTileUrlTemplate` is given server-side rendering of GeoTiffs is enabled. -If server-side rendering should only be used as a fallback for client-side rendering, enable the boolean `useTileLayerAsFallback` option. - -To clarify the behavior, please have a look at the following table: - -| `useTileLayerAsFallback` | `buildTileUrlTemplate` | primary imagery renderer | fallback imagery renderer | -| ----- | ---------------------- | ----------- | ----------- | -| true | function | client-side | tile-server | -| false | function | tile-server | none | -| true | null | client-side | none | -| false | null | none | none | - -By default, client-side rendering is enabled. A server-side fallback is provided via the [tiles.rdnt.io](https://github.com/radiantearth/tiles.rdnt.io) project, which serves publicly accessible GeoTiffs as tile layers. - -## displayGeoTiffByDefault - -If set to `true`, the map also shows non-cloud-optimized GeoTiff files by default. Otherwise (`false`, default), it only shows COGs and you can only enforce showing GeoTiffs to be loaded with the "Show on map" button but they are never loaded automatically. -Loading non-cloud-optimized GeoTiffs only works reliably for smaller files (< 1MB). It may also work for larger files, but it is depending a lot on the underlying client hardware and software. - -## redirectLegacyUrls +### redirectLegacyUrls **DEPRECATED!** -If you are updating from on old version of STAC Browser, you can set this option to `true` to redirect users from the old "unreadable" URLs to the new human-readable URLs. - -## itemsPerPage - -The number of items requested and shown per page by default. Only applies to APIs that support the `limit` query parameter. - -## maxItemsPerPage - -The maximum number of items per page that a user can request through the `limit` query parameter (`1000` by default). - -## maxPreviewsOnMap - -The maximum number of previews (thumbnails or overviews) of items that will be shown on the map when on Catalog or Collection pages. - -## cardViewMode - -The default view mode for lists of catalogs/collections. Either `"list"` or `"cards"` (default). - -## cardViewSort - -The default sorting for lists of catalogs/collections or items. One of: - -- `"asc"`: ascending sort (default) -- `"desc"`: descending sort -- `null`: sorted as in the source files +If you are updating from an old version of STAC Browser, you can set this option to `true` to redirect users from the old "unreadable" URLs to the new human-readable URLs. -Doesn't apply when API search filters are applied. - -## showKeywordsInItemCards - -Enables keywords in the lists of items if set to `true`. Defaults to `false`. +## Security -## showKeywordsInCatalogCards +### allowExternalAccess -Enables keywords in the lists of catalogs/collections if set to `true`. Defaults to `false`. - -## showThumbnailsAsAssets - -Defines whether thumbnails are shown in the lists of assets (`true`) or not (`false`, default). +This allows or disallows loading and browsing external STAC data. +External STAC data is any data that is not a child of the given `catalogUrl`. +Must be set to `true` if a `catalogUrl` is not given as otherwise you won't be able to browse anything. -## defaultThumbnailSize +### allowedDomains -The default size \[Height, Width\] for thumbnails which is reserved in card and list views so that the items don't jump when loading the images. -This can be overridden per thumbnail by declaring the [`proj:shape`](https://github.com/stac-extensions/projection/#item-properties-or-asset-fields) on the asset or link. +You can list additional domains (e.g. `example.com`) that private data is sent to, e.g. authentication data. +This applies to query parameters and request headers. -## crossOriginMedia +### crossOriginMedia The value for the [`crossorigin` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin) that is sent when loading images through the browser. Default to `null`. If you encounter issues with loading images, you may want to try setting this to `anonymous`. -## requestHeaders - -***experimental*** - -The headers given in this option are added to all requests that are sent to the selected STAC catalog or API. -This is affected by [`allowedDomains`](#alloweddomains). - -Example: `{'Authorization': 'Bearer 134567984623223'}` adds a Bearer token to the HTTP headers. - -## requestQueryParameters - -***experimental*** - -The query parameters given in this option are added to all requests that are sent to the selected STAC catalog or API. -This is affected by [`allowedDomains`](#alloweddomains). - -Example: `{'f': 'json'}` adds a `f` query parameter to the HTTP URL, e.g. `https://example.com?f=json`. - -## socialSharing - -Lists the social sharing service for which buttons should be shown in the "Share" panel. - -The following services are supported: - -- `email` (Send via e-email) -- `bsky` (Bluesky) -- `mastodon` (Mastodon.social) -- `x` (X, formerly Twitter) - -## authConfig +### authConfig ***experimental*** This allows to enable some authentication methods. Currently the supported methods are: + - API Keys (`type: apiKey`) via query parameter or HTTP Header - HTTP Basic (`type: http`, `scheme: basic`) - OpenID Connect (`type: openIdConnect`) @@ -330,20 +203,20 @@ Please migrate to the new configuration options now. In addition the following properties are supported: -* `formatter` (function|string|null): You can optionally specify a formatter for the query string value or HTTP header value respectively. If the string `"Bearer"` is provided formats as a Bearer token according to RFC 6750. If not given, the token is sent as provided by the user. -* `description` (string|null): Optionally a description that is shown to the user. This should explain how the credentials can be obtained for example. CommonMark is allowed. +- `formatter` (function|string|null): You can optionally specify a formatter for the query string value or HTTP header value respectively. If the string `"Bearer"` is provided formats as a Bearer token according to RFC 6750. If not given, the token is sent as provided by the user. +- `description` (string|null): Optionally a description that is shown to the user. This should explain how the credentials can be obtained for example. CommonMark is allowed. **Note:** You can leave the description empty in the config file and instead provide a localized string with the key `authConfig` -> `description` in the file for custom phrases (`src/locales/custom.js`). Authentication is generally affected by the [`allowedDomains`](#alloweddomains) option. -### API Keys +#### API Keys API keys can be configured to be sent via HTTP header or query parameter: - For query parameters you need to set `in: query` with a respective `name` for the query parameter - For HTTP headers you need to set `in: header` with a respective `name` for the header field -#### Example 1: HTTP Request Header Value +##### Example 1: HTTP Request Header Value ```js { @@ -358,7 +231,7 @@ API keys can be configured to be sent via HTTP header or query parameter: For a given token `123` this results in the following additional HTTP Header: `Authorization: Bearer 123` -#### Example 2: Query Parameter Value +##### Example 2: Query Parameter Value ```js { @@ -371,7 +244,7 @@ For a given token `123` this results in the following additional HTTP Header: For a given token `123` this results in the following query parameter: `https://example.com/stac/catalog.json?API_KEY=123` -### HTTP Basic +#### HTTP Basic HTTP Basic is supported according to [RFC 7617](https://datatracker.ietf.org/doc/html/rfc7617). @@ -384,7 +257,7 @@ HTTP Basic is supported according to [RFC 7617](https://datatracker.ietf.org/doc } ``` -### OpenID Connect +#### OpenID Connect **IMPORTANT: OpenID Connect is only supported if `historyMode` is set to `history`!** @@ -395,7 +268,7 @@ The `client_id` option defaults to `stac-browser`. The redirect URL for the OIDC client must be the STAC Browser URL, e.g. `https://mycompany.com/browser`, plus an appended `/auth`, so for example `https://mycompany.com/browser/auth`. -#### Example +##### Example ```js { @@ -412,18 +285,206 @@ For a given token `123` this results in the following additional HTTP Header: You can change the default behaviour to send it as a Bearer token by providing `in`, `name` and `format`. -## preprocessSTAC +## Internationalization and Localization + +### locale + +The default language to use for STAC Browser, defaults to `en` (English). +The language given here must be present in `supportedLocales`. + +### fallbackLocale + +The language to use if individual phrases are not available in the default language, defaults to `en` (English). +The language given here must be present in `supportedLocales`. + +### supportedLocales + +A list of languages to show in the STAC Browser UI. +The languages given here must have a corresponding JS and JSON file in the `src/locales` folder, +e.g. provide `en` (English) for the files in `src/locales/en`. + +In CLI, please provide the languages separated by a space, e.g. `--supportedLocales en de fr it` + +Please note that only left-to-right languages have been tested. +I'd need help to test support for right-to-left languages. + +### detectLocaleFromBrowser + +If set to `true`, tries to detect the preferred language of the user from the Browser. +Otherwise, defaults to the language set for `locale`. + +### storeLocale + +If set to `true` (default), stores the locale selected by the user in the storage of the browser. +If set to `false`, doesn't store the locale across browser sessions. + +Depending on the browser settings, this may store in either: + +- `localeStorage` +- `sessionStorage` +- cookies + +In some countries this may have implications with regards to GDPR etc. +If you want to avoid this, disable this setting. + +## Mapping + +All the mapping-related options are passed through to [ol-stac](https://m-mohr.github.io/ol-stac/). +More information on these configuration options may be found in the [ol-stac documentation](https://m-mohr.github.io/ol-stac/en/latest/apidoc/module-ol_layer_STAC-STACLayer.html). + +### buildTileUrlTemplate + +This can be used to enable the usage of a tile server. +It allows rendering imagery such as (cloud-optimized) GeoTiffs through a tile server instead of doing the visualization on the client-side. + +If the option `useTileLayerAsFallback` is set to `true`, the tile server is only used as a fallback. + +`buildTileUrlTemplate` is disabled by default (i.e. set to `null`) since v3.4.0. + +You can enable this option by providing a function with a single parameter that returns a tile server template url. +The given function can optionally be async (i.e. return a Promise). +The parameter passed into the function is an [Asset object](https://m-mohr.github.io/stac-js/latest/#asset) as defined in stac-js. + +**Example**: + +```js +buildTileUrlTemplate: (asset) => "https://tiles.rdnt.io/tiles/{z}/{x}/{y}@2x?url=" + encodeURIComponent(asset.getAbsoluteUrl()), +``` + +Please note that this option can only be provided through a config file and is not available via CLI/ENV. + +### useTileLayerAsFallback + +Depending on this option, either client-side or server-side rendering of imagery such as (cloud-optimized) GeoTiffs can be enabled/disabled. + +If `buildTileUrlTemplate` is given, server-side rendering of GeoTiffs is enabled. +If server-side rendering should only be used as a fallback for client-side rendering, enable the boolean `useTileLayerAsFallback` option. + +To clarify the behavior, please have a look at the following table: + +| `useTileLayerAsFallback` | `buildTileUrlTemplate` | primary imagery renderer | fallback imagery renderer | +| ----- | ---------------------- | ----------- | ----------- | +| true | function | client-side | tile-server | +| false | function | tile-server | none | +| true | null | client-side | none | +| false | null | none | none | + +### displayGeoTiffByDefault + +If set to `true`, the map also shows non-cloud-optimized GeoTiff files by default. Otherwise (`false`, default), it only shows COGs and you can only enforce showing GeoTiffs to be loaded with the "Show on map" button but they are never loaded automatically. +Loading non-cloud-optimized GeoTiffs only works reliably for smaller files (< 1MB). It may also work for larger files, but it depends a lot on the underlying client hardware and software. + +### crs + +An object of coordinate reference systems that the system needs to know. +The key is the code for the CRS, the value is the CRS definition as OGC WKT string (WKT2 is not supported). +`EPSG:3857` (Web Mercator) and `EPSG:4326` (WGS 84) don't need to be registered, they are included by default. + +This is primarily useful for CRS that are used for the basemaps (see `basemaps.config.js`). +All CRS not listed here will be requested from an external service over HTTP, which is slower. + +Example for EPSG:2056: + +```js +{ + 'EPSG:2056': 'PROJCS["CH1903+ / LV95",GEOGCS["CH1903+",DATUM["CH1903+",SPHEROID["Bessel 1841",6377397.155,299.1528128,AUTHORITY["EPSG","7004"]],AUTHORITY["EPSG","6150"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4150"]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Center"],PARAMETER["latitude_of_center",46.9524055555556],PARAMETER["longitude_of_center",7.43958333333333],PARAMETER["azimuth",90],PARAMETER["rectified_grid_angle",90],PARAMETER["scale_factor",1],PARAMETER["false_easting",2600000],PARAMETER["false_northing",1200000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","2056"]]' +} +``` + +## User Interface + +### itemsPerPage + +The number of items requested and shown per page by default. Only applies to APIs that support the `limit` query parameter. + +This is applied to the following requests: + +- `GET /collection/*/items` +- `GET /search` +- Only in Collection Search: `GET /collections` (i.e. **not** applied to the default collection list request) + +### maxItemsPerPage + +The maximum number of items per page that a user can request through the `limit` query parameter (`1000` by default). + +### cardViewMode + +The default view mode for lists of catalogs/collections. Either `"list"` or `"cards"` (default). + +### cardViewSort + +The default sorting for lists of catalogs/collections or items. One of: + +- `"asc"`: ascending sort (default) +- `"desc"`: descending sort +- `null`: sorted as in the source files + +Doesn't apply when API search filters are applied. +Also doesn't apply when pagination on the server-side is enabled. + +### showKeywordsInItemCards + +Enables keywords in the lists of items if set to `true`. Defaults to `false`. + +### showKeywordsInCatalogCards + +Enables keywords in the lists of catalogs/collections if set to `true`. Defaults to `false`. + +### showThumbnailsAsAssets + +Defines whether thumbnails are shown in the lists of assets (`true`) or not (`false`, default). + +### defaultThumbnailSize + +The default size \[Height, Width\] for thumbnails which is reserved in card and list views so that the items don't jump when loading the images. +This can be overridden per thumbnail by declaring the [`proj:shape`](https://github.com/stac-extensions/projection/#item-properties-or-asset-fields) on the asset or link. + +## Service Integration + +### socialSharing + +Lists the social sharing service for which buttons should be shown in the "Share" panel. + +The following services are supported: + +- `email` (Send via e-email) +- `bsky` (Bluesky) +- `mastodon` (Mastodon.social) +- `x` (X, formerly Twitter) + +## Advanced + +### preprocessSTAC ***experimental*** This allows to preprocess the STAC Items, Catalogs and Collections that are requested from the servers using a function. The function receives two parameters: -* `stac` (object of type `STAC`) -* `state` (the vuex state) + +- `stac` (object of type `STAC`) +- `state` (the vuex state) Please note that this option can only be provided through a config file and is not available via CLI/ENV. -### Example: Update root catalog +### requestHeaders + +***experimental*** + +The headers given in this option are added to all requests that are sent to the selected STAC catalog or API. +This is affected by [`allowedDomains`](#alloweddomains). + +Example: `{'Authorization': 'Bearer 134567984623223'}` adds a Bearer token to the HTTP headers. + +### requestQueryParameters + +***experimental*** + +The query parameters given in this option are added to all requests that are sent to the selected STAC catalog or API. +This is affected by [`allowedDomains`](#alloweddomains). + +Example: `{'f': 'json'}` adds a `f` query parameter to the HTTP URL, e.g. `https://example.com?f=json`. + +#### Example: Update root catalog Some root catalogs in implementations don't have very useful titles, descriptions and are not a nice "intro" for new users. Thus, it may make sense to change the root catalog to provide more useful information. diff --git a/package-lock.json b/package-lock.json index 352a4771a..b1c5aa954 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,19 @@ { "name": "@radiantearth/stac-browser", - "version": "3.3.5", + "version": "3.4.0-dev", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@radiantearth/stac-browser", - "version": "3.3.5", + "version": "3.4.0-dev", "license": "ISC", "dependencies": { "@apidevtools/json-schema-ref-parser": "^14.0.0", "@musement/iso-duration": "^1.0.0", "@radiantearth/stac-fields": "~1.5.2", "@radiantearth/stac-migrate": "~2.0.2", + "@turf/mask": "^7.2.0", "ajv-i18n": "^4.2.0", "axios": "^1.2.0", "bootstrap-vue": "^2.21.2", @@ -20,11 +21,13 @@ "chart.js": "^4.3.0", "commonmark": "^0.31.2", "core-js": "^3.6.5", - "leaflet": "^1.8.0", "node-polyfill-webpack-plugin": "^4.0.0", "oidc-client-ts": "^3.0.1", + "ol": "~10.4.0", + "ol-stac": "^1.0.0-rc.9", + "proj4": "^2.15.0", "remove-markdown": "^0.6.2", - "stac-layer": "^0.15.0", + "stac-js": "~0.1.4", "stac-node-validator": "2.0.0-beta.18", "streamsaver-js": "^2.0.7", "urijs": "^1.19.11", @@ -36,8 +39,6 @@ "vue-read-more-smooth": "^0.1.8", "vue-router": "^3.2.0", "vue2-datepicker": "^3.9.2", - "vue2-leaflet": "^2.7.0", - "vue2-leaflet-fullscreen": "^1.0.1", "vuex": "^3.4.0", "yargs": "^17.0.1" }, @@ -1996,12 +1997,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@mapbox/tilebelt": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mapbox/tilebelt/-/tilebelt-1.0.2.tgz", - "integrity": "sha512-tGJN2VIgWrXqBTPIxFVklklIpcy6ss8W5ouq+cjNLXPXFraRaDR4Ice+5Q8/uLX+6aH23lWBMydOIn8PcdVcpA==", - "license": "MIT" - }, "node_modules/@multiformats/base-x": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz", @@ -2409,6 +2404,12 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/@petamoriken/float16": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.9.2.tgz", + "integrity": "sha512-VgffxawQde93xKxT3qap3OH+meZf7VaSB5Sqd4Rqc+FP5alWbpOyan/7tRbOAvynjpG3GpdtAuGU/NdhQpmrog==", + "license": "MIT" + }, "node_modules/@polka/url": { "version": "1.0.0-next.29", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", @@ -2540,47 +2541,44 @@ "node": ">=10.13.0" } }, - "node_modules/@turf/bbox-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-6.5.0.tgz", - "integrity": "sha512-+/r0NyL1lOG3zKZmmf6L8ommU07HliP4dgYToMoTxqzsWzyLjaj/OzgQ8rBmv703WJX+aS6yCmLuIhYqyufyuw==", + "node_modules/@turf/clone": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-7.2.0.tgz", + "integrity": "sha512-JlGUT+/5qoU5jqZmf6NMFIoLDY3O7jKd53Up+zbpJ2vzUp6QdwdNzwrsCeONhynWM13F0MVtPXH4AtdkrgFk4g==", "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0" + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" }, "funding": { "url": "https://opencollective.com/turf" } }, - "node_modules/@turf/boolean-point-in-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz", - "integrity": "sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==", + "node_modules/@turf/helpers": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.2.0.tgz", + "integrity": "sha512-cXo7bKNZoa7aC7ydLmUR02oB3IgDe7MxiPuRz3cCtYQHn+BJ6h1tihmamYDWWUlPHgSNF0i3ATc4WmDECZafKw==", "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" }, "funding": { "url": "https://opencollective.com/turf" } }, - "node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "license": "MIT", - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/invariant": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz", - "integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==", + "node_modules/@turf/mask": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/mask/-/mask-7.2.0.tgz", + "integrity": "sha512-ulJ6dQqXC0wrjIoqFViXuMUdIPX5Q6GPViZ3kGfeVijvlLM7kTFBsZiPQwALSr5nTQg4Ppf3FD0Jmg8IErPrgA==", "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0" + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "polyclip-ts": "^0.16.8", + "tslib": "^2.8.1" }, "funding": { "url": "https://opencollective.com/turf" @@ -2729,16 +2727,6 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, - "node_modules/@types/leaflet": { - "version": "1.9.19", - "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.19.tgz", - "integrity": "sha512-pB+n2daHcZPF2FDaWa+6B0a0mSDf4dPU35y5iTXsx7x/PzzshiX5atYiS1jlBn43X7XvM8AP+AB26lnSk0J4GA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/geojson": "*" - } - }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", @@ -2800,6 +2788,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/rbush": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/rbush/-/rbush-4.0.0.tgz", + "integrity": "sha512-+N+2H39P8X+Hy1I5mC6awlTX54k3FhiUmvt7HWzGJZvF+syUAAxP/stwppS8JE84YHqFgRMv6fCy31202CMFxQ==", + "license": "MIT" + }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", @@ -3573,83 +3567,6 @@ "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", "license": "MIT" }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "license": "ISC", - "peer": true - }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-module-context/node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-module-context/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "license": "MIT", - "peer": true - }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", @@ -3758,54 +3675,6 @@ "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "license": "MIT", - "peer": true - }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", @@ -3920,16 +3789,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, "node_modules/ajv-formats": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", @@ -4026,7 +3885,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", @@ -4036,13 +3895,6 @@ "node": ">= 8" } }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "license": "ISC", - "peer": true - }, "node_modules/arch": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", @@ -4064,48 +3916,12 @@ ], "license": "MIT" }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "license": "MIT" - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -4123,16 +3939,6 @@ "node": ">=8" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", @@ -4163,16 +3969,6 @@ "util": "^0.12.5" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -4180,20 +3976,6 @@ "dev": true, "license": "MIT" }, - "node_modules/async-each": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", - "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -4210,19 +3992,6 @@ "node": ">= 4.0.0" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "license": "(MIT OR Apache-2.0)", - "peer": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/autoprefixer": { "version": "10.4.21", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", @@ -4400,27 +4169,9 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, "license": "MIT" }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "license": "MIT", - "peer": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/base-x": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", @@ -4430,19 +4181,6 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -4474,6 +4212,16 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bignumber.js": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.0.tgz", + "integrity": "sha512-EM7aMFTXbptt/wZdMlBv2t8IViwQL+h6SLHosp8Yf0dqJMTnY6iL32opnAB6kAdL0SZPuvcAzFr31o0c/R3/RA==", "license": "MIT", "engines": { "node": "*" @@ -4483,7 +4231,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4492,17 +4240,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -4519,6 +4256,7 @@ "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, "license": "MIT" }, "node_modules/bn.js": { @@ -4641,6 +4379,7 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -4891,105 +4630,6 @@ "node": ">= 0.8" } }, - "node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "license": "ISC", - "peer": true, - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/cacache/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/cacache/node_modules/ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "license": "ISC", - "peer": true, - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/cacache/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "license": "ISC", - "peer": true - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/calc-image-stats": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/calc-image-stats/-/calc-image-stats-0.9.0.tgz", - "integrity": "sha512-gmcoP0Y22MBuh6XGKt0F5ynaZICCgmo6ktQUugaJB1Ep5sqvbVbPbyTVPkqwiPqnFqyEGIMNXTMgObN7li21TQ==", - "license": "CC0-1.0", - "dependencies": { - "calc-stats": "^2.2.0", - "guess-image-layout": "^0.1.0", - "xdim": "^1.10.1" - } - }, - "node_modules/calc-stats": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/calc-stats/-/calc-stats-2.6.0.tgz", - "integrity": "sha512-EbpayI2/K1ZaCGnhlWdCR6hBlQjz2+bvhQaHaUannLW8AjU3wZ+U3e+4/SiVfcuj0iNG1eA89dtG4G+86zHRPw==", - "license": "CC0-1.0", - "dependencies": { - "iter-fun": "^0.2.0", - "mediana": "^1.0.3", - "preciso": "^0.12.2", - "quick-resolve": "^0.0.1" - } - }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -5041,6 +4681,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -5152,18 +4793,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "license": "ISC", - "peer": true - }, - "node_modules/chroma-js": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-1.4.1.tgz", - "integrity": "sha512-jTwQiT859RTFN/vIf7s+Vl/Z2LcMrvMv3WUFmd/4u76AdlFC0NTNgqEEFPcRiHmAswPsMiQEDZLM8vX8qXpZNQ==" - }, "node_modules/chrome-trace-event": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", @@ -5193,49 +4822,6 @@ "node": ">= 0.10" } }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "license": "MIT", - "peer": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/clean-css": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", @@ -5395,20 +4981,6 @@ "node": ">=6" } }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "license": "MIT", - "peer": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -5427,21 +4999,55 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" + "node_modules/color-parse": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-2.0.2.tgz", + "integrity": "sha512-eCtOz5w5ttWIUcaKLiktF+DxZO1R9KLNY/xhbV6CkhM7sR3GhVghmt6X6yOnzeaM24po+Z9/S1apbXMwA3Iepw==", + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + } }, - "node_modules/combined-stream": { + "node_modules/color-parse/node_modules/color-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz", + "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/color-rgba": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color-rgba/-/color-rgba-3.0.0.tgz", + "integrity": "sha512-PPwZYkEY3M2THEHHV6Y95sGUie77S7X8v+h1r6LSAPF3/LL2xJ8duUXSrkic31Nzc4odPwHgUbiX/XuTYzQHQg==", + "license": "MIT", + "dependencies": { + "color-parse": "^2.0.0", + "color-space": "^2.0.0" + } + }, + "node_modules/color-space": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/color-space/-/color-space-2.3.2.tgz", + "integrity": "sha512-BcKnbOEsOarCwyoLstcoEztwT0IJxqqQkNwDuA3a65sICvvHL2yoeV13psoDFh5IuiOMnIOKdQDwB4Mk3BypiA==", + "license": "Unlicense" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", @@ -5467,6 +5073,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true, "license": "MIT" }, "node_modules/commonmark": { @@ -5504,16 +5111,6 @@ "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", "license": "MIT" }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -5567,64 +5164,9 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, "license": "MIT" }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "license": "MIT", - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT", - "peer": true - }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/concat-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT", - "peer": true - }, - "node_modules/concat-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", @@ -5712,46 +5254,6 @@ "dev": true, "license": "MIT" }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "peer": true, - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "node_modules/copy-concurrently/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/copy-webpack-plugin": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", @@ -5927,15 +5429,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "license": "MIT" }, - "node_modules/cross-fetch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", - "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -6253,13 +5746,6 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, - "node_modules/cyclist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz", - "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==", - "license": "MIT", - "peer": true - }, "node_modules/date-format-parse": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/date-format-parse/-/date-format-parse-0.2.7.tgz", @@ -6284,6 +5770,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -6297,16 +5784,6 @@ } } }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -6457,20 +5934,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -6532,15 +5995,6 @@ "dev": true, "license": "MIT" }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -6749,15 +6203,6 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/dufour-peyton-intersection": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/dufour-peyton-intersection/-/dufour-peyton-intersection-0.1.3.tgz", - "integrity": "sha512-6Rx3JKUq+NhWDgZ15EwDzzsYxNqMQQHfpIHzyTpZZW7UL85ITBBKaX7XYdF5JSNaxFAlJx4KfhPbGhKqHt6bog==", - "license": "MIT", - "dependencies": { - "get-depth": "^0.0.3" - } - }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -6779,82 +6224,11 @@ "dev": true, "license": "MIT" }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "license": "MIT", - "peer": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/duplexify/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT", - "peer": true - }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexify/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT", - "peer": true - }, - "node_modules/duplexify/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/dynamic-client": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/dynamic-client/-/dynamic-client-0.0.1.tgz", - "integrity": "sha512-DFeeSA+4+fWuKT+zRy4bsdHepfpVJt/JUrk0qwE5BFMdpM7VfCxkb6mzQTnnfDW4LPLHvJ0Q4KxBdGCkJVAcFQ==", - "license": "CC0-1.0", - "dependencies": { - "axios": "^0.21.1" - } - }, - "node_modules/dynamic-client/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/easy-image-loader": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/easy-image-loader/-/easy-image-loader-0.1.0.tgz", - "integrity": "sha512-j7i46daduknTMIvpR410KIEzgLoB0Elz2hdlWNSwz94zY4Dhg73evqcDR/LrGRrjerSxybX+LSW5CECyv5D8PQ==", - "license": "CC0-1.0" + "node_modules/earcut": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.1.tgz", + "integrity": "sha512-0l1/0gOjESMeQyYaK5IDiPNvFeu93Z/cO0TjZh9eZ1vyCtZnA7KMZ8rQggpsJHIbGSdrqYq9OhuveadOVHCshw==", + "license": "ISC" }, "node_modules/easy-stack": { "version": "1.0.1", @@ -6910,6 +6284,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -6929,6 +6304,7 @@ "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -6959,19 +6335,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "license": "MIT", - "peer": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -7349,15 +6712,6 @@ "dev": true, "license": "MIT" }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -7591,92 +6945,6 @@ "which": "bin/which" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "license": "MIT", - "peer": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT", - "peer": true - }, "node_modules/express": { "version": "4.21.2", "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", @@ -7757,76 +7025,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "license": "MIT", - "peer": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -7867,6 +7065,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { @@ -7915,13 +7114,11 @@ "node": ">=0.8.0" } }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "deprecated": "This module is no longer supported.", - "license": "ISC", - "peer": true + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" }, "node_modules/figures": { "version": "2.0.0", @@ -7959,14 +7156,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -8082,57 +7271,6 @@ "dev": true, "license": "ISC" }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "license": "MIT", - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/flush-write-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT", - "peer": true - }, - "node_modules/flush-write-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/flush-write-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT", - "peer": true - }, - "node_modules/flush-write-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", @@ -8168,16 +7306,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/form-data": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", @@ -8218,19 +7346,6 @@ "url": "https://github.com/sponsors/rawify" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "license": "MIT", - "peer": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -8241,57 +7356,6 @@ "node": ">= 0.6" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "license": "MIT", - "peer": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/from2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT", - "peer": true - }, - "node_modules/from2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/from2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT", - "peer": true - }, - "node_modules/from2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -8315,70 +7379,18 @@ "dev": true, "license": "Unlicense" }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "node_modules/fs-write-stream-atomic/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT", - "peer": true - }, - "node_modules/fs-write-stream-atomic/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/fs-write-stream-atomic/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT", - "peer": true - }, - "node_modules/fs-write-stream-atomic/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -8408,1098 +7420,88 @@ "node": ">=6.9.0" } }, - "node_modules/geo-extent": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/geo-extent/-/geo-extent-0.11.0.tgz", - "integrity": "sha512-mKfMCrv2nzCcuJAajuTlbI3Ogl/75WYnrveXeQLFTsi2f8un5T5z56mjo+rJn/Y6rrr9Xd0Grspxq3TO0tJeOg==", - "license": "CC0-1.0", - "dependencies": { - "get-epsg-code": "^0.0.7", - "preciso": "^0.8.0", - "reproject-bbox": "^0.4.1" - } - }, - "node_modules/geo-extent/node_modules/preciso": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/preciso/-/preciso-0.8.0.tgz", - "integrity": "sha512-bSCrg5D95IPXXltZu36PdY4HwITyB5l+rVYMJSzWtfIWp+1+2lz2SW3HZm6ifQgEIWOmDbhihepo2NWOWLyP/Q==", - "license": "CC0-1.0" - }, - "node_modules/geocanvas": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/geocanvas/-/geocanvas-0.3.1.tgz", - "integrity": "sha512-JMQ1xQBuoO2W4XOsLdSg9PSRT5Ng9YsCUC/M5w0ZTzWFRle0Gs+bcyLYLqX0TCDYEx/6aqQS2y29MlfBvXSdGA==", - "license": "CC0-1.0", - "dependencies": { - "geomask": "^0.3.5", - "to-canvas": "^0.1.0", - "xdim": "^1.5.2" - } - }, - "node_modules/geomask": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/geomask/-/geomask-0.3.5.tgz", - "integrity": "sha512-jEX3kdN7xrsDCi334ZiSZqWhbDBPb/36AHKRQywELVeo/hkS8gxzyZ3O+Du4pr9vy5TOQInTeHfuHddx6Xw31Q==", - "license": "CC0-1.0", + "node_modules/geotiff": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-2.1.3.tgz", + "integrity": "sha512-PT6uoF5a1+kbC3tHmZSUsLHBp2QJlHasxxxxPW47QIY1VBKpFB+FcDvX+MxER6UzgLQZ0xDzJ9s48B9JbOCTqA==", + "license": "MIT", "dependencies": { - "dufour-peyton-intersection": "^0.1.1", - "preciso": "^0.2.0", - "reproject-geojson": "^0.1.2", - "segflip": "^0.0.2" + "@petamoriken/float16": "^3.4.7", + "lerc": "^3.0.0", + "pako": "^2.0.4", + "parse-headers": "^2.0.2", + "quick-lru": "^6.1.1", + "web-worker": "^1.2.0", + "xml-utils": "^1.0.2", + "zstddec": "^0.1.0" + }, + "engines": { + "node": ">=10.19" } }, - "node_modules/geomask/node_modules/preciso": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preciso/-/preciso-0.2.0.tgz", - "integrity": "sha512-pOWoGt80FRXsZheEVzo7IkYXscwdK08AjTRAZ/jazcoXyPmP7squS//jh9/NKvRSC2KpneMUrJu2wCc1Zh2xFw==", - "license": "CC0-1.0" - }, - "node_modules/geomask/node_modules/proj4-fully-loaded": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/proj4-fully-loaded/-/proj4-fully-loaded-0.0.4.tgz", - "integrity": "sha512-74v+nA/T6Hcilukd0nFNTNSEf6Up62jzpLssk4Pr6psRWy2nZCdFV90kb4ZjmbbqBqu7V4D8G9C5V54NixBK4g==", - "license": "CC0-1.0", - "dependencies": { - "proj4": "^2.7.2", - "proj4js-definitions": "^0.1.0" - } + "node_modules/geotiff/node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" }, - "node_modules/geomask/node_modules/reproject-geojson": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/reproject-geojson/-/reproject-geojson-0.1.2.tgz", - "integrity": "sha512-X72F4Ry/KXjuhf43KrTX8KoJtg7C4YaQ3m0nJLyR2wCAFIjaR4zzufbu/m7T+19D/iVf6BS/ReOaDG0LtC8wCw==", - "license": "CC0-1.0", - "dependencies": { - "proj4-fully-loaded": "^0.0.4" + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/georaster": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/georaster/-/georaster-1.6.0.tgz", - "integrity": "sha512-Z/mzrOo8Ab6gWZHKIKFlspMgDirCRcSmpCPe8MP+2s0FeEjZcgD3TRrhM41v9xAWUXSLZGRin3UiBeY4FXvaBw==", - "license": "Apache-2.0", - "dependencies": { - "calc-image-stats": "^0.9.0", - "cross-fetch": "^3.0.4", - "georaster-to-canvas": "0.2.0", - "geotiff": "1.0.0-beta.13", - "geotiff-palette": "0.0.0", - "threads": "^1.4.0", - "tiny-worker": "^2.3.0", - "ts-node": "^8.8.2", - "txml": "3.1.2", - "underscore": "^1.8.3", - "worker-loader": "^2.0.0", - "xml-utils": "^0.2.0" - } - }, - "node_modules/georaster-layer-for-leaflet": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/georaster-layer-for-leaflet/-/georaster-layer-for-leaflet-3.10.0.tgz", - "integrity": "sha512-/wtRcVS+LMkJQJLD4hfv4XmFzFBPx7ybBXy3c6OuR7i7Xe2q+iMCM5i0TwjUO82zg8dI2ZT1lxivEyyfTTBung==", - "license": "Apache-2.0", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", "dependencies": { - "@types/geojson": "^7946.0.10", - "@types/node": "^18.7.13", - "chroma-js": "^1.4.1", - "geo-extent": "^0.11.0", - "geocanvas": "^0.3.1", - "pixel-utils": "^0.7.0", - "proj4-fully-loaded": "^0.1.0", - "regenerator-runtime": "^0.13.9", - "reproject-bbox": "^0.4.1", - "snap-bbox": "^0.2.0", - "utm-utils": "^0.1.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, - "peerDependencies": { - "georaster": "*", - "leaflet": "^1.7.1" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/georaster-layer-for-leaflet/node_modules/@types/node": { - "version": "18.19.115", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.115.tgz", - "integrity": "sha512-kNrFiTgG4a9JAn1LMQeLOv3MvXIPokzXziohMrMsvpYgLpdEt/mMiVYc4sGKtDfyxM5gIDF4VgrPRyCw4fHOYg==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/georaster-layer-for-leaflet/node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "license": "MIT" - }, - "node_modules/georaster-to-canvas": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/georaster-to-canvas/-/georaster-to-canvas-0.2.0.tgz", - "integrity": "sha512-Jt8xZU9T8wLk2aDXjz8QzA+KtrGcQ4qq5IHoAS2Llf216mcJxxkTgvDTnMXmDLZMApqNwjYyc3YKfN4yMj3NFw==", - "license": "MIT" - }, - "node_modules/georaster/node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/georaster/node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "license": "MIT", - "peer": true - }, - "node_modules/georaster/node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "license": "MIT", - "peer": true - }, - "node_modules/georaster/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "license": "MIT", - "peer": true - }, - "node_modules/georaster/node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "node_modules/georaster/node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/georaster/node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/georaster/node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "license": "MIT", - "peer": true - }, - "node_modules/georaster/node_modules/@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/georaster/node_modules/@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/georaster/node_modules/@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "node_modules/georaster/node_modules/@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/georaster/node_modules/@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/georaster/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/georaster/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/georaster/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/georaster/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "license": "MIT", - "peer": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/georaster/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/georaster/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/georaster/node_modules/chokidar/node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/georaster/node_modules/chokidar/node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/georaster/node_modules/chokidar/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/georaster/node_modules/chokidar/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/georaster/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT", - "peer": true - }, - "node_modules/georaster/node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/georaster/node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "license": "MIT", - "peer": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/georaster/node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/georaster/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/georaster/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/georaster/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/georaster/node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/georaster/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "license": "MIT", - "peer": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/georaster/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/georaster/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/georaster/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "license": "MIT", - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/georaster/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/georaster/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/georaster/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT", - "peer": true - }, - "node_modules/georaster/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/georaster/node_modules/loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/georaster/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "license": "MIT", - "peer": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/georaster/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "license": "MIT", - "peer": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/georaster/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "license": "MIT", - "peer": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/georaster/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "peer": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/georaster/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/georaster/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/georaster/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "license": "MIT", - "peer": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/georaster/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/georaster/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/georaster/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT", - "peer": true - }, - "node_modules/georaster/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "license": "MIT", - "peer": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/georaster/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/georaster/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/georaster/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/georaster/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/georaster/node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/georaster/node_modules/terser-webpack-plugin": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.6.tgz", - "integrity": "sha512-2lBVf/VMVIddjSn3GqbT90GvIJ/eYXJkt8cTzU7NbjKqK8fwv18Ftr4PlbF46b/e88743iZFL5Dtr/rC4hjIeA==", - "license": "MIT", - "peer": true, - "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/georaster/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/georaster/node_modules/watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" - } - }, - "node_modules/georaster/node_modules/webpack": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz", - "integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - }, - "webpack-command": { - "optional": true - } - } - }, - "node_modules/georaster/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/georaster/node_modules/worker-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-2.0.0.tgz", - "integrity": "sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==", - "license": "MIT", - "dependencies": { - "loader-utils": "^1.0.0", - "schema-utils": "^0.4.0" - }, - "engines": { - "node": ">= 6.9.0 || >= 8.9.0" - }, - "peerDependencies": { - "webpack": "^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0" - } - }, - "node_modules/georaster/node_modules/worker-loader/node_modules/schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "license": "MIT", - "dependencies": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/geotiff": { - "version": "1.0.0-beta.13", - "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-1.0.0-beta.13.tgz", - "integrity": "sha512-B2H3sbM4PeuKrY/UVOZjzVdqHwHAuOCKhhkV1Xcj3CFnaDAoxJSEEVKNiziOrguv0pHyANJkyK0TSnPngHhjYg==", - "license": "MIT", - "dependencies": { - "pako": "^1.0.11", - "threads": "^1.3.1", - "txml": "^3.1.2" - }, - "engines": { - "browsers": "defaults", - "node": ">=10.19" - } - }, - "node_modules/geotiff-palette": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/geotiff-palette/-/geotiff-palette-0.0.0.tgz", - "integrity": "sha512-qri9e3f3+kMI6zLQgGCaxvD47bTkSwmI73Lw5BZEh+QEJuScRlas2Pv/R37hDpl6eDZEeBbx/7+96zdNWLAOug==", - "license": "CC0-1.0" - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-depth": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/get-depth/-/get-depth-0.0.3.tgz", - "integrity": "sha512-A0yWzxfqobOgDC/hGNwUYKfNlV8+WnU0EoHazVaXvLyp/I8e8f/Fx/HFS0r2i0RJ5mXj3YmyM8KSN4trtAdHvA==", - "license": "CC0-1.0" - }, - "node_modules/get-epsg-code": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/get-epsg-code/-/get-epsg-code-0.0.7.tgz", - "integrity": "sha512-bfeZZ3GjgHR/UdkVA0j3nmu87/GslUllSk3XiTMb8qaw8RnX+5fFx29ShsYa47XSSm8at6drvz5qEqSVWmRoMg==", - "license": "CC0-1.0", - "dependencies": { - "wkt-parser": "^1.2.3", - "xml-utils": "0.0.2" - } - }, - "node_modules/get-epsg-code/node_modules/xml-utils": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/xml-utils/-/xml-utils-0.0.2.tgz", - "integrity": "sha512-WBtuDXSXGW3QiP9DBXUS45OqphjQwoI3lRGs1tPZaseze2nY+Ehn0rMV9+2Qzs0ba3d5/DPyzwxmfHhRKwRs5g==", - "license": "CC0-1.0" - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/glob": { @@ -9507,6 +7509,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -9604,15 +7607,6 @@ "dev": true, "license": "MIT" }, - "node_modules/guess-image-layout": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/guess-image-layout/-/guess-image-layout-0.1.0.tgz", - "integrity": "sha512-sYrs2uYb2dqdxQcjFlfNWQhPX7M4lx7BYqMg7SFvJ/gGl1QIk0NPQqFkY0mV2VgdOGERSS15/6M4cpjuTtPhLw==", - "license": "CC0-1.0", - "dependencies": { - "get-depth": "^0.0.3" - } - }, "node_modules/gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -9684,74 +7678,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "license": "MIT", - "peer": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "license": "MIT", - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/hash-base": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", @@ -10137,13 +8063,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", - "license": "MIT", - "peer": true - }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -10182,23 +8101,18 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" } }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "license": "ISC", - "peer": true - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -10221,19 +8135,6 @@ "node": ">= 10" } }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", - "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", - "license": "MIT", - "peer": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/is-arguments": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", @@ -10261,7 +8162,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -10270,13 +8171,6 @@ "node": ">=8" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "license": "MIT", - "peer": true - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -10317,33 +8211,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", - "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", - "license": "MIT", - "peer": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -10360,24 +8227,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10424,7 +8278,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -10469,18 +8323,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-observable": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-2.1.0.tgz", - "integrity": "sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -10508,6 +8350,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, "license": "MIT", "dependencies": { "isobject": "^3.0.1" @@ -10582,16 +8425,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -10622,6 +8455,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10636,12 +8470,6 @@ "node": ">=10" } }, - "node_modules/iter-fun": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/iter-fun/-/iter-fun-0.2.0.tgz", - "integrity": "sha512-8dYv+ptyps7LtrfqAYY8qqThAiX2eIDBGKc/kXdSrEMRJQoD8KhTOa+duECGghjsnkHEf9O8X6IS62jO+6xwhw==", - "license": "CC0-1.0" - }, "node_modules/javascript-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", @@ -10792,6 +8620,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, "license": "MIT" }, "node_modules/json-parse-even-better-errors": { @@ -10861,6 +8690,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10906,17 +8736,11 @@ "launch-editor": "^2.10.0" } }, - "node_modules/leaflet": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", - "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==", - "license": "BSD-2-Clause" - }, - "node_modules/leaflet-fullscreen": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/leaflet-fullscreen/-/leaflet-fullscreen-1.0.2.tgz", - "integrity": "sha512-1Yxm8RZg6KlKX25+hbP2H/wnOAphH7hFcvuADJFb4QZTN7uOSN9Hsci5EZpow8vtNej9OGzu59Jxmn+0qKOO9Q==", - "license": "ISC" + "node_modules/lerc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lerc/-/lerc-3.0.0.tgz", + "integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==", + "license": "Apache-2.0" }, "node_modules/levn": { "version": "0.4.1", @@ -10962,6 +8786,7 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, "license": "MIT", "dependencies": { "big.js": "^5.2.2", @@ -10976,6 +8801,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, "license": "MIT", "dependencies": { "minimist": "^1.2.0" @@ -11229,6 +9055,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" @@ -11259,35 +9086,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "license": "ISC" - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "license": "MIT", - "peer": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -11318,96 +9116,30 @@ "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "license": "MIT" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mediana": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mediana/-/mediana-1.0.3.tgz", - "integrity": "sha512-VUmGLNile2IjOOnuxDAL0KawfXZy9QqiRT591JiHli0NrN1A0pQkb/cxIOul1wKcT4KjhatGdmUgSPKVx6kJhg==", - "license": "CC0-1.0", - "dependencies": { - "preciso": "^0.5.0" - } - }, - "node_modules/mediana/node_modules/preciso": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/preciso/-/preciso-0.5.0.tgz", - "integrity": "sha512-t/DKHG7hVuhGYYQHOykZrhXdDhDuHsGtkzJgYofdTmxI6AgU60+wTwmT7nv+qFkpGnXr0KugZ1V3+2hTmhNkcg==", - "license": "CC0-1.0" - }, - "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "dev": true, - "license": "Unlicense", - "dependencies": { - "fs-monkey": "^1.0.4" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/memory-fs/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT", - "peer": true - }, - "node_modules/memory-fs/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/memory-fs/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT", - "peer": true + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "license": "MIT" }, - "node_modules/memory-fs/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, "license": "MIT", - "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "license": "Unlicense", "dependencies": { - "safe-buffer": "~5.1.0" + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" } }, "node_modules/merge-descriptors": { @@ -11596,6 +9328,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -11633,106 +9366,6 @@ "dev": true, "license": "ISC" }, - "node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mississippi/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT", - "peer": true - }, - "node_modules/mississippi/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/mississippi/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT", - "peer": true - }, - "node_modules/mississippi/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/mississippi/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "license": "MIT", - "peer": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "license": "MIT", - "peer": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/module-alias": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.3.tgz", @@ -11740,36 +9373,6 @@ "dev": true, "license": "MIT" }, - "node_modules/move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "peer": true, - "dependencies": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "node_modules/move-concurrently/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -11784,6 +9387,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, "license": "MIT" }, "node_modules/multibase": { @@ -11848,14 +9452,6 @@ "thenify-all": "^1.0.0" } }, - "node_modules/nan": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", - "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", @@ -11867,285 +9463,90 @@ } ], "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "license": "MIT", - "peer": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "license": "MIT" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/assert": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", - "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", - "license": "MIT", - "peer": true, - "dependencies": { - "object.assign": "^4.1.4", - "util": "^0.10.4" - } - }, - "node_modules/node-libs-browser/node_modules/assert/node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "license": "MIT", - "peer": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/node-libs-browser/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "license": "MIT", - "peer": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/node-libs-browser/node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/node-libs-browser/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "license": "ISC", - "peer": true - }, - "node_modules/node-libs-browser/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT", - "peer": true - }, - "node_modules/node-libs-browser/node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "license": "MIT", - "peer": true - }, - "node_modules/node-libs-browser/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/node-libs-browser/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT", - "peer": true + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" }, - "node_modules/node-libs-browser/node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" + "engines": { + "node": ">= 0.6" } }, - "node_modules/node-libs-browser/node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "license": "MIT", - "peer": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" }, - "node_modules/node-libs-browser/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "safe-buffer": "~5.1.0" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "node_modules/node-libs-browser/node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, "license": "MIT", - "peer": true + "optional": true }, - "node_modules/node-libs-browser/node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "license": "MIT", - "peer": true, "dependencies": { - "inherits": "2.0.3" + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" } }, "node_modules/node-polyfill-webpack-plugin": { @@ -12259,7 +9660,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12334,61 +9735,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", @@ -12426,19 +9772,6 @@ "node": ">= 0.4" } }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "license": "MIT", - "peer": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.assign": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", @@ -12459,25 +9792,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/observable-fns": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/observable-fns/-/observable-fns-0.6.1.tgz", - "integrity": "sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==", - "license": "MIT" - }, "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -12497,6 +9811,54 @@ "node": ">=18" } }, + "node_modules/ol": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/ol/-/ol-10.4.0.tgz", + "integrity": "sha512-gv3voS4wgej1WVvdCz2ZIBq3lPWy8agaf0094E79piz8IGQzHiOWPs2in1pdoPmuTNvcqGqyUFG3IbxNE6n08g==", + "license": "BSD-2-Clause", + "dependencies": { + "@types/rbush": "4.0.0", + "color-rgba": "^3.0.0", + "color-space": "^2.0.1", + "earcut": "^3.0.0", + "geotiff": "^2.1.3", + "pbf": "4.0.1", + "rbush": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openlayers" + } + }, + "node_modules/ol-pmtiles": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ol-pmtiles/-/ol-pmtiles-0.2.0.tgz", + "integrity": "sha512-PPDc77kJ+GlDNFjCcoAQ5MTHQTDfxuBN4fL1x/TXnAEPmUT/DAyQsHZZtU3PXnw2NimlgCX7v/Plr9SVivPpAQ==", + "license": "BSD-3-Clause", + "dependencies": { + "pmtiles": "^2.10.0" + }, + "peerDependencies": { + "ol": ">=7.3.0" + } + }, + "node_modules/ol-stac": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/ol-stac/-/ol-stac-1.0.0-rc.10.tgz", + "integrity": "sha512-LBqlBYrKCcBO6DdN4Rjp0ZeBLQ6EN96SZPMcbkYzbf57P4l7RP1tM+8LK0T/09hDttpQAx/w4PEXsawrpzXlvw==", + "license": "Apache-2.0", + "dependencies": { + "ol-pmtiles": "~0.2.0", + "stac-js": "~0.1.4" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/m-mohr" + }, + "peerDependencies": { + "ol": "*" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -12524,6 +9886,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -12696,6 +10059,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12707,58 +10071,6 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "license": "(MIT AND Zlib)" }, - "node_modules/parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "license": "MIT", - "peer": true, - "dependencies": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "node_modules/parallel-transform/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT", - "peer": true - }, - "node_modules/parallel-transform/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/parallel-transform/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT", - "peer": true - }, - "node_modules/parallel-transform/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -12800,6 +10112,12 @@ "node": ">= 0.10" } }, + "node_modules/parse-headers": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz", + "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==", + "license": "MIT" + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -12864,30 +10182,12 @@ "tslib": "^2.0.3" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "license": "MIT" }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -12901,6 +10201,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12939,6 +10240,18 @@ "node": ">=8" } }, + "node_modules/pbf": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-4.0.1.tgz", + "integrity": "sha512-SuLdBvS42z33m8ejRbInMapQe8n0D3vN/Xd5fmWM3tufNgRQFBpaW2YVJxQZV4iPNqb0vEFvssMEo5w9c6BTIA==", + "license": "BSD-3-Clause", + "dependencies": { + "resolve-protobuf-schema": "^2.1.0" + }, + "bin": { + "pbf": "bin/pbf" + } + }, "node_modules/pbkdf2": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.3.tgz", @@ -12997,7 +10310,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -13006,39 +10319,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pixel-utils": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/pixel-utils/-/pixel-utils-0.7.0.tgz", - "integrity": "sha512-bfXc8l67s3LMq5vR/8AcPIUcLLoM/Q59fTfV5un+OwuiAzH7ZXsh6xPf5DqPjlrxiGKtoQc//grssXUdiz29Dw==", - "license": "CC0-1.0", - "dependencies": { - "quick-scale": "^0.1.0", - "type-fest": "^2.17.0", - "xdim": "^1.8.0" - } - }, - "node_modules/pixel-utils/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -13108,6 +10388,25 @@ "node": ">=8" } }, + "node_modules/pmtiles": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/pmtiles/-/pmtiles-2.11.0.tgz", + "integrity": "sha512-dU9SzzaqmCGpdEuTnIba6bDHT6j09ZJFIXxwGpvkiEnce3ZnBB1VKt6+EOmJGueriweaZLAMTUmKVElU2CBe0g==", + "license": "BSD-3-Clause", + "dependencies": { + "fflate": "^0.8.0" + } + }, + "node_modules/polyclip-ts": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/polyclip-ts/-/polyclip-ts-0.16.8.tgz", + "integrity": "sha512-JPtKbDRuPEuAjuTdhR62Gph7Is2BS1Szx69CFOO3g71lpJDFo78k4tFyi+qFOMVPePEzdSKkpGU3NBXPHHjvKQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.1.0", + "splaytree-ts": "^1.0.2" + } + }, "node_modules/popper.js": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", @@ -13142,16 +10441,6 @@ "node": ">= 10.12" } }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", @@ -13769,12 +11058,6 @@ "dev": true, "license": "MIT" }, - "node_modules/preciso": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/preciso/-/preciso-0.12.2.tgz", - "integrity": "sha512-or/2I6/6VDMwJjJdFdyzVc/L1JT29DrlfA096iXBQWryL+ytEAfDgChI/tTnDXb58l5E/kIEa4Omg6AHFLmywA==", - "license": "CC0-1.0" - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -13962,34 +11245,11 @@ "url": "https://github.com/sponsors/ahocevar" } }, - "node_modules/proj4-fully-loaded": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/proj4-fully-loaded/-/proj4-fully-loaded-0.1.0.tgz", - "integrity": "sha512-LfA3KHTqAAT1Nr73+atyEwiwHlWEOFWes71TwVlx1kTX0LpHWLKGGIozLY/sIgthoqq6Pf5n58RukdDyMKdRBw==", - "license": "CC0-1.0", - "dependencies": { - "proj4": "^2.8.0", - "proj4js-definitions": "^0.1.0" - } - }, - "node_modules/proj4-merge": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/proj4-merge/-/proj4-merge-0.1.1.tgz", - "integrity": "sha512-Ac9W5jgOAqPRspA9fMuRuLs0weDuOCHK7nnd6yOAySzLaxrmq1ZxbCTKVt6pIEOPB3RpgcupBOU3KXmQM0m8rg==", - "license": "CC0-1.0" - }, - "node_modules/proj4js-definitions": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/proj4js-definitions/-/proj4js-definitions-0.1.0.tgz", - "integrity": "sha512-qmyhkWihIa3E3ZiFsNxvap6oS5+zEH85felbe/YVFuCr1E2j5yUrNQUOU9UEbvKkRJW9kk0MhENtbW3+9Nnr3g==", - "license": "CC0-1.0" - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "license": "ISC", - "peer": true + "node_modules/protocol-buffers-schema": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", + "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==", + "license": "MIT" }, "node_modules/proxy-addr": { "version": "2.0.7", @@ -14021,13 +11281,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "license": "MIT", - "peer": true - }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -14059,35 +11312,13 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "dev": true, "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "license": "MIT", - "peer": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -14138,17 +11369,23 @@ ], "license": "MIT" }, - "node_modules/quick-resolve": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/quick-resolve/-/quick-resolve-0.0.1.tgz", - "integrity": "sha512-rYcEOLRDlK+EgiiJzGAid9ybKCFZAh+HgVX8ZztlTEpvdGHVS4PSA4zyzjaL5pC2kx+R/E2fScCirdRNQvLwFA==", - "license": "CC0-1.0" + "node_modules/quick-lru": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.2.tgz", + "integrity": "sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/quick-scale": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/quick-scale/-/quick-scale-0.1.0.tgz", - "integrity": "sha512-bIlJjYX72KWb5w6G8YMyHr2/DEOYtAbYs0l+qwQoVM3Jw/6QUkAUErjSCPgIg+jHbuH+pdUhqWjDwHpM7r72FQ==", - "license": "CC0-1.0" + "node_modules/quickselect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz", + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==", + "license": "ISC" }, "node_modules/randombytes": { "version": "2.1.0", @@ -14195,6 +11432,15 @@ "node": ">= 0.8" } }, + "node_modules/rbush": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-4.0.1.tgz", + "integrity": "sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==", + "license": "MIT", + "dependencies": { + "quickselect": "^3.0.0" + } + }, "node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -14359,26 +11605,6 @@ "node": ">=4" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "license": "MIT" - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "license": "MIT", - "peer": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/regexpu-core": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", @@ -14446,14 +11672,6 @@ "integrity": "sha512-EijDXJZbzpGbQBd852ViUzcqgpMujthM+SAEHiWCMcZonRbZ+xViWKLJA/vrwbDwYdxrs1aFDjpBhcGrZoJRGA==", "license": "MIT" }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "license": "ISC", - "optional": true, - "peer": true - }, "node_modules/renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", @@ -14468,56 +11686,6 @@ "strip-ansi": "^6.0.1" } }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/reproject-bbox": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/reproject-bbox/-/reproject-bbox-0.4.2.tgz", - "integrity": "sha512-lu8nTA/IJORIQdB0AqOV6TjIkNwn4Y3QIZ8DU+lY/Z1TZrD6eMyLTGoX6+WKIc1e4xccb7KoyrUYVPe7mmiVsA==", - "license": "CC0-1.0", - "dependencies": { - "proj4-fully-loaded": "^0.1.0", - "proj4-merge": "^0.1.1" - } - }, - "node_modules/reproject-geojson": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/reproject-geojson/-/reproject-geojson-0.2.0.tgz", - "integrity": "sha512-drlwP9qF/FRFfTIFFcnIXsYUoxdVB7S7oTHcQWuAxtTX7lBUfFIT2F+02sVYJpTEyxUmXbDmEGvrOPF6VbI+rg==", - "license": "CC0-1.0", - "dependencies": { - "get-depth": "^0.0.3", - "proj4-fully-loaded": "^0.0.4" - } - }, - "node_modules/reproject-geojson/node_modules/proj4-fully-loaded": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/proj4-fully-loaded/-/proj4-fully-loaded-0.0.4.tgz", - "integrity": "sha512-74v+nA/T6Hcilukd0nFNTNSEf6Up62jzpLssk4Pr6psRWy2nZCdFV90kb4ZjmbbqBqu7V4D8G9C5V54NixBK4g==", - "license": "CC0-1.0", - "dependencies": { - "proj4": "^2.7.2", - "proj4js-definitions": "^0.1.0" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -14573,13 +11741,14 @@ "node": ">=4" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "node_modules/resolve-protobuf-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", "license": "MIT", - "peer": true + "dependencies": { + "protocol-buffers-schema": "^3.3.1" + } }, "node_modules/restore-cursor": { "version": "3.1.0", @@ -14595,16 +11764,6 @@ "node": ">=8" } }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.12" - } - }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -14677,16 +11836,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", - "license": "ISC", - "peer": true, - "dependencies": { - "aproba": "^1.1.1" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -14707,16 +11856,6 @@ ], "license": "MIT" }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "license": "MIT", - "peer": true, - "dependencies": { - "ret": "~0.1.10" - } - }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -14853,12 +11992,6 @@ "dev": true, "license": "MIT" }, - "node_modules/segflip": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/segflip/-/segflip-0.0.2.tgz", - "integrity": "sha512-bIrjGbz/jI8FHDDoF7m5m+bATTSpZNNkjgr17+We8B9WFIUfm/eEj1kH15RVarGk3G/yYwHgHwziT2GZ6xFmoA==", - "license": "CC0-1.0" - }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -15070,45 +12203,6 @@ "node": ">= 0.4" } }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "license": "MIT", - "peer": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -15240,216 +12334,59 @@ "engines": { "node": ">= 0.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/sirv": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", - "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/snap-bbox": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/snap-bbox/-/snap-bbox-0.2.0.tgz", - "integrity": "sha512-sBK60xfdvcw967KB4SiE3rCfgMp/X/IJekkt7s1VsIK/dn8fg8LCfUaZ5ycgfaWOlpKAG8WZTjowR0uQ5qlAMg==", - "license": "CC0-1.0" - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "license": "MIT", - "peer": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "license": "MIT", - "peer": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "license": "MIT", - "peer": true, "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, "license": "MIT", - "peer": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, "license": "MIT", - "peer": true - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/sockjs": { @@ -15464,13 +12401,6 @@ "websocket-driver": "^0.7.4" } }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "license": "MIT", - "peer": true - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -15489,21 +12419,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "license": "MIT", - "peer": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -15514,14 +12429,6 @@ "source-map": "^0.6.0" } }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "license": "MIT", - "peer": true - }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -15590,18 +12497,11 @@ "wbuf": "^1.7.3" } }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "license": "MIT", - "peer": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/splaytree-ts": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/splaytree-ts/-/splaytree-ts-1.0.2.tgz", + "integrity": "sha512-0kGecIZNIReCSiznK3uheYB8sbstLjCZLiwcQwbmLhgHJj2gz6OnSPkVzJQCMnmEz1BQ4gPK59ylhBoEWOhGNA==", + "license": "BDS-3-Clause" }, "node_modules/sprintf-js": { "version": "1.0.3", @@ -15645,26 +12545,6 @@ "url": "https://github.com/sponsors/m-mohr" } }, - "node_modules/stac-layer": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/stac-layer/-/stac-layer-0.15.0.tgz", - "integrity": "sha512-oFdQ3LNT26kesCglho/+KdlEmZ5f5H2FAiXFT/u79rt1brjN0sEZlKKhcGfD+1bVdjiGMZL+DoFpggouQ1fgSg==", - "license": "CC0-1.0", - "dependencies": { - "@mapbox/tilebelt": "^1.0.2", - "@turf/bbox-polygon": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "chroma-js": "^1.4.1", - "dynamic-client": "^0.0.1", - "easy-image-loader": "^0.1.0", - "georaster": "^1.5.5", - "georaster-layer-for-leaflet": "^3.7.1", - "get-depth": "^0.0.3", - "leaflet": "^1.8.0", - "reproject-geojson": "^0.2.0", - "urijs": "^1.19.11" - } - }, "node_modules/stac-node-validator": { "version": "2.0.0-beta.18", "resolved": "https://registry.npmjs.org/stac-node-validator/-/stac-node-validator-2.0.0-beta.18.tgz", @@ -15718,47 +12598,6 @@ "dev": true, "license": "MIT" }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "license": "MIT", - "peer": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -15779,17 +12618,6 @@ "readable-stream": "^3.5.0" } }, - "node_modules/stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "license": "MIT", - "peer": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, "node_modules/stream-http": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", @@ -15802,13 +12630,6 @@ "xtend": "^4.0.2" } }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "license": "MIT", - "peer": true - }, "node_modules/streamsaver-js": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/streamsaver-js/-/streamsaver-js-2.0.7.tgz", @@ -16191,34 +13012,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/threads": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/threads/-/threads-1.7.0.tgz", - "integrity": "sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==", - "license": "MIT", - "dependencies": { - "callsites": "^3.1.0", - "debug": "^4.2.0", - "is-observable": "^2.1.0", - "observable-fns": "^0.6.1" - }, - "funding": { - "url": "https://github.com/andywer/threads.js?sponsor=1" - }, - "optionalDependencies": { - "tiny-worker": ">= 2" - } - }, - "node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -16238,22 +13031,6 @@ "node": ">=0.6.0" } }, - "node_modules/tiny-worker": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tiny-worker/-/tiny-worker-2.3.0.tgz", - "integrity": "sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==", - "license": "BSD-3-Clause", - "dependencies": { - "esm": "^3.2.25" - } - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", - "license": "MIT", - "peer": true - }, "node_modules/to-buffer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", @@ -16268,76 +13045,6 @@ "node": ">= 0.4" } }, - "node_modules/to-canvas": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/to-canvas/-/to-canvas-0.1.0.tgz", - "integrity": "sha512-YC9SdsBZssuhXGq1ARpQWKydAzKYaVLAyUPTWNcLSnQMu8Q6PaZPdcksrjWbEQdHuBT0Q8iDqZAWH/i4WxhmxQ==", - "license": "CC0-1.0", - "dependencies": { - "to-image-data": "^0.0.2" - } - }, - "node_modules/to-image-data": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/to-image-data/-/to-image-data-0.0.2.tgz", - "integrity": "sha512-98b4ByzM38vQxZqqTLBTnX0ElvN0oz2aM1zmuI2gShfCIfOLvWcYuyMpCQ/5iUh1ZWDPduKBfr6dIU7DqjGS0w==", - "license": "CC0-1.0", - "dependencies": { - "guess-image-layout": "^0.0.3", - "xdim": "^1.2.1" - } - }, - "node_modules/to-image-data/node_modules/guess-image-layout": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/guess-image-layout/-/guess-image-layout-0.0.3.tgz", - "integrity": "sha512-NSyI66Ax/7StYZ8Vi1txnJn02pQBeZasbyhxpsYAGcst4sNp1ADWFs5qGmKWxT/llNCw52u9QaxqaFraoqzQ2g==", - "license": "CC0-1.0", - "dependencies": { - "get-depth": "^0.0.3" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "license": "MIT", - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "license": "MIT", - "peer": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -16377,36 +13084,10 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, - "node_modules/ts-node": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", - "license": "MIT", - "dependencies": { - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "typescript": ">=2.7" - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, "license": "0BSD" }, "node_modules/tty-browserify": { @@ -16415,15 +13096,6 @@ "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", "license": "MIT" }, - "node_modules/txml": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/txml/-/txml-3.1.2.tgz", - "integrity": "sha512-h2VijIuIqTb5qUUFOZxHc9oTHvLG+YNv0QCr33RfhiaX2sibLFHcPu45b2niGY9F16XXx+N3GudazyhJG2xEhQ==", - "license": "MIT", - "dependencies": { - "through2": "^3.0.1" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -16478,27 +13150,6 @@ "node": ">= 0.4" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "license": "MIT", - "peer": true - }, - "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/uint8arrays": { "version": "2.1.10", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-2.1.10.tgz", @@ -16508,12 +13159,6 @@ "multiformats": "^9.4.2" } }, - "node_modules/underscore": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", - "license": "MIT" - }, "node_modules/undici-types": { "version": "7.8.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", @@ -16564,52 +13209,6 @@ "node": ">=4" } }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "license": "MIT", - "peer": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "license": "ISC", - "peer": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "license": "ISC", - "peer": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -16619,85 +13218,14 @@ "node": ">= 10.0.0" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "license": "MIT", - "peer": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT", - "peer": true - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { - "node": ">=4", - "yarn": "*" + "node": ">= 0.8" } }, "node_modules/update-browserslist-db": { @@ -16754,14 +13282,6 @@ "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", "license": "MIT" }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "license": "MIT", - "peer": true - }, "node_modules/url": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", @@ -16775,16 +13295,6 @@ "node": ">= 0.4" } }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -16821,12 +13331,6 @@ "node": ">= 0.4.0" } }, - "node_modules/utm-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/utm-utils/-/utm-utils-0.1.0.tgz", - "integrity": "sha512-LA0ZZRrqfZu2FpPVXe71OIapOa80ObIHpCzVHb6qhyEgArn+giWegFDCA5yWElZqTHJ8BtdCnrZhGmz4zM5FPA==", - "license": "CC0-1.0" - }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -17212,27 +13716,6 @@ "vue": "^2.5.0" } }, - "node_modules/vue2-leaflet": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/vue2-leaflet/-/vue2-leaflet-2.7.1.tgz", - "integrity": "sha512-K7HOlzRhjt3Z7+IvTqEavIBRbmCwSZSCVUlz9u4Rc+3xGCLsHKz4TAL4diAmfHElCQdPPVdZdJk8wPUt2fu6WQ==", - "license": "MIT", - "peerDependencies": { - "@types/leaflet": "^1.5.7", - "leaflet": "^1.3.4", - "vue": "^2.5.17" - } - }, - "node_modules/vue2-leaflet-fullscreen": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vue2-leaflet-fullscreen/-/vue2-leaflet-fullscreen-1.0.1.tgz", - "integrity": "sha512-PXcAr/EdPCM/2D7CzfBbWnFYc77KM8/n7rKZh4mU7/DcIl8Kg5qPBbWDnvHdNjtD3n6l023TzvOMccwK6EreAA==", - "license": "MIT", - "dependencies": { - "leaflet-fullscreen": "^1.0.2", - "vue2-leaflet": "^2.0.0" - } - }, "node_modules/vuex": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", @@ -17255,346 +13738,6 @@ "node": ">=10.13.0" } }, - "node_modules/watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "chokidar": "^2.1.8" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "Upgrade to fsevents v2 to mitigate potential security issues", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/watchpack-chokidar2/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/watchpack-chokidar2/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/watchpack-chokidar2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/watchpack-chokidar2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wbuf": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", @@ -17627,6 +13770,12 @@ "@zxing/text-encoding": "0.9.0" } }, + "node_modules/web-worker": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.5.0.tgz", + "integrity": "sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==", + "license": "Apache-2.0" + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -18113,16 +14262,6 @@ "node": ">=0.10.0" } }, - "node_modules/worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "license": "MIT", - "peer": true, - "dependencies": { - "errno": "~0.1.7" - } - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -18144,6 +14283,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, "license": "ISC" }, "node_modules/ws": { @@ -18168,32 +14308,10 @@ } } }, - "node_modules/xdim": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/xdim/-/xdim-1.10.1.tgz", - "integrity": "sha512-s2mZzb+tPRHt3FEcNaEDQqVXBNaPwhoemJNUujFyRYuuJjK3rHVZ/oeSJTNBpaVFTDgdia64acY0SN9unocqwA==", - "license": "CC0-1.0", - "dependencies": { - "iter-fun": "^0.2.0", - "type-fest": "^3.2.0" - } - }, - "node_modules/xdim/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/xml-utils": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/xml-utils/-/xml-utils-0.2.0.tgz", - "integrity": "sha512-xun/4Ls9hrelX0dSMS6HH5wAWNspUs4/VmG+xOVALqYqMQXMy/1WKeiRR5nhYbMCp5UG/YF6XaSdU3AvwgxVSQ==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/xml-utils/-/xml-utils-1.10.2.tgz", + "integrity": "sha512-RqM+2o1RYs6T8+3DzDSoTRAUfrvaejbVHcp3+thnAtDKo8LskR+HomLajEy5UjTz24rpka7AxVBRR3g2wTUkJA==", "license": "CC0-1.0" }, "node_modules/xtend": { @@ -18218,6 +14336,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, "license": "ISC" }, "node_modules/yaml": { @@ -18271,15 +14390,6 @@ "node": ">=12" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -18413,6 +14523,12 @@ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "dev": true, "license": "ISC" + }, + "node_modules/zstddec": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/zstddec/-/zstddec-0.1.0.tgz", + "integrity": "sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==", + "license": "MIT AND BSD-3-Clause" } } } diff --git a/package.json b/package.json index 4a07b608f..37c0f80bd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@radiantearth/stac-browser", - "version": "3.3.5", + "version": "3.4.0-dev", "description": "A full-fledged UI in Vue for browsing and searching static STAC catalogs and STAC APIs.", "main": "src/main.js", "scripts": { @@ -41,6 +41,7 @@ "@musement/iso-duration": "^1.0.0", "@radiantearth/stac-fields": "~1.5.2", "@radiantearth/stac-migrate": "~2.0.2", + "@turf/mask": "^7.2.0", "ajv-i18n": "^4.2.0", "axios": "^1.2.0", "bootstrap-vue": "^2.21.2", @@ -48,11 +49,13 @@ "chart.js": "^4.3.0", "commonmark": "^0.31.2", "core-js": "^3.6.5", - "leaflet": "^1.8.0", "node-polyfill-webpack-plugin": "^4.0.0", "oidc-client-ts": "^3.0.1", + "ol": "~10.4.0", + "ol-stac": "^1.0.0-rc.9", + "proj4": "^2.15.0", "remove-markdown": "^0.6.2", - "stac-layer": "^0.15.0", + "stac-js": "~0.1.4", "stac-node-validator": "2.0.0-beta.18", "streamsaver-js": "^2.0.7", "urijs": "^1.19.11", @@ -64,8 +67,6 @@ "vue-read-more-smooth": "^0.1.8", "vue-router": "^3.2.0", "vue2-datepicker": "^3.9.2", - "vue2-leaflet": "^2.7.0", - "vue2-leaflet-fullscreen": "^1.0.1", "vuex": "^3.4.0", "yargs": "^17.0.1" }, diff --git a/src/StacBrowser.vue b/src/StacBrowser.vue index 2876f97e8..4943aff14 100644 --- a/src/StacBrowser.vue +++ b/src/StacBrowser.vue @@ -38,12 +38,12 @@ import "bootstrap-vue/dist/bootstrap-vue.css"; import ErrorAlert from './components/ErrorAlert.vue'; import StacHeader from './components/StacHeader.vue'; -import STAC from './models/stac'; +import { STAC } from 'stac-js'; import Utils from './utils'; import URI from 'urijs'; import { API_LANGUAGE_CONFORMANCE } from './i18n'; -import { getBest, prepareSupported } from './locale-id'; +import { getBest, prepareSupported } from 'stac-js/src/locales'; import BrowserStorage from "./browser-store"; import Authentication from "./components/Authentication.vue"; diff --git a/src/components/Asset.vue b/src/components/Asset.vue index 1c90bbf5f..48a1f5a21 100644 --- a/src/components/Asset.vue +++ b/src/components/Asset.vue @@ -6,7 +6,7 @@ - {{ asset.title || id }} + {{ title }}
{{ $t('assets.shown') }} @@ -23,14 +23,14 @@ - + @@ -42,6 +42,7 @@ import { mapState } from 'vuex'; import AssetAlternative from './AssetAlternative.vue'; import StacFieldsMixin from './StacFieldsMixin'; import Utils from '../utils'; +import { Asset } from 'stac-js'; export default { name: 'Asset', @@ -62,14 +63,6 @@ export default { type: Object, required: true }, - id: { - type: String, - required: true - }, - context: { - type: Object, - default: null - }, definition: { type: Boolean, default: false @@ -94,7 +87,10 @@ export default { return this.definition ? 'itemdef' : 'asset'; }, uid() { - return `${this.type}-${this.id.toLowerCase().replace(/[^\w]/g, '-')}`; + return `${this.type}-${this.asset.getKey().toLowerCase().replace(/[^\w]/g, '-')}`; + }, + title() { + return this.asset.title || this.asset.getKey(); }, fileFormat() { if (typeof this.asset.type === "string" && this.asset.type.length > 0) { @@ -113,15 +109,17 @@ export default { return {}; } - const asset = Object.assign({}, this.asset); - delete asset.alternate; + const inherit = this.asset.toJSON(); + delete inherit.alternate; - const merged = {}; + const alternates = {}; for (const key in this.asset.alternate) { - merged[key] = Object.assign({}, asset, this.asset.alternate[key]); + const alternate = this.asset.alternate[key]; + const merged = Object.assign({}, inherit, alternate.toJSON()); + alternates[key] = new Asset(merged, key, alternate.getContext()); } - return merged; + return alternates; }, hasAlternatives() { return Utils.size(this.alternatives) > 0; diff --git a/src/components/AssetAlternative.vue b/src/components/AssetAlternative.vue index f34f0e213..2c88f0756 100644 --- a/src/components/AssetAlternative.vue +++ b/src/components/AssetAlternative.vue @@ -17,7 +17,7 @@ import HrefActions from './HrefActions.vue'; import StacFieldsMixin from './StacFieldsMixin'; import AuthUtils from './auth/utils'; import Utils from '../utils'; -import STAC from '../models/stac'; +import { Asset, STAC } from 'stac-js'; export default { name: 'AssetAlternative', @@ -34,10 +34,6 @@ export default { type: Object, required: true }, - context: { - type: Object, - default: null - }, hasAlternatives: { type: Boolean, default: false @@ -74,10 +70,13 @@ export default { }, computed: { ...mapState(['buildTileUrlTemplate', 'useTileLayerAsFallback']), + context() { + return this.asset.getContext(); + }, resolvedAsset() { if (Array.isArray(this.asset['storage:refs'])) { const storage = this.resolveStorage(this.asset, this.context); - const asset = Object.assign({}, this.asset); + const asset = new Asset(this.asset, this.asset.getKey(), this.context); asset['storage:schemes'] = storage; return asset; } diff --git a/src/components/Assets.vue b/src/components/Assets.vue index 3fd93cab1..611bea1cb 100644 --- a/src/components/Assets.vue +++ b/src/components/Assets.vue @@ -3,9 +3,9 @@

{{ displayTitle }}

@@ -13,7 +13,6 @@ diff --git a/src/components/Metadata.vue b/src/components/Metadata.vue index 7faf75e3e..66e6d62b6 100644 --- a/src/components/Metadata.vue +++ b/src/components/Metadata.vue @@ -99,7 +99,7 @@ export default { !key.startsWith("_") && !this.ignoreFields.includes(key); switch (this.type) { case "Asset": - return formatAsset(this.data, this.context, filter); + return formatAsset(this.data.toJSON(), this.context, filter); case "Link": return formatLink(this.data, this.context, filter); case "Provider": diff --git a/src/components/SearchFilter.vue b/src/components/SearchFilter.vue index 82dcd04de..caead6023 100644 --- a/src/components/SearchFilter.vue +++ b/src/components/SearchFilter.vue @@ -27,8 +27,8 @@ - {{ $t('search.filterBySpatialExtent') }} - + {{ $t('search.filterBySpatialExtent') }} + @@ -128,7 +128,8 @@ import ApiCapabilitiesMixin, { TYPES } from './ApiCapabilitiesMixin'; import DatePickerMixin from './DatePickerMixin'; import Loading from './Loading.vue'; -import STAC from '../models/stac'; +import { CatalogLike, STAC } from 'stac-js'; +import { createSTAC } from '../models/stac'; import Cql from '../models/cql2/cql'; import Queryable from '../models/cql2/queryable'; import CqlValue from '../models/cql2/value'; @@ -153,6 +154,8 @@ function getDefaults() { sortOrder: 1, sortTerm: null, provideBBox: false, + // Store previous bbox so that it survives when the map is temporarily hidden + bbox: null, query: getQueryDefaults(), filtersAndOr: 'and', filters: [], @@ -175,7 +178,7 @@ export default { BFormRadioGroup, QueryableInput: () => import('./QueryableInput.vue'), Loading, - Map: () => import('./Map.vue'), + MapSelect: () => import('./maps/MapSelect.vue'), SortButtons: () => import('./SortButtons.vue'), Multiselect }, @@ -186,7 +189,7 @@ export default { props: { parent: { type: Object, - required: true + default: null }, title: { type: String, @@ -238,7 +241,7 @@ export default { }; }, collectionSearchLink() { - return this.parent instanceof STAC && this.parent.getApiCollectionsLink(); + return this.parent instanceof CatalogLike && this.parent.getApiCollectionsLink(); }, canSearchCollectionsFreeText() { return this.canSearchCollections && this.supportsConformance(TYPES.Collections.FreeText); @@ -319,6 +322,24 @@ export default { }); } } + }, + query: { + deep: true, + handler(query) { + if (query?.bbox) { + // Store the previously selected bbox so that it can be restored after the + // map had been hidden accidentally. + this.bbox = query.bbox; + } + } + }, + provideBBox(shown) { + if (!shown) { + this.query.bbox = null; + } + else { + this.query.bbox = this.bbox; + } } }, beforeCreate() { @@ -406,9 +427,10 @@ export default { data.queryableLink = this.findQueryableLink(links) || null; } + // todo: use ItemCollection / CollectionCollection if (!hasMore && Array.isArray(response.data.collections)) { let collections = response.data.collections - .map(collection => new STAC(collection)); + .map(collection => createSTAC(collection)); data.collections = this.prepareCollections(collections); } } @@ -527,26 +549,6 @@ export default { setSearchTerms(terms) { this.$set(this.query, 'q', terms); }, - setBBox(bounds) { - let bbox = null; - if (this.provideBBox) { - if (Utils.isObject(bounds) && typeof bounds.toBBoxString === 'function') { - // This is a Leaflet LatLngBounds Object - const Y = 85.06; - const X = 180; - bbox = [ - Math.max(bounds.getWest(), -X), - Math.max(bounds.getSouth(), -Y), - Math.min(bounds.getEast(), X), - Math.min(bounds.getNorth(), Y) - ]; - } - else if (Array.isArray(bounds) && bounds.length === 4) { - bbox = bounds; - } - } - this.$set(this.query, 'bbox', bbox); - }, addCollection(collection) { if (!this.collectionSelectOptions.taggable) { return; diff --git a/src/components/ShowAssetLinkMixin.js b/src/components/ShowAssetLinkMixin.js new file mode 100644 index 000000000..754a1fa48 --- /dev/null +++ b/src/components/ShowAssetLinkMixin.js @@ -0,0 +1,81 @@ +import Utils from '../utils'; +import { mapGetters, mapState } from 'vuex'; +import { stacBrowserSpecialHandling } from "../rels"; + +export default { + data() { + return { + tab: null, + shownOnMap: [], + }; + }, + computed: { + ...mapState(['showThumbnailsAsAssets']), + ...mapGetters(['data']), + // hasAssets in stac-js also checks whether the assets have a href and thus are not item asset definitions + hasAssets() { + return this.assets.length > 0; + }, + assets() { + if (!this.data) { + return []; + } + let assets = this.data.getAssets(); + if (!this.showThumbnailsAsAssets) { + assets = assets.filter(asset => !asset.isPreview()); + } + return assets; + }, + hasThumbnails() { + return this.thumbnails.length > 0; + }, + thumbnails() { + if (!this.data) { + return []; + } + return this.data.getThumbnails(); + }, + additionalLinks() { + if (!this.data) { + return []; + } + return this.data.getLinksWithOtherRels(stacBrowserSpecialHandling) + .filter(link => link.rel !== 'preview' || !Utils.canBrowserDisplayImage(link)); + }, + selectedAssets() { + if (this.tab === 0) { + return this.shownOnMap; + } + else { + return this.thumbnails; + } + } + }, + methods: { + showAsset(asset) { + if (asset.isPreview()) { + this.tab = 1; + } + else { + this.tab = 0; + this.shownOnMap = [asset]; + } + if (this.$refs.tabs) { + Utils.scrollTo(this.$refs.tabs.$el); + } + }, + dataChanged(data) { + if (Array.isArray(data)) { + this.shownOnMap = data; + } + else { + this.shownOnMap = []; + } + }, + handleEmptyMap() { + if (this.hasThumbnails) { + this.tab = 1; + } + } + } +}; diff --git a/src/components/ShowAssetMixin.js b/src/components/ShowAssetMixin.js deleted file mode 100644 index 485581b0a..000000000 --- a/src/components/ShowAssetMixin.js +++ /dev/null @@ -1,72 +0,0 @@ -import Utils from '../utils'; -import { mapGetters } from 'vuex'; - -export default { - data() { - return { - shownAssetsOnMap: [], - shownBandsOnMap: [], - tab: null, - selectedAsset: null, - selectedAssetKey: null - }; - }, - computed: { - ...mapGetters(['thumbnails', 'hasAssets', 'assets']), - shownAssets() { - if (this.tab === 0) { - return this.shownAssetsOnMap; - } - else if (this.tab === 1 || (this.tab === null && this.thumbnails.length > 0)) { - let keys = []; - let thumbnailRefs = this.thumbnails.map(t => t.href); - for(let key in this.assets) { - let asset = this.assets[key]; - if (thumbnailRefs.includes(asset.href)) { - keys.push(key); - } - } - return keys; - } - return []; - } - }, - methods: { - showAsset(asset, id, isThumbnail) { - if (isThumbnail) { - this.tab = 1; - } - else { - this.tab = 0; - this.selectedAsset = asset; - this.selectedAssetKey = id; - this.shownAssetsOnMap = [this.selectedAssetKey]; - } - if (this.$refs.tabs) { - Utils.scrollTo(this.$refs.tabs.$el); - } - }, - dataChanged(data) { - if (!Utils.isObject(data)) { - this.shownBandsOnMap = []; - this.shownAssetsOnMap = []; - } - else if (data.assets || data.bands) { - if (Utils.size(data.assets) > 0) { - if (this.selectedAssetKey) { - this.shownAssetsOnMap = [this.selectedAssetKey]; - } - else { - this.shownAssetsOnMap = data.assets.map(meta => meta.key); - } - } - if (Utils.size(data.bands) > 0) { - this.shownBandsOnMap = data.bands; - } - } - else if (this.selectedAssetKey) { - this.shownAssetsOnMap = [this.selectedAssetKey]; - } - } - } -}; diff --git a/src/components/Source.vue b/src/components/Source.vue index 1e55f113d..04b1ad9eb 100644 --- a/src/components/Source.vue +++ b/src/components/Source.vue @@ -82,7 +82,7 @@ import { mapActions, mapGetters, mapState } from 'vuex'; import Url from './Url.vue'; import Utils from '../utils'; -import { getBest, prepareSupported } from '../locale-id'; +import { getBest, prepareSupported } from '../../../stac-js/src/locales'; import CopyButton from './CopyButton.vue'; import SocialSharing from './SocialSharing.vue'; diff --git a/src/components/StacHeader.vue b/src/components/StacHeader.vue index bcb7f9cba..5dda10ebe 100644 --- a/src/components/StacHeader.vue +++ b/src/components/StacHeader.vue @@ -42,7 +42,8 @@ import { mapState, mapGetters, mapMutations, mapActions } from 'vuex'; import Source from './Source.vue'; import StacLink from './StacLink.vue'; import { BIconArrow90degUp, BIconArrowLeft, BIconBook, BIconFolderSymlink, BIconSearch, BIconLock, BIconUnlock } from "bootstrap-vue"; -import STAC from '../models/stac'; +import { getDisplayTitle } from '../models/stac'; +import { CatalogLike, STAC } from 'stac-js'; import Utils from '../utils'; export default { @@ -113,9 +114,9 @@ export default { }, icon() { if (this.data instanceof STAC) { - let icons = this.data.getIcons(); + const icons = this.data.getIcons(); if (icons.length > 0) { - return icons[0]; + return icons[0].getAbsoluteUrl(); } } return null; @@ -125,7 +126,7 @@ export default { return null; } let searchLink; - if (this.data instanceof STAC && !this.data.equals(this.root)) { + if (this.data instanceof CatalogLike && !this.data.equals(this.root)) { searchLink = this.data.getSearchLink() || this.data.getApiCollectionsLink(); } if (searchLink) { @@ -149,7 +150,7 @@ export default { return { href: this.root.getAbsoluteUrl(), rel: 'root', - title: STAC.getDisplayTitle(this.root) + title: getDisplayTitle(this.root) }; } } diff --git a/src/components/StacLink.vue b/src/components/StacLink.vue index 7dc395ca6..5e6b0598b 100644 --- a/src/components/StacLink.vue +++ b/src/components/StacLink.vue @@ -11,7 +11,8 @@ import { mapState, mapGetters } from 'vuex'; import { stacBrowserNavigatesTo } from "../rels"; import Utils from '../utils'; -import STAC from '../models/stac'; +import { getDisplayTitle } from '../models/stac'; +import { STAC } from 'stac-js'; import URI from 'urijs'; export default { @@ -47,9 +48,9 @@ export default { ...mapGetters(['toBrowserPath', 'getRequestUrl', 'isExternalUrl']), icon() { if (this.stac) { - let icons = this.stac.getIcons(); + const icons = this.stac.getIcons(); if (icons.length > 0) { - return icons[0]; + return icons[0].getAbsoluteUrl(); } } return null; @@ -116,7 +117,7 @@ export default { href() { if (this.stac || this.isStacBrowserLink) { let href; - if (this.stac) { + if (this.stac instanceof STAC) { href = this.stac.getBrowserPath(); } else { @@ -155,7 +156,7 @@ export default { } let fallback = typeof this.fallbackTitle === 'function' ? this.fallbackTitle() : this.fallbackTitle; - return STAC.getDisplayTitle(this.data, fallback); + return getDisplayTitle(this.data, fallback); } }, methods: { diff --git a/src/components/ThumbnailCardMixin.js b/src/components/ThumbnailCardMixin.js index e005191e3..3a50c09a7 100644 --- a/src/components/ThumbnailCardMixin.js +++ b/src/components/ThumbnailCardMixin.js @@ -1,47 +1,48 @@ -import { mapState } from 'vuex'; - -export default { - props: { - showThumbnail: { - type: Boolean, - default: true - } - }, - computed: { - ...mapState(['cardViewMode', 'crossOriginMedia', 'defaultThumbnailSize']), - isList() { - return this.data && !this.data.isItem() && this.cardViewMode === 'list'; - }, - hasImage() { - return this.showThumbnail && this.thumbnail; - }, - thumbnail() { - if (this.data) { - let thumbnails = this.data.getThumbnails(true, 'thumbnail'); - if (thumbnails.length > 0) { - let t = thumbnails[0]; - let width, height; - if (Array.isArray(t['proj:shape']) && t['proj:shape'].length === 2) { - [height, width] = t['proj:shape']; - } - else if (Array.isArray(this.defaultThumbnailSize) && this.defaultThumbnailSize.length === 2) { - [height, width] = this.defaultThumbnailSize; - } - return { - src: t.href, - alt: t.title, - crossorigin: this.crossOriginMedia, - right: this.isList, - blankColor: "rgba(0, 0, 0, 0.125)", - width, - height, - // for b-card-img-lazy - "blank-width": width, - "blank-height": height - }; - } - } - return null; - } - } +import { mapState } from 'vuex'; + +export default { + props: { + showThumbnail: { + type: Boolean, + default: true + } + }, + computed: { + ...mapState(['cardViewMode', 'crossOriginMedia', 'defaultThumbnailSize']), + isList() { + return this.data && !this.data.isItem() && this.cardViewMode === 'list'; + }, + hasImage() { + return this.showThumbnail && this.thumbnail; + }, + thumbnail() { + if (this.data) { + let thumbnails = this.data.getThumbnails(true, 'thumbnail'); + if (thumbnails.length > 0) { + let t = thumbnails[0]; + let width, height; + const shape = t.getMetadata('proj:shape'); + if (Array.isArray(shape) && shape.length === 2) { + [height, width] = shape; + } + else if (Array.isArray(this.defaultThumbnailSize) && this.defaultThumbnailSize.length === 2) { + [height, width] = this.defaultThumbnailSize; + } + return { + src: t.getAbsoluteUrl(), + alt: t.title, + crossorigin: this.crossOriginMedia, + right: this.isList, + blankColor: "rgba(0, 0, 0, 0.125)", + width, + height, + // for b-card-img-lazy + "blank-width": width, + "blank-height": height + }; + } + } + return null; + } + } }; \ No newline at end of file diff --git a/src/components/Thumbnails.vue b/src/components/Thumbnails.vue index 9e0807b6d..f7eca5c78 100644 --- a/src/components/Thumbnails.vue +++ b/src/components/Thumbnails.vue @@ -4,8 +4,8 @@
@@ -73,7 +73,7 @@ export default { z-index: 1; .fullscreen-button { - margin: 10px; + margin: 5px; } } @@ -85,4 +85,4 @@ export default { } } } - \ No newline at end of file + diff --git a/src/components/Tree.vue b/src/components/Tree.vue index 353188e11..87af248c2 100644 --- a/src/components/Tree.vue +++ b/src/components/Tree.vue @@ -42,7 +42,8 @@ import { BIconFileEarmarkRichtext, BIconFolderMinus, BIconFolderPlus, BIconThreeDots } from "bootstrap-vue"; import { mapGetters, mapState } from 'vuex'; import Utils from '../utils'; -import STAC from '../models/stac'; +import { getDisplayTitle } from '../models/stac'; +import { STAC, CatalogLike } from 'stac-js'; export default { name: 'Tree', @@ -149,7 +150,7 @@ export default { if (this.pagination) { return this.$t('tree.moreCollectionPagesAvailable'); } - return STAC.getDisplayTitle([this.item, this.stac]); + return getDisplayTitle([this.item, this.stac]); }, hasMore() { return this.childs.length > this.shownChilds.length; @@ -199,7 +200,7 @@ export default { }, methods: { updateChilds() { - if (this.stac instanceof STAC) { + if (this.stac instanceof CatalogLike) { this.childs = this.stac.getChildren(this.apiCatalogPriority); } else { diff --git a/src/components/Validation.vue b/src/components/Validation.vue index e8436d03e..570a7f805 100644 --- a/src/components/Validation.vue +++ b/src/components/Validation.vue @@ -8,10 +8,9 @@ + + diff --git a/src/components/maps/LayerControlGroup.vue b/src/components/maps/LayerControlGroup.vue new file mode 100644 index 000000000..99d90b467 --- /dev/null +++ b/src/components/maps/LayerControlGroup.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/src/components/maps/LayerControlMixin.js b/src/components/maps/LayerControlMixin.js new file mode 100644 index 000000000..22f5d7764 --- /dev/null +++ b/src/components/maps/LayerControlMixin.js @@ -0,0 +1,19 @@ +export default { + methods: { + getTitle(layer) { + let title = layer.get('title') || this.$t('mapping.layers.unnamed', {id: layer.ol_uid}); + if (layer.get('bounds')) { + return this.$t('mapping.layers.footprint'); + } + let stac = layer.get('stac'); + if (stac) { + if (stac.isAsset() || stac.isLink()) { + title = stac.getMetadata('title') || stac.getKey(); + } else { + title = stac.getMetadata('title') || stac.id; + } + } + return title; + } + } +}; diff --git a/src/components/maps/MapMixin.js b/src/components/maps/MapMixin.js new file mode 100644 index 000000000..2bf8a9b63 --- /dev/null +++ b/src/components/maps/MapMixin.js @@ -0,0 +1,166 @@ +import Utils from '../../utils'; +import { mapState } from 'vuex'; +import Map from 'ol/Map.js'; +import View from 'ol/View.js'; +import { defaults } from 'ol/interaction/defaults'; +import ZoomControl from 'ol/control/Zoom.js'; +import AttributionControl from 'ol/control/Attribution.js'; +import FullScreenControl from 'ol/control/FullScreen.js'; +import { stacRequest } from '../../store/utils'; + +import configureBasemap from '../../../basemaps.config'; +import CONFIG from '../../../config'; +import proj4 from 'proj4'; +import {register} from 'ol/proj/proj4.js'; +// Register pre-defined CRS from config in proj4 +if (Utils.isObject(CONFIG.crs)) { + for (const code in CONFIG.crs) { + proj4.defs(code, CONFIG.crs[code]); + } +} +register(proj4); // required to support source reprojection + +export default { + computed: { + ...mapState(['buildTileUrlTemplate', 'crossOriginMedia', 'displayGeoTiffByDefault', 'useTileLayerAsFallback']), + stacLayerOptions() { + return { + buildTileUrlTemplate: this.buildTileUrlTemplate, + crossOriginMedia: this.crossOriginMedia, + displayGeoTiffByDefault: this.displayGeoTiffByDefault, + useTileLayerAsFallback: this.useTileLayerAsFallback, + httpRequestFn: async (url, responseType) => { + const response = await stacRequest(this.$store, url, {responseType}); + return response.data; + }, + }; + }, + hasBasemap() { + return this.basemaps.length > 0; + } + }, + data() { + return { + map: null, + zoomControl: null, + attributionControl: null, + fullScreenControl: null, + basemaps: [], + }; + }, + created() { + this.$root.$on('uiLanguageChanged', this.translate); + }, + methods: { + async createMap(element, stac, onfocusOnly = false) { + let projection = 'EPSG:3857'; + let visibleLayer = 0; + + // Get basemaps + this.basemaps = configureBasemap(stac, this.$i18n); + if (this.basemaps.length > 0) { + const ix = this.basemaps.findIndex(basemap => basemap.visible); + if (ix >= 0) { + visibleLayer = ix; + } + const currentBasemap = this.basemaps[visibleLayer]; + if (currentBasemap?.projection) { + projection = currentBasemap?.projection; + } + } + + // Create map instance + this.map = new Map({ + target: element, + controls: [], + interactions: defaults({ + altShiftDragRotate: false, + pinchRotate: false, + onfocusOnly + }), + view: new View({ + center: [0, 0], + zoom: 0, + showFullExtent: true, + projection, + }), + }); + + // Add controls + this.createControls(); + + // Add basemaps + await this.addBasemaps(this.basemaps, visibleLayer); + }, + createControls() { + ['zoom', 'attribution', 'fullScreen'].forEach(type => { + const key = type + 'Control'; + if (this[key]) { + this.map.removeControl(this[key]); + this[key] = null; + } + }); + + this.zoomControl = new ZoomControl({ + zoomInLabel: this.$t('mapping.zoom.in.label'), + zoomOutLabel: this.$t('mapping.zoom.out.label'), + zoomInTipLabel: this.$t('mapping.zoom.in.description'), + zoomOutTipLabel: this.$t('mapping.zoom.out.description') + }); + this.map.addControl(this.zoomControl); + + this.attributionControl = new AttributionControl({ + tipLabel: this.$t('mapping.attribution.description'), + label: this.$t('mapping.attribution.label'), + collapseLabel: this.$t('mapping.attribution.collapseLabel'), + }); + this.map.addControl(this.attributionControl); + + this.fullScreenControl = new FullScreenControl({ + label: this.$t('fullscreen.showLabel'), + labelActive: this.$t('fullscreen.exitLabel'), + tipLabel: this.$t('fullscreen.show'), + }); + this.fullScreenControl.on('enterfullscreen', () => { + this.fullScreenControl.button_.title = this.$t('fullscreen.exit'); + }); + this.fullScreenControl.on('leavefullscreen', () => { + this.fullScreenControl.button_.title = this.$t('fullscreen.show'); + }); + this.map.addControl(this.fullScreenControl); + }, + translate() { + this.createControls(); + }, + async addBasemaps(basemaps, visibleLayer = 0) { + const promises = basemaps.map(async (options) => { + try { + const layerClassName = options.is === 'VectorTile' ? 'VectorTile' : 'WebGLTile'; + const [{default: sourceCls}, {default: layerCls}] = await Promise.all([ + import(`ol/source/${options.is}.js`), + import(`ol/layer/${layerClassName}.js`) + ]); + const source = new sourceCls(options); + const layer = new layerCls({ + source, + title: options.title, + base: true + }); + if (options.layerCreated) { + return await options.layerCreated(layer, source); + } + return layer; + } catch (error) { + console.error(`Failed to load basemap source for ${options.is}`, error); + return null; + } + }); + (await Promise.all(promises)) + .filter(options => Utils.isObject(options)) + .forEach((layer, i) => { + layer.setVisible(i === visibleLayer); + this.map.addLayer(layer); + }); + } + } +}; diff --git a/src/components/maps/MapSelect.vue b/src/components/maps/MapSelect.vue new file mode 100644 index 000000000..4bcadb611 --- /dev/null +++ b/src/components/maps/MapSelect.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/src/components/maps/TextControl.vue b/src/components/maps/TextControl.vue new file mode 100644 index 000000000..d45be7307 --- /dev/null +++ b/src/components/maps/TextControl.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/src/components/maps/UserLocationControl.vue b/src/components/maps/UserLocationControl.vue new file mode 100644 index 000000000..e6488b851 --- /dev/null +++ b/src/components/maps/UserLocationControl.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/src/locale-id.js b/src/locale-id.js deleted file mode 100644 index b510da04d..000000000 --- a/src/locale-id.js +++ /dev/null @@ -1,187 +0,0 @@ -// This code is based on https://github.com/cherry-projects/locale-id -// Due to the "heavy" dependencies, it has been slimmed down - -// http://userguide.icu-project.org/locale -export default function parse(locale) { - if (!locale) { - return undefined; - } - - // extract keyword - const stringLocale = String(locale); - const keywordPos = stringLocale.indexOf('@'); - - const keyword = keywordPos !== -1 - ? stringLocale.substr(keywordPos + 1) - : undefined; - - const localeWithoutKeyword = keywordPos !== -1 - ? stringLocale.substr(0, keywordPos) - : stringLocale; - - // en-us => en_us - const parts = String(localeWithoutKeyword) - .replace(/-/g, '_') - .split('_'); - - if (!parts.length || parts.length > 4) { - return undefined; - } - - const language = parts.shift(); - if (!language) { - return undefined; - } - - const retVar = { - keyword, - language: language.toLowerCase(), - }; - - if (!parts.length) { - return retVar; - } - - if (parts.length === 3) { - const variant = parts.pop(); - if (variant) { - retVar.variant = variant.toUpperCase(); - } - } - - let country = parts.pop(); - if (country.length > 3) { - retVar.keyword = country; - - country = parts.pop(); - } - - if (country) { - retVar.country = country.toUpperCase(); - } - - if (!parts.length) { - return retVar; - } - - const script = parts.pop(); - if (typeof script === 'string' && script.length >= 1) { - retVar.script = script[0].toUpperCase() + script.substring(1).toLowerCase(); - } - - return retVar; -} - -export function normalize(locale, delimeter = '_') { - const obj = parse(locale); - if (!obj) { - return obj; - } - - let result = obj.language; - - if (obj.script) { - result += `${delimeter}${obj.script}`; - } - - if (obj.country) { - result += `${delimeter}${obj.country}`; - } - - return result; -} - -const splitAcceptLanguageRegEx = /([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/ig; -const acceptLanguageItemRegEx = /^([a-z]{1,8}(-[a-z]{1,8})?)/i; - -export function normalizeAcceptLanguage(acceptLanguage) { - const returnItems = []; - if (!acceptLanguage) { - return returnItems; - } - - const items = acceptLanguage.match(splitAcceptLanguageRegEx) || []; - items.forEach(acceptLanguageItem => { - const matches = acceptLanguageItem.match(acceptLanguageItemRegEx) || []; - const locale = normalize(matches[0]); - if (locale) { - returnItems.push(locale); - } - }); - - return returnItems; -} - -export function prepareSupported(supported) { - const lgs = {}; - - supported.forEach(supportedLocale => { - const { language, country } = parse(supportedLocale); - if (!language) { - throw new Error(`Locale ${supportedLocale} is not parsable`); - } - - if (!lgs[language]) { - lgs[language] = { - countries: {}, - firstCountry: undefined, - main: undefined, - }; - } - - const lg = lgs[language]; - if (country) { - lg.countries[country] = supportedLocale; - - if (!lg.firstCountry) { - lg.firstCountry = supportedLocale; - } - } else { - lg.main = supportedLocale; - } - }); - - return lgs; -} - -export function getBest(supported, locale, defaultLocale, getAnyCountry) { - const lgs = Array.isArray(supported) ? prepareSupported(supported) : supported; - - // return defaultLocale if current locale is undefined - if (!locale && defaultLocale) { - return getBest(supported, defaultLocale, undefined, getAnyCountry); - } - - if (!locale) { - return undefined; - } - - const { language, country } = parse(locale); - if (!language) { - return defaultLocale; - } - - // selected locale is not supported - if (!lgs[language]) { - if (locale === defaultLocale) { - return undefined; - } - - return getBest(supported, defaultLocale, null, getAnyCountry); - } - - const { countries, main = defaultLocale, firstCountry } = lgs[language]; - if (!countries || !country) { - if (getAnyCountry && firstCountry) { - return firstCountry; - } - - return main; - } - - if (getAnyCountry && firstCountry) { - return countries[country] ? countries[country] : firstCountry; - } - - return countries[country] ? countries[country] : main; -} diff --git a/src/locales/de/texts.json b/src/locales/de/texts.json index 2202108a3..9853f2d22 100644 --- a/src/locales/de/texts.json +++ b/src/locales/de/texts.json @@ -41,12 +41,12 @@ "password": "Passwort", "required": "Anmeldung erforderlich", "schemeTypes": { + "apiKey": "API-Schlüssel", "http": "HTTP {scheme}", - "s3": "S3", - "signedUrl": "Signierte URL", "oauth2": "OAuth 2", - "apiKey": "API-Schlüssel", - "openIdConnect": "OpenID Connect" + "openIdConnect": "OpenID Connect", + "s3": "S3", + "signedUrl": "Signierte URL" }, "title": "Anmelden", "unauthorized": "Sie haben keine Berechtigung um diese Daten abzurufen. Bitte melden Sie sich an.", @@ -113,7 +113,9 @@ "featureExperimental": "Diese Funktion ist noch experimentell und kann unerwartete Ergebnisse verursachen!", "fullscreen": { "exit": "Verlasse den Vollbild-Modus", - "show": "Zeige im Vollbild-Modus" + "exitLabel": "✕", + "show": "Öffne im Vollbild-Modus", + "showLabel": "⛶" }, "goBack": { "description": "Gehe zurück zu: {type}", @@ -147,12 +149,31 @@ "noneAvailableForCollection": "Für diesen Katalog sind keine Elemente verfügbar.", "showFilter": "Zeige Filter" }, - "leaflet": { + "loading": "Lade...", + "map": "Karte", + "mapping": { + "attribution": { + "collapseLabel": "✕", + "description": "Namensnennungen", + "label": "i" + }, + "bboxSelect": { + "add": "Klicke auf die Karte, um eine Box für die räumliche Ausdehnung zu erstellen.", + "remove": "Klicke in die Box, um sie zu entfernen." + }, "close": "Schließen", - "noFeatureProperties": "Keine weiteren Daten verfügbar für dieses Element.", - "stayLayer": { - "error": "Entschuldigung, die Daten auf der Karte anzuzeigen ist fehlgeschlagen." + "fit": "Ansicht an räumliche Ausdehnung anpassen", + "layers": { + "base": "Grundkarten", + "footprint": "Räumliche Ausdehnung", + "title": "Kartenebenen", + "unnamed": "Unbenannt #{id}" + }, + "location": { + "description": "Springe zu deiner Position" }, + "nobasemap": "Keine Grundkarten verfügbar.", + "nodata": "In den Metadaten sind keine räumlichen Informationen verfügbar.", "zoom": { "in": { "description": "Vergrößern", @@ -160,12 +181,10 @@ }, "out": { "description": "Verkleinern", - "label": "-" + "label": "–" } } }, - "loading": "Lade...", - "map": "Karte", "messageForSchemaError": "{message}, für Schema {schemaPath}", "metadata": { "general": "Allgemeines", @@ -305,8 +324,8 @@ "message": "{title} ist verfügbar unter {url}", "sharePageWithOthers": "Teile die Adresse dieser Seite:", "title": "Teilen", - "x": "X (Twitter)", - "withOthers": "Teile diese Seite mit anderen" + "withOthers": "Teile diese Seite mit anderen", + "x": "X (Twitter)" }, "stacExtension": "STAC-Erweiterung", "stacVersion": "STAC-Version", diff --git a/src/locales/en-GB/texts.json b/src/locales/en-GB/texts.json index fe329521b..9e6acd0f6 100644 --- a/src/locales/en-GB/texts.json +++ b/src/locales/en-GB/texts.json @@ -34,8 +34,8 @@ "specifyCatalog": "Please specify a STAC Catalogue or API..." }, "items": {}, - "leaflet": { - "stayLayer": {}, + "mapping": { + "attribution": {}, "zoom": { "in": {}, "out": {} diff --git a/src/locales/en/texts.json b/src/locales/en/texts.json index 5e0e20b0c..b289412aa 100644 --- a/src/locales/en/texts.json +++ b/src/locales/en/texts.json @@ -112,8 +112,10 @@ }, "featureExperimental": "This feature is still experimental and may give unexpected results!", "fullscreen": { - "exit": "Exit Fullscreen", - "show": "View Fullscreen" + "exit": "Exit fullscreen mode", + "exitLabel": "✕", + "show": "Open in fullscreen mode", + "showLabel": "⛶" }, "goBack": { "description": "Go back to the {type}", @@ -147,12 +149,31 @@ "noneAvailableForCollection": "No items available for this collection.", "showFilter": "Show Filters" }, - "leaflet": { + "loading": "Loading...", + "map": "Map", + "mapping": { + "attribution": { + "label": "i", + "description": "Attributions", + "collapseLabel": "✕" + }, + "bboxSelect": { + "add": "Click on the map to add a bounding box.", + "remove": "Click inside the bounding box to remove it." + }, "close": "Close", - "noFeatureProperties": "No additional data available for this feature.", - "stayLayer": { - "error": "Sorry, adding the data to the map failed." + "fit": "Fit to extent", + "layers": { + "title": "Layers", + "base": "Base Layers", + "unnamed": "Unnamed #{id}", + "footprint": "Footprint" }, + "location": { + "description": "Go to your location" + }, + "nobasemap": "No basemaps available.", + "nodata": "No spatial information available in the metadata.", "zoom": { "in": { "description": "Zoom in", @@ -160,12 +181,10 @@ }, "out": { "description": "Zoom out", - "label": "-" + "label": "–" } } }, - "loading": "Loading...", - "map": "Map", "messageForSchemaError": "{message}, for schema {schemaPath}", "metadata": { "general": "General", diff --git a/src/locales/es/texts.json b/src/locales/es/texts.json index 1b018c865..3cb7c9da1 100644 --- a/src/locales/es/texts.json +++ b/src/locales/es/texts.json @@ -113,7 +113,9 @@ "featureExperimental": "¡Esta funcionalidad es experimental y puede producir resultados inesperados!", "fullscreen": { "exit": "Salir de pantalla completa", - "show": "Ver en pantalla completa" + "exitLabel": "✕", + "show": "Ver en pantalla completa", + "showLabel": "⛶" }, "goBack": { "description": "Volver al {type}", @@ -147,12 +149,14 @@ "noneAvailableForCollection": "No hay elementos disponibles para esta colección.", "showFilter": "Mostrar Filtros" }, - "leaflet": { - "close": "Cerrar", - "noFeatureProperties": "No hay datos adicionales disponibles para este objeto.", - "stayLayer": { - "error": "Perdón, la carga de datos en el mapa falló." + "loading": "Cargando...", + "map": "Mapa", + "mapping": { + "attribution": { + "label": "i", + "collapseLabel": "✕" }, + "close": "Cerrar", "zoom": { "in": { "description": "Acercar el zoom", @@ -160,12 +164,10 @@ }, "out": { "description": "Alejar el zoom", - "label": "-" + "label": "–" } } }, - "loading": "Cargando...", - "map": "Mapa", "messageForSchemaError": "{message}, para el esquema {schemaPath}", "metadata": { "general": "General", diff --git a/src/locales/fr/texts.json b/src/locales/fr/texts.json index ec0c81188..80e41a9fe 100644 --- a/src/locales/fr/texts.json +++ b/src/locales/fr/texts.json @@ -113,7 +113,9 @@ "featureExperimental": "Cette fonctionnalité est encore expérimentale et peut donner des résultats inattendus!", "fullscreen": { "exit": "Quitter le mode plein écran", - "show": "Voir en plein écran" + "exitLabel": "✕", + "show": "Voir en plein écran", + "showLabel": "⛶" }, "goBack": { "description": "Revenir au {type}", @@ -147,12 +149,13 @@ "noneAvailableForCollection": "Aucun item disponible pour cette collection.", "showFilter": "Afficher les filtres" }, - "leaflet": { - "close": "Fermer", - "noFeatureProperties": "Aucune donnée supplémentaire n'est disponible pour cette fonctionnalité.", - "stayLayer": { - "error": "Désolé, l'ajout des données à la carte a échoué." + "loading": "Chargement...", + "mapping": { + "attribution": { + "label": "i", + "collapseLabel": "✕" }, + "close": "Fermer", "zoom": { "in": { "description": "Zoom avant", @@ -160,11 +163,10 @@ }, "out": { "description": "Zoom arrière", - "label": "-" + "label": "–" } } }, - "loading": "Chargement...", "map": "Carte", "messageForSchemaError": "{message}, pour le schéma {schemaPath}", "metadata": { diff --git a/src/locales/it/texts.json b/src/locales/it/texts.json index 3e59ffa39..d8a65e1bf 100644 --- a/src/locales/it/texts.json +++ b/src/locales/it/texts.json @@ -113,7 +113,9 @@ "featureExperimental": "Questa funzione è ancora sperimentale e potrebbe dare risultati inaspettati!", "fullscreen": { "exit": "Esci dalla modalità a schermo intero", - "show": "Mostra in modalità a schermo intero" + "exitLabel": "✕", + "show": "Mostra in modalità a schermo intero", + "showLabel": "⛶" }, "goBack": { "description": "Torna a {type}", @@ -147,12 +149,24 @@ "noneAvailableForCollection": "Non ci sono Elementi disponibili per questa Collezione.", "showFilter": "Mostra filtri" }, - "leaflet": { + "loading": "Carico...", + "map": "Mappa", + "mapping": { + "attribution": { + "label": "i", + "collapseLabel": "✕" + }, + "bboxSelect": { + "add": "Cliccare sulla mappa per aggiungere un box di selezione.", + "remove": "Cliccare dentro il box per eliminarlo." + }, "close": "Chiudi", - "noFeatureProperties": "Non ci sono altri dati disponibili per questo Elemento.", - "stayLayer": { - "error": "Non è stato possibile aggiungere i dati alla mappa" + "fit": "Adatta alla estensione", + "location": { + "description": "Vai alla tua posizione attuale" }, + "nobasemap": "Mappa base non disponibile.", + "nodata": "Informazione spaziale mancante nei metadati.", "zoom": { "in": { "description": "Zoom avanti", @@ -160,12 +174,10 @@ }, "out": { "description": "Zoom indietro", - "label": "-" + "label": "–" } } }, - "loading": "Carico...", - "map": "Mappa", "messageForSchemaError": "{message} per lo schema {schemaPath}", "metadata": { "general": "Generale", diff --git a/src/locales/ja/texts.json b/src/locales/ja/texts.json index d36cc9188..c82a5598e 100644 --- a/src/locales/ja/texts.json +++ b/src/locales/ja/texts.json @@ -94,7 +94,9 @@ "featureExperimental": "この機能はまだ実験的で、予期しない結果をもたらす可能性があります。", "fullscreen": { "exit": "全画面表示を終了", - "show": "全画面表示" + "exitLabel": "✕", + "show": "全画面表示", + "showLabel": "⛶" }, "goBack": { "description": "{type} に戻る", @@ -127,12 +129,11 @@ "noneAvailableForCollection": "このコレクションに利用可能なアイテムはありません。", "showFilter": "フィルターを表示" }, - "leaflet": { + "loading": "読み込み中...", + "map": "マップ", + "mapping": { + "attribution": {}, "close": "閉じる", - "noFeatureProperties": "この機能には追加のデータはありません。", - "stayLayer": { - "error": "マップへのデータの追加に失敗しました。" - }, "zoom": { "in": { "description": "拡大", @@ -140,12 +141,10 @@ }, "out": { "description": "縮小", - "label": "-" + "label": "–" } } }, - "loading": "読み込み中...", - "map": "マップ", "messageForSchemaError": "{message}, スキーマ {schemaPath}", "metadata": { "general": "一般", diff --git a/src/locales/pt-BR/texts.json b/src/locales/pt-BR/texts.json index f76510333..d7545d313 100644 --- a/src/locales/pt-BR/texts.json +++ b/src/locales/pt-BR/texts.json @@ -113,7 +113,9 @@ "featureExperimental": "Esta funcionalidade ainda é experimental e pode dar resultados inesperados!", "fullscreen": { "exit": "Sair da tela cheia", - "show": "Ver tela cheia" + "exitLabel": "✕", + "show": "Ver tela cheia", + "showLabel": "⛶" }, "goBack": { "description": "Voltar para {type}", @@ -147,12 +149,14 @@ "noneAvailableForCollection": "Nenhum item disponível para esta coleção.", "showFilter": "Mostrar filtros" }, - "leaflet": { - "close": "Fechar", - "noFeatureProperties": "Não há dados adicionais disponíveis para este elemento.", - "stayLayer": { - "error": "Desculpe, não foi possível adicionar os dados ao mapa." + "loading": "Carregando...", + "map": "Mapa", + "mapping": { + "attribution": { + "label": "i", + "collapseLabel": "✕" }, + "close": "Fechar", "zoom": { "in": { "description": "Aumentar o zoom", @@ -160,12 +164,10 @@ }, "out": { "description": "Diminuir o zoom", - "label": "-" + "label": "–" } } }, - "loading": "Carregando...", - "map": "Mapa", "messageForSchemaError": "{message}, para esquema {schemaPath}", "metadata": { "general": "Geral", diff --git a/src/locales/pt/texts.json b/src/locales/pt/texts.json index ffa958fc7..e57a15c38 100644 --- a/src/locales/pt/texts.json +++ b/src/locales/pt/texts.json @@ -113,7 +113,9 @@ "featureExperimental": "Esta funcionalidade ainda é experimental e pode dar resultados inesperados!", "fullscreen": { "exit": "Sair do ecrã completo", - "show": "Ver ecrã completo" + "exitLabel": "✕", + "show": "Ver ecrã completo", + "showLabel": "⛶" }, "goBack": { "description": "Voltar para {type}", @@ -147,12 +149,14 @@ "noneAvailableForCollection": "Nenhum item disponível para esta coleção.", "showFilter": "Mostrar filtros" }, - "leaflet": { - "close": "Fechar", - "noFeatureProperties": "Não há informação adicional disponível para este elemento.", - "stayLayer": { - "error": "Desculpe, não foi possível adicionar os dados ao mapa." + "loading": "Carregando...", + "map": "Mapa", + "mapping": { + "attribution": { + "label": "i", + "collapseLabel": "✕" }, + "close": "Fechar", "zoom": { "in": { "description": "Aumentar o zoom", @@ -160,12 +164,10 @@ }, "out": { "description": "Diminuir o zoom", - "label": "-" + "label": "–" } } }, - "loading": "Carregando...", - "map": "Mapa", "messageForSchemaError": "{message}, para esquema {schemaPath}", "metadata": { "general": "Geral", diff --git a/src/locales/ro/texts.json b/src/locales/ro/texts.json index 96aec93aa..70b831468 100644 --- a/src/locales/ro/texts.json +++ b/src/locales/ro/texts.json @@ -113,7 +113,9 @@ "featureExperimental": "Această funcție este încă experimentală și poate da rezultate neașteptate!", "fullscreen": { "exit": "Ieși din modul ecran complet", - "show": "Vizualizați pe tot ecranul" + "exitLabel": "✕", + "show": "Vizualizați pe tot ecranul", + "showLabel": "⛶" }, "goBack": { "description": "Reveniți la {type}", @@ -147,12 +149,14 @@ "noneAvailableForCollection": "Nu există articole disponibile pentru această colecție.", "showFilter": "Afișează filtre" }, - "leaflet": { - "close": "Închidere", - "noFeatureProperties": "Nu sunt disponibile date suplimentare pentru această caracteristică.", - "stayLayer": { - "error": "Ne pare rău, adăugarea datelor pe hartă nu a reușit." + "loading": "Încărcare...", + "map": "Hartă", + "mapping": { + "attribution": { + "label": "i", + "collapseLabel": "✕" }, + "close": "Închidere", "zoom": { "in": { "description": "Mărire", @@ -160,12 +164,10 @@ }, "out": { "description": "Micșorare", - "label": "-" + "label": "–" } } }, - "loading": "Încărcare...", - "map": "Hartă", "messageForSchemaError": "{message}, pentru schema {schemaPath}", "metadata": { "general": "General", diff --git a/src/models/stac.js b/src/models/stac.js index 631c01c51..08ce150e2 100644 --- a/src/models/stac.js +++ b/src/models/stac.js @@ -1,75 +1,173 @@ -import Utils, { geojsonMediaType } from "../utils"; +import { + Catalog as BaseCatalog, + Collection as BaseCollection, + Item as BaseItem, + ItemCollection as BaseItemCollection, + CollectionCollection as BaseCollectionCollection, + STAC +} from 'stac-js'; import Migrate from '@radiantearth/stac-migrate'; -import { getBest } from '../locale-id'; +import Utils, { geojsonMediaType } from "../utils"; -let stacObjCounter = 0; +export function createSTAC(data, url, path, migrate = true, updateVersionNumber = false) { + if (migrate) { + // Uncomment this line if the old checksum: fields should be converted + // This is usually not needed so it's not enabled by default to shrink the bundle size + // Migrate.enableMultihash(require('multihashes')); + data = Migrate.stac(data, updateVersionNumber); + } + if (data.type === 'Feature') { + return new Item(data, url, path); + } + else if (data.type === 'FeatureCollection') { + return new ItemCollection(data, url, path); + } + else if (data.type === 'Collection' || (!data.type && typeof data.extent !== 'undefined' && typeof data.license !== 'undefined')) { + return new Collection(data, url, path); + } + else if (!data.type && Array.isArray(data.collections)) { + return new CollectionCollection(data, url, path); + } + else { + return new Catalog(data, url, path); + } +} -// STAC Entity -class STAC { +export function addMissingChildren(catalogs, stac) { + let links = stac.getStacLinksWithRel('child').filter(link => { + // Don't add links that are already in collections: https://github.com/radiantearth/stac-browser/issues/103 + // ToDo: The runtime of this can probably be improved + let absoluteUrl = Utils.toAbsolute(link.href, stac.getAbsoluteUrl()); + return !catalogs.find(collection => collection.getAbsoluteUrl() === absoluteUrl); + }); + // place the children first to avoid conflicts with the paginated collections + // where the children are always at the end and can never be reached due to infinite scrolling + return links.concat(catalogs); +} - constructor(data, url, path, migrate = true) { - this._id = stacObjCounter++; - this._url = url; - this._path = path; - this._apiChildrenListeners = {}; - this._incomplete = false; - this._apiChildren = { - list: [], - prev: false, - next: false - }; +export function getDisplayTitle(sources, fallbackTitle = null) { + if (!Array.isArray(sources)) { + sources = [sources]; + } + let stac = sources.find(o => o instanceof STAC); + let link = sources.find(o => Utils.isObject(o) && !(o instanceof STAC)); + // Get title from STAC item/catalog/collection + const title = stac && stac.getMetadata("title"); + if (Utils.hasText(title)) { + return title; + } + // Get title from link + else if (link && Utils.hasText(link.title)) { + return link.title; + } + // Use id from STAC item/catalog/collection instead of titles + else if (stac && Utils.hasText(stac.id)) { + return stac.id; + } + // Use fallback title + else if (Utils.hasText(fallbackTitle)) { + return fallbackTitle; + } + // Use file or directory name from STAC as title + else if (stac) { + return Utils.titleForHref(stac.getAbsoluteUrl(), true); + } + // Use file or directory name from link as title + else if (link && Utils.hasText(link.href)) { + return Utils.titleForHref(link.href, true); + } + // Nothing available, return "untitled" + else { + return "Untitled"; + } +} - if (migrate) { - // Uncomment this line if the old checksum: fields should be converted - // This is usually not needed so it's not enabled by default to shrink the bundle size - // Migrate.enableMultihash(require('multihashes')); - if (data.type === 'FeatureCollection') { - data.features = data.features.map(item => Migrate.item(item, false)); - } - else { - data = Migrate.stac(data, false); - } - } - for (let key in data) { - if (typeof this[key] === 'undefined') { - this[key] = data[key]; - } - } - if (!Utils.hasText(this.type)) { - throw new Error('Not a valid STAC data source (no `type` present)'); - } +function getChildren(stac, priority = null) { + if (!stac.isCatalogLike()) { + return []; + } + + let showCollections = !priority || priority === 'collections'; + let showChilds = !priority || priority === 'childs'; + + let children = []; + if (showCollections && stac._apiChildren.prev) { + children.push(stac._apiChildren.prev); + } + if (showCollections && stac._apiChildren.list.length > 0) { + children = stac._apiChildren.list.slice(0); + } + if (showChilds) { + children = addMissingChildren(children, stac).concat(stac.getLinksWithRels(['item'])); + } + if (showCollections && stac._apiChildren.next) { + children.push(stac._apiChildren.next); } + return children; +} + + +function getSearchLink(stac) { + // The search link MUST be 'application/geo+json' as otherwise it's likely not STAC + // See https://github.com/opengeospatial/ogcapi-features/issues/832 + let links = Utils.getLinksWithRels(stac.links, ['search']) + .filter(link => Utils.isMediaType(link.type, geojsonMediaType)) + .map(link => Object.assign({}, link, {href: Utils.toAbsolute(link.href, stac.getAbsoluteUrl())})); + // Prefer POST if present + let post = links.find(link => Utils.hasText(link.method) && link.method.toUpperCase() === 'POST'); + return post || links[0] || null; +} + +export class ItemCollection extends BaseItemCollection { - isPotentiallyIncomplete() { - return this._incomplete; + constructor(data, url, path) { + super(data, url); + this._path = path; } - markPotentiallyIncomplete() { - this._incomplete = true; + getBrowserPath() { + return this._path; } - isItem() { - return this.type === 'Feature'; +} + +export class CollectionCollection extends BaseCollectionCollection { + + constructor(data, url, path) { + super(data, url); + this._path = path; } - isCatalog() { - return this.type === 'Catalog'; + getBrowserPath() { + return this._path; } - isCatalogLike() { - return this.isCatalog() || this.isCollection(); +} + +export class Collection extends BaseCollection { + + constructor(data, url, path) { + super(data, url); + this._path = path; + this._incomplete = false; + this._apiChildrenListeners = {}; + this._apiChildren = { + list: [], + prev: false, + next: false + }; } - isCollection() { - return this.type === 'Collection'; + getBrowserPath() { + return this._path; } - isItemCollection() { - return this.type === 'FeatureCollection'; + getSearchLink() { + return getSearchLink(this); } - hasApiData() { - return this._apiChildren.list.length > 0; + getChildren(priority = null) { + return getChildren(this, priority); } setApiDataListener(id, listener = null) { @@ -99,245 +197,73 @@ class STAC { } } - getFileFormats() { - let assets = []; - if ((this.isItem() || this.isCollection()) && Utils.isObject(this.assets)) { - assets = assets.concat(Object.values(this.assets)); - } - if (this.isCollection() && Utils.isObject(this.item_assets)) { - assets = assets.concat(Object.values(this.item_assets)); - } - return assets - .filter(asset => Array.isArray(asset.roles) && asset.roles.includes('data') && typeof asset.type === 'string') // Look for data files - .map(asset => asset.type) // Array shall only contain media types - .filter((v, i, a) => a.indexOf(v) === i); // Unique values - } - - getChildren(priority = null) { - if (!this.isCatalogLike()) { - return []; - } +} - let showCollections = !priority || priority === 'collections'; - let showChilds = !priority || priority === 'childs'; +export class Catalog extends BaseCatalog { - let children = []; - if (showCollections && this._apiChildren.prev) { - children.push(this._apiChildren.prev); - } - if (showCollections && this._apiChildren.list.length > 0) { - children = this._apiChildren.list.slice(0); - } - if (showChilds) { - children = STAC.addMissingChildren(children, this).concat(this.getLinksWithRels(['item'])); - } - if (showCollections && this._apiChildren.next) { - children.push(this._apiChildren.next); - } - return children; + constructor(data, url, path) { + super(data, url); + this._path = path; + this._incomplete = false; + this._apiChildrenListeners = {}; + this._apiChildren = { + list: [], + prev: false, + next: false + }; } - static addMissingChildren(catalogs, stac) { - let links = stac.getStacLinksWithRel('child').filter(link => { - // Don't add links that are already in collections: https://github.com/radiantearth/stac-browser/issues/103 - // ToDo: The runtime of this can probably be improved - let absoluteUrl = Utils.toAbsolute(link.href, stac.getAbsoluteUrl()); - return !catalogs.find(collection => collection.getAbsoluteUrl() === absoluteUrl); - }); - // place the children first to avoid conflicts with the paginated collections - // where the children are always at the end and can never be reached due to infinite scrolling - return links.concat(catalogs); + getBrowserPath() { + return this._path; } getSearchLink() { - // The search link MUST be 'application/geo+json' as otherwise it's likely not STAC - // See https://github.com/opengeospatial/ogcapi-features/issues/832 - let links = Utils.getLinksWithRels(this.links, ['search']) - .filter(link => Utils.isMediaType(link.type, geojsonMediaType)) - .map(link => Object.assign({}, link, {href: Utils.toAbsolute(link.href, this._url)})); - // Prefer POST if present - let post = links.find(link => Utils.hasText(link.method) && link.method.toUpperCase() === 'POST'); - return post || links[0] || null; - } - - getApiCollectionsLink() { - return this.getStacLinkWithRel('data'); - } - - getApiItemsLink() { - return this.getStacLinkWithRel('items'); + return getSearchLink(this); } - getMetadata(field) { - if (this.isItem()) { - return this.properties[field]; - } - else if (this.isCatalogLike()) { - return this[field]; - } - return null; - } - - getBrowserPath() { - return this._path; - } - - getAbsoluteUrl() { - return this._url; + getChildren(priority = null) { + return getChildren(this, priority); } - getLocaleLink(locale, fallbackLocale = null) { - let links = this.getStacLinksWithRel('alternate') - .filter(link => Utils.hasText(link.hreflang)); - - let available; - if (Array.isArray(this.languages)) { - available = this.languages.map(l => l.code); + setApiDataListener(id, listener = null) { + if (typeof listener === 'function') { + this._apiChildrenListeners[id] = listener; } else { - available = links.map(link => link.hreflang); + delete this._apiChildrenListeners[id]; } - - let best = getBest(available, locale, fallbackLocale); - return links.find(link => link.hreflang === best) || null; - } - - getStacLinksWithRel(rel, allowEmpty = true) { - return Utils.getLinksWithRels(this.links, [rel]) - .filter(link => Utils.isStacMediaType(link.type, allowEmpty)); } - getStacLinkWithRel(rel, allowEmpty = true) { - const links = this.getStacLinksWithRel(rel, allowEmpty); - if (links.length > 0) { - return links[0]; + setApiData(list, next = null, prev = null) { + if (prev) { + this._apiChildren.prev = prev; } - else { - return null; + if (next) { + this._apiChildren.next = next; } - } - - getLinkWithRel(rel) { - return Utils.getLinkWithRel(this.links, rel); - } - - getLinksWithRels(rels) { - return Utils.getLinksWithRels(this.links, rels); - } - - getLinksWithOtherRels(rels) { - return Utils.getLinksWithOtherRels(this.links, rels); - } + this._apiChildren.list = list; - getAssetsWithRoles(roles) { - let matches = []; - if (Utils.isObject(this.assets)) { - for (let key in this.assets) { - let asset = this.assets[key]; - if (Utils.isObject(asset) && typeof asset.href === 'string' && Array.isArray(asset.roles) && asset.roles.find(role => roles.includes(role))) { - matches.push(asset); - } + for (let id in this._apiChildrenListeners) { + try { + this._apiChildrenListeners[id](this._apiChildren); + } catch (error) { + console.error(error); } } - return matches; - } - - static getDisplayTitle(sources, fallbackTitle = null) { - if (!Array.isArray(sources)) { - sources = [sources]; - } - let stac = sources.find(o => o instanceof STAC); - let link = sources.find(o => Utils.isObject(o) && !(o instanceof STAC)); - // Get title from STAC item/catalog/collection - if (stac && Utils.hasText(stac.getTitle())) { - return stac.getTitle(); - } - // Get title from link - else if (link && Utils.hasText(link.title)) { - return link.title; - } - // Use id from STAC item/catalog/collection instead of titles - else if (stac && Utils.hasText(stac.id)) { - return stac.id; - } - // Use fallback title - else if (Utils.hasText(fallbackTitle)) { - return fallbackTitle; - } - // Use file or directory name from STAC as title - else if (stac) { - return Utils.titleForHref(stac.getAbsoluteUrl(), true); - } - // Use file or directory name from link as title - else if (link && Utils.hasText(link.href)) { - return Utils.titleForHref(link.href, true); - } - // Nothing available, return "untitled" - else { - return "Untitled"; - } } - getTitle() { - return this.getMetadata("title"); - } - - _linkToAbsolute(link) { - return Object.assign({}, link, { href: Utils.toAbsolute(link.href, this.getAbsoluteUrl()) }); - } +} - getIcons() { - return this.getLinksWithRels(['icon']) - .filter(img => Utils.canBrowserDisplayImage(img)) - .map(img => this._linkToAbsolute(img)); - } +export class Item extends BaseItem { - /** - * Get the thumbnails from the assets and links in a STAC entity. - * - * @param {boolean} browserOnly - Return only images that can be shown in a browser natively (PNG/JPG/GIF/WEBP). - * @param {?string} prefer - If not `null` (default), prefers a role over the other. Either `thumbnail` or `overview`. - * @returns - */ - getThumbnails(browserOnly = false, prefer = null) { // prefer can be either - let thumbnails = this.getAssetsWithRoles(['thumbnail', 'overview']); - // Get from links only if no assets are available as they should usually be the same as in assets - if (thumbnails.length === 0) { - thumbnails = this.getLinksWithRels(['preview']); - } - // Some old catalogs use just a asset key - if (thumbnails.length === 0 && Utils.isObject(this.assets) && Utils.isObject(this.assets.thumbnail)) { - thumbnails = [this.assets.thumbnail]; - } - if (browserOnly) { - // Remove all images that can't be displayed in a browser - thumbnails = thumbnails.filter(img => Utils.canBrowserDisplayImage(img)); - } - if (prefer && thumbnails.length > 1) { - // Prefer one role over the other. - // The two step approach with two filters ensures the same sort bevahiour across all browsers: - // see https://github.com/radiantearth/stac-browser/issues/370 - let filter = img => img.roles.includes(prefer); - thumbnails = thumbnails - .filter(filter) - .concat(thumbnails.filter(img => !filter(img))); - } - return thumbnails.map(img => this._linkToAbsolute(img)); + constructor(data, url, path) { + super(data, url); + this._path = path; + this._incomplete = false; } - equals(other) { - if (!Utils.isObject(other)) { - return false; - } - if (this === other) { - return true; - } - if (this.id === other.id && this.type == other.type) { - return true; - } - return false; + getBrowserPath() { + return this._path; } } - -export default STAC; diff --git a/src/schema-org.js b/src/schema-org.js index 551a5a2ff..0f4e44526 100644 --- a/src/schema-org.js +++ b/src/schema-org.js @@ -1,5 +1,6 @@ import Utils from './utils'; -import STAC from './models/stac'; +import { getDisplayTitle } from './models/stac'; +import { STAC } from 'stac-js'; import URI from 'urijs'; import i18n from './i18n'; @@ -51,7 +52,7 @@ function makeLinks(links, data, store, type = "DataCatalog") { return links.map(link => { let name, isBasedOn; if (link instanceof STAC) { - name = STAC.getDisplayTitle(link); + name = getDisplayTitle(link); isBasedOn = link.getAbsoluteUrl(); } else { @@ -100,14 +101,14 @@ function fallbackDescription(data, store) { } function createBaseSchema(data, type, store) { - let name = STAC.getDisplayTitle(data); + let name = getDisplayTitle(data); let stacUrl = data.getAbsoluteUrl(); let url = toBrowserUrl(stacUrl, store); let inLanguage = data.getMetadata('language')?.code; let thumbnails = data.getThumbnails(true); let thumbnailUrl; if (thumbnails.length > 0) { - thumbnailUrl = Utils.toAbsolute(thumbnails[0].href, data.getAbsoluteUrl()); + thumbnailUrl = thumbnails[0].getAbsoluteUrl(); } let license = data.getMetadata('license'); if (license && license !== 'proprietary' && license !== 'various' && license !== 'other') { diff --git a/src/store/index.js b/src/store/index.js index 6f13f9a8c..8ea1c19e2 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -4,13 +4,13 @@ import Vuex from "vuex"; import URI from "urijs"; import i18n from '../i18n'; -import { stacBrowserSpecialHandling } from "../rels"; import Utils, { BrowserError } from '../utils'; -import STAC from '../models/stac'; +import { addMissingChildren, getDisplayTitle, createSTAC } from '../models/stac'; +import { Collection, CatalogLike, STAC } from 'stac-js'; import auth from './auth.js'; import { addQueryIfNotExists, isAuthenticationError, Loading, processSTAC, proxyUrl, unproxyUrl, stacRequest } from './utils'; -import { getBest } from '../locale-id'; +import { getBest } from 'stac-js/src/locales'; import I18N from '@radiantearth/stac-fields/I18N'; import { translateFields, executeCustomFunctions, loadMessages } from '../i18n'; import { TYPES } from "../components/ApiCapabilitiesMixin"; @@ -99,7 +99,7 @@ function getStore(config, router) { } }, - displayCatalogTitle: (state, getters) => STAC.getDisplayTitle(getters.root, state.catalogTitle), + displayCatalogTitle: (state, getters) => getDisplayTitle(getters.root, state.catalogTitle), isCollection: state => state.data?.isCollection() || false, isCatalog: state => state.data?.isCatalog() || false, @@ -211,8 +211,8 @@ function getStore(config, router) { return []; }, catalogs: state => { - let hasCollections = Boolean(state.data instanceof STAC && state.data.getApiCollectionsLink() && state.apiCollections.length > 0); - let hasChilds = Boolean(state.data instanceof STAC); + let hasCollections = Boolean(state.data instanceof CatalogLike && state.data.getApiCollectionsLink() && state.apiCollections.length > 0); + let hasChilds = Boolean(state.data instanceof CatalogLike); let showCollections = !state.apiCatalogPriority || state.apiCatalogPriority === 'collections'; let showChilds = !state.apiCatalogPriority || state.apiCatalogPriority === 'childs'; let catalogs = []; @@ -220,35 +220,11 @@ function getStore(config, router) { catalogs = catalogs.concat(state.apiCollections); } if (hasChilds && showChilds) { - catalogs = STAC.addMissingChildren(catalogs, state.data); + catalogs = addMissingChildren(catalogs, state.data); } return catalogs; }, - // hasAsset also checks whether the assets have a href and thus are not item asset definitions - hasAssets: (state, getters) => Boolean(Object.values(getters.assets).find(asset => Utils.isObject(asset) && typeof asset.href === 'string')), - assets: (state, getters) => { - if (!Utils.isObject(state.data?.assets)) { - return {}; - } - else if (state.showThumbnailsAsAssets) { - return state.data.assets; - } - else { - let assets = {}; - let thumbnails = getters.thumbnails; - for (let key in state.data.assets) { - let asset = state.data.assets[key]; - if (!thumbnails.includes(asset)) { - assets[key] = asset; - } - } - return assets; - } - }, - thumbnails: state => state.data ? state.data.getThumbnails(true) : [], - additionalLinks: state => state.data ? state.data.getLinksWithOtherRels(stacBrowserSpecialHandling).filter(link => link.rel !== 'preview' || !Utils.canBrowserDisplayImage(link)) : [], - toBrowserPath: (state, getters) => url => { if (!Utils.hasText(url)) { url = '/'; @@ -515,7 +491,7 @@ function getStore(config, router) { state.title = title; } else { - state.title = STAC.getDisplayTitle(state.data, state.catalogTitle); + state.title = getDisplayTitle(state.data, state.catalogTitle); if (state.data) { let description = state.data.getMetadata('description'); if (Utils.hasText(description)) { @@ -743,7 +719,7 @@ function getStore(config, router) { return; } - const hasData = data instanceof STAC && !data.isPotentiallyIncomplete(); + const hasData = data instanceof STAC && !data._incomplete; if (!hasData) { cx.commit('loading', { url, loading }); try { @@ -751,7 +727,7 @@ function getStore(config, router) { if (!Utils.isObject(response.data)) { throw new BrowserError(i18n.t('errors.invalidJsonObject')); } - data = new STAC(response.data, url, path); + data = createSTAC(response.data, url, path); cx.commit('loaded', { url, data }); if (show) { @@ -786,8 +762,8 @@ function getStore(config, router) { } // Load API Collections - const apiCollectionLink = data.getApiCollectionsLink(); - const apiItemLink = data.getApiItemsLink(); + const apiCollectionLink = data instanceof CatalogLike && data.getApiCollectionsLink(); + const apiItemLink = data instanceof Collection && data.getApiItemsLink(); if (!omitApi && apiCollectionLink) { let args = { stac: data, show: loading.show }; try { @@ -884,8 +860,8 @@ function getStore(config, router) { return data; } else { - data = new STAC(item, url, cx.getters.toBrowserPath(url)); - data.markPotentiallyIncomplete(); + data = createSTAC(item, url, cx.getters.toBrowserPath(url)); + data._incomplete = true; cx.commit('loaded', { data, url }); return data; } @@ -950,8 +926,8 @@ function getStore(config, router) { return data; } else { - data = new STAC(collection, url, cx.getters.toBrowserPath(url)); - data.markPotentiallyIncomplete(); + data = createSTAC(collection, url, cx.getters.toBrowserPath(url)); + data._incomplete = true; cx.commit('loaded', { data, url }); return data; } @@ -975,14 +951,6 @@ function getStore(config, router) { cx.commit('setConformanceClasses', response.data.conformsTo); } }, - async loadGeoJson(cx, link) { - try { - let response = await stacRequest(cx, link); - return response.data; // Use data with $refs included as fallback anyway - } catch (error) { - return null; - } - }, async retryAfterAuth(cx) { let errorFn = error => cx.commit('showGlobalError', { error, diff --git a/src/theme/leaflet-areaselect.scss b/src/theme/leaflet-areaselect.scss deleted file mode 100644 index 0265f6453..000000000 --- a/src/theme/leaflet-areaselect.scss +++ /dev/null @@ -1,19 +0,0 @@ -/* This is based on https://github.com/heyman/leaflet-areaselect from @heymen - * with contributions from @lweller and @ebrensi */ - -.leaflet-areaselect-shade { - position: absolute; - background: rgba(0, 0, 0, 0.4); - cursor: inherit; -} -.leaflet-areaselect-handle { - position: absolute; - background: #fff; - border: 1px solid #666; - -moz-box-shadow: 1px 1px rgba(0, 0, 0, 0.2); - -webkit-box-shadow: 1px 1px rgba(0, 0, 0, 0.2); - box-shadow: 1px 1px rgba(0, 0, 0, 0.2); - width: 14px; - height: 14px; - cursor: move; -} diff --git a/src/theme/page.scss b/src/theme/page.scss index 4b3cb8389..56030f3df 100644 --- a/src/theme/page.scss +++ b/src/theme/page.scss @@ -142,7 +142,7 @@ body { border-bottom: 1px dotted $body-color; } - [class*='col'] { + [class^='col'] { position: static; } .card { diff --git a/src/views/Catalog.vue b/src/views/Catalog.vue index 4c6e611e4..fdd7ce6e2 100644 --- a/src/views/Catalog.vue +++ b/src/views/Catalog.vue @@ -26,7 +26,7 @@ - + @@ -34,8 +34,8 @@ - - + + @@ -52,7 +52,7 @@ @paginate="paginateItems" @filterItems="filterItems" @filtersShown="filtersShown" /> - + @@ -64,7 +64,7 @@ import Catalogs from '../components/Catalogs.vue'; import Description from '../components/Description.vue'; import Items from '../components/Items.vue'; import ReadMore from "vue-read-more-smooth"; -import ShowAssetMixin from '../components/ShowAssetMixin'; +import ShowAssetLinkMixin from '../components/ShowAssetLinkMixin'; import StacFieldsMixin from '../components/StacFieldsMixin'; import { formatLicense, formatTemporalExtents } from '@radiantearth/stac-fields/formatters'; import { BTabs, BTab } from 'bootstrap-vue'; @@ -92,7 +92,7 @@ export default { Thumbnails: () => import('../components/Thumbnails.vue') }, mixins: [ - ShowAssetMixin, + ShowAssetLinkMixin, StacFieldsMixin({ formatLicense, formatTemporalExtents }) ], data() { @@ -136,7 +136,7 @@ export default { }, computed: { ...mapState(['data', 'url', 'apiItems', 'apiItemsLink', 'apiItemsPagination', 'nextCollectionsLink', 'stateQueryParameters']), - ...mapGetters(['additionalLinks', 'catalogs', 'collectionLink', 'isCollection', 'items', 'getApiItemsLoading', 'parentLink', 'rootLink']), + ...mapGetters(['catalogs', 'collectionLink', 'isCollection', 'items', 'getApiItemsLoading', 'parentLink', 'rootLink']), cssStacType() { if (Utils.hasText(this.data?.type)) { return this.data?.type.toLowerCase(); @@ -146,9 +146,6 @@ export default { showFilters() { return Boolean(this.stateQueryParameters['itemFilterOpen']); }, - hasThumbnails() { - return this.thumbnails.length > 0; - }, linkPosition() { if (this.additionalLinks.length === 0) { return null; @@ -191,7 +188,13 @@ export default { return null; }, hasItemAssets() { - return Utils.size(this.data?.item_assets) > 0; + return this.itemAssets.length > 0; + }, + itemAssets() { + if (!this.data2 || !Utils.isObject(this.data2.item_assets)) { + return []; + } + return Object.values(this.data2.item_assets); }, itemPages() { let pages = Object.assign({}, this.apiItemsPagination); @@ -211,15 +214,20 @@ export default { return this.catalogs.length > 0; }, mapData() { - if (this.selectedAsset) { - return this.selectedAsset; + const data = {}; + if (this.selectedAssets.length > 0) { + data.assets = this.selectedAssets; } else { - return { - type: 'FeatureCollection', - features: this.items - }; + const items = this.items.filter(item => item.type === 'Feature'); + if (items.length > 0) { + data.items = { + type: 'FeatureCollection', + features: items + }; + } } + return data; } }, watch: { diff --git a/src/views/Item.vue b/src/views/Item.vue index 66de29b29..94c0a7ec6 100644 --- a/src/views/Item.vue +++ b/src/views/Item.vue @@ -6,15 +6,15 @@ - + - + - + @@ -39,7 +39,7 @@ import { mapState, mapGetters } from 'vuex'; import Description from '../components/Description.vue'; import ReadMore from "vue-read-more-smooth"; -import ShowAssetMixin from '../components/ShowAssetMixin'; +import ShowAssetLinkMixin from '../components/ShowAssetLinkMixin'; import { BTabs, BTab } from 'bootstrap-vue'; import { addSchemaToDocument, createItemSchema } from '../schema-org'; @@ -61,7 +61,9 @@ export default { ReadMore, Thumbnails: () => import('../components/Thumbnails.vue') }, - mixins: [ShowAssetMixin], + mixins: [ + ShowAssetLinkMixin + ], data() { return { ignoredMetadataFields: [ @@ -83,7 +85,7 @@ export default { }, computed: { ...mapState(['data', 'url']), - ...mapGetters(['additionalLinks', 'collectionLink', 'parentLink']) + ...mapGetters(['collectionLink', 'parentLink']) }, watch: { data: { diff --git a/src/views/Search.vue b/src/views/Search.vue index 558b80313..c0681d119 100644 --- a/src/views/Search.vue +++ b/src/views/Search.vue @@ -27,7 +27,7 @@ {{ $t('search.noItemsFound') }}