diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..56bdf86b --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,21 @@ +{ + "name": "Nuxt", + "image": "ghcr.io/acdh-oeaw/devcontainer-frontend:20", + "customizations": { + "vscode": { + "extensions": [ + "bradlc.vscode-tailwindcss", + "dbaeumer.vscode-eslint", + "editorconfig.editorconfig", + "esbenp.prettier-vscode", + "lokalise.i18n-ally", + "mikestead.dotenv", + "ms-playwright.playwright", + "nuxt.mdc", + "stylelint.vscode-stylelint", + "vue.volar", + "vue.vscode-typescript-vue-plugin" + ] + } + } +} diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..ba0ee27c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,65 @@ +## .gitignore ## + +# dependencies +node_modules/ +.pnpm-store/ + +# logs +*.log + +# non-public environment variables +.env.local +.env.*.local + +# caches +.eslintcache +.stylelintcache +*.tsbuildinfo + +# vercel +.vercel + +# misc +.DS_Store +.idea/ + +# nuxt.js +dist +.nuxt/ +.nitro/ +.output/ + +# playwright +/blob-report/ +/playwright/.cache/ +/playwright-report/ +/test-results/ + +# generated api-client +/lib/api-client/api.ts + + +## .dockerignore ## + +# git +.git/ +.gitattributes +.gitignore + +# github +.github/ + +# vscode settings +.vscode/ + +# environment variables +.env +.env.* + +# tests +playwright.config.ts +/e2e/ +/test/ + +# misc +.editorconfig diff --git a/.env.example b/.env.local.example similarity index 84% rename from .env.example rename to .env.local.example index 8b4309fc..d8ea2dbf 100644 --- a/.env.example +++ b/.env.local.example @@ -7,18 +7,25 @@ NUXT_PUBLIC_DATABASE="enabled" # imprint service NUXT_PUBLIC_REDMINE_ID= # web crawlers -BOTS="disabled" +NUXT_PUBLIC_BOTS="disabled" # ------------------------------------------------------------------------------------------------- -# analytics +# api # ------------------------------------------------------------------------------------------------- -NUXT_PUBLIC_MATOMO_BASE_URL="https://matomo.acdh.oeaw.ac.at" -# NUXT_PUBLIC_MATOMO_ID= +NUXT_PUBLIC_API_BASE_URL="https://demo-dev.openatlas.eu/api/" +NUXT_PUBLIC_OPENAPI_BASE_URL="https://demo-dev.openatlas.eu/openapi.json" # ------------------------------------------------------------------------------------------------- -# api +# map # ------------------------------------------------------------------------------------------------- -NUXT_PUBLIC_API_BASE_URL="https://demo-dev.openatlas.eu/api/" +NUXT_PUBLIC_MAP_BASELAYER_URL_LIGHT="https://basemaps.cartocdn.com/gl/positron-gl-style/style.json" +NUXT_PUBLIC_MAP_BASELAYER_URL_DARK="https://basemaps.cartocdn.com/gl/positron-gl-style/style.json" + +# ------------------------------------------------------------------------------------------------- +# analytics +# ------------------------------------------------------------------------------------------------- +NUXT_PUBLIC_MATOMO_BASE_URL="https://matomo.acdh.oeaw.ac.at" +# NUXT_PUBLIC_MATOMO_ID= # ------------------------------------------------------------------------------------------------- # cms @@ -31,10 +38,4 @@ OAUTH_CLIENT_SECRET= # GitHub OAuth app callback URL. OAUTH_REDIRECT_URL="https://openatlas-discovery-demo.acdh-ch-dev.oeaw.ac.at/api/oauth/callback" # Deployed website's base URL. -OAUTH_ALLOWED_ORIGIN="https://openatlas-discovery-demo.acdh-ch-dev.oeaw.ac.at/" - -# ------------------------------------------------------------------------------------------------- -# map -# ------------------------------------------------------------------------------------------------- -NUXT_PUBLIC_MAP_BASELAYER_ATTRIBUTION="© OpenStreetMap contributors" -NUXT_PUBLIC_MAP_BASELAYER_URL="https://tile.jawg.io/jawg-light/{z}/{x}/{y}.png?access-token=TUhizWedCN04NDjuRQtXfgE0HSuYwHzro3NRUDa3LMUlLbymREaTyUW2lpuoNnMz" +OAUTH_ALLOWED_ORIGIN="https://openatlas-discovery-demo.acdh-ch-dev.oeaw.ac.at" diff --git a/.github/workflows/starter.yaml b/.github/workflows/build-deploy.yml similarity index 100% rename from .github/workflows/starter.yaml rename to .github/workflows/build-deploy.yml diff --git a/.gitignore b/.gitignore index 48e30914..f7864517 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,6 @@ node_modules/ # non-public environment variables .env.local .env.*.local -.env # caches .eslintcache @@ -29,6 +28,10 @@ dist .output/ # playwright -/test-results/ -/playwright-report/ +/blob-report/ /playwright/.cache/ +/playwright-report/ +/test-results/ + +# generated api-client +/lib/api-client/api.ts diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..325bfcb0 --- /dev/null +++ b/.npmrc @@ -0,0 +1,4 @@ +engine-strict=true +# shamefully-hoist=true +shell-emulator=true +use-node-version=20.11.1 diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 64dbfece..d2a84bf5 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,15 @@ { - "recommendations": ["esbenp.prettier-vscode"] + "recommendations": [ + "bradlc.vscode-tailwindcss", + "dbaeumer.vscode-eslint", + "editorconfig.editorconfig", + "esbenp.prettier-vscode", + "lokalise.i18n-ally", + "mikestead.dotenv", + "ms-playwright.playwright", + "nuxt.mdc", + "stylelint.vscode-stylelint", + "vue.volar", + "vue.vscode-typescript-vue-plugin" + ] } diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..73f06509 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,25 @@ +{ + "configurations": [ + { + "cwd": "${workspaceFolder}", + "name": "App: Web (server-side)", + "request": "launch", + "runtimeArgs": ["run", "dev"], + "runtimeExecutable": "pnpm", + "skipFiles": ["/**"], + "type": "node" + }, + { + "name": "App: Web (client-side)", + "type": "chrome", + "request": "launch", + "url": "http://localhost:3000" + } + ], + "compounds": [ + { + "name": "App: Web", + "configurations": ["App: Web (server-side)", "App: Web (client-side)"] + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json index 91f53770..69ab605a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,13 +1,49 @@ { - "nuxt.isNuxtApp": false, - "i18n-ally.localesPaths": ["locales"], - "i18n-ally.keystyle": "nested", - "prettier.requireConfig": true, + "css.validate": false, "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit" + "source.fixAll": "explicit" }, - "cSpell.words": ["Cidoc", "nuxt"], "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true, - "typescript.tsdk": "node_modules/typescript/lib" + "editor.inlayHints.enabled": "offUnlessPressed", + "editor.linkedEditing": true, + "editor.quickSuggestions": { + "strings": true + }, + "editor.rulers": [100], + "editor.stickyScroll.enabled": true, + "eslint.enable": true, + "eslint.options": { + "ignorePath": ".gitignore" + }, + "eslint.validate": ["javascript", "typescript", "vue"], + "files.associations": { + "*.css": "tailwindcss" + }, + "files.eol": "\n", + "html.autoCreateQuotes": false, + "i18n-ally.annotations": false, + "i18n-ally.keepFulfilled": true, + "i18n-ally.keystyle": "nested", + "i18n-ally.localesPaths": ["./messages"], + "i18n-ally.review.enabled": false, + "i18n-ally.sortKeys": true, + "i18n-ally.tabStyle": "tab", + "less.validate": false, + "prettier.ignorePath": ".gitignore", + "scss.validate": false, + "stylelint.enable": true, + "stylelint.snippet": ["css", "postcss", "tailwindcss", "vue"], + "stylelint.validate": ["css", "postcss", "tailwindcss", "vue"], + "tailwindCSS.validate": true, + "terminal.integrated.enablePersistentSessions": false, + "typescript.enablePromptUseWorkspaceTsdk": true, + "typescript.inlayHints.parameterNames.enabled": "all", + "typescript.preferences.importModuleSpecifier": "non-relative", + "typescript.preferences.preferTypeOnlyAutoImports": true, + "typescript.tsdk": "node_modules/typescript/lib", + "workbench.editor.labelFormat": "medium", + "[markdown][mdc]": { + "editor.wordWrap": "on" + } } diff --git a/App.vue b/App.vue deleted file mode 100644 index a9ad242c..00000000 --- a/App.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..4a4c29c7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,57 @@ +# syntax=docker/dockerfile:1 + +# using alpine base image to avoid `sharp` memory leaks. +# @see https://sharp.pixelplumbing.com/install#linux-memory-allocator + +# build +FROM node:20-alpine AS build + +RUN corepack enable + +RUN mkdir /app && chown -R node:node /app +WORKDIR /app + +USER node + +COPY --chown=node:node .npmrc package.json pnpm-lock.yaml ./ +COPY ./patches ./patches +RUN sed -i "s/use-node-version/# use-node-version/" .npmrc + +RUN pnpm fetch + +COPY --chown=node:node ./ ./ +RUN sed -i "s/use-node-version/# use-node-version/" .npmrc + +ARG NUXT_PUBLIC_API_BASE_URL +ARG NUXT_PUBLIC_APP_BASE_URL +ARG NUXT_PUBLIC_BOTS +ARG NUXT_PUBLIC_DATABASE +ARG NUXT_PUBLIC_MAP_BASELAYER_ATTRIBUTION +ARG NUXT_PUBLIC_MAP_BASELAYER_URL_DARK +ARG NUXT_PUBLIC_MAP_BASELAYER_URL_LIGHT +ARG NUXT_PUBLIC_MATOMO_BASE_URL +ARG NUXT_PUBLIC_MATOMO_ID +ARG NUXT_PUBLIC_OPENAPI_BASE_URL +ARG NUXT_PUBLIC_REDMINE_ID + +RUN pnpm install --frozen-lockfile --offline + +ENV NODE_ENV=production + +RUN pnpm run build + +# serve +FROM node:20-alpine AS serve + +RUN mkdir /app && chown -R node:node /app +WORKDIR /app + +USER node + +COPY --from=build --chown=node:node /app/.output ./ + +ENV NODE_ENV=production + +EXPOSE 3000 + +CMD ["node", "./server/index.mjs"] diff --git a/app.vue b/app.vue new file mode 100644 index 00000000..1a892617 --- /dev/null +++ b/app.vue @@ -0,0 +1,6 @@ + diff --git a/assets/classes.json b/assets/classes.json deleted file mode 100644 index a9b56023..00000000 --- a/assets/classes.json +++ /dev/null @@ -1,163 +0,0 @@ -[ - { - "systemClass": "acquisition", - "crmClass": "E8", - "view": "event", - "icon": "mdi-calendar", - "en": "Acquisition" - }, - { - "systemClass": "activity", - "crmClass": "E7", - "view": "event", - "icon": "mdi-calendar", - "en": "Activity" - }, - { - "systemClass": "actor_appellation", - "crmClass": "E82", - "view": null, - "icon": null, - "en": "Actor Appellation" - }, - { - "systemClass": "administrative_unit", - "crmClass": "E53", - "view": "type", - "icon": "mdi-map-marker", - "en": "Place" - }, - { - "systemClass": "appellation", - "crmClass": "E41", - "view": null, - "icon": null, - "en": "Appellation" - }, - { - "systemClass": "artifact", - "crmClass": "E22", - "view": "artifact", - "icon": "mdi-shapes", - "en": "Man-Made Object" - }, - { - "systemClass": "bibliography", - "crmClass": "E31", - "view": "reference", - "icon": "mdi-text-box", - "en": "Document" - }, - { - "systemClass": "edition", - "crmClass": "E31", - "view": "reference", - "icon": "mdi-text-box", - "en": "Document" - }, - { - "systemClass": "external_reference", - "crmClass": "E31", - "view": "reference", - "icon": "mdi-text-box", - "en": "Document" - }, - { - "systemClass": "feature", - "crmClass": "E18", - "view": "place", - "icon": "mdi-map-marker", - "en": "Physical Thing" - }, - { - "systemClass": "file", - "crmClass": "E31", - "view": "file", - "icon": "mdi-text-box", - "en": "Document" - }, - { - "systemClass": "find", - "crmClass": "E22", - "view": "place", - "icon": "mdi-map-marker", - "en": "Man-Made Object" - }, - { - "systemClass": "group", - "crmClass": "E74", - "view": "actor", - "icon": "mdi-account", - "en": "Group" - }, - { - "systemClass": "human_remains", - "crmClass": "E20", - "view": "place", - "icon": "mdi-map-marker", - "en": "Biological Object" - }, - { - "systemClass": "move", - "crmClass": "E9", - "view": "event", - "icon": "mdi-calendar", - "en": "Move" - }, - { - "systemClass": "object_location", - "crmClass": "E53", - "view": null, - "icon": "mdi-map-marker", - "en": "Place" - }, - { - "systemClass": "person", - "crmClass": "E21", - "view": "actor", - "icon": "mdi-account", - "en": "Person" - }, - { - "systemClass": "place", - "crmClass": "E18", - "view": "place", - "icon": "mdi-map-marker", - "en": "Physical Thing" - }, - { - "systemClass": "referenceSystem", - "crmClass": "E32", - "view": null, - "icon": null, - "en": "Authority Document" - }, - { - "systemClass": "source", - "crmClass": "E33", - "view": "source", - "icon": "mdi-text-box", - "en": "Linguistic Object" - }, - { - "systemClass": "stratigraphic_unit", - "crmClass": "E18", - "view": "place", - "icon": "mdi-map-marker", - "en": "Physical Thing" - }, - { - "systemClass": "source_translation", - "crmClass": "E33", - "view": "source_translation", - "icon": "mdi-text-box", - "en": "Linguistic Object" - }, - { - "systemClass": "type", - "crmClass": "E55", - "view": "type", - "icon": "mdi-code-braces", - "en": "Type" - } -] diff --git a/assets/swagger.json b/assets/swagger.json deleted file mode 100644 index 0bb4d131..00000000 --- a/assets/swagger.json +++ /dev/null @@ -1,4241 +0,0 @@ -{ - "openapi": "3.0.2", - "info": { - "title": "OpenAtlas API", - "description": "An API that allows user to access data from an OpenAtlas instance.", - "contact": { - "name": "OpenAtlas", - "url": "https://openatlas.eu", - "email": "bernhard.koschicek-krombholz@oeaw.ac.at" - }, - "license": { - "name": "GPL-2.0", - "url": "https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html" - }, - "version": "0.4.1" - }, - "externalDocs": { - "description": "OpenAtlas Manual", - "url": "https://manual.openatlas.eu/" - }, - "servers": [ - { - "url": "https://demo.openatlas.eu/api/{version}", - "description": "Demo Server", - "variables": { - "version": { - "default": "0.3", - "enum": ["0.3"] - } - } - }, - { - "url": "https://demo-dev.openatlas.eu/api/{version}", - "description": "Demo Dev Server", - "variables": { - "version": { - "default": "0.3", - "enum": ["0.3"] - } - } - }, - { - "url": "http://localhost:5000/api/{version}", - "description": "Used directly in an OpenAtlas instance", - "variables": { - "version": { - "default": "0.3", - "enum": ["0.3"] - } - } - } - ], - "tags": [ - { - "name": "Entity Endpoint", - "description": "Endpoint provide information about one entity in the OpenAtlas instance. The requested information is provided in Linked Places format (LPF). Alternatively, GeoJSON or RDFs, derived from the LPF data, can be accessed." - }, - { - "name": "Entity Query Endpoint", - "description": "Endpoint provide information about one entity in the OpenAtlas instance. The requested information is provided in Linked Places format (LPF). Alternatively, GeoJSON or RDFs, derived from the LPF data, can be accessed. Combine several or all entities endpoints in one query." - }, - { - "name": "Entities Endpoint", - "description": "Endpoints provide information about entities in the OpenAtlas instance. The requested information is provided in Linked Places format (LPF). Alternatively, GeoJSON or RDFs, derived from the LPF data, can be accessed." - }, - { - "name": "Type Endpoints", - "description": "Provide information about Types of an OpenAtlas instance. The results are in JSON and in a custom format." - }, - { - "name": "Administrative Endpoints", - "description": "Provide metadata of the OpenAtlas instance for presentation sites." - }, - { - "name": "Special Endpoints", - "description": "Provides project-specific formats." - }, - { - "name": "Image Endpoints", - "description": "Provides image files" - } - ], - "paths": { - "/entity/{entityId}": { - "get": { - "tags": ["Entity Endpoint"], - "summary": "Get entity by ID", - "description": "Retrieves all information about a single entity", - "operationId": "GetEntity", - "parameters": [ - { - "name": "entityId", - "in": "path", - "description": "Specific entity ID", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "type": "integer" - }, - "example": 40 - }, - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "show", - "in": "query", - "description": "Select which keys should not be displayed. This can improve performance", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "when", - "types", - "relations", - "names", - "links", - "geometry", - "depictions", - "geonames", - "description", - "none" - ] - } - } - }, - { - "name": "format", - "in": "query", - "description": "Choose the format for the results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["lp", "geojson", "geojson-v2", "pretty-xml", "n3", "turtle", "nt", "xml"] - }, - "example": "lp" - }, - { - "name": "export", - "in": "query", - "description": "Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["csv", "csvNetwork"] - } - } - ], - "responses": { - "200": { - "description": "/entity response", - "content": { - "application/ld+json": { - "schema": { - "$ref": "#/components/schemas/inline_response_200" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/query/": { - "get": { - "tags": ["Entities Endpoint", "Entity Query Endpoint"], - "summary": "Combine several or all entities endpoints in one query", - "description": "Retrieves a list with entity ID, CIDOC CRM code, system class, or menu item. Combine up to four of the Entities Endpoints in a single query. Each request has to be a new parameter.", - "operationId": "GetQuery", - "parameters": [ - { - "name": "entities", - "in": "query", - "description": "Entity ids which will be requested", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "integer" - } - } - }, - { - "name": "view_classes", - "in": "query", - "description": "View classes to be requested", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "all", - "actor", - "artifact", - "event", - "place", - "reference", - "source", - "artifact", - "type", - "file", - "source_translation", - "reference_system" - ] - } - }, - "example": "actor" - }, - { - "name": "system_classes", - "in": "query", - "description": "System classes to be requested", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "all", - "acquisition", - "activity", - "administrative_unit", - "appellation", - "artifact", - "bibliography", - "edition", - "event", - "external_reference", - "feature", - "file", - "group", - "human_remains", - "move", - "object_location", - "person", - "place", - "production", - "reference_system", - "source", - "source_translation", - "stratigraphic_unit", - "type", - "type_anthropology" - ] - } - } - }, - { - "name": "cidoc_classes", - "in": "query", - "description": "CIDOC classes to be requested", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "E6", - "E7", - "E8", - "E9", - "E12", - "E18", - "E20", - "E21", - "E22", - "E31", - "E32", - "E33", - "E41", - "E53", - "E54", - "E55", - "E74" - ] - } - }, - "example": "E18" - }, - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "count", - "in": "query", - "description": "Just show count of how many entities would the result give back", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "show", - "in": "query", - "description": "Select which keys should not be displayed. This can improve performance", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "when", - "types", - "relations", - "names", - "links", - "geometry", - "depictions", - "geonames", - "description", - "none" - ] - } - } - }, - { - "name": "format", - "in": "query", - "description": "Choose the format for the results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["lp", "geojson", "geojson-v2", "pretty-xml", "n3", "turtle", "nt", "xml"] - }, - "example": "lp" - }, - { - "name": "export", - "in": "query", - "description": "Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["csv", "csvNetwork"] - } - }, - { - "name": "column", - "in": "query", - "description": "Choose one column to sort the results by. Default value is name.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": [ - "id", - "name", - "cidoc_class", - "system_class", - "begin_from", - "begin_to", - "end_from", - "end_to" - ] - }, - "example": "name" - }, - { - "name": "sort", - "in": "query", - "description": "Sorting result ascending or descending of the given column. Default value is asc.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["asc", "desc"] - }, - "example": "asc" - }, - { - "name": "search", - "in": "query", - "description": "Search query for specific results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "first", - "in": "query", - "description": "Begin results at the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "last", - "in": "query", - "description": "Begin results after the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "page", - "in": "query", - "description": "Jump to page number.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "limit", - "in": "query", - "description": "Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "type_id", - "in": "query", - "description": "Show only entities with the given type id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "integer" - } - } - }, - { - "name": "relation_type", - "in": "query", - "description": "Displays only connections connected by the selected CIDOC CRM code.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], - "responses": { - "200": { - "description": "Results of query", - "content": { - "application/ld+json": { - "schema": { - "$ref": "#/components/schemas/EntitiesOutputModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/system_class/{system_class}": { - "get": { - "tags": ["Entities Endpoint"], - "description": "Retrieves a list of entities, based on their OpenAtlas class name.", - "operationId": "GetBySystemClass", - "parameters": [ - { - "name": "system_class", - "in": "path", - "description": "System class to be requested", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "type": "string", - "enum": [ - "all", - "acquisition", - "activity", - "administrative_unit", - "appellation", - "artifact", - "bibliography", - "edition", - "event", - "external_reference", - "feature", - "file", - "group", - "human_remains", - "move", - "object_location", - "person", - "place", - "production", - "reference_system", - "source", - "source_translation", - "stratigraphic_unit", - "type", - "type_anthropology" - ] - }, - "example": "acquisition" - }, - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "count", - "in": "query", - "description": "Just show count of how many entities would the result give back", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "show", - "in": "query", - "description": "Select which keys should not be displayed. This can improve performance", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "when", - "types", - "relations", - "names", - "links", - "geometry", - "depictions", - "geonames", - "description", - "none" - ] - } - } - }, - { - "name": "format", - "in": "query", - "description": "Choose the format for the results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["lp", "geojson", "geojson-v2", "pretty-xml", "n3", "turtle", "nt", "xml"] - }, - "example": "lp" - }, - { - "name": "export", - "in": "query", - "description": "Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["csv", "csvNetwork"] - } - }, - { - "name": "column", - "in": "query", - "description": "Choose one column to sort the results by. Default value is name.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": [ - "id", - "name", - "cidoc_class", - "system_class", - "begin_from", - "begin_to", - "end_from", - "end_to" - ] - }, - "example": "name" - }, - { - "name": "sort", - "in": "query", - "description": "Sorting result ascending or descending of the given column. Default value is asc.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["asc", "desc"] - }, - "example": "asc" - }, - { - "name": "search", - "in": "query", - "description": "Search query for specific results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "first", - "in": "query", - "description": "Begin results at the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "last", - "in": "query", - "description": "Begin results after the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "page", - "in": "query", - "description": "Jump to page number.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "limit", - "in": "query", - "description": "Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "type_id", - "in": "query", - "description": "Show only entities with the given type id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "integer" - } - } - }, - { - "name": "relation_type", - "in": "query", - "description": "Displays only connections connected by the selected CIDOC CRM code.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], - "responses": { - "200": { - "description": "Results of system class", - "content": { - "application/ld+json": { - "schema": { - "$ref": "#/components/schemas/EntitiesOutputModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/view_class/{view_class}": { - "get": { - "tags": ["Entities Endpoint"], - "description": "Retrieves a list of entities based on their OpenAtlas menu items.", - "operationId": "GetByViewClass", - "parameters": [ - { - "name": "view_class", - "in": "path", - "description": "View class to be requested", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "type": "string", - "enum": [ - "all", - "actor", - "artifact", - "event", - "place", - "reference", - "source", - "artifact", - "type", - "file", - "source_translation", - "reference_system" - ] - }, - "example": "actor" - }, - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "count", - "in": "query", - "description": "Just show count of how many entities would the result give back", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "show", - "in": "query", - "description": "Select which keys should not be displayed. This can improve performance", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "when", - "types", - "relations", - "names", - "links", - "geometry", - "depictions", - "geonames", - "description", - "none" - ] - } - } - }, - { - "name": "format", - "in": "query", - "description": "Choose the format for the results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["lp", "geojson", "geojson-v2", "pretty-xml", "n3", "turtle", "nt", "xml"] - }, - "example": "lp" - }, - { - "name": "export", - "in": "query", - "description": "Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["csv", "csvNetwork"] - } - }, - { - "name": "column", - "in": "query", - "description": "Choose one column to sort the results by. Default value is name.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": [ - "id", - "name", - "cidoc_class", - "system_class", - "begin_from", - "begin_to", - "end_from", - "end_to" - ] - }, - "example": "name" - }, - { - "name": "sort", - "in": "query", - "description": "Sorting result ascending or descending of the given column. Default value is asc.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["asc", "desc"] - }, - "example": "asc" - }, - { - "name": "search", - "in": "query", - "description": "Search query for specific results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "first", - "in": "query", - "description": "Begin results at the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "last", - "in": "query", - "description": "Begin results after the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "page", - "in": "query", - "description": "Jump to page number.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "limit", - "in": "query", - "description": "Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "type_id", - "in": "query", - "description": "Show only entities with the given type id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "integer" - } - } - }, - { - "name": "relation_type", - "in": "query", - "description": "Displays only connections connected by the selected CIDOC CRM code.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], - "responses": { - "200": { - "description": "Results of view class", - "content": { - "application/ld+json": { - "schema": { - "$ref": "#/components/schemas/EntitiesOutputModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/cidoc_class/{cidoc_class}": { - "get": { - "tags": ["Entities Endpoint"], - "description": "Retrieve a list of entities, based on their CIDOC CRM class code.", - "operationId": "GetByCidocClass", - "parameters": [ - { - "name": "cidoc_class", - "in": "path", - "description": "CIDOC class to be requested", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "type": "string", - "enum": [ - "E6", - "E7", - "E8", - "E9", - "E12", - "E18", - "E20", - "E21", - "E22", - "E31", - "E32", - "E33", - "E41", - "E53", - "E54", - "E55", - "E74" - ] - }, - "example": "E18" - }, - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "count", - "in": "query", - "description": "Just show count of how many entities would the result give back", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "show", - "in": "query", - "description": "Select which keys should not be displayed. This can improve performance", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "when", - "types", - "relations", - "names", - "links", - "geometry", - "depictions", - "geonames", - "description", - "none" - ] - } - } - }, - { - "name": "format", - "in": "query", - "description": "Choose the format for the results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["lp", "geojson", "geojson-v2", "pretty-xml", "n3", "turtle", "nt", "xml"] - }, - "example": "lp" - }, - { - "name": "export", - "in": "query", - "description": "Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["csv", "csvNetwork"] - } - }, - { - "name": "column", - "in": "query", - "description": "Choose one column to sort the results by. Default value is name.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": [ - "id", - "name", - "cidoc_class", - "system_class", - "begin_from", - "begin_to", - "end_from", - "end_to" - ] - }, - "example": "name" - }, - { - "name": "sort", - "in": "query", - "description": "Sorting result ascending or descending of the given column. Default value is asc.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["asc", "desc"] - }, - "example": "asc" - }, - { - "name": "search", - "in": "query", - "description": "Search query for specific results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "first", - "in": "query", - "description": "Begin results at the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "last", - "in": "query", - "description": "Begin results after the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "page", - "in": "query", - "description": "Jump to page number.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "limit", - "in": "query", - "description": "Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "type_id", - "in": "query", - "description": "Show only entities with the given type id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "integer" - } - } - }, - { - "name": "relation_type", - "in": "query", - "description": "Displays only connections connected by the selected CIDOC CRM code.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], - "responses": { - "200": { - "description": "Results of CIDOC class", - "content": { - "application/ld+json": { - "schema": { - "$ref": "#/components/schemas/EntitiesOutputModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/latest/{limit}": { - "get": { - "tags": ["Entities Endpoint"], - "description": "Retrieve the last entered entities. n represents the amount of entities retrieved (between 1 and 100). The pagination information is always null.", - "operationId": "GetLatest", - "parameters": [ - { - "name": "limit", - "in": "path", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "maximum": 100, - "minimum": 1, - "type": "integer" - } - }, - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "show", - "in": "query", - "description": "Select which keys should not be displayed. This can improve performance", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "when", - "types", - "relations", - "names", - "links", - "geometry", - "depictions", - "geonames", - "description", - "none" - ] - } - } - }, - { - "name": "format", - "in": "query", - "description": "Choose the format for the results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["lp", "geojson", "geojson-v2", "pretty-xml", "n3", "turtle", "nt", "xml"] - }, - "example": "lp" - }, - { - "name": "export", - "in": "query", - "description": "Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["csv", "csvNetwork"] - } - }, - { - "name": "column", - "in": "query", - "description": "Choose one column to sort the results by. Default value is name.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": [ - "id", - "name", - "cidoc_class", - "system_class", - "begin_from", - "begin_to", - "end_from", - "end_to" - ] - }, - "example": "name" - }, - { - "name": "sort", - "in": "query", - "description": "Sorting result ascending or descending of the given column. Default value is asc.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["asc", "desc"] - }, - "example": "asc" - }, - { - "name": "search", - "in": "query", - "description": "Search query for specific results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "type_id", - "in": "query", - "description": "Show only entities with the given type id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "integer" - } - } - }, - { - "name": "relation_type", - "in": "query", - "description": "Displays only connections connected by the selected CIDOC CRM code.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], - "responses": { - "200": { - "description": "Last entered entities.", - "content": { - "application/ld+json": { - "schema": { - "$ref": "#/components/schemas/EntitiesOutputModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/type_entities/{entityId}": { - "get": { - "tags": ["Entities Endpoint"], - "description": "Used to retrieve a list of entities, based on their OpenAtlas type ID. For an endpoint that lists all available types click confer Types Endpoints", - "operationId": "GetTypeEntities", - "parameters": [ - { - "name": "entityId", - "in": "path", - "description": "Specific entity ID", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "type": "integer" - }, - "example": 40 - }, - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "count", - "in": "query", - "description": "Just show count of how many entities would the result give back", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "show", - "in": "query", - "description": "Select which keys should not be displayed. This can improve performance", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "when", - "types", - "relations", - "names", - "links", - "geometry", - "depictions", - "geonames", - "description", - "none" - ] - } - } - }, - { - "name": "format", - "in": "query", - "description": "Choose the format for the results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["lp", "geojson", "geojson-v2", "pretty-xml", "n3", "turtle", "nt", "xml"] - }, - "example": "lp" - }, - { - "name": "export", - "in": "query", - "description": "Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["csv", "csvNetwork"] - } - }, - { - "name": "column", - "in": "query", - "description": "Choose one column to sort the results by. Default value is name.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": [ - "id", - "name", - "cidoc_class", - "system_class", - "begin_from", - "begin_to", - "end_from", - "end_to" - ] - }, - "example": "name" - }, - { - "name": "sort", - "in": "query", - "description": "Sorting result ascending or descending of the given column. Default value is asc.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["asc", "desc"] - }, - "example": "asc" - }, - { - "name": "search", - "in": "query", - "description": "Search query for specific results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "first", - "in": "query", - "description": "Begin results at the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "last", - "in": "query", - "description": "Begin results after the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "page", - "in": "query", - "description": "Jump to page number.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "limit", - "in": "query", - "description": "Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "type_id", - "in": "query", - "description": "Show only entities with the given type id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "integer" - } - } - }, - { - "name": "relation_type", - "in": "query", - "description": "Displays only connections connected by the selected CIDOC CRM code.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], - "responses": { - "200": { - "description": "Results of type entities", - "content": { - "application/ld+json": { - "schema": { - "$ref": "#/components/schemas/EntitiesOutputModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/type_entities_all/{entityId}": { - "get": { - "tags": ["Entities Endpoint"], - "description": "Used to retrieve a list of entities, based on their OpenAtlas type ID including all connected subtypes.. For an endpoint that lists all available types click confer Type Endpoints", - "operationId": "GetTypeEntitiesAll", - "parameters": [ - { - "name": "entityId", - "in": "path", - "description": "Specific entity ID", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "type": "integer" - }, - "example": 40 - }, - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "count", - "in": "query", - "description": "Just show count of how many entities would the result give back", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "show", - "in": "query", - "description": "Select which keys should not be displayed. This can improve performance", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "when", - "types", - "relations", - "names", - "links", - "geometry", - "depictions", - "geonames", - "description", - "none" - ] - } - } - }, - { - "name": "format", - "in": "query", - "description": "Choose the format for the results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["lp", "geojson", "geojson-v2", "pretty-xml", "n3", "turtle", "nt", "xml"] - }, - "example": "lp" - }, - { - "name": "export", - "in": "query", - "description": "Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["csv", "csvNetwork"] - } - }, - { - "name": "column", - "in": "query", - "description": "Choose one column to sort the results by. Default value is name.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": [ - "id", - "name", - "cidoc_class", - "system_class", - "begin_from", - "begin_to", - "end_from", - "end_to" - ] - }, - "example": "name" - }, - { - "name": "sort", - "in": "query", - "description": "Sorting result ascending or descending of the given column. Default value is asc.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["asc", "desc"] - }, - "example": "asc" - }, - { - "name": "search", - "in": "query", - "description": "Search query for specific results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "first", - "in": "query", - "description": "Begin results at the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "last", - "in": "query", - "description": "Begin results after the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "page", - "in": "query", - "description": "Jump to page number.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "limit", - "in": "query", - "description": "Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "type_id", - "in": "query", - "description": "Show only entities with the given type id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "integer" - } - } - }, - { - "name": "relation_type", - "in": "query", - "description": "Displays only connections connected by the selected CIDOC CRM code.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], - "responses": { - "200": { - "description": "Results of type entities all", - "content": { - "application/ld+json": { - "schema": { - "$ref": "#/components/schemas/EntitiesOutputModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/entities_linked_to_entity/{entityId}": { - "get": { - "tags": ["Entities Endpoint"], - "description": "Retrieves a list of entities linked to the entity with the stated ID.", - "operationId": "GetEntitiesLinkedToEntity", - "parameters": [ - { - "name": "entityId", - "in": "path", - "description": "Specific entity ID", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "type": "integer" - }, - "example": 40 - }, - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "count", - "in": "query", - "description": "Just show count of how many entities would the result give back", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "show", - "in": "query", - "description": "Select which keys should not be displayed. This can improve performance", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "when", - "types", - "relations", - "names", - "links", - "geometry", - "depictions", - "geonames", - "description", - "none" - ] - } - } - }, - { - "name": "format", - "in": "query", - "description": "Choose the format for the results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["lp", "geojson", "geojson-v2", "pretty-xml", "n3", "turtle", "nt", "xml"] - }, - "example": "lp" - }, - { - "name": "export", - "in": "query", - "description": "Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["csv", "csvNetwork"] - } - }, - { - "name": "column", - "in": "query", - "description": "Choose one column to sort the results by. Default value is name.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": [ - "id", - "name", - "cidoc_class", - "system_class", - "begin_from", - "begin_to", - "end_from", - "end_to" - ] - }, - "example": "name" - }, - { - "name": "sort", - "in": "query", - "description": "Sorting result ascending or descending of the given column. Default value is asc.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["asc", "desc"] - }, - "example": "asc" - }, - { - "name": "search", - "in": "query", - "description": "Search query for specific results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "first", - "in": "query", - "description": "Begin results at the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "last", - "in": "query", - "description": "Begin results after the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "page", - "in": "query", - "description": "Jump to page number.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "limit", - "in": "query", - "description": "Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - { - "name": "type_id", - "in": "query", - "description": "Show only entities with the given type id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "integer" - } - } - }, - { - "name": "relation_type", - "in": "query", - "description": "Displays only connections connected by the selected CIDOC CRM code.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], - "responses": { - "200": { - "description": "Results of entities linked to entity", - "content": { - "application/ld+json": { - "schema": { - "$ref": "#/components/schemas/EntitiesOutputModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/type_overview/": { - "get": { - "tags": ["Type Endpoints"], - "description": "Retrieves a list of all OpenAtlas types sorted by custom, places, standard and value", - "operationId": "GetTypeOverview", - "parameters": [ - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "description": "List of all OpenAtlas types", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TypeOverviewModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/type_tree/": { - "get": { - "tags": ["Type Endpoints"], - "description": "Retrieves a list of all OpenAtlas types, including their information sorted by their IDs", - "operationId": "GetTypeTree", - "parameters": [ - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "description": "List of all OpenAtlas types", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TypeTreeModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/type_by_view_class/": { - "get": { - "tags": ["Type Endpoints"], - "description": "Retrieves a list of all system types", - "operationId": "GetTypeByViewClass", - "parameters": [ - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "description": "List of all OpenAtlas types", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TypesByViewClassModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/classes/": { - "get": { - "tags": ["Administrative Endpoints"], - "description": "Retrieves a list of all available classes, their CIDOC CRM mapping, their view, which icon can be used, if alias and references systems are allowed and which standard type it has.", - "operationId": "ClassMapping", - "responses": { - "200": { - "description": "List of all classes for presentation sites", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ClassesModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/content/": { - "get": { - "tags": ["Administrative Endpoints"], - "description": "Retrieves a detailed list of information on available frontend content in an OpenAtlas instance - intro, legal notice, contact, and size of processed image", - "operationId": "GetContent", - "parameters": [ - { - "name": "lang", - "in": "query", - "description": "Choose language", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "example": "de", - "enum": ["en", "de"] - } - }, - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "description": "OpenAtlas Content", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ContentModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/system_class_count/": { - "get": { - "tags": ["Administrative Endpoints"], - "description": "Retrieves a detailed list of the numbers of entries connected to a system class", - "operationId": "SystemClassCount", - "responses": { - "200": { - "description": "System class count", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SystemClassCountModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/subunits/": { - "get": { - "tags": ["Special Endpoints"], - "description": "Displays all subunits of a place in a special format as used by the THANADOS project. Can only be used for “places”. As format only XML can be chosen", - "operationId": "GetSubunits", - "parameters": [ - { - "name": "format", - "in": "query", - "description": "Choose the format for the results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["lp", "geojson", "geojson-v2", "pretty-xml", "n3", "turtle", "nt", "xml"] - }, - "example": "lp" - }, - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "count", - "in": "query", - "description": "Just show count of how many entities would the result give back", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "description": "One Place with all subunits", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SubunitsModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/geometric_entities/": { - "get": { - "tags": ["Special Endpoints"], - "description": "Retrieve a GeoJSON of all chosen geometries in an OpenAtlas instance", - "operationId": "GetGeometricEntities", - "parameters": [ - { - "name": "geometry", - "in": "query", - "description": "Filters which geometries will be received. Default is gisAll", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "gisAll", - "gisPointAll", - "gisPointSupers", - "gisPointSubs", - "gisPointSibling", - "gisLineAll", - "gisPolygonAll" - ] - } - } - }, - { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "count", - "in": "query", - "description": "Just show count of how many entities would the result give back", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "description": "All geometric entities", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GeometricEntitiesModel" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/export_database/{format}": { - "get": { - "tags": ["Special Endpoints"], - "description": "Downloads all information in an OpenAtlas instance as CSV, XML, or JSON.", - "operationId": "ExportDatabase", - "parameters": [ - { - "name": "format", - "in": "path", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "type": "string", - "enum": ["json", "csv", "xml"] - }, - "example": "json" - } - ], - "responses": { - "200": { - "description": "Downloads complete database", - "content": { - "application/json": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - }, - "/display/{filename}": { - "get": { - "tags": ["Image Endpoints"], - "description": "Retrieves the respective image if it has a licence.", - "operationId": "DisplayImage", - "parameters": [ - { - "name": "filename", - "in": "path", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Retrieves the respective image if it has a licence", - "content": { - "image/jpeg": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "image/png": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "404": { - "description": "Something went wrong. Please consult the error message." - } - } - } - } - }, - "components": { - "schemas": { - "EntitiesOutputModel": { - "type": "object", - "properties": { - "pagination": { - "$ref": "#/components/schemas/PaginationModel" - }, - "results": { - "type": "array", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/LinkedPlacesModel" - }, - { - "$ref": "#/components/schemas/GeoJSONModel" - } - ] - } - } - } - }, - "PaginationModel": { - "type": "object", - "properties": { - "entities": { - "type": "integer" - }, - "entitiesPerPage": { - "type": "integer" - }, - "index": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaginationIndexModel" - } - }, - "totalPages": { - "type": "integer" - } - } - }, - "PaginationIndexModel": { - "type": "object", - "properties": { - "page": { - "type": "integer" - }, - "startId": { - "type": "integer" - } - } - }, - "LinkedPlacesModel": { - "properties": { - "@context": { - "type": "string" - }, - "type": { - "type": "string" - }, - "features": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LinkedPlacesModel_features" - } - } - } - }, - "GeoJSONModel": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": ["FeatureCollection"] - }, - "features": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GeoJSONModel_features" - } - } - } - }, - "Point": { - "required": ["coordinates", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": ["Point"] - }, - "coordinates": { - "$ref": "#/components/schemas/Position" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "shapeType": { - "type": "string", - "enum": ["centerpoint"] - } - } - }, - "Position": { - "maxItems": 3, - "minItems": 2, - "type": "array", - "items": { - "type": "number" - } - }, - "LineString": { - "required": ["coordinates", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": ["LineString"] - }, - "coordinates": { - "$ref": "#/components/schemas/LineStringCoordinates" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "shapeType": { - "type": "string", - "enum": ["polyline"] - } - } - }, - "LineStringCoordinates": { - "minItems": 2, - "type": "array", - "items": { - "$ref": "#/components/schemas/Position" - } - }, - "LinearRing": { - "minItems": 4, - "type": "array", - "items": { - "$ref": "#/components/schemas/Position" - } - }, - "Polygon": { - "required": ["coordinates", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": ["Polygon"] - }, - "coordinates'": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LinearRing" - } - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "shapeType": { - "type": "string", - "enum": ["area", "shape"] - } - } - }, - "GeometryCollection": { - "required": ["type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": ["GeometryCollection"] - }, - "geometries": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/Polygon" - }, - { - "$ref": "#/components/schemas/Point" - }, - { - "$ref": "#/components/schemas/LineString" - } - ] - } - } - }, - "discriminator": { - "propertyName": "type" - } - }, - "TypeOverviewEntryModel": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "viewClass": { - "type": "array", - "items": { - "type": "string" - } - }, - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypeOverviewEntryModel" - } - } - } - }, - "TypeOverviewModel": { - "type": "object", - "properties": { - "standard": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypeOverviewEntryModel" - } - }, - "place": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypeOverviewEntryModel" - } - }, - "custom": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypeOverviewEntryModel" - } - }, - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypeOverviewEntryModel" - } - }, - "system": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypeOverviewEntryModel" - } - } - } - }, - "TypeTreeModel": { - "type": "object", - "properties": { - "type_tree": { - "$ref": "#/components/schemas/TypeTreeModel_type_tree" - } - } - }, - "TypeViewClassChildren": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "label": { - "type": "string" - }, - "url": { - "type": "string" - }, - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypeViewClassChildren" - } - } - } - }, - "TypesByViewClassEntry": { - "type": "object", - "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypeViewClassChildren" - } - }, - "id": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "category": { - "type": "string" - } - } - }, - "TypesByViewClassModel": { - "type": "object", - "properties": { - "acquisition": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "activity": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "actor_actor_relation": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "actor_function": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "artifact": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "bibliography": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "edition": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "event": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "external_reference": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "feature": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "file": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "group": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "human_remains": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "involvement": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "move": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "person": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "place": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "production": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "source": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "source_translation": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - }, - "stratigraphic_unit": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TypesByViewClassEntry" - } - } - } - }, - "ClassesModel": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ClassesModel_inner" - } - }, - "ContentModel": { - "type": "object", - "properties": { - "intro": { - "type": "string" - }, - "contact": { - "type": "string" - }, - "legalNotice": { - "type": "string" - }, - "siteName": { - "type": "string" - }, - "imageSizes": { - "$ref": "#/components/schemas/ContentModel_imageSizes" - } - } - }, - "SystemClassCountModel": { - "type": "object", - "properties": { - "move": { - "type": "integer", - "format": "int32" - }, - "bibliography": { - "type": "integer", - "format": "int32" - }, - "person": { - "type": "integer", - "format": "int32" - }, - "acquisition": { - "type": "integer", - "format": "int32" - }, - "reference_system": { - "type": "integer", - "format": "int32" - }, - "feature": { - "type": "integer", - "format": "int32" - }, - "file": { - "type": "integer", - "format": "int32" - }, - "activity": { - "type": "integer", - "format": "int32" - }, - "type": { - "type": "integer", - "format": "int32" - }, - "administrative_unit": { - "type": "integer", - "format": "int32" - }, - "artifact": { - "type": "integer", - "format": "int32" - }, - "source_translation": { - "type": "integer", - "format": "int32" - }, - "place": { - "type": "integer", - "format": "int32" - }, - "stratigraphic_unit": { - "type": "integer", - "format": "int32" - }, - "edition": { - "type": "integer", - "format": "int32" - }, - "group": { - "type": "integer", - "format": "int32" - }, - "source": { - "type": "integer", - "format": "int32" - } - } - }, - "SubunitsModel": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SubunitsModel_inner" - } - }, - "GeometricEntitiesModel": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "features": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GeometricEntitiesModel_features" - } - } - } - }, - "inline_response_200": { - "oneOf": [ - { - "$ref": "#/components/schemas/LinkedPlacesModel" - }, - { - "$ref": "#/components/schemas/GeoJSONModel" - } - ] - }, - "LinkedPlacesModel_properties": { - "type": "object", - "properties": { - "title": { - "type": "string" - } - } - }, - "LinkedPlacesModel_descriptions": { - "type": "object", - "properties": { - "value": { - "type": "string" - } - } - }, - "LinkedPlacesModel_when_start": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "nullable" - }, - "latest": { - "type": "string", - "format": "nullable" - }, - "comment": { - "type": "string", - "format": "nullable" - } - } - }, - "LinkedPlacesModel_when_timespans": { - "type": "object", - "properties": { - "start": { - "$ref": "#/components/schemas/LinkedPlacesModel_when_start" - }, - "end": { - "$ref": "#/components/schemas/LinkedPlacesModel_when_start" - } - } - }, - "LinkedPlacesModel_when": { - "type": "object", - "properties": { - "timespans": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LinkedPlacesModel_when_timespans" - } - } - } - }, - "LinkedPlacesModel_types": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "label": { - "type": "string" - }, - "descriptions": { - "type": "string", - "format": "nullable" - }, - "hierarchy": { - "type": "string" - }, - "value": { - "type": "number", - "format": "float" - }, - "unit": { - "type": "string", - "format": "nullable" - } - } - }, - "LinkedPlacesModel_relations": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "relationTo": { - "type": "string" - }, - "relationType": { - "type": "string" - }, - "relationSystemClass": { - "type": "string" - }, - "relationDescription": { - "type": "string", - "format": "nullable" - }, - "type": { - "type": "string", - "format": "nullable" - }, - "when": { - "$ref": "#/components/schemas/LinkedPlacesModel_when" - } - } - }, - "LinkedPlacesModel_features": { - "type": "object", - "properties": { - "@id": { - "type": "string" - }, - "type": { - "type": "string" - }, - "crmClass": { - "type": "string" - }, - "systemClass": { - "type": "string" - }, - "properties": { - "$ref": "#/components/schemas/LinkedPlacesModel_properties" - }, - "descriptions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LinkedPlacesModel_descriptions" - } - }, - "when": { - "$ref": "#/components/schemas/LinkedPlacesModel_when" - }, - "types": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LinkedPlacesModel_types" - } - }, - "relations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LinkedPlacesModel_relations" - } - }, - "names": { - "type": "string", - "format": "nullable" - }, - "links": { - "type": "string", - "format": "nullable" - }, - "depictions": { - "type": "string", - "format": "nullable" - }, - "geometry": { - "oneOf": [ - { - "$ref": "#/components/schemas/Polygon" - }, - { - "$ref": "#/components/schemas/Point" - }, - { - "$ref": "#/components/schemas/LineString" - }, - { - "$ref": "#/components/schemas/GeometryCollection" - } - ] - } - } - }, - "GeoJSONModel_properties_types": { - "type": "object", - "properties": { - "typeName": { - "type": "string" - }, - "typeId": { - "type": "integer" - } - } - }, - "GeoJSONModel_properties": { - "type": "object", - "properties": { - "@id": { - "type": "integer" - }, - "systemClass": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "begin_earliest": { - "type": "string" - }, - "begin_latest": { - "type": "string", - "format": "nullable" - }, - "begin_comment": { - "type": "string", - "format": "nullable" - }, - "end_earliest": { - "type": "string" - }, - "end_latest": { - "type": "string", - "format": "nullable" - }, - "end_comment": { - "type": "string", - "format": "nullable" - }, - "types": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GeoJSONModel_properties_types" - } - } - } - }, - "GeoJSONModel_features": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "geometry": { - "oneOf": [ - { - "$ref": "#/components/schemas/Polygon" - }, - { - "$ref": "#/components/schemas/Point" - }, - { - "$ref": "#/components/schemas/LineString" - }, - { - "$ref": "#/components/schemas/GeometryCollection" - } - ] - }, - "properties": { - "$ref": "#/components/schemas/GeoJSONModel_properties" - } - } - }, - "TypeTreeModel_type_tree_type_ids": { - "type": "object", - "properties": { - "id": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "origin_id": { - "type": "integer" - }, - "first": { - "type": "integer" - }, - "last": { - "type": "integer" - }, - "root": { - "type": "array", - "items": { - "type": "integer" - } - }, - "subs": { - "type": "array", - "items": { - "type": "integer" - } - }, - "count": { - "type": "integer" - }, - "count_subs": { - "type": "integer" - }, - "category": { - "type": "string" - } - } - }, - "TypeTreeModel_type_tree": { - "type": "object", - "properties": { - "type_ids": { - "$ref": "#/components/schemas/TypeTreeModel_type_tree_type_ids" - } - } - }, - "ClassesModel_inner": { - "type": "object", - "properties": { - "systemClass": { - "type": "string" - }, - "crmClass": { - "type": "string" - }, - "view": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "en": { - "type": "string" - } - } - }, - "ContentModel_imageSizes": { - "type": "object", - "properties": { - "thumbnail": { - "type": "string" - }, - "table": { - "type": "string" - } - } - }, - "SubunitsModel_inner": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int32" - }, - "parentId": { - "type": "integer", - "format": "int32" - }, - "rootId": { - "type": "integer", - "format": "int32" - }, - "openatlasClassName": { - "type": "string" - }, - "crmClass": { - "type": "string" - }, - "created": { - "type": "string" - }, - "modified": { - "type": "string" - }, - "latestModRec": { - "type": "string" - }, - "geometry": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "coordinates": { - "type": "array", - "items": { - "type": "number" - } - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "shapeType": { - "type": "string" - } - } - }, - "children": { - "type": "array", - "items": { - "type": "integer", - "format": "int32" - } - }, - "properties": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "aliases": { - "type": "string", - "format": "nullable" - }, - "description": { - "type": "string" - }, - "standardType": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "id": { - "type": "integer", - "format": "int32" - }, - "rootId": { - "type": "integer", - "format": "int32" - }, - "path": { - "type": "string" - }, - "externalReferences": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "identifier": { - "type": "string" - }, - "referenceSystem": { - "type": "string" - }, - "resolverURL": { - "type": "string" - }, - "referenceURL": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - }, - "timespan": { - "type": "object", - "properties": { - "earliestBegin": { - "type": "string" - }, - "latestBegin": { - "type": "string" - }, - "earliestEnd": { - "type": "string" - }, - "latestEnd": { - "type": "string" - } - } - }, - "externalReferences": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "identifier": { - "type": "string" - }, - "referenceSystem": { - "type": "string" - }, - "resolverURL": { - "type": "string" - }, - "referenceURL": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - }, - "references": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int32" - }, - "abbreviation": { - "type": "string" - }, - "title": { - "type": "string" - }, - "pages": { - "type": "string", - "format": "nullable" - } - } - } - }, - "files": { - "type": "string", - "format": "nullable" - }, - "types": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int32" - }, - "rootId": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "path": { - "type": "string" - }, - "value": { - "type": "string", - "format": "nullable" - }, - "unit": { - "type": "string", - "format": "nullable" - }, - "externalReferences": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "identifier": { - "type": "string" - }, - "referenceSystem": { - "type": "string" - }, - "resolverURL": { - "type": "string" - }, - "referenceURL": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "GeometricEntitiesModel_geometry": { - "type": "object", - "properties": { - "coordinates": { - "type": "array", - "items": { - "type": "number" - } - }, - "type": { - "type": "string" - } - } - }, - "GeometricEntitiesModel_properties": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "locationId": { - "type": "integer", - "format": "int32" - }, - "objectId": { - "type": "integer", - "format": "int32" - }, - "objectDescription": { - "type": "string" - }, - "objectName": { - "type": "string" - }, - "objectType": { - "type": "string" - }, - "shapeType": { - "type": "string" - } - } - }, - "GeometricEntitiesModel_features": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "geometry": { - "$ref": "#/components/schemas/GeometricEntitiesModel_geometry" - }, - "properties": { - "$ref": "#/components/schemas/GeometricEntitiesModel_properties" - } - } - } - }, - "parameters": { - "entityId": { - "name": "entityId", - "in": "path", - "description": "Specific entity ID", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "type": "integer" - }, - "example": 40 - }, - "cidoc_class": { - "name": "cidoc_class", - "in": "path", - "description": "CIDOC class to be requested", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "type": "string", - "enum": [ - "E6", - "E7", - "E8", - "E9", - "E12", - "E18", - "E20", - "E21", - "E22", - "E31", - "E32", - "E33", - "E41", - "E53", - "E54", - "E55", - "E74" - ] - }, - "example": "E18" - }, - "view_class": { - "name": "view_class", - "in": "path", - "description": "View class to be requested", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "type": "string", - "enum": [ - "all", - "actor", - "artifact", - "event", - "place", - "reference", - "source", - "artifact", - "type", - "file", - "source_translation", - "reference_system" - ] - }, - "example": "actor" - }, - "system_class": { - "name": "system_class", - "in": "path", - "description": "System class to be requested", - "required": true, - "style": "simple", - "explode": false, - "schema": { - "type": "string", - "enum": [ - "all", - "acquisition", - "activity", - "administrative_unit", - "appellation", - "artifact", - "bibliography", - "edition", - "event", - "external_reference", - "feature", - "file", - "group", - "human_remains", - "move", - "object_location", - "person", - "place", - "production", - "reference_system", - "source", - "source_translation", - "stratigraphic_unit", - "type", - "type_anthropology" - ] - }, - "example": "acquisition" - }, - "download": { - "name": "download", - "in": "query", - "description": "Download results", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - "count": { - "name": "count", - "in": "query", - "description": "Just show count of how many entities would the result give back", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "boolean" - } - }, - "lang": { - "name": "lang", - "in": "query", - "description": "Choose language", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "example": "de", - "enum": ["en", "de"] - } - }, - "show": { - "name": "show", - "in": "query", - "description": "Select which keys should not be displayed. This can improve performance", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "when", - "types", - "relations", - "names", - "links", - "geometry", - "depictions", - "geonames", - "description", - "none" - ] - } - } - }, - "sort": { - "name": "sort", - "in": "query", - "description": "Sorting result ascending or descending of the given column. Default value is asc.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["asc", "desc"] - }, - "example": "asc" - }, - "column": { - "name": "column", - "in": "query", - "description": "Choose one column to sort the results by. Default value is name.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": [ - "id", - "name", - "cidoc_class", - "system_class", - "begin_from", - "begin_to", - "end_from", - "end_to" - ] - }, - "example": "name" - }, - "search": { - "name": "search", - "in": "query", - "description": "Search query for specific results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "limit": { - "name": "limit", - "in": "query", - "description": "Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - "first": { - "name": "first", - "in": "query", - "description": "Begin results at the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - "last": { - "name": "last", - "in": "query", - "description": "Begin results after the given entity id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - "page": { - "name": "page", - "in": "query", - "description": "Jump to page number.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "integer" - } - }, - "export": { - "name": "export", - "in": "query", - "description": "Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["csv", "csvNetwork"] - } - }, - "format": { - "name": "format", - "in": "query", - "description": "Choose the format for the results.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["lp", "geojson", "geojson-v2", "pretty-xml", "n3", "turtle", "nt", "xml"] - }, - "example": "lp" - }, - "type_id": { - "name": "type_id", - "in": "query", - "description": "Show only entities with the given type id.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "integer" - } - } - }, - "relation_type": { - "name": "relation_type", - "in": "query", - "description": "Displays only connections connected by the selected CIDOC CRM code.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "geometry": { - "name": "geometry", - "in": "query", - "description": "Filters which geometries will be received. Default is gisAll", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "gisAll", - "gisPointAll", - "gisPointSupers", - "gisPointSubs", - "gisPointSibling", - "gisLineAll", - "gisPolygonAll" - ] - } - } - }, - "entities": { - "name": "entities", - "in": "query", - "description": "Entity ids which will be requested", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "integer" - } - } - }, - "cidoc_classes": { - "name": "cidoc_classes", - "in": "query", - "description": "CIDOC classes to be requested", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "E6", - "E7", - "E8", - "E9", - "E12", - "E18", - "E20", - "E21", - "E22", - "E31", - "E32", - "E33", - "E41", - "E53", - "E54", - "E55", - "E74" - ] - } - }, - "example": "E18" - }, - "view_classes": { - "name": "view_classes", - "in": "query", - "description": "View classes to be requested", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "all", - "actor", - "artifact", - "event", - "place", - "reference", - "source", - "artifact", - "type", - "file", - "source_translation", - "reference_system" - ] - } - }, - "example": "actor" - }, - "system_classes": { - "name": "system_classes", - "in": "query", - "description": "System classes to be requested", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "all", - "acquisition", - "activity", - "administrative_unit", - "appellation", - "artifact", - "bibliography", - "edition", - "event", - "external_reference", - "feature", - "file", - "group", - "human_remains", - "move", - "object_location", - "person", - "place", - "production", - "reference_system", - "source", - "source_translation", - "stratigraphic_unit", - "type", - "type_anthropology" - ] - } - } - }, - "image_size": { - "name": "image_size", - "in": "query", - "description": "Select which size of the image you want to display. Values are fixed but can be changed for each OpenAtlas instance. Thumbnail is 200px and table 100px.", - "required": false, - "style": "form", - "explode": true, - "schema": { - "type": "string", - "enum": ["thumbnail", "table"] - }, - "example": "table" - } - } - } -} diff --git a/assets/tableheaders.json b/assets/tableheaders.json deleted file mode 100644 index 7bfd1584..00000000 --- a/assets/tableheaders.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "text": "class", - "value": "features[0].systemClass" - }, - { - "text": "name", - "value": "features[0].properties.title" - }, - { - "text": "description", - "value": "features[0].descriptions[0].value" - }, - { - "text": "begin", - "value": "features[0].when.timespans[0].start.earliest" - }, - { - "text": "end", - "value": "features[0].when.timespans[0].end.earliest" - } -] diff --git a/components.json b/components.json new file mode 100644 index 00000000..f1165d30 --- /dev/null +++ b/components.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://shadcn-vue.com/schema.json", + "style": "new-york", + "typescript": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "styles/shadcn-ui.css", + "baseColor": "neutral", + "cssVariables": true + }, + "framework": "nuxt", + "aliases": { + "components": "@/components", + "utils": "@/utils/styles" + } +} diff --git a/components/ContentNavigation/CNCustom.vue b/components/ContentNavigation/CNCustom.vue deleted file mode 100644 index 764096ba..00000000 --- a/components/ContentNavigation/CNCustom.vue +++ /dev/null @@ -1,47 +0,0 @@ - - - diff --git a/components/ContentNavigation/CNElement.vue b/components/ContentNavigation/CNElement.vue deleted file mode 100644 index 9055c0ce..00000000 --- a/components/ContentNavigation/CNElement.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - diff --git a/components/DataMap.client.vue b/components/DataMap.client.vue deleted file mode 100644 index 17f3204e..00000000 --- a/components/DataMap.client.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - diff --git a/components/DataTable.vue b/components/DataTable.vue deleted file mode 100644 index 5ca564a0..00000000 --- a/components/DataTable.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - diff --git a/components/Entity/BasicsView.vue b/components/Entity/BasicsView.vue deleted file mode 100644 index fe36d16a..00000000 --- a/components/Entity/BasicsView.vue +++ /dev/null @@ -1,73 +0,0 @@ - - - diff --git a/components/Entity/DetailCard.vue b/components/Entity/DetailCard.vue deleted file mode 100644 index 74ada894..00000000 --- a/components/Entity/DetailCard.vue +++ /dev/null @@ -1,97 +0,0 @@ - - - - - diff --git a/components/Entity/DetailsGallery.vue b/components/Entity/DetailsGallery.vue deleted file mode 100644 index aa2474c8..00000000 --- a/components/Entity/DetailsGallery.vue +++ /dev/null @@ -1,102 +0,0 @@ - - - - - diff --git a/components/Entity/FeatureTabs.vue b/components/Entity/FeatureTabs.vue deleted file mode 100644 index 7ca947a4..00000000 --- a/components/Entity/FeatureTabs.vue +++ /dev/null @@ -1,76 +0,0 @@ - - - diff --git a/components/Entity/ImageContainer.vue b/components/Entity/ImageContainer.vue deleted file mode 100644 index c14e5d0e..00000000 --- a/components/Entity/ImageContainer.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - diff --git a/components/Entity/ImageDepiction.vue b/components/Entity/ImageDepiction.vue deleted file mode 100644 index ce21f4a0..00000000 --- a/components/Entity/ImageDepiction.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/components/Entity/MapContainer.vue b/components/Entity/MapContainer.vue deleted file mode 100644 index 7a8cf795..00000000 --- a/components/Entity/MapContainer.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - diff --git a/components/HeaderBar.vue b/components/HeaderBar.vue deleted file mode 100644 index 03101ea3..00000000 --- a/components/HeaderBar.vue +++ /dev/null @@ -1,49 +0,0 @@ - - - diff --git a/components/LocaleDropDown.vue b/components/LocaleDropDown.vue deleted file mode 100644 index 01d8287f..00000000 --- a/components/LocaleDropDown.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - - - diff --git a/components/OADFooter.vue b/components/OADFooter.vue deleted file mode 100644 index 9508b0f8..00000000 --- a/components/OADFooter.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/components/SearchField.client.vue b/components/SearchField.client.vue deleted file mode 100644 index ad085b31..00000000 --- a/components/SearchField.client.vue +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - diff --git a/components/VNuxtImage.vue b/components/VNuxtImage.vue deleted file mode 100644 index 6b851cd8..00000000 --- a/components/VNuxtImage.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - diff --git a/components/WhenDisplay.vue b/components/WhenDisplay.vue deleted file mode 100644 index 7bfea5bf..00000000 --- a/components/WhenDisplay.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - diff --git a/components/app-footer.vue b/components/app-footer.vue new file mode 100644 index 00000000..570eb83e --- /dev/null +++ b/components/app-footer.vue @@ -0,0 +1,58 @@ + + + diff --git a/components/app-header.vue b/components/app-header.vue new file mode 100644 index 00000000..ae75976e --- /dev/null +++ b/components/app-header.vue @@ -0,0 +1,110 @@ + + + diff --git a/components/app-navigation-menu.vue b/components/app-navigation-menu.vue new file mode 100644 index 00000000..3ebcd098 --- /dev/null +++ b/components/app-navigation-menu.vue @@ -0,0 +1,23 @@ + + + diff --git a/components/app-navigation-mobile-menu.vue b/components/app-navigation-mobile-menu.vue new file mode 100644 index 00000000..18659283 --- /dev/null +++ b/components/app-navigation-mobile-menu.vue @@ -0,0 +1,46 @@ + + + diff --git a/components/color-scheme-switcher.vue b/components/color-scheme-switcher.vue new file mode 100644 index 00000000..84934673 --- /dev/null +++ b/components/color-scheme-switcher.vue @@ -0,0 +1,39 @@ + + + diff --git a/components/content/ProseH1.vue b/components/content/ProseH1.vue deleted file mode 100644 index 80d324d3..00000000 --- a/components/content/ProseH1.vue +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/components/content/ProseImgWIP.vue b/components/content/ProseImgWIP.vue deleted file mode 100644 index 556a6d44..00000000 --- a/components/content/ProseImgWIP.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/components/content/ProseP.vue b/components/content/ProseP.vue deleted file mode 100644 index 9136c60b..00000000 --- a/components/content/ProseP.vue +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/components/content/TeamEntry.vue b/components/content/TeamEntry.vue deleted file mode 100644 index b4742232..00000000 --- a/components/content/TeamEntry.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - diff --git a/components/content/ProseA.vue b/components/content/prose-a.vue similarity index 95% rename from components/content/ProseA.vue rename to components/content/prose-a.vue index d363bc54..9a3d1adc 100644 --- a/components/content/ProseA.vue +++ b/components/content/prose-a.vue @@ -1,13 +1,13 @@ - + + diff --git a/components/data-map-view.vue b/components/data-map-view.vue new file mode 100644 index 00000000..7405d74a --- /dev/null +++ b/components/data-map-view.vue @@ -0,0 +1,177 @@ + + + diff --git a/components/data-view.vue b/components/data-view.vue new file mode 100644 index 00000000..48704457 --- /dev/null +++ b/components/data-view.vue @@ -0,0 +1,135 @@ + + + diff --git a/components/entity-descriptions.vue b/components/entity-descriptions.vue new file mode 100644 index 00000000..c30472dd --- /dev/null +++ b/components/entity-descriptions.vue @@ -0,0 +1,35 @@ + + + diff --git a/components/entity-geo-map.vue b/components/entity-geo-map.vue new file mode 100644 index 00000000..56c388b7 --- /dev/null +++ b/components/entity-geo-map.vue @@ -0,0 +1,19 @@ + + + diff --git a/components/entity-images.vue b/components/entity-images.vue new file mode 100644 index 00000000..4e04e730 --- /dev/null +++ b/components/entity-images.vue @@ -0,0 +1,24 @@ + + + diff --git a/components/entity-system-class.vue b/components/entity-system-class.vue new file mode 100644 index 00000000..a79cc965 --- /dev/null +++ b/components/entity-system-class.vue @@ -0,0 +1,14 @@ + + + diff --git a/components/entity-timespans.vue b/components/entity-timespans.vue new file mode 100644 index 00000000..d68ccc90 --- /dev/null +++ b/components/entity-timespans.vue @@ -0,0 +1,52 @@ + + + diff --git a/components/error-boundary.vue b/components/error-boundary.vue new file mode 100644 index 00000000..8e1ae774 --- /dev/null +++ b/components/error-boundary.vue @@ -0,0 +1,17 @@ + + + diff --git a/components/geo-map-popup.client.vue b/components/geo-map-popup.client.vue new file mode 100644 index 00000000..fee65fdb --- /dev/null +++ b/components/geo-map-popup.client.vue @@ -0,0 +1,60 @@ + + + diff --git a/components/geo-map.client.vue b/components/geo-map.client.vue new file mode 100644 index 00000000..1793c5df --- /dev/null +++ b/components/geo-map.client.vue @@ -0,0 +1,197 @@ + + + diff --git a/components/geo-map.context.ts b/components/geo-map.context.ts new file mode 100644 index 00000000..c49a7d72 --- /dev/null +++ b/components/geo-map.context.ts @@ -0,0 +1,7 @@ +import type { Map as GeoMap } from "maplibre-gl"; + +export interface GeoMapContext { + map: GeoMap | null; +} + +export const geoMapContextKey = Symbol("geo-map-context"); diff --git a/components/imprint-acdh-ch.vue b/components/imprint-acdh-ch.vue new file mode 100644 index 00000000..c5a7c71a --- /dev/null +++ b/components/imprint-acdh-ch.vue @@ -0,0 +1,44 @@ + + + diff --git a/components/imprint.vue b/components/imprint.vue new file mode 100644 index 00000000..d613a19d --- /dev/null +++ b/components/imprint.vue @@ -0,0 +1,39 @@ + + + diff --git a/components/locale-switcher.vue b/components/locale-switcher.vue new file mode 100644 index 00000000..5f11d5fc --- /dev/null +++ b/components/locale-switcher.vue @@ -0,0 +1,44 @@ + + + diff --git a/components/main-content.vue b/components/main-content.vue new file mode 100644 index 00000000..7dfa13f5 --- /dev/null +++ b/components/main-content.vue @@ -0,0 +1,9 @@ + + + diff --git a/components/nav-link.vue b/components/nav-link.vue new file mode 100644 index 00000000..eb81e79e --- /dev/null +++ b/components/nav-link.vue @@ -0,0 +1,17 @@ + + + diff --git a/components/page-title.vue b/components/page-title.vue new file mode 100644 index 00000000..41b2a57b --- /dev/null +++ b/components/page-title.vue @@ -0,0 +1,5 @@ + diff --git a/components/route-announcer.vue b/components/route-announcer.vue new file mode 100644 index 00000000..3f4b67f7 --- /dev/null +++ b/components/route-announcer.vue @@ -0,0 +1,47 @@ + + + diff --git a/components/search-form.vue b/components/search-form.vue new file mode 100644 index 00000000..f00427d2 --- /dev/null +++ b/components/search-form.vue @@ -0,0 +1,73 @@ + + + diff --git a/components/search-results-table.vue b/components/search-results-table.vue new file mode 100644 index 00000000..a21f30b9 --- /dev/null +++ b/components/search-results-table.vue @@ -0,0 +1,81 @@ + + + diff --git a/components/skip-link.vue b/components/skip-link.vue new file mode 100644 index 00000000..ac3c4700 --- /dev/null +++ b/components/skip-link.vue @@ -0,0 +1,23 @@ + + + diff --git a/components/team-members-list.vue b/components/team-members-list.vue new file mode 100644 index 00000000..aafec55d --- /dev/null +++ b/components/team-members-list.vue @@ -0,0 +1,73 @@ + + + diff --git a/components/ui/button/Button.vue b/components/ui/button/Button.vue new file mode 100644 index 00000000..be7f2195 --- /dev/null +++ b/components/ui/button/Button.vue @@ -0,0 +1,30 @@ + + + diff --git a/components/ui/button/index.ts b/components/ui/button/index.ts new file mode 100644 index 00000000..e81d2686 --- /dev/null +++ b/components/ui/button/index.ts @@ -0,0 +1,29 @@ +import { variants } from "@/utils/styles"; + +export { default as Button } from "@/components/ui/button/Button.vue"; + +export const buttonVariants = variants({ + base: "inline-flex gap-1.5 items-center justify-center cursor-default rounded-md whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50", + variants: { + variant: { + default: "bg-primary text-primary-foreground shadow hover:bg-primary/90", + destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", + outline: + "border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground", + secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + brand: "bg-brand text-brand-foreground shadow hover:bg-brand/90", + }, + size: { + default: "h-9 px-4 py-2", + sm: "h-8 rounded-md px-3 text-xs", + lg: "h-10 rounded-md px-8", + icon: "h-9 w-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, +}); diff --git a/components/ui/card/Card.vue b/components/ui/card/Card.vue new file mode 100644 index 00000000..ab6b186f --- /dev/null +++ b/components/ui/card/Card.vue @@ -0,0 +1,16 @@ + + + diff --git a/components/ui/card/CardContent.vue b/components/ui/card/CardContent.vue new file mode 100644 index 00000000..893f66cb --- /dev/null +++ b/components/ui/card/CardContent.vue @@ -0,0 +1,16 @@ + + + diff --git a/components/ui/card/CardDescription.vue b/components/ui/card/CardDescription.vue new file mode 100644 index 00000000..f0046f71 --- /dev/null +++ b/components/ui/card/CardDescription.vue @@ -0,0 +1,16 @@ + + + diff --git a/components/ui/card/CardFooter.vue b/components/ui/card/CardFooter.vue new file mode 100644 index 00000000..f8b20011 --- /dev/null +++ b/components/ui/card/CardFooter.vue @@ -0,0 +1,16 @@ + + + diff --git a/components/ui/card/CardHeader.vue b/components/ui/card/CardHeader.vue new file mode 100644 index 00000000..9611428f --- /dev/null +++ b/components/ui/card/CardHeader.vue @@ -0,0 +1,16 @@ + + + diff --git a/components/ui/card/CardTitle.vue b/components/ui/card/CardTitle.vue new file mode 100644 index 00000000..1afd07d4 --- /dev/null +++ b/components/ui/card/CardTitle.vue @@ -0,0 +1,16 @@ + + + diff --git a/components/ui/card/index.ts b/components/ui/card/index.ts new file mode 100644 index 00000000..65cc9f48 --- /dev/null +++ b/components/ui/card/index.ts @@ -0,0 +1,6 @@ +export { default as Card } from "@/components/ui/card/Card.vue"; +export { default as CardContent } from "@/components/ui/card/CardContent.vue"; +export { default as CardDescription } from "@/components/ui/card/CardDescription.vue"; +export { default as CardFooter } from "@/components/ui/card/CardFooter.vue"; +export { default as CardHeader } from "@/components/ui/card/CardHeader.vue"; +export { default as CardTitle } from "@/components/ui/card/CardTitle.vue"; diff --git a/components/ui/carousel/Carousel.vue b/components/ui/carousel/Carousel.vue new file mode 100644 index 00000000..ed84a380 --- /dev/null +++ b/components/ui/carousel/Carousel.vue @@ -0,0 +1,48 @@ + + + diff --git a/components/ui/carousel/CarouselContent.vue b/components/ui/carousel/CarouselContent.vue new file mode 100644 index 00000000..2df3dab6 --- /dev/null +++ b/components/ui/carousel/CarouselContent.vue @@ -0,0 +1,24 @@ + + + diff --git a/components/ui/carousel/CarouselItem.vue b/components/ui/carousel/CarouselItem.vue new file mode 100644 index 00000000..5c0dff46 --- /dev/null +++ b/components/ui/carousel/CarouselItem.vue @@ -0,0 +1,25 @@ + + + diff --git a/components/ui/carousel/CarouselNext.vue b/components/ui/carousel/CarouselNext.vue new file mode 100644 index 00000000..33240a4f --- /dev/null +++ b/components/ui/carousel/CarouselNext.vue @@ -0,0 +1,34 @@ + + + diff --git a/components/ui/carousel/CarouselPrevious.vue b/components/ui/carousel/CarouselPrevious.vue new file mode 100644 index 00000000..7db93387 --- /dev/null +++ b/components/ui/carousel/CarouselPrevious.vue @@ -0,0 +1,34 @@ + + + diff --git a/components/ui/carousel/index.ts b/components/ui/carousel/index.ts new file mode 100644 index 00000000..7c569a22 --- /dev/null +++ b/components/ui/carousel/index.ts @@ -0,0 +1,7 @@ +export { default as Carousel } from "@/components/ui/carousel/Carousel.vue"; +export { default as CarouselContent } from "@/components/ui/carousel/CarouselContent.vue"; +export { default as CarouselItem } from "@/components/ui/carousel/CarouselItem.vue"; +export { default as CarouselNext } from "@/components/ui/carousel/CarouselNext.vue"; +export { default as CarouselPrevious } from "@/components/ui/carousel/CarouselPrevious.vue"; +export { useCarousel } from "@/components/ui/carousel/useCarousel"; +export type { EmblaCarouselType as CarouselApi } from "embla-carousel"; diff --git a/components/ui/carousel/interface.ts b/components/ui/carousel/interface.ts new file mode 100644 index 00000000..f37bf89c --- /dev/null +++ b/components/ui/carousel/interface.ts @@ -0,0 +1,18 @@ +import type { + EmblaCarouselType as CarouselApi, + EmblaOptionsType as CarouselOptions, + EmblaPluginType as CarouselPlugin, +} from "embla-carousel"; +import type { HTMLAttributes, Ref } from "vue"; + +export interface CarouselProps { + opts?: CarouselOptions | Ref; + plugins?: Array | Ref>; + orientation?: "horizontal" | "vertical"; +} + +export type CarouselEmits = (e: "init-api", payload: CarouselApi) => void; + +export interface WithClassAsProps { + class?: HTMLAttributes["class"]; +} diff --git a/components/ui/carousel/useCarousel.ts b/components/ui/carousel/useCarousel.ts new file mode 100644 index 00000000..5d71cb33 --- /dev/null +++ b/components/ui/carousel/useCarousel.ts @@ -0,0 +1,62 @@ +import { createInjectionState } from "@vueuse/core"; +import type { EmblaCarouselType as CarouselApi } from "embla-carousel"; +import emblaCarouselVue from "embla-carousel-vue"; + +import type { CarouselEmits, CarouselProps } from "./interface"; + +const [useProvideCarousel, useInjectCarousel] = createInjectionState( + ({ opts, orientation, plugins }: CarouselProps, emits: CarouselEmits) => { + const [emblaNode, emblaApi] = emblaCarouselVue( + { + ...opts, + axis: orientation === "horizontal" ? "x" : "y", + }, + plugins, + ); + + function scrollPrev() { + emblaApi.value?.scrollPrev(); + } + function scrollNext() { + emblaApi.value?.scrollNext(); + } + + const canScrollNext = ref(true); + const canScrollPrev = ref(true); + + function onSelect(api: CarouselApi) { + canScrollNext.value = api.canScrollNext(); + canScrollPrev.value = api.canScrollPrev(); + } + + onMounted(() => { + if (!emblaApi.value) return; + + emblaApi.value?.on("init", onSelect); + emblaApi.value?.on("reInit", onSelect); + emblaApi.value?.on("select", onSelect); + + emits("init-api", emblaApi.value); + }); + + return { + carouselRef: emblaNode, + carouselApi: emblaApi, + canScrollPrev, + canScrollNext, + scrollPrev, + scrollNext, + orientation, + }; + }, +); + +function useCarousel() { + const carouselState = useInjectCarousel(); + + if (!carouselState) throw new Error("useCarousel must be used within a "); + + return carouselState; +} + +export { useCarousel, useProvideCarousel }; diff --git a/components/ui/centered.vue b/components/ui/centered.vue new file mode 100644 index 00000000..dc78806c --- /dev/null +++ b/components/ui/centered.vue @@ -0,0 +1,5 @@ + diff --git a/components/ui/dropdown-menu/DropdownMenu.vue b/components/ui/dropdown-menu/DropdownMenu.vue new file mode 100644 index 00000000..9b0f2ad4 --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenu.vue @@ -0,0 +1,19 @@ + + + diff --git a/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue b/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue new file mode 100644 index 00000000..80e5f6e0 --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue @@ -0,0 +1,34 @@ + + + diff --git a/components/ui/dropdown-menu/DropdownMenuContent.vue b/components/ui/dropdown-menu/DropdownMenuContent.vue new file mode 100644 index 00000000..e4cb7ea8 --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenuContent.vue @@ -0,0 +1,34 @@ + + + diff --git a/components/ui/dropdown-menu/DropdownMenuGroup.vue b/components/ui/dropdown-menu/DropdownMenuGroup.vue new file mode 100644 index 00000000..8ca42e3d --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenuGroup.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/dropdown-menu/DropdownMenuItem.vue b/components/ui/dropdown-menu/DropdownMenuItem.vue new file mode 100644 index 00000000..adb72f6b --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenuItem.vue @@ -0,0 +1,22 @@ + + + diff --git a/components/ui/dropdown-menu/DropdownMenuLabel.vue b/components/ui/dropdown-menu/DropdownMenuLabel.vue new file mode 100644 index 00000000..ce7311cf --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenuLabel.vue @@ -0,0 +1,21 @@ + + + diff --git a/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue b/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue new file mode 100644 index 00000000..678312bc --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue @@ -0,0 +1,17 @@ + + + diff --git a/components/ui/dropdown-menu/DropdownMenuRadioItem.vue b/components/ui/dropdown-menu/DropdownMenuRadioItem.vue new file mode 100644 index 00000000..26491838 --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenuRadioItem.vue @@ -0,0 +1,35 @@ + + + diff --git a/components/ui/dropdown-menu/DropdownMenuSeparator.vue b/components/ui/dropdown-menu/DropdownMenuSeparator.vue new file mode 100644 index 00000000..cf5c909c --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenuSeparator.vue @@ -0,0 +1,9 @@ + + + diff --git a/components/ui/dropdown-menu/DropdownMenuShortcut.vue b/components/ui/dropdown-menu/DropdownMenuShortcut.vue new file mode 100644 index 00000000..7544c512 --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenuShortcut.vue @@ -0,0 +1,9 @@ + + + diff --git a/components/ui/dropdown-menu/DropdownMenuSub.vue b/components/ui/dropdown-menu/DropdownMenuSub.vue new file mode 100644 index 00000000..3b8909be --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenuSub.vue @@ -0,0 +1,19 @@ + + + diff --git a/components/ui/dropdown-menu/DropdownMenuSubContent.vue b/components/ui/dropdown-menu/DropdownMenuSubContent.vue new file mode 100644 index 00000000..baea0039 --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenuSubContent.vue @@ -0,0 +1,29 @@ + + + diff --git a/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue b/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue new file mode 100644 index 00000000..f1b8a0e9 --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue @@ -0,0 +1,23 @@ + + + diff --git a/components/ui/dropdown-menu/DropdownMenuTrigger.vue b/components/ui/dropdown-menu/DropdownMenuTrigger.vue new file mode 100644 index 00000000..eb13d432 --- /dev/null +++ b/components/ui/dropdown-menu/DropdownMenuTrigger.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/dropdown-menu/index.ts b/components/ui/dropdown-menu/index.ts new file mode 100644 index 00000000..ace8b3a1 --- /dev/null +++ b/components/ui/dropdown-menu/index.ts @@ -0,0 +1,15 @@ +export { default as DropdownMenu } from "@/components/ui/dropdown-menu/DropdownMenu.vue"; +export { default as DropdownMenuCheckboxItem } from "@/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue"; +export { default as DropdownMenuContent } from "@/components/ui/dropdown-menu/DropdownMenuContent.vue"; +export { default as DropdownMenuGroup } from "@/components/ui/dropdown-menu/DropdownMenuGroup.vue"; +export { default as DropdownMenuItem } from "@/components/ui/dropdown-menu/DropdownMenuItem.vue"; +export { default as DropdownMenuLabel } from "@/components/ui/dropdown-menu/DropdownMenuLabel.vue"; +export { default as DropdownMenuRadioGroup } from "@/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue"; +export { default as DropdownMenuRadioItem } from "@/components/ui/dropdown-menu/DropdownMenuRadioItem.vue"; +export { default as DropdownMenuSeparator } from "@/components/ui/dropdown-menu/DropdownMenuSeparator.vue"; +export { default as DropdownMenuShortcut } from "@/components/ui/dropdown-menu/DropdownMenuShortcut.vue"; +export { default as DropdownMenuSub } from "@/components/ui/dropdown-menu/DropdownMenuSub.vue"; +export { default as DropdownMenuSubContent } from "@/components/ui/dropdown-menu/DropdownMenuSubContent.vue"; +export { default as DropdownMenuSubTrigger } from "@/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue"; +export { default as DropdownMenuTrigger } from "@/components/ui/dropdown-menu/DropdownMenuTrigger.vue"; +export { DropdownMenuPortal } from "radix-vue"; diff --git a/components/ui/form/FormControl.vue b/components/ui/form/FormControl.vue new file mode 100644 index 00000000..ae083a3c --- /dev/null +++ b/components/ui/form/FormControl.vue @@ -0,0 +1,17 @@ + + + diff --git a/components/ui/form/FormDescription.vue b/components/ui/form/FormDescription.vue new file mode 100644 index 00000000..36c85fae --- /dev/null +++ b/components/ui/form/FormDescription.vue @@ -0,0 +1,12 @@ + + + diff --git a/components/ui/form/FormItem.vue b/components/ui/form/FormItem.vue new file mode 100644 index 00000000..0eee34b0 --- /dev/null +++ b/components/ui/form/FormItem.vue @@ -0,0 +1,16 @@ + + + diff --git a/components/ui/form/FormLabel.vue b/components/ui/form/FormLabel.vue new file mode 100644 index 00000000..7c28faf2 --- /dev/null +++ b/components/ui/form/FormLabel.vue @@ -0,0 +1,25 @@ + + + diff --git a/components/ui/form/FormMessage.vue b/components/ui/form/FormMessage.vue new file mode 100644 index 00000000..f0126dd6 --- /dev/null +++ b/components/ui/form/FormMessage.vue @@ -0,0 +1,16 @@ + + + diff --git a/components/ui/form/form.context.ts b/components/ui/form/form.context.ts new file mode 100644 index 00000000..f552b457 --- /dev/null +++ b/components/ui/form/form.context.ts @@ -0,0 +1 @@ +export const FORM_ITEM_INJECTION_KEY = Symbol() as InjectionKey; diff --git a/components/ui/form/index.ts b/components/ui/form/index.ts new file mode 100644 index 00000000..d8fd3c4f --- /dev/null +++ b/components/ui/form/index.ts @@ -0,0 +1,6 @@ +export { default as FormControl } from "@/components/ui/form/FormControl.vue"; +export { default as FormDescription } from "@/components/ui/form/FormDescription.vue"; +export { default as FormItem } from "@/components/ui/form/FormItem.vue"; +export { default as FormLabel } from "@/components/ui/form/FormLabel.vue"; +export { default as FormMessage } from "@/components/ui/form/FormMessage.vue"; +export { Form, Field as FormField } from "vee-validate"; diff --git a/components/ui/form/useFormField.ts b/components/ui/form/useFormField.ts new file mode 100644 index 00000000..af79f6d9 --- /dev/null +++ b/components/ui/form/useFormField.ts @@ -0,0 +1,35 @@ +import { + FieldContextKey, + useFieldError, + useIsFieldDirty, + useIsFieldTouched, + useIsFieldValid, +} from "vee-validate"; + +import { FORM_ITEM_INJECTION_KEY } from "@/components/ui/form/form.context"; + +export function useFormField() { + const fieldContext = inject(FieldContextKey); + const fieldItemContext = inject(FORM_ITEM_INJECTION_KEY); + + const fieldState = { + valid: useIsFieldValid(), + isDirty: useIsFieldDirty(), + isTouched: useIsFieldTouched(), + error: useFieldError(), + }; + + if (!fieldContext) throw new Error("useFormField should be used within "); + + const { name } = fieldContext; + const id = fieldItemContext; + + return { + id, + name, + formItemId: `${id}-form-item`, + formDescriptionId: `${id}-form-item-description`, + formMessageId: `${id}-form-item-message`, + ...fieldState, + }; +} diff --git a/components/ui/hover-card/HoverCard.vue b/components/ui/hover-card/HoverCard.vue new file mode 100644 index 00000000..cf151916 --- /dev/null +++ b/components/ui/hover-card/HoverCard.vue @@ -0,0 +1,12 @@ + + + diff --git a/components/ui/hover-card/HoverCardContent.vue b/components/ui/hover-card/HoverCardContent.vue new file mode 100644 index 00000000..81e96481 --- /dev/null +++ b/components/ui/hover-card/HoverCardContent.vue @@ -0,0 +1,32 @@ + + + diff --git a/components/ui/hover-card/HoverCardTrigger.vue b/components/ui/hover-card/HoverCardTrigger.vue new file mode 100644 index 00000000..a07fa023 --- /dev/null +++ b/components/ui/hover-card/HoverCardTrigger.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/hover-card/index.ts b/components/ui/hover-card/index.ts new file mode 100644 index 00000000..e01f7e2f --- /dev/null +++ b/components/ui/hover-card/index.ts @@ -0,0 +1,3 @@ +export { default as HoverCard } from "@/components/ui/hover-card/HoverCard.vue"; +export { default as HoverCardContent } from "@/components/ui/hover-card/HoverCardContent.vue"; +export { default as HoverCardTrigger } from "@/components/ui/hover-card/HoverCardTrigger.vue"; diff --git a/components/ui/input/Input.vue b/components/ui/input/Input.vue new file mode 100644 index 00000000..a11f4ea6 --- /dev/null +++ b/components/ui/input/Input.vue @@ -0,0 +1,33 @@ + + + diff --git a/components/ui/input/index.ts b/components/ui/input/index.ts new file mode 100644 index 00000000..f3ace74d --- /dev/null +++ b/components/ui/input/index.ts @@ -0,0 +1 @@ +export { default as Input } from "@/components/ui/input/Input.vue"; diff --git a/components/ui/label/Label.vue b/components/ui/label/Label.vue new file mode 100644 index 00000000..69230867 --- /dev/null +++ b/components/ui/label/Label.vue @@ -0,0 +1,17 @@ + + + diff --git a/components/ui/label/index.ts b/components/ui/label/index.ts new file mode 100644 index 00000000..066e414d --- /dev/null +++ b/components/ui/label/index.ts @@ -0,0 +1 @@ +export { default as Label } from "@/components/ui/label/Label.vue"; diff --git a/components/ui/loading-indicator.vue b/components/ui/loading-indicator.vue new file mode 100644 index 00000000..61c388fb --- /dev/null +++ b/components/ui/loading-indicator.vue @@ -0,0 +1,41 @@ + + + diff --git a/components/ui/pagination/PaginationEllipsis.vue b/components/ui/pagination/PaginationEllipsis.vue new file mode 100644 index 00000000..7c648ba4 --- /dev/null +++ b/components/ui/pagination/PaginationEllipsis.vue @@ -0,0 +1,25 @@ + + + diff --git a/components/ui/pagination/PaginationFirst.vue b/components/ui/pagination/PaginationFirst.vue new file mode 100644 index 00000000..ddc6e99a --- /dev/null +++ b/components/ui/pagination/PaginationFirst.vue @@ -0,0 +1,21 @@ + + + diff --git a/components/ui/pagination/PaginationLast.vue b/components/ui/pagination/PaginationLast.vue new file mode 100644 index 00000000..b6f991ab --- /dev/null +++ b/components/ui/pagination/PaginationLast.vue @@ -0,0 +1,21 @@ + + + diff --git a/components/ui/pagination/PaginationNext.vue b/components/ui/pagination/PaginationNext.vue new file mode 100644 index 00000000..f9a0d89b --- /dev/null +++ b/components/ui/pagination/PaginationNext.vue @@ -0,0 +1,21 @@ + + + diff --git a/components/ui/pagination/PaginationPrev.vue b/components/ui/pagination/PaginationPrev.vue new file mode 100644 index 00000000..dc84144e --- /dev/null +++ b/components/ui/pagination/PaginationPrev.vue @@ -0,0 +1,21 @@ + + + diff --git a/components/ui/pagination/index.ts b/components/ui/pagination/index.ts new file mode 100644 index 00000000..c65305e5 --- /dev/null +++ b/components/ui/pagination/index.ts @@ -0,0 +1,6 @@ +export { default as PaginationEllipsis } from "@/components/ui/pagination/PaginationEllipsis.vue"; +export { default as PaginationFirst } from "@/components/ui/pagination/PaginationFirst.vue"; +export { default as PaginationLast } from "@/components/ui/pagination/PaginationLast.vue"; +export { default as PaginationNext } from "@/components/ui/pagination/PaginationNext.vue"; +export { default as PaginationPrev } from "@/components/ui/pagination/PaginationPrev.vue"; +export { PaginationRoot as Pagination, PaginationList, PaginationListItem } from "radix-vue"; diff --git a/components/ui/popover/Popover.vue b/components/ui/popover/Popover.vue new file mode 100644 index 00000000..da5c0146 --- /dev/null +++ b/components/ui/popover/Popover.vue @@ -0,0 +1,19 @@ + + + diff --git a/components/ui/popover/PopoverContent.vue b/components/ui/popover/PopoverContent.vue new file mode 100644 index 00000000..ff3343ac --- /dev/null +++ b/components/ui/popover/PopoverContent.vue @@ -0,0 +1,49 @@ + + + diff --git a/components/ui/popover/PopoverTrigger.vue b/components/ui/popover/PopoverTrigger.vue new file mode 100644 index 00000000..9056b458 --- /dev/null +++ b/components/ui/popover/PopoverTrigger.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/popover/index.ts b/components/ui/popover/index.ts new file mode 100644 index 00000000..0cbaf116 --- /dev/null +++ b/components/ui/popover/index.ts @@ -0,0 +1,4 @@ +export { default as Popover } from "@/components/ui/popover/Popover.vue"; +export { default as PopoverContent } from "@/components/ui/popover/PopoverContent.vue"; +export { default as PopoverTrigger } from "@/components/ui/popover/PopoverTrigger.vue"; +export { PopoverAnchor } from "radix-vue"; diff --git a/components/ui/select/Select.vue b/components/ui/select/Select.vue new file mode 100644 index 00000000..23def67c --- /dev/null +++ b/components/ui/select/Select.vue @@ -0,0 +1,19 @@ + + + diff --git a/components/ui/select/SelectContent.vue b/components/ui/select/SelectContent.vue new file mode 100644 index 00000000..df4a7387 --- /dev/null +++ b/components/ui/select/SelectContent.vue @@ -0,0 +1,49 @@ + + + diff --git a/components/ui/select/SelectGroup.vue b/components/ui/select/SelectGroup.vue new file mode 100644 index 00000000..f55c0d6e --- /dev/null +++ b/components/ui/select/SelectGroup.vue @@ -0,0 +1,13 @@ + + + diff --git a/components/ui/select/SelectItem.vue b/components/ui/select/SelectItem.vue new file mode 100644 index 00000000..1baa76c9 --- /dev/null +++ b/components/ui/select/SelectItem.vue @@ -0,0 +1,30 @@ + + + diff --git a/components/ui/select/SelectItemText.vue b/components/ui/select/SelectItemText.vue new file mode 100644 index 00000000..1985192c --- /dev/null +++ b/components/ui/select/SelectItemText.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/select/SelectLabel.vue b/components/ui/select/SelectLabel.vue new file mode 100644 index 00000000..4ee96595 --- /dev/null +++ b/components/ui/select/SelectLabel.vue @@ -0,0 +1,13 @@ + + + diff --git a/components/ui/select/SelectSeparator.vue b/components/ui/select/SelectSeparator.vue new file mode 100644 index 00000000..826b75cb --- /dev/null +++ b/components/ui/select/SelectSeparator.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/select/SelectTrigger.vue b/components/ui/select/SelectTrigger.vue new file mode 100644 index 00000000..e6de6469 --- /dev/null +++ b/components/ui/select/SelectTrigger.vue @@ -0,0 +1,32 @@ + + + diff --git a/components/ui/select/SelectValue.vue b/components/ui/select/SelectValue.vue new file mode 100644 index 00000000..c6364968 --- /dev/null +++ b/components/ui/select/SelectValue.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/select/index.ts b/components/ui/select/index.ts new file mode 100644 index 00000000..5f72522c --- /dev/null +++ b/components/ui/select/index.ts @@ -0,0 +1,9 @@ +export { default as Select } from "@/components/ui/select/Select.vue"; +export { default as SelectContent } from "@/components/ui/select/SelectContent.vue"; +export { default as SelectGroup } from "@/components/ui/select/SelectGroup.vue"; +export { default as SelectItem } from "@/components/ui/select/SelectItem.vue"; +export { default as SelectItemText } from "@/components/ui/select/SelectItemText.vue"; +export { default as SelectLabel } from "@/components/ui/select/SelectLabel.vue"; +export { default as SelectSeparator } from "@/components/ui/select/SelectSeparator.vue"; +export { default as SelectTrigger } from "@/components/ui/select/SelectTrigger.vue"; +export { default as SelectValue } from "@/components/ui/select/SelectValue.vue"; diff --git a/components/ui/separator/Separator.vue b/components/ui/separator/Separator.vue new file mode 100644 index 00000000..a4d5dc9b --- /dev/null +++ b/components/ui/separator/Separator.vue @@ -0,0 +1,16 @@ + + + diff --git a/components/ui/separator/index.ts b/components/ui/separator/index.ts new file mode 100644 index 00000000..c49397cd --- /dev/null +++ b/components/ui/separator/index.ts @@ -0,0 +1 @@ +export { default as Separator } from "@/components/ui/separator/Separator.vue"; diff --git a/components/ui/sheet/Sheet.vue b/components/ui/sheet/Sheet.vue new file mode 100644 index 00000000..c2b87b55 --- /dev/null +++ b/components/ui/sheet/Sheet.vue @@ -0,0 +1,9 @@ + + + diff --git a/components/ui/sheet/SheetClose.vue b/components/ui/sheet/SheetClose.vue new file mode 100644 index 00000000..060abb32 --- /dev/null +++ b/components/ui/sheet/SheetClose.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/sheet/SheetContent.vue b/components/ui/sheet/SheetContent.vue new file mode 100644 index 00000000..2af2066f --- /dev/null +++ b/components/ui/sheet/SheetContent.vue @@ -0,0 +1,62 @@ + + + diff --git a/components/ui/sheet/SheetDescription.vue b/components/ui/sheet/SheetDescription.vue new file mode 100644 index 00000000..790d3346 --- /dev/null +++ b/components/ui/sheet/SheetDescription.vue @@ -0,0 +1,13 @@ + + + diff --git a/components/ui/sheet/SheetFooter.vue b/components/ui/sheet/SheetFooter.vue new file mode 100644 index 00000000..20730277 --- /dev/null +++ b/components/ui/sheet/SheetFooter.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/sheet/SheetHeader.vue b/components/ui/sheet/SheetHeader.vue new file mode 100644 index 00000000..21c87b2a --- /dev/null +++ b/components/ui/sheet/SheetHeader.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/sheet/SheetTitle.vue b/components/ui/sheet/SheetTitle.vue new file mode 100644 index 00000000..7b2c414b --- /dev/null +++ b/components/ui/sheet/SheetTitle.vue @@ -0,0 +1,13 @@ + + + diff --git a/components/ui/sheet/SheetTrigger.vue b/components/ui/sheet/SheetTrigger.vue new file mode 100644 index 00000000..19d25b0c --- /dev/null +++ b/components/ui/sheet/SheetTrigger.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/sheet/index.ts b/components/ui/sheet/index.ts new file mode 100644 index 00000000..b486557d --- /dev/null +++ b/components/ui/sheet/index.ts @@ -0,0 +1,8 @@ +export { default as Sheet } from "@/components/ui/sheet/Sheet.vue"; +export { default as SheetClose } from "@/components/ui/sheet/SheetClose.vue"; +export { default as SheetContent } from "@/components/ui/sheet/SheetContent.vue"; +export { default as SheetDescription } from "@/components/ui/sheet/SheetDescription.vue"; +export { default as SheetFooter } from "@/components/ui/sheet/SheetFooter.vue"; +export { default as SheetHeader } from "@/components/ui/sheet/SheetHeader.vue"; +export { default as SheetTitle } from "@/components/ui/sheet/SheetTitle.vue"; +export { default as SheetTrigger } from "@/components/ui/sheet/SheetTrigger.vue"; diff --git a/components/ui/skeleton/Skeleton.vue b/components/ui/skeleton/Skeleton.vue new file mode 100644 index 00000000..2fffc731 --- /dev/null +++ b/components/ui/skeleton/Skeleton.vue @@ -0,0 +1,13 @@ + + + diff --git a/components/ui/skeleton/index.ts b/components/ui/skeleton/index.ts new file mode 100644 index 00000000..c4d8a52d --- /dev/null +++ b/components/ui/skeleton/index.ts @@ -0,0 +1 @@ +export { default as Skeleton } from "@/components/ui/skeleton/Skeleton.vue"; diff --git a/components/ui/table/Table.vue b/components/ui/table/Table.vue new file mode 100644 index 00000000..feb6c858 --- /dev/null +++ b/components/ui/table/Table.vue @@ -0,0 +1,13 @@ + + + diff --git a/components/ui/table/TableBody.vue b/components/ui/table/TableBody.vue new file mode 100644 index 00000000..01c4679e --- /dev/null +++ b/components/ui/table/TableBody.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/table/TableCaption.vue b/components/ui/table/TableCaption.vue new file mode 100644 index 00000000..b3dc4193 --- /dev/null +++ b/components/ui/table/TableCaption.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/table/TableCell.vue b/components/ui/table/TableCell.vue new file mode 100644 index 00000000..de834c77 --- /dev/null +++ b/components/ui/table/TableCell.vue @@ -0,0 +1,18 @@ + + + diff --git a/components/ui/table/TableEmpty.vue b/components/ui/table/TableEmpty.vue new file mode 100644 index 00000000..a30964ab --- /dev/null +++ b/components/ui/table/TableEmpty.vue @@ -0,0 +1,29 @@ + + + diff --git a/components/ui/table/TableFooter.vue b/components/ui/table/TableFooter.vue new file mode 100644 index 00000000..9f9c7c34 --- /dev/null +++ b/components/ui/table/TableFooter.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/table/TableHead.vue b/components/ui/table/TableHead.vue new file mode 100644 index 00000000..424bc21a --- /dev/null +++ b/components/ui/table/TableHead.vue @@ -0,0 +1,18 @@ + + + diff --git a/components/ui/table/TableHeader.vue b/components/ui/table/TableHeader.vue new file mode 100644 index 00000000..12999e9d --- /dev/null +++ b/components/ui/table/TableHeader.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/table/TableRow.vue b/components/ui/table/TableRow.vue new file mode 100644 index 00000000..e41c9b1c --- /dev/null +++ b/components/ui/table/TableRow.vue @@ -0,0 +1,15 @@ + + + diff --git a/components/ui/table/index.ts b/components/ui/table/index.ts new file mode 100644 index 00000000..6388649d --- /dev/null +++ b/components/ui/table/index.ts @@ -0,0 +1,8 @@ +export { default as Table } from "@/components/ui/table/Table.vue"; +export { default as TableBody } from "@/components/ui/table/TableBody.vue"; +export { default as TableCaption } from "@/components/ui/table/TableCaption.vue"; +export { default as TableCell } from "@/components/ui/table/TableCell.vue"; +export { default as TableEmpty } from "@/components/ui/table/TableEmpty.vue"; +export { default as TableHead } from "@/components/ui/table/TableHead.vue"; +export { default as TableHeader } from "@/components/ui/table/TableHeader.vue"; +export { default as TableRow } from "@/components/ui/table/TableRow.vue"; diff --git a/components/ui/tabs/Tabs.vue b/components/ui/tabs/Tabs.vue new file mode 100644 index 00000000..d7c2d738 --- /dev/null +++ b/components/ui/tabs/Tabs.vue @@ -0,0 +1,14 @@ + + + diff --git a/components/ui/tabs/TabsContent.vue b/components/ui/tabs/TabsContent.vue new file mode 100644 index 00000000..992eff56 --- /dev/null +++ b/components/ui/tabs/TabsContent.vue @@ -0,0 +1,21 @@ + + + diff --git a/components/ui/tabs/TabsList.vue b/components/ui/tabs/TabsList.vue new file mode 100644 index 00000000..71abae2f --- /dev/null +++ b/components/ui/tabs/TabsList.vue @@ -0,0 +1,21 @@ + + + diff --git a/components/ui/tabs/TabsTrigger.vue b/components/ui/tabs/TabsTrigger.vue new file mode 100644 index 00000000..98cbb8ba --- /dev/null +++ b/components/ui/tabs/TabsTrigger.vue @@ -0,0 +1,21 @@ + + + diff --git a/components/ui/tabs/index.ts b/components/ui/tabs/index.ts new file mode 100644 index 00000000..2982bde3 --- /dev/null +++ b/components/ui/tabs/index.ts @@ -0,0 +1,4 @@ +export { default as Tabs } from "@/components/ui/tabs/Tabs.vue"; +export { default as TabsContent } from "@/components/ui/tabs/TabsContent.vue"; +export { default as TabsList } from "@/components/ui/tabs/TabsList.vue"; +export { default as TabsTrigger } from "@/components/ui/tabs/TabsTrigger.vue"; diff --git a/components/ui/toast/Toaster.vue b/components/ui/toast/Toaster.vue new file mode 100644 index 00000000..9ce47ea5 --- /dev/null +++ b/components/ui/toast/Toaster.vue @@ -0,0 +1,19 @@ + + + diff --git a/components/ui/toast/index.ts b/components/ui/toast/index.ts new file mode 100644 index 00000000..2e3d664b --- /dev/null +++ b/components/ui/toast/index.ts @@ -0,0 +1,2 @@ +export { default as Toaster } from "@/components/ui/toast/Toaster.vue"; +export { toast } from "vue-sonner"; diff --git a/components/ui/tooltip/Tooltip.vue b/components/ui/tooltip/Tooltip.vue new file mode 100644 index 00000000..6d06a745 --- /dev/null +++ b/components/ui/tooltip/Tooltip.vue @@ -0,0 +1,19 @@ + + + diff --git a/components/ui/tooltip/TooltipContent.vue b/components/ui/tooltip/TooltipContent.vue new file mode 100644 index 00000000..47e802c1 --- /dev/null +++ b/components/ui/tooltip/TooltipContent.vue @@ -0,0 +1,34 @@ + + + diff --git a/components/ui/tooltip/TooltipProvider.vue b/components/ui/tooltip/TooltipProvider.vue new file mode 100644 index 00000000..c06f8597 --- /dev/null +++ b/components/ui/tooltip/TooltipProvider.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/tooltip/TooltipTrigger.vue b/components/ui/tooltip/TooltipTrigger.vue new file mode 100644 index 00000000..af8d0c5d --- /dev/null +++ b/components/ui/tooltip/TooltipTrigger.vue @@ -0,0 +1,11 @@ + + + diff --git a/components/ui/tooltip/index.ts b/components/ui/tooltip/index.ts new file mode 100644 index 00000000..74ae14ec --- /dev/null +++ b/components/ui/tooltip/index.ts @@ -0,0 +1,4 @@ +export { default as Tooltip } from "@/components/ui/tooltip/Tooltip.vue"; +export { default as TooltipContent } from "@/components/ui/tooltip/TooltipContent.vue"; +export { default as TooltipProvider } from "@/components/ui/tooltip/TooltipProvider.vue"; +export { default as TooltipTrigger } from "@/components/ui/tooltip/TooltipTrigger.vue"; diff --git a/components/visualisation-container.vue b/components/visualisation-container.vue new file mode 100644 index 00000000..e1910ec1 --- /dev/null +++ b/components/visualisation-container.vue @@ -0,0 +1,17 @@ + + + diff --git a/composables/api.ts b/composables/api.ts deleted file mode 100644 index e0dc69dc..00000000 --- a/composables/api.ts +++ /dev/null @@ -1,1675 +0,0 @@ -/* eslint-disable */ -/* tslint:disable */ -/* - * --------------------------------------------------------------- - * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## - * ## ## - * ## AUTHOR: acacode ## - * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## - * --------------------------------------------------------------- - */ - -export interface EntitiesOutputModel { - pagination?: PaginationModel; - results?: LinkedPlacesModel[]; //results?: (LinkedPlacesModel | GeoJSONModel)[]; -} - -export interface PaginationModel { - entities?: number; - entitiesPerPage?: number; - index?: PaginationIndexModel[]; - totalPages?: number; -} - -export interface PaginationIndexModel { - page?: number; - startId?: number; -} - -export interface LinkedPlacesModel { - "@context"?: string; - type?: string; - features?: LinkedPlacesModelFeatures[]; -} - -export interface GeoJSONModel { - type?: "FeatureCollection"; - features?: GeoJSONModelFeatures[]; -} - -export interface Point { - type: "Point"; - coordinates: Position; - title?: string; - description?: string; - shapeType?: "centerpoint"; -} - -export type Position = number[]; - -export interface LineString { - type: "LineString"; - coordinates: LineStringCoordinates; - title?: string; - description?: string; - shapeType?: "polyline"; -} - -export type LineStringCoordinates = Position[]; - -export type LinearRing = Position[]; - -export interface Polygon { - type: "Polygon"; - "coordinates'"?: LinearRing[]; - title?: string; - description?: string; - shapeType?: "area" | "shape"; -} - -export interface GeometryCollection { - type: "GeometryCollection"; - geometries?: (Polygon | Point | LineString | (Polygon & Point & LineString))[]; -} - -export interface TypeOverviewEntryModel { - /** @format int32 */ - id?: number; - name?: string; - viewClass?: string[]; - children?: TypeOverviewEntryModel[]; -} - -export interface TypeOverviewModel { - standard?: TypeOverviewEntryModel[]; - place?: TypeOverviewEntryModel[]; - custom?: TypeOverviewEntryModel[]; - value?: TypeOverviewEntryModel[]; - system?: TypeOverviewEntryModel[]; -} - -export interface TypeTreeModel { - type_tree?: TypeTreeModelTypeTree; -} - -export interface TypeViewClassChildren { - id?: string; - label?: string; - url?: string; - children?: TypeViewClassChildren[]; -} - -export interface TypesByViewClassEntry { - children?: TypeViewClassChildren[]; - id?: number; - name?: string; - category?: string; -} - -export interface TypesByViewClassModel { - acquisition?: TypesByViewClassEntry[]; - activity?: TypesByViewClassEntry[]; - actor_actor_relation?: TypesByViewClassEntry[]; - actor_function?: TypesByViewClassEntry[]; - artifact?: TypesByViewClassEntry[]; - bibliography?: TypesByViewClassEntry[]; - edition?: TypesByViewClassEntry[]; - event?: TypesByViewClassEntry[]; - external_reference?: TypesByViewClassEntry[]; - feature?: TypesByViewClassEntry[]; - file?: TypesByViewClassEntry[]; - group?: TypesByViewClassEntry[]; - human_remains?: TypesByViewClassEntry[]; - involvement?: TypesByViewClassEntry[]; - move?: TypesByViewClassEntry[]; - person?: TypesByViewClassEntry[]; - place?: TypesByViewClassEntry[]; - production?: TypesByViewClassEntry[]; - source?: TypesByViewClassEntry[]; - source_translation?: TypesByViewClassEntry[]; - stratigraphic_unit?: TypesByViewClassEntry[]; -} - -export type ClassesModel = ClassesModelInner[]; - -export interface ContentModel { - intro?: string; - contact?: string; - legalNotice?: string; - siteName?: string; - imageSizes?: ContentModelImageSizes; -} - -export interface SystemClassCountModel { - /** @format int32 */ - move?: number; - /** @format int32 */ - bibliography?: number; - /** @format int32 */ - person?: number; - /** @format int32 */ - acquisition?: number; - /** @format int32 */ - reference_system?: number; - /** @format int32 */ - feature?: number; - /** @format int32 */ - file?: number; - /** @format int32 */ - activity?: number; - /** @format int32 */ - type?: number; - /** @format int32 */ - administrative_unit?: number; - /** @format int32 */ - artifact?: number; - /** @format int32 */ - source_translation?: number; - /** @format int32 */ - place?: number; - /** @format int32 */ - stratigraphic_unit?: number; - /** @format int32 */ - edition?: number; - /** @format int32 */ - group?: number; - /** @format int32 */ - source?: number; -} - -export type SubunitsModel = SubunitsModelInner[]; - -export interface GeometricEntitiesModel { - type?: string; - features?: GeometricEntitiesModelFeatures[]; -} - -export type InlineResponse200 = LinkedPlacesModel; //export type InlineResponse200 = LinkedPlacesModel | GeoJSONModel; - -export interface LinkedPlacesModelProperties { - title?: string; -} - -export interface LinkedPlacesModelDescriptions { - value?: string; -} - -export interface LinkedPlacesModelWhenStart { - /** @format nullable */ - earliest?: string; - /** @format nullable */ - latest?: string; - /** @format nullable */ - comment?: string; -} - -export interface LinkedPlacesModelWhenTimespans { - start?: LinkedPlacesModelWhenStart; - end?: LinkedPlacesModelWhenStart; -} - -export interface LinkedPlacesModelWhen { - timespans?: LinkedPlacesModelWhenTimespans[]; -} - -export interface LinkedPlacesModelTypes { - identifier?: string; - label?: string; - /** @format nullable */ - descriptions?: string; - hierarchy?: string; - /** @format float */ - value?: number; - /** @format nullable */ - unit?: string; -} - -export interface LinkedPlacesModelRelations { - label?: string; - relationTo?: string; - relationType?: string; - relationSystemClass?: string; - /** @format nullable */ - relationDescription?: string; - /** @format nullable */ - type?: string; - when?: LinkedPlacesModelWhen; -} - -export interface LinkedPlacesModelFeatures { - "@id"?: string; - type?: string; - crmClass?: string; - systemClass?: string; - properties?: LinkedPlacesModelProperties; - descriptions?: LinkedPlacesModelDescriptions[]; - when?: LinkedPlacesModelWhen; - types?: LinkedPlacesModelTypes[]; - relations?: LinkedPlacesModelRelations[]; - /** @format nullable */ - names?: string; - /** @format nullable */ - links?: string; - /** @format nullable */ - depictions?: LinkedPlacesDepiction[]; - geometry?: Polygon | Point | LineString | GeometryCollection; -} - -export interface LinkedPlacesDepiction { - "@id": string; - title: string; - license: string; - url: string; -} - -export interface GeoJSONModelPropertiesTypes { - typeName?: string; - typeId?: number; -} - -export interface GeoJSONModelProperties { - "@id"?: number; - systemClass?: string; - name?: string; - description?: string; - begin_earliest?: string; - /** @format nullable */ - begin_latest?: string; - /** @format nullable */ - begin_comment?: string; - end_earliest?: string; - /** @format nullable */ - end_latest?: string; - /** @format nullable */ - end_comment?: string; - types?: GeoJSONModelPropertiesTypes[]; -} - -export interface GeoJSONModelFeatures { - type?: string; - geometry?: Polygon | Point | LineString | GeometryCollection; - properties?: GeoJSONModelProperties; -} - -export interface TypeTreeModelTypeTreeTypeIds { - id?: number; - name?: string; - description?: string; - origin_id?: number; - first?: number; - last?: number; - root?: number[]; - subs?: number[]; - count?: number; - count_subs?: number; - category?: string; -} - -export interface TypeTreeModelTypeTree { - type_ids?: TypeTreeModelTypeTreeTypeIds; -} - -export interface ClassesModelInner { - systemClass?: string; - crmClass?: string; - view?: string; - icon?: string; - en?: string; -} - -export interface ContentModelImageSizes { - thumbnail?: string; - table?: string; -} - -export interface SubunitsModelInner { - /** @format int32 */ - id?: number; - /** @format int32 */ - parentId?: number; - /** @format int32 */ - rootId?: number; - openatlasClassName?: string; - crmClass?: string; - created?: string; - modified?: string; - latestModRec?: string; - geometry?: { - type?: string; - coordinates?: number[]; - title?: string; - description?: string; - shapeType?: string; - }; - children?: number[]; - properties?: { - name?: string; - /** @format nullable */ - aliases?: string; - description?: string; - standardType?: { - name?: string; - /** @format int32 */ - id?: number; - /** @format int32 */ - rootId?: number; - path?: string; - externalReferences?: { - type?: string; - identifier?: string; - referenceSystem?: string; - resolverURL?: string; - referenceURL?: string; - id?: string; - }[]; - }; - timespan?: { - earliestBegin?: string; - latestBegin?: string; - earliestEnd?: string; - latestEnd?: string; - }; - externalReferences?: { - type?: string; - identifier?: string; - referenceSystem?: string; - resolverURL?: string; - referenceURL?: string; - id?: string; - }[]; - references?: { - /** @format int32 */ - id?: number; - abbreviation?: string; - title?: string; - /** @format nullable */ - pages?: string; - }[]; - /** @format nullable */ - files?: string; - types?: { - /** @format int32 */ - id?: number; - /** @format int32 */ - rootId?: number; - name?: string; - path?: string; - /** @format nullable */ - value?: string; - /** @format nullable */ - unit?: string; - externalReferences?: { - type?: string; - identifier?: string; - referenceSystem?: string; - resolverURL?: string; - referenceURL?: string; - id?: string; - }[]; - }[]; - }; -} - -export interface GeometricEntitiesModelGeometry { - coordinates?: number[]; - type?: string; -} - -export interface GeometricEntitiesModelProperties { - /** @format int32 */ - id?: number; - name?: string; - description?: string; - /** @format int32 */ - locationId?: number; - /** @format int32 */ - objectId?: number; - objectDescription?: string; - objectName?: string; - objectType?: string; - shapeType?: string; -} - -export interface GeometricEntitiesModelFeatures { - type?: string; - geometry?: GeometricEntitiesModelGeometry; - properties?: GeometricEntitiesModelProperties; -} - -export type QueryParamsType = Record; -export type ResponseFormat = keyof Omit; - -export interface FullRequestParams extends Omit { - /** set parameter to `true` for call `securityWorker` for this request */ - secure?: boolean; - /** request path */ - path: string; - /** content type of request body */ - type?: ContentType; - /** query params */ - query?: QueryParamsType; - /** format of response (i.e. response.json() -> format: "json") */ - format?: ResponseFormat; - /** request body */ - body?: unknown; - /** base url */ - baseUrl?: string; - /** request cancellation token */ - cancelToken?: CancelToken; -} - -export type RequestParams = Omit; - -export interface ApiConfig { - baseUrl?: string; - baseApiParams?: Omit; - securityWorker?: ( - securityData: SecurityDataType | null, - ) => Promise | RequestParams | void; - customFetch?: typeof fetch; -} - -export interface HttpResponse extends Response { - data: D; - error: E; -} - -type CancelToken = Symbol | string | number; - -export enum ContentType { - Json = "application/json", - FormData = "multipart/form-data", - UrlEncoded = "application/x-www-form-urlencoded", -} - -export class HttpClient { - public baseUrl: string = "https://demo.openatlas.eu/api/"; - private securityData: SecurityDataType | null = null; - private securityWorker?: ApiConfig["securityWorker"]; - private abortControllers = new Map(); - private customFetch = (...fetchParams: Parameters) => fetch(...fetchParams); - - private baseApiParams: RequestParams = { - credentials: "same-origin", - headers: {}, - redirect: "follow", - referrerPolicy: "no-referrer", - }; - - constructor(apiConfig: ApiConfig = {}) { - Object.assign(this, apiConfig); - } - - public setSecurityData = (data: SecurityDataType | null) => { - this.securityData = data; - }; - - protected encodeQueryParam(key: string, value: any) { - const encodedKey = encodeURIComponent(key); - return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`; - } - - protected addQueryParam(query: QueryParamsType, key: string) { - return this.encodeQueryParam(key, query[key]); - } - - protected addArrayQueryParam(query: QueryParamsType, key: string) { - const value = query[key]; - return value.map((v: any) => this.encodeQueryParam(key, v)).join("&"); - } - - protected toQueryString(rawQuery?: QueryParamsType): string { - const query = rawQuery || {}; - const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]); - return keys - .map((key) => - Array.isArray(query[key]) - ? this.addArrayQueryParam(query, key) - : this.addQueryParam(query, key), - ) - .join("&"); - } - - protected addQueryParams(rawQuery?: QueryParamsType): string { - const queryString = this.toQueryString(rawQuery); - return queryString ? `?${queryString}` : ""; - } - - private contentFormatters: Record any> = { - [ContentType.Json]: (input: any) => - input !== null && (typeof input === "object" || typeof input === "string") - ? JSON.stringify(input) - : input, - [ContentType.FormData]: (input: any) => - Object.keys(input || {}).reduce((formData, key) => { - const property = input[key]; - formData.append( - key, - property instanceof Blob - ? property - : typeof property === "object" && property !== null - ? JSON.stringify(property) - : `${property}`, - ); - return formData; - }, new FormData()), - [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input), - }; - - protected mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams { - return { - ...this.baseApiParams, - ...params1, - ...(params2 || {}), - headers: { - ...(this.baseApiParams.headers || {}), - ...(params1.headers || {}), - ...((params2 && params2.headers) || {}), - }, - }; - } - - protected createAbortSignal = (cancelToken: CancelToken): AbortSignal | undefined => { - if (this.abortControllers.has(cancelToken)) { - const abortController = this.abortControllers.get(cancelToken); - if (abortController) { - return abortController.signal; - } - return void 0; - } - - const abortController = new AbortController(); - this.abortControllers.set(cancelToken, abortController); - return abortController.signal; - }; - - public abortRequest = (cancelToken: CancelToken) => { - const abortController = this.abortControllers.get(cancelToken); - - if (abortController) { - abortController.abort(); - this.abortControllers.delete(cancelToken); - } - }; - - public request = async ({ - body, - secure, - path, - type, - query, - format, - baseUrl, - cancelToken, - ...params - }: FullRequestParams): Promise => { - const secureParams = - ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) && - this.securityWorker && - (await this.securityWorker(this.securityData))) || - {}; - const requestParams = this.mergeRequestParams(params, secureParams); - const queryString = query && this.toQueryString(query); - const payloadFormatter = this.contentFormatters[type || ContentType.Json]; - const responseFormat = format || requestParams.format; - return $fetch(`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`); - /* - return this.customFetch(`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`, { - ...requestParams, - headers: { - ...(requestParams.headers || {}), - ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}), - }, - signal: cancelToken ? this.createAbortSignal(cancelToken) : requestParams.signal, - body: typeof body === "undefined" || body === null ? null : payloadFormatter(body), - }).then(async (response) => { - const r = response as HttpResponse; - r.data = null as unknown as T; - r.error = null as unknown as E; - - const data = !responseFormat - ? r - : await response[responseFormat]() - .then((data) => { - if (r.ok) { - r.data = data; - } else { - r.error = data; - } - return r; - }) - .catch((e) => { - r.error = e; - return r; - }); - - if (cancelToken) { - this.abortControllers.delete(cancelToken); - } - - if (!response.ok) throw data; - return data; - });*/ - }; -} - -/** - * @title OpenAtlas API - * @version 0.4.1 - * @license GPL-2.0 (https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) - * @baseUrl https://demo.openatlas.eu/api/{version} - * @externalDocs https://manual.openatlas.eu/ - * @contact OpenAtlas (https://openatlas.eu) - * - * An API that allows user to access data from an OpenAtlas instance. - */ -export class Api extends HttpClient { - entity = { - /** - * @description Retrieves all information about a single entity - * - * @tags Entity Endpoint - * @name GetEntity - * @summary Get entity by ID - * @request GET:/entity/{entityId} - */ - getEntity: ( - entityId: number, - query?: { - /** Download results */ - download?: boolean; - /** Select which keys should not be displayed. This can improve performance */ - show?: ( - | "when" - | "types" - | "relations" - | "names" - | "links" - | "geometry" - | "depictions" - | "geonames" - | "description" - | "none" - )[]; - /** - * Choose the format for the results. - * @example lp - */ - format?: "lp" | "geojson" | "geojson-v2" | "pretty-xml" | "n3" | "turtle" | "nt" | "xml"; - /** Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses. */ - export?: "csv" | "csvNetwork"; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/entity/${entityId}`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - query = { - /** - * @description Retrieves a list with entity ID, CIDOC CRM code, system class, or menu item. Combine up to four of the Entities Endpoints in a single query. Each request has to be a new parameter. - * - * @tags Entities Endpoint, Entity Query Endpoint - * @name GetQuery - * @summary Combine several or all entities endpoints in one query - * @request GET:/query/ - */ - getQuery: ( - query?: { - /** Entity ids which will be requested */ - entities?: number[]; - /** - * View classes to be requested - * @example actor - */ - view_classes?: ( - | "all" - | "actor" - | "artifact" - | "event" - | "place" - | "reference" - | "source" - | "type" - | "file" - | "source_translation" - | "reference_system" - )[]; - /** System classes to be requested */ - system_classes?: ( - | "all" - | "acquisition" - | "activity" - | "administrative_unit" - | "appellation" - | "artifact" - | "bibliography" - | "edition" - | "event" - | "external_reference" - | "feature" - | "file" - | "group" - | "human_remains" - | "move" - | "object_location" - | "person" - | "place" - | "production" - | "reference_system" - | "source" - | "source_translation" - | "stratigraphic_unit" - | "type" - | "type_anthropology" - )[]; - /** - * CIDOC classes to be requested - * @example E18 - */ - cidoc_classes?: ( - | "E6" - | "E7" - | "E8" - | "E9" - | "E12" - | "E18" - | "E20" - | "E21" - | "E22" - | "E31" - | "E32" - | "E33" - | "E41" - | "E53" - | "E54" - | "E55" - | "E74" - )[]; - /** Download results */ - download?: boolean; - /** Just show count of how many entities would the result give back */ - count?: boolean; - /** Select which keys should not be displayed. This can improve performance */ - show?: ( - | "when" - | "types" - | "relations" - | "names" - | "links" - | "geometry" - | "depictions" - | "geonames" - | "description" - | "none" - )[]; - /** - * Choose the format for the results. - * @example lp - */ - format?: "lp" | "geojson" | "geojson-v2" | "pretty-xml" | "n3" | "turtle" | "nt" | "xml"; - /** Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses. */ - export?: "csv" | "csvNetwork"; - /** - * Choose one column to sort the results by. Default value is name. - * @example name - */ - column?: - | "id" - | "name" - | "cidoc_class" - | "system_class" - | "begin_from" - | "begin_to" - | "end_from" - | "end_to"; - /** - * Sorting result ascending or descending of the given column. Default value is asc. - * @example asc - */ - sort?: "asc" | "desc"; - /** Search query for specific results. */ - search?: string[]; - /** Begin results at the given entity id. */ - first?: number; - /** Begin results after the given entity id. */ - last?: number; - /** Jump to page number. */ - page?: number; - /** Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed. */ - limit?: number; - /** Show only entities with the given type id. */ - type_id?: number[]; - /** Displays only connections connected by the selected CIDOC CRM code. */ - relation_type?: string[]; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/query/`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - systemClass = { - /** - * @description Retrieves a list of entities, based on their OpenAtlas class name. - * - * @tags Entities Endpoint - * @name GetBySystemClass - * @request GET:/system_class/{system_class} - */ - getBySystemClass: ( - systemClass: - | "all" - | "acquisition" - | "activity" - | "administrative_unit" - | "appellation" - | "artifact" - | "bibliography" - | "edition" - | "event" - | "external_reference" - | "feature" - | "file" - | "group" - | "human_remains" - | "move" - | "object_location" - | "person" - | "place" - | "production" - | "reference_system" - | "source" - | "source_translation" - | "stratigraphic_unit" - | "type" - | "type_anthropology", - query?: { - /** Download results */ - download?: boolean; - /** Just show count of how many entities would the result give back */ - count?: boolean; - /** Select which keys should not be displayed. This can improve performance */ - show?: ( - | "when" - | "types" - | "relations" - | "names" - | "links" - | "geometry" - | "depictions" - | "geonames" - | "description" - | "none" - )[]; - /** - * Choose the format for the results. - * @example lp - */ - format?: "lp" | "geojson" | "geojson-v2" | "pretty-xml" | "n3" | "turtle" | "nt" | "xml"; - /** Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses. */ - export?: "csv" | "csvNetwork"; - /** - * Choose one column to sort the results by. Default value is name. - * @example name - */ - column?: - | "id" - | "name" - | "cidoc_class" - | "system_class" - | "begin_from" - | "begin_to" - | "end_from" - | "end_to"; - /** - * Sorting result ascending or descending of the given column. Default value is asc. - * @example asc - */ - sort?: "asc" | "desc"; - /** Search query for specific results. */ - search?: string[]; - /** Begin results at the given entity id. */ - first?: number; - /** Begin results after the given entity id. */ - last?: number; - /** Jump to page number. */ - page?: number; - /** Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed. */ - limit?: number; - /** Show only entities with the given type id. */ - type_id?: number[]; - /** Displays only connections connected by the selected CIDOC CRM code. */ - relation_type?: string[]; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/system_class/${systemClass}`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - viewClass = { - /** - * @description Retrieves a list of entities based on their OpenAtlas menu items. - * - * @tags Entities Endpoint - * @name GetByViewClass - * @request GET:/view_class/{view_class} - */ - getByViewClass: ( - viewClass: - | "all" - | "actor" - | "artifact" - | "event" - | "place" - | "reference" - | "source" - | "type" - | "file" - | "source_translation" - | "reference_system", - query?: { - /** Download results */ - download?: boolean; - /** Just show count of how many entities would the result give back */ - count?: boolean; - /** Select which keys should not be displayed. This can improve performance */ - show?: ( - | "when" - | "types" - | "relations" - | "names" - | "links" - | "geometry" - | "depictions" - | "geonames" - | "description" - | "none" - )[]; - /** - * Choose the format for the results. - * @example lp - */ - format?: "lp" | "geojson" | "geojson-v2" | "pretty-xml" | "n3" | "turtle" | "nt" | "xml"; - /** Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses. */ - export?: "csv" | "csvNetwork"; - /** - * Choose one column to sort the results by. Default value is name. - * @example name - */ - column?: - | "id" - | "name" - | "cidoc_class" - | "system_class" - | "begin_from" - | "begin_to" - | "end_from" - | "end_to"; - /** - * Sorting result ascending or descending of the given column. Default value is asc. - * @example asc - */ - sort?: "asc" | "desc"; - /** Search query for specific results. */ - search?: string[]; - /** Begin results at the given entity id. */ - first?: number; - /** Begin results after the given entity id. */ - last?: number; - /** Jump to page number. */ - page?: number; - /** Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed. */ - limit?: number; - /** Show only entities with the given type id. */ - type_id?: number[]; - /** Displays only connections connected by the selected CIDOC CRM code. */ - relation_type?: string[]; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/view_class/${viewClass}`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - cidocClass = { - /** - * @description Retrieve a list of entities, based on their CIDOC CRM class code. - * - * @tags Entities Endpoint - * @name GetByCidocClass - * @request GET:/cidoc_class/{cidoc_class} - */ - getByCidocClass: ( - cidocClass: - | "E6" - | "E7" - | "E8" - | "E9" - | "E12" - | "E18" - | "E20" - | "E21" - | "E22" - | "E31" - | "E32" - | "E33" - | "E41" - | "E53" - | "E54" - | "E55" - | "E74", - query?: { - /** Download results */ - download?: boolean; - /** Just show count of how many entities would the result give back */ - count?: boolean; - /** Select which keys should not be displayed. This can improve performance */ - show?: ( - | "when" - | "types" - | "relations" - | "names" - | "links" - | "geometry" - | "depictions" - | "geonames" - | "description" - | "none" - )[]; - /** - * Choose the format for the results. - * @example lp - */ - format?: "lp" | "geojson" | "geojson-v2" | "pretty-xml" | "n3" | "turtle" | "nt" | "xml"; - /** Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses. */ - export?: "csv" | "csvNetwork"; - /** - * Choose one column to sort the results by. Default value is name. - * @example name - */ - column?: - | "id" - | "name" - | "cidoc_class" - | "system_class" - | "begin_from" - | "begin_to" - | "end_from" - | "end_to"; - /** - * Sorting result ascending or descending of the given column. Default value is asc. - * @example asc - */ - sort?: "asc" | "desc"; - /** Search query for specific results. */ - search?: string[]; - /** Begin results at the given entity id. */ - first?: number; - /** Begin results after the given entity id. */ - last?: number; - /** Jump to page number. */ - page?: number; - /** Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed. */ - limit?: number; - /** Show only entities with the given type id. */ - type_id?: number[]; - /** Displays only connections connected by the selected CIDOC CRM code. */ - relation_type?: string[]; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/cidoc_class/${cidocClass}`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - latest = { - /** - * @description Retrieve the last entered entities. n represents the amount of entities retrieved (between 1 and 100). The pagination information is always null. - * - * @tags Entities Endpoint - * @name GetLatest - * @request GET:/latest/{limit} - */ - getLatest: ( - limit: number, - query?: { - /** Download results */ - download?: boolean; - /** Select which keys should not be displayed. This can improve performance */ - show?: ( - | "when" - | "types" - | "relations" - | "names" - | "links" - | "geometry" - | "depictions" - | "geonames" - | "description" - | "none" - )[]; - /** - * Choose the format for the results. - * @example lp - */ - format?: "lp" | "geojson" | "geojson-v2" | "pretty-xml" | "n3" | "turtle" | "nt" | "xml"; - /** Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses. */ - export?: "csv" | "csvNetwork"; - /** - * Choose one column to sort the results by. Default value is name. - * @example name - */ - column?: - | "id" - | "name" - | "cidoc_class" - | "system_class" - | "begin_from" - | "begin_to" - | "end_from" - | "end_to"; - /** - * Sorting result ascending or descending of the given column. Default value is asc. - * @example asc - */ - sort?: "asc" | "desc"; - /** Search query for specific results. */ - search?: string[]; - /** Show only entities with the given type id. */ - type_id?: number[]; - /** Displays only connections connected by the selected CIDOC CRM code. */ - relation_type?: string[]; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/latest/${limit}`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - typeEntities = { - /** - * @description Used to retrieve a list of entities, based on their OpenAtlas type ID. For an endpoint that lists all available types click confer Types Endpoints - * - * @tags Entities Endpoint - * @name GetTypeEntities - * @request GET:/type_entities/{entityId} - */ - getTypeEntities: ( - entityId: number, - query?: { - /** Download results */ - download?: boolean; - /** Just show count of how many entities would the result give back */ - count?: boolean; - /** Select which keys should not be displayed. This can improve performance */ - show?: ( - | "when" - | "types" - | "relations" - | "names" - | "links" - | "geometry" - | "depictions" - | "geonames" - | "description" - | "none" - )[]; - /** - * Choose the format for the results. - * @example lp - */ - format?: "lp" | "geojson" | "geojson-v2" | "pretty-xml" | "n3" | "turtle" | "nt" | "xml"; - /** Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses. */ - export?: "csv" | "csvNetwork"; - /** - * Choose one column to sort the results by. Default value is name. - * @example name - */ - column?: - | "id" - | "name" - | "cidoc_class" - | "system_class" - | "begin_from" - | "begin_to" - | "end_from" - | "end_to"; - /** - * Sorting result ascending or descending of the given column. Default value is asc. - * @example asc - */ - sort?: "asc" | "desc"; - /** Search query for specific results. */ - search?: string[]; - /** Begin results at the given entity id. */ - first?: number; - /** Begin results after the given entity id. */ - last?: number; - /** Jump to page number. */ - page?: number; - /** Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed. */ - limit?: number; - /** Show only entities with the given type id. */ - type_id?: number[]; - /** Displays only connections connected by the selected CIDOC CRM code. */ - relation_type?: string[]; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/type_entities/${entityId}`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - typeEntitiesAll = { - /** - * @description Used to retrieve a list of entities, based on their OpenAtlas type ID including all connected subtypes.. For an endpoint that lists all available types click confer Type Endpoints - * - * @tags Entities Endpoint - * @name GetTypeEntitiesAll - * @request GET:/type_entities_all/{entityId} - */ - getTypeEntitiesAll: ( - entityId: number, - query?: { - /** Download results */ - download?: boolean; - /** Just show count of how many entities would the result give back */ - count?: boolean; - /** Select which keys should not be displayed. This can improve performance */ - show?: ( - | "when" - | "types" - | "relations" - | "names" - | "links" - | "geometry" - | "depictions" - | "geonames" - | "description" - | "none" - )[]; - /** - * Choose the format for the results. - * @example lp - */ - format?: "lp" | "geojson" | "geojson-v2" | "pretty-xml" | "n3" | "turtle" | "nt" | "xml"; - /** Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses. */ - export?: "csv" | "csvNetwork"; - /** - * Choose one column to sort the results by. Default value is name. - * @example name - */ - column?: - | "id" - | "name" - | "cidoc_class" - | "system_class" - | "begin_from" - | "begin_to" - | "end_from" - | "end_to"; - /** - * Sorting result ascending or descending of the given column. Default value is asc. - * @example asc - */ - sort?: "asc" | "desc"; - /** Search query for specific results. */ - search?: string[]; - /** Begin results at the given entity id. */ - first?: number; - /** Begin results after the given entity id. */ - last?: number; - /** Jump to page number. */ - page?: number; - /** Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed. */ - limit?: number; - /** Show only entities with the given type id. */ - type_id?: number[]; - /** Displays only connections connected by the selected CIDOC CRM code. */ - relation_type?: string[]; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/type_entities_all/${entityId}`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - entitiesLinkedToEntity = { - /** - * @description Retrieves a list of entities linked to the entity with the stated ID. - * - * @tags Entities Endpoint - * @name GetEntitiesLinkedToEntity - * @request GET:/entities_linked_to_entity/{entityId} - */ - getEntitiesLinkedToEntity: ( - entityId: number, - query?: { - /** Download results */ - download?: boolean; - /** Just show count of how many entities would the result give back */ - count?: boolean; - /** Select which keys should not be displayed. This can improve performance */ - show?: ( - | "when" - | "types" - | "relations" - | "names" - | "links" - | "geometry" - | "depictions" - | "geonames" - | "description" - | "none" - )[]; - /** - * Choose the format for the results. - * @example lp - */ - format?: "lp" | "geojson" | "geojson-v2" | "pretty-xml" | "n3" | "turtle" | "nt" | "xml"; - /** Export the entities into either a simple CSV representation or a zip file of CSV's especially designed for network analyses. */ - export?: "csv" | "csvNetwork"; - /** - * Choose one column to sort the results by. Default value is name. - * @example name - */ - column?: - | "id" - | "name" - | "cidoc_class" - | "system_class" - | "begin_from" - | "begin_to" - | "end_from" - | "end_to"; - /** - * Sorting result ascending or descending of the given column. Default value is asc. - * @example asc - */ - sort?: "asc" | "desc"; - /** Search query for specific results. */ - search?: string[]; - /** Begin results at the given entity id. */ - first?: number; - /** Begin results after the given entity id. */ - last?: number; - /** Jump to page number. */ - page?: number; - /** Limits the entities displayed. Influences the performance of the request. Default value is 20. 0 means all available entities will be displayed. */ - limit?: number; - /** Show only entities with the given type id. */ - type_id?: number[]; - /** Displays only connections connected by the selected CIDOC CRM code. */ - relation_type?: string[]; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/entities_linked_to_entity/${entityId}`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - typeOverview = { - /** - * @description Retrieves a list of all OpenAtlas types sorted by custom, places, standard and value - * - * @tags Type Endpoints - * @name GetTypeOverview - * @request GET:/type_overview/ - */ - getTypeOverview: ( - query?: { - /** Download results */ - download?: boolean; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/type_overview/`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - typeTree = { - /** - * @description Retrieves a list of all OpenAtlas types, including their information sorted by their IDs - * - * @tags Type Endpoints - * @name GetTypeTree - * @request GET:/type_tree/ - */ - getTypeTree: ( - query?: { - /** Download results */ - download?: boolean; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/type_tree/`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - typeByViewClass = { - /** - * @description Retrieves a list of all system types - * - * @tags Type Endpoints - * @name GetTypeByViewClass - * @request GET:/type_by_view_class/ - */ - getTypeByViewClass: ( - query?: { - /** Download results */ - download?: boolean; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/type_by_view_class/`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - classes = { - /** - * @description Retrieves a list of all available classes, their CIDOC CRM mapping, their view, which icon can be used, if alias and references systems are allowed and which standard type it has. - * - * @tags Administrative Endpoints - * @name ClassMapping - * @request GET:/classes/ - */ - classMapping: (params: RequestParams = {}) => - this.request({ - path: `/classes/`, - method: "GET", - format: "json", - ...params, - }), - }; - content = { - /** - * @description Retrieves a detailed list of information on available frontend content in an OpenAtlas instance - intro, legal notice, contact, and size of processed image - * - * @tags Administrative Endpoints - * @name GetContent - * @request GET:/content/ - */ - getContent: ( - query?: { - /** - * Choose language - * @example de - */ - lang?: "en" | "de"; - /** Download results */ - download?: boolean; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/content/`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - systemClassCount = { - /** - * @description Retrieves a detailed list of the numbers of entries connected to a system class - * - * @tags Administrative Endpoints - * @name SystemClassCount - * @request GET:/system_class_count/ - */ - systemClassCount: (params: RequestParams = {}) => - this.request({ - path: `/system_class_count/`, - method: "GET", - format: "json", - ...params, - }), - }; - subunits = { - /** - * @description Displays all subunits of a place in a special format as used by the THANADOS project. Can only be used for “places”. As format only XML can be chosen - * - * @tags Special Endpoints - * @name GetSubunits - * @request GET:/subunits/ - */ - getSubunits: ( - query?: { - /** - * Choose the format for the results. - * @example lp - */ - format?: "lp" | "geojson" | "geojson-v2" | "pretty-xml" | "n3" | "turtle" | "nt" | "xml"; - /** Download results */ - download?: boolean; - /** Just show count of how many entities would the result give back */ - count?: boolean; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/subunits/`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - geometricEntities = { - /** - * @description Retrieve a GeoJSON of all chosen geometries in an OpenAtlas instance - * - * @tags Special Endpoints - * @name GetGeometricEntities - * @request GET:/geometric_entities/ - */ - getGeometricEntities: ( - query?: { - /** Filters which geometries will be received. Default is gisAll */ - geometry?: ( - | "gisAll" - | "gisPointAll" - | "gisPointSupers" - | "gisPointSubs" - | "gisPointSibling" - | "gisLineAll" - | "gisPolygonAll" - )[]; - /** Download results */ - download?: boolean; - /** Just show count of how many entities would the result give back */ - count?: boolean; - }, - params: RequestParams = {}, - ) => - this.request({ - path: `/geometric_entities/`, - method: "GET", - query: query, - format: "json", - ...params, - }), - }; - exportDatabase = { - /** - * @description Downloads all information in an OpenAtlas instance as CSV, XML, or JSON. - * - * @tags Special Endpoints - * @name ExportDatabase - * @request GET:/export_database/{format} - */ - exportDatabase: (format: "json" | "csv" | "xml", params: RequestParams = {}) => - this.request({ - path: `/export_database/${format}`, - method: "GET", - format: "json", - ...params, - }), - }; - display = { - /** - * @description Retrieves the respective image if it has a licence. - * - * @tags Image Endpoints - * @name DisplayImage - * @request GET:/display/{filename} - */ - displayImage: (filename: string, params: RequestParams = {}) => - this.request({ - path: `/display/${filename}`, - method: "GET", - format: "blob", - ...params, - }), - }; -} diff --git a/composables/oad-utils.ts b/composables/oad-utils.ts deleted file mode 100644 index 81c365fe..00000000 --- a/composables/oad-utils.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { discoveryConfig } from "@/config/discoveryConfig"; - -export const useSafeRead = function (obj: Object, index: string): string | undefined { - const indizes = index.split(/[.[\]"']/).filter((x) => x !== ""); - return indizes.reduce((o, key) => o[key], obj); -}; - -export const useFormatDateTime = (date: string | undefined) => { - if (date == null) return null; - return date.split("T")[0]; -}; - -export const selectedLocaleLocalStorageKey = "oad-selected-locale"; - -export function getLogo(): string { - const logo = discoveryConfig.logo ?? "logo.svg"; - return logo; -} - -export function getHeaderLogo(): string { - return discoveryConfig.headerLogo ?? discoveryConfig.logo ?? "/header_logo.svg"; -} - -export function getFavicon(): { rel: string; type: string; href: string; sizes: string } { - const favicon = { - rel: "icon", - type: "image/svg+xml", - href: "/favicon.svg", - sizes: "any", - }; - const faviconExt = discoveryConfig.favicon?.split(".").pop(); - - // Can Handle SVGs, .ico - if (faviconExt === "ico") { - favicon.type = "image/x-icon"; - favicon.href = "/" + discoveryConfig.favicon; - } - - return favicon; -} diff --git a/composables/use-api-client.ts b/composables/use-api-client.ts index bddf4136..1cb25449 100644 --- a/composables/use-api-client.ts +++ b/composables/use-api-client.ts @@ -1,14 +1,11 @@ -import { Api } from "@/composables/api"; +import createApiClient from "@stefanprobst/openapi-client"; -let client: Api | null = null; +import type { paths } from "@/lib/api-client/api"; export function useApiClient() { const env = useRuntimeConfig(); - const baseUrl = env.public.APIBase; - - if (!client) { - client = new Api({ baseUrl }); - } + const baseUrl = env.public.NUXT_PUBLIC_API_BASE_URL; + const client = createApiClient({ baseUrl }); return client; } diff --git a/composables/use-create-entity.ts b/composables/use-create-entity.ts new file mode 100644 index 00000000..320b3558 --- /dev/null +++ b/composables/use-create-entity.ts @@ -0,0 +1,29 @@ +import { useIdPrefix } from "@/composables/use-id-prefix"; +import type { LinkedPlace, LinkedPlaceFeature } from "@/types/api"; + +export interface EntityFeature extends LinkedPlaceFeature { + properties: LinkedPlaceFeature["properties"] & { _id: string }; +} + +export interface Entity extends LinkedPlace { + features: Array; +} + +export function useCreateEntity() { + const { getUnprefixedId } = useIdPrefix(); + + return function createtEntity(lp: LinkedPlace): Entity { + /** + * `maplibre-gl` will only provide geojson properties in event callbacks, + * so we add the (unprefixed) entity id to each feature to be able to + * uniquely identify each entity, and to create links to entity details pages. + */ + lp.features.forEach((feature) => { + const id = getUnprefixedId(feature["@id"]); + const _feature = feature as EntityFeature; + _feature.properties._id = id; + }); + + return lp as Entity; + }; +} diff --git a/composables/use-error-message.ts b/composables/use-error-message.ts new file mode 100644 index 00000000..9fd46d9a --- /dev/null +++ b/composables/use-error-message.ts @@ -0,0 +1,28 @@ +interface ErrorMessages { + notFound: string; + unknown: string; +} + +export function useErrorMessage(error: Ref, messages: ErrorMessages) { + watch( + error, + (error) => { + if (error != null) { + if ("statusCode" in error && error.statusCode === 404) { + throw createError({ + fatal: true, + statusCode: 404, + statusMessage: messages.notFound, + }); + } else { + throw createError({ + fatal: true, + statusCode: 500, + statusMessage: messages.unknown, + }); + } + } + }, + { immediate: true }, + ); +} diff --git a/composables/use-geo-map.ts b/composables/use-geo-map.ts new file mode 100644 index 00000000..896c394a --- /dev/null +++ b/composables/use-geo-map.ts @@ -0,0 +1,7 @@ +import { type GeoMapContext, geoMapContextKey } from "@/components/geo-map.context"; + +export function useGeoMap() { + const context = inject(geoMapContextKey); + + return context as GeoMapContext; +} diff --git a/composables/use-get-entity.ts b/composables/use-get-entity.ts new file mode 100644 index 00000000..6cd46c9e --- /dev/null +++ b/composables/use-get-entity.ts @@ -0,0 +1,34 @@ +import { useQuery } from "@tanstack/vue-query"; + +import { useCreateEntity } from "@/composables/use-create-entity"; +import type { operations } from "@/lib/api-client/api"; +import type { LinkedPlace } from "@/types/api"; + +export interface GetEntityParams + extends NonNullable {} + +export type GetEntityResponse = LinkedPlace; + +export function useGetEntity(params: MaybeRef) { + const api = useApiClient(); + const createEntity = useCreateEntity(); + + return useQuery({ + queryKey: ["entity", params] as const, + async queryFn({ queryKey, signal }) { + const [, params] = queryKey; + const response = (await api.GET("/entity/{entityId}", { + params: { + path: { + ...params, + }, + }, + signal, + })) as GetEntityResponse; + + const entity = createEntity(response); + + return entity; + }, + }); +} diff --git a/composables/use-get-search-results.ts b/composables/use-get-search-results.ts new file mode 100644 index 00000000..0759a86d --- /dev/null +++ b/composables/use-get-search-results.ts @@ -0,0 +1,131 @@ +import { useQuery } from "@tanstack/vue-query"; +import { z } from "zod"; + +import { type Entity, useCreateEntity } from "@/composables/use-create-entity"; +import type { components, operations } from "@/lib/api-client/api"; +import type { LinkedPlace } from "@/types/api"; + +export const categories = [ + "beginFrom", + "beginTo", + "endFrom", + "endTo", + "entityAliases", + "entityCidocClass", + "entityDescription", + "entityID", + "entityName", + "entitySystemClass", + "relationToID", + "typeID", + "typeIDWithSubs", + "typeName", + "valueTypeID", +] as const; + +export type Category = (typeof categories)[number]; + +export const operators = [ + "equal", + "greaterThan", + "greaterThanEqual", + "lesserThan", + "lesserThanEqual", + "like", + "notEqual", +] as const; + +export type Operator = (typeof operators)[number]; + +export const logicalOperators = ["and", "or"] as const; + +export type LogicalOperator = (typeof logicalOperators)[number]; + +export const searchFilter = z + .record( + z.enum(categories), + z.object({ + operator: z.enum(operators), + values: z.array(z.union([z.string(), z.number()])), + logicalOperator: z.enum(logicalOperators).default("and"), + }), + ) + .refine( + (value) => { + return Object.keys(value).length > 0; + }, + { message: "At least one search filter category required" }, + ); + +export const searchFilterString = z + .string() + .transform((value, context) => { + try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return JSON.parse(value); + } catch { + context.addIssue({ + code: z.ZodIssueCode.custom, + message: "Invalid JSON passed as search filter", + }); + return z.NEVER; + } + }) + .pipe(searchFilter); + +export type SearchFilter = z.infer; + +export interface GetSearchResultsParams + extends Omit, "format" | "search"> { + /** + * We only support the default "Linked Places" format. The various geojson formats supported by + * the backend only exist for legacy usecases. Also, consistently using one format should + * provide some caching benefits. + * + * Note that the "Linked Places" format is valid GeoJSON. + * + * @see https://github.com/LinkedPasts/linked-places-format + */ + format?: "lp"; + search?: Array; +} + +export interface GetSearchResultsResponse { + pagination: components["schemas"]["PaginationModel"]; + results: Array; +} + +export function useGetSearchResults(params: MaybeRef) { + const api = useApiClient(); + const createEntity = useCreateEntity(); + + return useQuery({ + queryKey: ["search-results", params] as const, + async queryFn({ queryKey, signal }) { + const [, params] = queryKey; + const search = params.search?.map((value) => { + return JSON.stringify(value); + }); + + const response = (await api.GET("/query/", { + params: { + query: { + ...params, + // @ts-expect-error `Array` is actually correct. + search, + }, + }, + signal, + })) as GetSearchResultsResponse; + + const results: Array = []; + + response.results.forEach((result) => { + const entity = createEntity(result); + results.push(entity); + }); + + return { ...response, results }; + }, + }); +} diff --git a/composables/use-id-prefix.ts b/composables/use-id-prefix.ts new file mode 100644 index 00000000..9f580016 --- /dev/null +++ b/composables/use-id-prefix.ts @@ -0,0 +1,22 @@ +import { createUrl } from "@acdh-oeaw/lib"; + +export function useIdPrefix() { + const env = useRuntimeConfig(); + + const prefix = String( + createUrl({ baseUrl: env.public.NUXT_PUBLIC_API_BASE_URL, pathname: "/api/entity/" }), + ); + + function getUnprefixedId(id: string) { + /** + * FIXME: + * Currently, some identifiers in the api response are prefixed with "/entity", but others + * with "/api/entity", so this must be fixed backend-side first. + */ + // return id.slice(prefix.length); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return id.split("/").at(-1)!; + } + + return { prefix, getUnprefixedId }; +} diff --git a/composables/use-locale.ts b/composables/use-locale.ts new file mode 100644 index 00000000..0c0817fd --- /dev/null +++ b/composables/use-locale.ts @@ -0,0 +1,7 @@ +import type { Locale, Schema } from "@/config/i18n.config"; + +export function useLocale() { + const { locale } = useI18n(); + + return locale; +} diff --git a/composables/use-translations.ts b/composables/use-translations.ts new file mode 100644 index 00000000..fc92bf34 --- /dev/null +++ b/composables/use-translations.ts @@ -0,0 +1,7 @@ +import type { Locale, Schema } from "@/config/i18n.config"; + +export function useTranslations() { + const { t } = useI18n(); + + return t; +} diff --git a/config/discoveryConfig.json b/config/discoveryConfig.json deleted file mode 100644 index 845bd32a..00000000 --- a/config/discoveryConfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "colors": { - "primaryColor": "#6b5bcf" - }, - "defaultLocale": "en", - "logo": "/logo.svg", - "acdhImprint": true, - "defaultFilters": [] -} \ No newline at end of file diff --git a/config/discoveryConfig.ts b/config/discoveryConfig.ts deleted file mode 100644 index 67b46e7f..00000000 --- a/config/discoveryConfig.ts +++ /dev/null @@ -1,79 +0,0 @@ -/** - * Configuration options for the Discovery website. - */ -import { z } from "zod"; - -import userConfig from "./discoveryConfig.json"; - -const locales = ["en", "de"] as const; - -const schema = z.object({ - /** - * The title of the website. - * Specifies the title that will be used for the Discovery website. - * @default OpenAtlas Discovery - */ - title: z.string().default("OpenAtlas Discovery"), - - /** - * The description of the website. - * Specifies the description that will be used for the Discovery website. - */ - description: z.string().optional(), - - /** - * The default locale for the website. The locales have to be provided and present to be applied. - */ - defaultLocale: z.enum(locales).default("en"), - - /** - * A list of filters represented as numbers. - * Acts as a whitelist to allow only entities belonging to a certain type given by ID. - * These filters are applied in the Overview and Search sections of the website but not in the detailed view. - */ - defaultFilters: z.array(z.number()).optional(), // should be required - - colors: z.object({ - /** - * Hex color code for the primary color of the website. - */ - primaryColor: z.string().default("#b8cf5b"), - - /** - * Hex color for the secondary color of the website - */ - secondaryColor: z.string().optional(), - }), - - /** - * Logo - * Specifies the logo that will be used for the Discovery website. - * @default logo.svg - */ - logo: z.string().default("logo.svg"), - - /** - * Header Logo - * Specifies the logo that will be used for the header of the Discovery website. Will default to logo if not provided. - * @default logo - * @see logo - */ - headerLogo: z.string().optional(), // should be required - - /** - * The favicon of the website. - * Specifies the favicon that will be used for the Discovery website. - * @supportedTypes image/svg+xml, image/x-icon - */ - favicon: z.string().optional(), // should be required - - acdhImprint: z.boolean().default(false), -}); - -const result = schema.safeParse(userConfig); -if (!result.success) { - console.error("invalid config!", result.error.flatten().fieldErrors); - throw new Error("invalid config!"); -} - -export const discoveryConfig = result.data; diff --git a/config/geo-map.config.ts b/config/geo-map.config.ts new file mode 100644 index 00000000..7878223b --- /dev/null +++ b/config/geo-map.config.ts @@ -0,0 +1,6 @@ +export const initialViewState = { + longitude: 16.371870746468748 /** Vienna */, + latitude: 48.208191950123414 /** Vienna */, + pitch: 45 /** degrees */, + zoom: 8, +}; diff --git a/config/i18n.config.ts b/config/i18n.config.ts index b5217eee..f95ecc16 100644 --- a/config/i18n.config.ts +++ b/config/i18n.config.ts @@ -1,2 +1,34 @@ -export const locales = ["en", "de"]; +import type { LocaleObject } from "vue-i18n-routing"; + +import type de from "@/messages/de/common.json"; +import type projectDe from "@/messages/de/project.json"; +import type en from "@/messages/en/common.json"; +import type projectEn from "@/messages/en/project.json"; + +import { project } from "../config/project.config"; + +export const locales = ["de", "en"] as const; + export type Locale = (typeof locales)[number]; + +export const defaultLocale: Locale = project.defaultLocale; + +export const localesMap = { + de: { code: "de", iso: "de", files: ["de/common.json", "de/project.json"] }, + en: { code: "en", iso: "en", files: ["en/common.json", "en/project.json"] }, +} satisfies Record; + +export type Messages = typeof en & typeof projectEn; + +export interface Schema { + message: Messages; +} + +export function isValidLocale(value: string): value is Locale { + return value in locales; +} + +export interface Translations extends Record { + de: typeof de & typeof projectDe; + en: typeof en & typeof projectEn; +} diff --git a/config/imprint.config.ts b/config/imprint.config.ts new file mode 100644 index 00000000..878e0912 --- /dev/null +++ b/config/imprint.config.ts @@ -0,0 +1,11 @@ +import { createUrl, createUrlSearchParams } from "@acdh-oeaw/lib"; + +import type { Locale } from "@/config/i18n.config"; + +export function createImprintUrl(locale: Locale, redmineId: string): URL { + return createUrl({ + baseUrl: "https://imprint.acdh.oeaw.ac.at", + pathname: `/${redmineId}`, + searchParams: createUrlSearchParams({ locale }), + }); +} diff --git a/config/project.config.ts b/config/project.config.ts new file mode 100644 index 00000000..8286c7cb --- /dev/null +++ b/config/project.config.ts @@ -0,0 +1,49 @@ +import { log } from "@acdh-oeaw/lib"; +import { ColorSpace, getLuminance, HSL, OKLCH, parse, sRGB, to as convert } from "colorjs.io/fn"; +import { z } from "zod"; + +import projectConfig from "../project.config.json" assert { type: "json" }; + +ColorSpace.register(sRGB); +ColorSpace.register(HSL); +ColorSpace.register(OKLCH); + +const schema = z.object({ + colors: z + .object({ + brand: z.string(), + geojson: z.string(), + }) + .transform((values) => { + const color = parse(values.brand); + const luminance = getLuminance(convert(color, OKLCH)); + const [h, s, l] = convert(color, HSL).coords; + + return { + ...values, + brand: `hsl(${h}deg ${s}% ${l}%)`, + brandContrast: luminance > 0.5 ? "hsl(0deg 0% 0%)" : "hsl(0deg 0% 100%)", + }; + }), + defaultLocale: z.enum(["de", "en"]), + logos: z.object({ + light: z.string(), + dark: z.string(), + withTextLight: z.string(), + withTextDark: z.string(), + }), + imprint: z.enum(["acdh-ch", "custom", "none"]), + twitter: z.string().optional(), +}); + +const result = schema.safeParse(projectConfig); + +if (!result.success) { + const message = "Invalid project configuration."; + log.error(message, result.error.flatten().fieldErrors); + const error = new Error(message); + delete error.stack; + throw error; +} + +export const project = result.data; diff --git a/content/de/about.md b/content/de/about.md deleted file mode 100644 index 80e43d82..00000000 --- a/content/de/about.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: About -navigation: - title: About ---- -# About - -Dieses Projekt ist eine Demoseite der Präsentationsseite von [OpenAtlas](https://openatlas.eu/). - -[Zurück zur Startseite](/) \ No newline at end of file diff --git a/content/de/index.md b/content/de/index.md deleted file mode 100644 index 877ba3a9..00000000 --- a/content/de/index.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Home -navigation: - title: OpenAtlas Discovery ---- - -![logo](/OpenAtlasDiscovery_logo.jpg) - -# OpenAtlas Discovery - -Das ist ein Prototyp für [OpenAtlas](https://openatlas.eu/){:target="\_blank"} Projekte. Demo Daten -freundlicherweise zur Verfügung gestellt von: _The Ethnonym of the Vlachs in the Written Sources and -the Toponymy in the Historical Region of Macedonia_ (11th-16th Cent.) -[Weitere Informationen](http://dpp.oeaw.ac.at/index.php?seite=CaseStudies&submenu=skopje){:target="\_blank"}, diff --git a/content/en/about.md b/content/en/about.md deleted file mode 100644 index 2a861319..00000000 --- a/content/en/about.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: About -navigation: - title: About ---- - -# About - -[Back home](/) diff --git a/content/en/index.md b/content/en/index.md deleted file mode 100644 index cdcbe21e..00000000 --- a/content/en/index.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Home -navigation: - title: OpenAtlas Disovery ---- - -![logo](/logo.svg) - -# OpenAtlas Discovery - -This is a prototype for [OpenAtlas](https://openatlas.eu/){:target="\_blank"} projects. Demo data -kindly provided by: _The Ethnonym of the Vlachs in the Written Sources and the Toponymy in the -Historical Region of Macedonia_ (11th-16th Cent.) -[More information](http://dpp.oeaw.ac.at/index.php?seite=CaseStudies&submenu=skopje){:target="\_blank"}, diff --git a/content/pages/de/about.md b/content/pages/de/about.md new file mode 100644 index 00000000..8744f266 --- /dev/null +++ b/content/pages/de/about.md @@ -0,0 +1,27 @@ +--- +title: Über das Projekt +navigation: + title: Über das Projekt +--- +Elit anim cillum labore tempor Lorem irure voluptate qui nisi. Nostrud ut incididunt sint laborum ad +est enim do qui. Occaecat labore ea adipisicing est esse enim amet irure non. Non ex et magna elit +consequat cupidatat. Officia velit aute voluptate velit minim ullamco. Enim laboris irure sunt +aliquip reprehenderit consequat cillum labore eiusmod ad cupidatat aliqua consectetur magna. + +Eiusmod excepteur amet id aliqua nostrud fugiat excepteur laboris elit nulla sunt adipisicing. Magna +officia eu voluptate ad amet enim laboris laborum. Ut occaecat exercitation cillum ullamco veniam +consequat ea Lorem veniam. Tempor officia pariatur est tempor aliquip exercitation reprehenderit +aliquip cillum in enim pariatur amet. Duis anim cupidatat nulla tempor commodo magna pariatur +laboris irure. + +Velit irure eu voluptate ipsum nulla incididunt. Consectetur veniam irure minim ea sint proident +minim nisi commodo culpa dolore ex. Cillum nostrud voluptate commodo tempor ut consectetur. Dolor +cillum esse nostrud eu veniam pariatur eiusmod eiusmod enim aliquip Lorem aliqua nulla exercitation. +Exercitation non fugiat ea dolore nulla. Sunt esse eiusmod qui ea. Ipsum dolore non cupidatat velit +commodo et pariatur. + +Ea reprehenderit Lorem cillum exercitation id est officia culpa irure ipsum fugiat tempor ullamco. +Elit tempor labore occaecat culpa do tempor tempor. Eiusmod anim esse tempor deserunt deserunt aute +aliquip eu cupidatat ad qui incididunt mollit est. Nisi ad nisi pariatur voluptate irure minim culpa +voluptate aliqua et. Velit magna consequat incididunt dolor nulla consectetur sunt pariatur enim +laborum culpa deserunt. diff --git a/content/pages/en/about.md b/content/pages/en/about.md new file mode 100644 index 00000000..de0de310 --- /dev/null +++ b/content/pages/en/about.md @@ -0,0 +1,27 @@ +--- +title: About the project +navigation: + title: About the project +--- +Elit anim cillum labore tempor Lorem irure voluptate qui nisi. Nostrud ut incididunt sint laborum ad +est enim do qui. Occaecat labore ea adipisicing est esse enim amet irure non. Non ex et magna elit +consequat cupidatat. Officia velit aute voluptate velit minim ullamco. Enim laboris irure sunt +aliquip reprehenderit consequat cillum labore eiusmod ad cupidatat aliqua consectetur magna. + +Eiusmod excepteur amet id aliqua nostrud fugiat excepteur laboris elit nulla sunt adipisicing. Magna +officia eu voluptate ad amet enim laboris laborum. Ut occaecat exercitation cillum ullamco veniam +consequat ea Lorem veniam. Tempor officia pariatur est tempor aliquip exercitation reprehenderit +aliquip cillum in enim pariatur amet. Duis anim cupidatat nulla tempor commodo magna pariatur +laboris irure. + +Velit irure eu voluptate ipsum nulla incididunt. Consectetur veniam irure minim ea sint proident +minim nisi commodo culpa dolore ex. Cillum nostrud voluptate commodo tempor ut consectetur. Dolor +cillum esse nostrud eu veniam pariatur eiusmod eiusmod enim aliquip Lorem aliqua nulla exercitation. +Exercitation non fugiat ea dolore nulla. Sunt esse eiusmod qui ea. Ipsum dolore non cupidatat velit +commodo et pariatur. + +Ea reprehenderit Lorem cillum exercitation id est officia culpa irure ipsum fugiat tempor ullamco. +Elit tempor labore occaecat culpa do tempor tempor. Eiusmod anim esse tempor deserunt deserunt aute +aliquip eu cupidatat ad qui incididunt mollit est. Nisi ad nisi pariatur voluptate irure minim culpa +voluptate aliqua et. Velit magna consequat incididunt dolor nulla consectetur sunt pariatur enim +laborum culpa deserunt. diff --git a/content/system-pages/de/index.md b/content/system-pages/de/index.md new file mode 100644 index 00000000..ac458ef4 --- /dev/null +++ b/content/system-pages/de/index.md @@ -0,0 +1,20 @@ +--- +title: OpenAtlas Discovery +navigation: false +image: + light: /assets/images/hero-light.svg + dark: /assets/images/hero-dark.svg +leadIn: >- + Das ist ein Prototyp für [OpenAtlas](https://openatlas.eu) Projekte. Demo Daten freundlicherweise + + zur Verfügung gestellt von: [*The Ethnonym of the Vlachs in the Written Sources and the Toponymy + in + + the Historical Region of Macedonia* (11th-16th + Cent.)](http://dpp.oeaw.ac.at/index.php?seite=CaseStudies&submenu=skopje) +links: + - label: Daten anzeigen + href: /data + - label: Karte anzeigen + href: /map +--- diff --git a/content/system-pages/de/team.md b/content/system-pages/de/team.md new file mode 100644 index 00000000..721dc8c5 --- /dev/null +++ b/content/system-pages/de/team.md @@ -0,0 +1,9 @@ +--- +title: Team +navigation: + title: Team +--- +Fugiat duis anim mollit sit nulla do dolore dolor eu veniam cupidatat anim. Cillum enim non +reprehenderit proident eu tempor est adipisicing cupidatat amet. Ex esse sunt minim qui cupidatat +adipisicing. Eiusmod aliquip magna dolore dolore ipsum reprehenderit sit cupidatat non sint eu +dolor. diff --git a/content/system-pages/en/index.md b/content/system-pages/en/index.md new file mode 100644 index 00000000..1ba745d2 --- /dev/null +++ b/content/system-pages/en/index.md @@ -0,0 +1,20 @@ +--- +title: OpenAtlas Discovery +navigation: false +image: + light: /assets/images/hero-light.svg + dark: /assets/images/hero-dark.svg +leadIn: >- + This is a prototype for [OpenAtlas](https://openatlas.eu) projects. Demo data + kindly provided by: + + [*The Ethnonym of the Vlachs in the Written Sources and the Toponymy in the Historical Region of + + Macedonia* (11th-16th Cent.)](http://dpp.oeaw.ac.at/index.php?seite=CaseStudies&submenu=skopje) +links: + - label: View data + href: /data + - label: View map + href: /map +--- + diff --git a/content/system-pages/en/team.md b/content/system-pages/en/team.md new file mode 100644 index 00000000..721dc8c5 --- /dev/null +++ b/content/system-pages/en/team.md @@ -0,0 +1,9 @@ +--- +title: Team +navigation: + title: Team +--- +Fugiat duis anim mollit sit nulla do dolore dolor eu veniam cupidatat anim. Cillum enim non +reprehenderit proident eu tempor est adipisicing cupidatat amet. Ex esse sunt minim qui cupidatat +adipisicing. Eiusmod aliquip magna dolore dolore ipsum reprehenderit sit cupidatat non sint eu +dolor. diff --git a/content/team/de/eichert-stefan.md b/content/team/de/eichert-stefan.md new file mode 100644 index 00000000..f5f43a74 --- /dev/null +++ b/content/team/de/eichert-stefan.md @@ -0,0 +1,6 @@ +--- +firstName: Stefan +lastName: Eichert +image: /assets/images/team/stefan.jpg +--- +Stefan ist der Initiator und Mastermind hinter dem OpenAtlas-Projekt. Seine Forschungsschwerpunkte sind frühmittelalterliche Archäologie und Geschichte sowie Computeranwendungen in der Archäologie und den Digital Humanities. diff --git a/content/team/de/watzinger-alexander.md b/content/team/de/watzinger-alexander.md new file mode 100644 index 00000000..e293acb5 --- /dev/null +++ b/content/team/de/watzinger-alexander.md @@ -0,0 +1,6 @@ +--- +firstName: Alexander +lastName: Watzinger +image: /assets/images/team/alex.jpg +--- +Alex ist der Hauptentwickler von OpenAtlas und hat ein besonderes Interesse an Datenmodellierung und wissenschaftlichen Webanwendungen. Seine Lieblingstools sind Python, PostgreSQL, Linux und Open-Source-Software im Allgemeinen. diff --git a/content/team/en/eichert-stefan.md b/content/team/en/eichert-stefan.md new file mode 100644 index 00000000..69aa9fd6 --- /dev/null +++ b/content/team/en/eichert-stefan.md @@ -0,0 +1,6 @@ +--- +firstName: Stefan +lastName: Eichert +image: /assets/images/team/stefan.jpg +--- +Stefan is the the initiator and master mind behind the OpenAtlas project. His main research fields are Early Medieval archaeology and history as well as computer applications in archaeology and digital humanities. diff --git a/content/team/en/watzinger-alexander.md b/content/team/en/watzinger-alexander.md new file mode 100644 index 00000000..d847d987 --- /dev/null +++ b/content/team/en/watzinger-alexander.md @@ -0,0 +1,6 @@ +--- +firstName: Alexander +lastName: Watzinger +image: /assets/images/team/alex.jpg +--- +Alex is the lead developer of OpenAtlas and has a special interest in data modeling and scientific web applications. His favorite tools are Python, PostgreSQL, Linux and open source software in general. diff --git a/docs/Config.md b/docs/Config.md deleted file mode 100644 index 9f5f025d..00000000 --- a/docs/Config.md +++ /dev/null @@ -1,110 +0,0 @@ -## Discovery Configuration - -The `discoveryConfig` file is a JSON file used to set the base options for the OpenAtlas Discovery -website. It contains configuration settings that affect the behavior and appearance of the website. - -### Configuration Options - -The following configuration options are available in the `discoveryConfig` file: - -#### `title` (optional) - -- Type: `string` -- Default value: `"OpenAtlas Discovery"` - -The `title` option specifies the title of the website. It is displayed in the browser's title bar -and can be used by search engines to identify the website. - -#### `defaultLocale` - -- Type: `string` -- Default value: _(none)_ - -The `defaultLocale` option specifies the default locale to be used on the Discovery website. This -determines the language the `defaultLocale` value should be a valid language code or a combination -of language and country code (e.g., "en-US" for English in the United States) and needs to be one of -the available lnaguages. - -#### `dateTimeFormat` (optional) - -- Type: `string` -- Default value: _(none)_ - -The `dateTimeFormat` option allows you to specify a custom format for displaying dates and times on -the Discovery website. This format should follow the syntax and placeholders defined by the -formatting conventions of the chosen locale. - -#### `defaultFilters` (optional) - -- Type: `number[]` -- Default value: _(none)_ - -The `defaultFilters` option is a list of filters represented as numbers. It acts as a whitelist to -allow only entities belonging to a certain type. These filters are applied in the Overview and -Search sections of the website but are not applied in the detailed view. By specifying the desired -filters in this list, you can control the types of entities that are displayed to users during their -interactions with the website. - -#### `APIbase` (optional) - -- Type: `string` -- Default value: _(none)_ - -The `APIbase` option specifies the base URL for the Discovery website's API. If provided, it defines -the root URL that will be used for making API requests. This allows you to customize the API -endpoint according to your specific needs. If not provided, the default API URL defined by the -website will be used. - -#### `imageDomains` (optional) - -- Type: `string[]` -- Default value: _(none)_ - -The `imageDomains` option is a list of allowed image domains. It specifies the domains from which -images can be optimized via nuxt-img on the Discovery website. - -#### `primaryColor` (optional) - -- Type: `string` -- Default value: `"#b8cf5b"` - -The `primaryColor` option specifies the primary color of the website. It is used for various UI -elements such as buttons, links, and backgrounds. - -#### `logo` (optional) - -- Type: `string` -- Default value: `"\logo.svg"` - -The `logo` option specifies the logo that will be used for the Discovery website. - -#### `headerLogo` (optional) - -- Type: `string` -- Default value: `"logo"` (if set) - -The `headerLogo` option specifies the logo that will be used for the header of the Discovery -website. If not provided, the `logo` option will be used. - -### Usage - -Here's an example of how the `discoveryConfig` file can be used: - -```json -{ - "defaultLocale": "en", - "dateTimeFormat": "yyyy-MM-dd HH:mm:ss", - "defaultFilters": [1, 2, 3], - "APIbase": "https://demo-dev.openatlas.eu", - "imageDomains": ["openatlas.eu"] -} -``` - -In the above example, the `defaultLocale` is set to "en", indicating that English language should be -used. The `dateTimeFormat` is specified as "yyyy-MM-dd HH:mm:ss", which represents the desired -format for displaying dates and times, in this case: **2022-07-15 21:30:45**. Additionally, the -`defaultFilters` array includes the numbers 1, 2, and 3, allowing only entities of those types to be -displayed in the Overview and Search sections. - -Please note that the `dateTimeFormat` and `defaultFilters` options are optional, and their omission -will result in the default behavior defined by the website. diff --git a/docs/Github.md b/docs/Github.md deleted file mode 100644 index c6a31b9d..00000000 --- a/docs/Github.md +++ /dev/null @@ -1,19 +0,0 @@ -## Github Actions - -This project is set up to work with github actions. On a commit, the following actions are -performed: - -- The content is fetched from the configured content repositories -- The project is built and tested -- The project is deployed to the configured sites - -For these steps, containers are spun up to run all these actions. The containers use the `node` and -`npm` version specified in the `package.json` file under `engines`. - -**Note:** The `npm` version is used to install dependencies, and the `node` version is used to run -the project. If the actions fail but the build and run step work locally make sure that the versions -match. You can check the versions of `node` and `npm` by running `node -v` and `npm -v` in the -terminal. - -For version switching e.g. when working in multiple projects tools like e.g. -[Node Version Switcher (NVS)](https://github.com/jasongin/nvs) can be usefull. diff --git a/e2e/MainPage.test.ts b/e2e/MainPage.test.ts deleted file mode 100644 index c615e48c..00000000 --- a/e2e/MainPage.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { expect, test } from "@playwright/test"; - -import { locales } from "@/config/i18n.config"; - -test.describe("locale is de", () => { - test.skip(!locales.includes("de")); - - const path = "./de"; - test.describe("APIBase is defined", () => { - test.skip(process.env.NUXT_PUBLIC_API_BASE_URL === undefined); - - test("has main elements", async ({ page }) => { - await page.goto(path); - await expect(page.locator("#content-renderer-container")).toBeVisible(); - await expect(page.locator('#content-renderer-container').getByRole('link', { name: 'Karte' })).toBeVisible(); - await expect(page.locator('#content-renderer-container').getByRole('link', { name: 'Daten' })).toBeVisible(); - }); - }); - - test.describe("has locale selector", () => { - test.skip(locales.length === 1); - test("has locale selector", async ({ page }) => { - await page.goto(path); - await expect(page.getByRole("button", { name: "Sprach Auswahl" })).toBeVisible(); - }); - }); -}); - -test.describe("locale is en", () => { - test.skip(!locales.includes("en")); - const path = "./en"; - - test.describe("APIBase is defined", () => { - test.skip(process.env.NUXT_PUBLIC_API_BASE_URL === undefined); - - test("has main elements", async ({ page }) => { - await page.goto(path); - await expect(page.locator("#content-renderer-container")).toBeVisible(); - await expect(page.locator('#content-renderer-container').getByRole('link', { name: 'map' })).toBeVisible(); - await expect(page.locator('#content-renderer-container').getByRole('link', { name: 'data' })).toBeVisible(); - }); - }); - - test.describe("has locale selector", () => { - test.skip(locales.length === 1); - test("has locale selector", async ({ page }) => { - await page.goto(path); - await expect(page.getByRole("button", { name: "Locale Selection" })).toBeVisible(); - }); - }); -}); diff --git a/e2e/MainPageToOthers.test.ts b/e2e/MainPageToOthers.test.ts deleted file mode 100644 index d7b3f5bc..00000000 --- a/e2e/MainPageToOthers.test.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { expect, test } from "@playwright/test"; - -import { locales } from "@/config/i18n.config"; - -test.describe("locale is en", () => { - test.skip(!locales.includes("en")); - const path = "./en"; - - test.describe("APIBase is defined", () => { - test.skip(process.env.NUXT_PUBLIC_API_BASE_URL === undefined); - - test("Main to Data and Map", async ({ page }) => { - await page.goto(path); - - await page.locator("#content-renderer-container").getByRole("link", { name: "map" }).click(); - await expect(page.locator("#mapid")).toBeVisible(); - await page.goto(path); - await page.locator("#content-renderer-container").getByRole("link", { name: "data" }).click(); - await expect(page.locator("#data-table-container")).toBeVisible(); - }); - }); -}); - -test.describe("locale is de", () => { - test.skip(!locales.includes("de")); - const path = "./de"; - test.describe("APIBase is defined", () => { - test.skip(process.env.NUXT_PUBLIC_API_BASE_URL === undefined); - - test("Main to Data and Map", async ({ page }) => { - await page.goto(path); - - await page - .locator("#content-renderer-container") - .getByRole("link", { name: "Karte" }) - .click(); - await expect(page.locator("#mapid")).toBeVisible(); - await page.goto(path); - await page - .locator("#content-renderer-container") - .getByRole("link", { name: "Daten" }) - .click(); - await expect(page.locator("#data-table-container")).toBeVisible(); - }); - }); -}); diff --git a/e2e/lib/fixtures/imprint-page.ts b/e2e/lib/fixtures/imprint-page.ts new file mode 100644 index 00000000..55a7bb06 --- /dev/null +++ b/e2e/lib/fixtures/imprint-page.ts @@ -0,0 +1,19 @@ +import type { Locator, Page } from "@playwright/test"; + +import { defaultLocale, type Locale } from "@/config/i18n.config"; + +export class ImprintPage { + readonly page: Page; + readonly locale: Locale; + readonly title: Locator; + + constructor(page: Page, locale = defaultLocale) { + this.page = page; + this.locale = locale; + this.title = page.getByRole("heading", { level: 1 }); + } + + async goto() { + await this.page.goto(`/${this.locale}/imprint`); + } +} diff --git a/e2e/lib/fixtures/index-page.ts b/e2e/lib/fixtures/index-page.ts new file mode 100644 index 00000000..c2885a13 --- /dev/null +++ b/e2e/lib/fixtures/index-page.ts @@ -0,0 +1,19 @@ +import type { Locator, Page } from "@playwright/test"; + +import { defaultLocale, type Locale } from "@/config/i18n.config"; + +export class IndexPage { + readonly page: Page; + readonly locale: Locale; + readonly title: Locator; + + constructor(page: Page, locale = defaultLocale) { + this.page = page; + this.locale = locale; + this.title = page.getByRole("heading", { level: 1 }); + } + + async goto() { + await this.page.goto(`/${this.locale}`); + } +} diff --git a/e2e/lib/test.ts b/e2e/lib/test.ts new file mode 100644 index 00000000..56f5dcb8 --- /dev/null +++ b/e2e/lib/test.ts @@ -0,0 +1,86 @@ +import { test as base } from "@playwright/test"; +import type { ElementContext, Result, RunOptions } from "axe-core"; +import { checkA11y, getViolations, injectAxe } from "axe-playwright"; +import { createI18n as _createI18n, type I18n } from "vue-i18n"; + +import { defaultLocale, type Locale, type Messages } from "@/config/i18n.config"; +import { ImprintPage } from "@/e2e/lib/fixtures/imprint-page"; +import { IndexPage } from "@/e2e/lib/fixtures/index-page"; + +interface Fixtures { + createAccessibilityScanner: () => Promise<{ + check: (params?: { selector?: ElementContext; skipFailures?: boolean }) => Promise; + getViolations: (params?: { + options?: RunOptions; + selector?: ElementContext; + }) => Promise>; + }>; + createI18n: ( + locale?: Locale, + // eslint-disable-next-line @typescript-eslint/ban-types + ) => Promise["global"]>; + createImprintPage: (locale: Locale) => ImprintPage; + createIndexPage: (locale: Locale) => IndexPage; +} + +export const test = base.extend({ + async createAccessibilityScanner({ page }, use) { + async function createAccessibilityScanner() { + await injectAxe(page); + + return { + check(params?: { selector?: ElementContext; skipFailures?: boolean }) { + return checkA11y(page, params?.selector, { detailedReport: true }, params?.skipFailures); + }, + getViolations(params?: { options?: RunOptions; selector?: ElementContext }) { + return getViolations(page, params?.selector, params?.options); + }, + }; + } + + await use(createAccessibilityScanner); + }, + + async createI18n({ page: _ }, use) { + async function createI18n(locale = defaultLocale) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const _messages = await import(`@/messages/${locale}/common.json`, { + with: { type: "json" }, + }); + const _project = await import(`@/messages/${locale}/project.json`, { + with: { type: "json" }, + }); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const messages = { ..._messages.default, ..._project.default } as Messages; + + return _createI18n({ + legacy: false, + locale, + messages: { + [locale]: messages, + }, + }).global; + } + + // @ts-expect-error Only messages for single locale provided. + await use(createI18n); + }, + + async createImprintPage({ page }, use) { + function createImprintPage(locale = defaultLocale) { + return new ImprintPage(page, locale); + } + + await use(createImprintPage); + }, + + async createIndexPage({ page }, use) { + function createIndexPage(locale = defaultLocale) { + return new IndexPage(page, locale); + } + + await use(createIndexPage); + }, +}); + +export { expect } from "@playwright/test"; diff --git a/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-1-chromium-linux.png b/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-1-chromium-linux.png new file mode 100644 index 00000000..47603408 Binary files /dev/null and b/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-1-chromium-linux.png differ diff --git a/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-1-firefox-linux.png b/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-1-firefox-linux.png new file mode 100644 index 00000000..0fa2cdd5 Binary files /dev/null and b/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-1-firefox-linux.png differ diff --git a/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-1-webkit-linux.png b/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-1-webkit-linux.png new file mode 100644 index 00000000..e98078fe Binary files /dev/null and b/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-1-webkit-linux.png differ diff --git a/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-2-chromium-linux.png b/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-2-chromium-linux.png new file mode 100644 index 00000000..81f873d6 Binary files /dev/null and b/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-2-chromium-linux.png differ diff --git a/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-2-firefox-linux.png b/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-2-firefox-linux.png new file mode 100644 index 00000000..cd70a09a Binary files /dev/null and b/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-2-firefox-linux.png differ diff --git a/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-2-webkit-linux.png b/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-2-webkit-linux.png new file mode 100644 index 00000000..1800538b Binary files /dev/null and b/e2e/snapshots/tests/pages/imprint.test.ts-snapshots/imprint-page-should-not-have-visible-changes-2-webkit-linux.png differ diff --git a/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-1-chromium-linux.png b/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-1-chromium-linux.png new file mode 100644 index 00000000..dac50f16 Binary files /dev/null and b/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-1-chromium-linux.png differ diff --git a/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-1-firefox-linux.png b/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-1-firefox-linux.png new file mode 100644 index 00000000..ad762822 Binary files /dev/null and b/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-1-firefox-linux.png differ diff --git a/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-1-webkit-linux.png b/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-1-webkit-linux.png new file mode 100644 index 00000000..c086f86a Binary files /dev/null and b/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-1-webkit-linux.png differ diff --git a/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-2-chromium-linux.png b/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-2-chromium-linux.png new file mode 100644 index 00000000..bd01c0a6 Binary files /dev/null and b/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-2-chromium-linux.png differ diff --git a/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-2-firefox-linux.png b/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-2-firefox-linux.png new file mode 100644 index 00000000..3b8b374f Binary files /dev/null and b/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-2-firefox-linux.png differ diff --git a/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-2-webkit-linux.png b/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-2-webkit-linux.png new file mode 100644 index 00000000..043e6202 Binary files /dev/null and b/e2e/snapshots/tests/pages/index.test.ts-snapshots/index-page-should-not-have-visible-changes-2-webkit-linux.png differ diff --git a/e2e/tests/app/analytics.test.ts b/e2e/tests/app/analytics.test.ts new file mode 100644 index 00000000..4596f5bd --- /dev/null +++ b/e2e/tests/app/analytics.test.ts @@ -0,0 +1,23 @@ +import { createUrl } from "@acdh-oeaw/lib"; + +import { expect, test } from "@/e2e/lib/test"; + +if (process.env.NUXT_PUBLIC_MATOMO_BASE_URL && process.env.NUXT_PUBLIC_MATOMO_ID) { + const baseUrl = String( + createUrl({ baseUrl: process.env.NUXT_PUBLIC_MATOMO_BASE_URL, pathname: "/**" }), + ); + + test.describe("analytics service", () => { + test("should track page views", async ({ page }) => { + const initialResponsePromise = page.waitForResponse(baseUrl); + await page.goto("/en"); + const initialResponse = await initialResponsePromise; + expect(initialResponse.status()).toBe(204); + + const responsePromise = page.waitForResponse(baseUrl); + await page.getByRole("link", { name: "Imprint" }).click(); + const response = await responsePromise; + expect(response.status()).toBe(204); + }); + }); +} diff --git a/e2e/tests/app/app.test.ts b/e2e/tests/app/app.test.ts new file mode 100644 index 00000000..67435d01 --- /dev/null +++ b/e2e/tests/app/app.test.ts @@ -0,0 +1,133 @@ +import { createUrl } from "@acdh-oeaw/lib"; + +import { locales } from "@/config/i18n.config"; +import { expect, test } from "@/e2e/lib/test"; + +// eslint-disable-next-line @typescript-eslint/no-non-null-assertion +const baseUrl = process.env.NUXT_PUBLIC_APP_BASE_URL!; + +test.describe("app", () => { + if (process.env.NUXT_PUBLIC_BOTS !== "enabled") { + test("serves a robots.txt which disallows search engine bots", async ({ request }) => { + const response = await request.get("/robots.txt"); + const body = await response.body(); + + expect(body.toString()).toEqual( + ["User-Agent: *", "Disallow: /", `Host: ${baseUrl}`].join("\n"), + ); + }); + } else { + test("serves a robots.txt", async ({ request }) => { + const response = await request.get("/robots.txt"); + const body = await response.body(); + + expect(body.toString()).toEqual( + [ + "User-Agent: *", + "Allow: /", + `Host: ${baseUrl}`, + `Sitemap: ${String(createUrl({ baseUrl, pathname: "sitemap.xml" }))}`, + ].join("\n"), + ); + }); + } + + test("serves a sitemap.xml", async ({ request }) => { + const response = await request.get("/sitemap.xml"); + const body = await response.body(); + + // TODO: use toMatchSnapshot + expect(body.toString()).toContain( + [ + '', + '', + ].join("\n"), + ); + + for (const locale of locales) { + for (const url of ["", "/imprint"]) { + const loc = String( + createUrl({ + baseUrl, + pathname: ["/", locale, url].join(""), + }), + ); + + expect(body.toString()).toContain(`${loc}`); + } + } + }); + + test("serves a webmanifest", async ({ request }) => { + const response = await request.get("/manifest.webmanifest"); + const body = await response.body(); + + // TODO: use toMatchSnapshot + expect(body.toString()).toEqual( + JSON.stringify({ + name: "OpenAtlas Discovery", + short_name: "OpenAtlas Discovery", + description: + "OpenAtlas is an open source database software developed especially to acquire, edit and manage research data from various fields of humanities.", + start_url: "/", + display: "standalone", + background_color: "#fff", + theme_color: "#fff", + icons: [ + { src: "/icon.svg", sizes: "any", type: "image/svg+xml" }, + { src: "/icon-maskable.svg", sizes: "any", type: "image/svg+xml", purpose: "maskable" }, + { src: "/android-chrome-192x192.png", sizes: "192x192", type: "image/png" }, + { src: "/android-chrome-512x512.png", sizes: "512x512", type: "image/png" }, + ], + }), + ); + }); + + test("serves a favicon.ico", async ({ request }) => { + const response = await request.get("/favicon.ico"); + const status = response.status(); + + expect(status).toEqual(200); + }); + + test("serves an svg favicon", async ({ request }) => { + const response = await request.get("/icon.svg"); + const status = response.status(); + + expect(status).toEqual(200); + }); + + test("serves an apple favicon", async ({ request }) => { + const response = await request.get("/apple-icon.png"); + const status = response.status(); + + expect(status).toEqual(200); + }); + + test.describe("sets color mode according to system preference", () => { + test.use({ colorScheme: "no-preference" }); + + test("with no preference", async ({ page }) => { + await page.goto("/en"); + await expect(page.locator("html")).toHaveAttribute("data-ui-color-scheme", "light"); + }); + }); + + test.describe("sets color mode according to system preference", () => { + test.use({ colorScheme: "light" }); + + test("in light mode", async ({ page }) => { + await page.goto("/en"); + await expect(page.locator("html")).toHaveAttribute("data-ui-color-scheme", "light"); + }); + }); + + test.describe("sets color mode according to system preference", () => { + test.use({ colorScheme: "dark" }); + + test("in dark mode", async ({ page }) => { + await page.goto("/en"); + await expect(page.locator("html")).toHaveAttribute("data-ui-color-scheme", "dark"); + }); + }); +}); diff --git a/e2e/tests/app/i18n.test.ts b/e2e/tests/app/i18n.test.ts new file mode 100644 index 00000000..d736bace --- /dev/null +++ b/e2e/tests/app/i18n.test.ts @@ -0,0 +1,105 @@ +import { createUrl } from "@acdh-oeaw/lib"; + +import { locales } from "@/config/i18n.config"; +import { expect, test } from "@/e2e/lib/test"; + +// eslint-disable-next-line @typescript-eslint/no-non-null-assertion +const baseUrl = process.env.NUXT_PUBLIC_APP_BASE_URL!; + +test.describe("i18n", () => { + test.describe("redirects root route to preferred locale", () => { + test.use({ locale: "en" }); + + test("with default locale", async ({ page }) => { + await page.goto("/"); + await expect(page).toHaveURL("/en"); + }); + }); + + test.describe("redirects root route to preferred locale", () => { + test.use({ locale: "de" }); + + /** + * FIXME: Currently, this breaks when pre-rendering the page via `routeRules`. + * This is an upstream issue in `@nuxtjs/i18n`. + */ + test.fixme("with supported locale", async ({ page }) => { + await page.goto("/"); + await expect(page).toHaveURL("/de"); + }); + }); + + test.describe("redirects root route to preferred locale", () => { + test.use({ locale: "fr" }); + + test("with unsupported locale", async ({ page }) => { + await page.goto("/"); + await expect(page).toHaveURL("/en"); + }); + }); + + test("displays not-found page for unknown locale", async ({ page }) => { + const response = await page.goto("/unknown"); + expect(response?.status()).toBe(404); + await expect(page.getByRole("heading", { name: "Page not found" })).toBeVisible(); + }); + + test("displays localised not-found page for unknown pathname", async ({ page }) => { + const response = await page.goto("/de/unknown"); + expect(response?.status()).toBe(404); + await expect(page.getByRole("heading", { name: "Seite nicht gefunden" })).toBeVisible(); + }); + + test("supports switching locale", async ({ page }) => { + await page.goto("/de/imprint"); + await expect(page).toHaveURL("/de/imprint"); + await expect(page.getByRole("heading", { name: "Impressum" })).toBeVisible(); + await expect(page).toHaveTitle("Impressum | OpenAtlas Discovery"); + + await page.getByRole("link", { name: "Zu Englisch wechseln" }).click(); + + await expect(page).toHaveURL("/en/imprint"); + await expect(page.getByRole("heading", { name: "Imprint" })).toBeVisible(); + await expect(page).toHaveTitle("Imprint | OpenAtlas Discovery"); + }); + + test("sets `lang` attribute on `html` element", async ({ page }) => { + for (const locale of locales) { + await page.goto(`/${locale}`); + await expect(page.locator("html")).toHaveAttribute("lang", locale); + } + }); + + test("sets alternate links in link tags", async ({ page }) => { + function createAbsoluteUrl(pathname: string) { + return String(createUrl({ baseUrl, pathname })); + } + + const pathnames = ["", "/imprint"]; + + for (const pathname of pathnames) { + for (const locale of locales) { + await page.goto(`/${locale}${pathname}`); + + const links = await page.locator('link[rel="alternate"]').evaluateAll((elements) => { + return elements.map((element) => { + return element.outerHTML; + }); + }); + + // TODO: use toMatchSnapshot + expect(links).toEqual([ + ``, + ``, + ``, + ]); + } + } + }); +}); diff --git a/e2e/tests/app/metadata.test.ts b/e2e/tests/app/metadata.test.ts new file mode 100644 index 00000000..863cbf31 --- /dev/null +++ b/e2e/tests/app/metadata.test.ts @@ -0,0 +1,154 @@ +import { createUrl } from "@acdh-oeaw/lib"; + +import { locales } from "@/config/i18n.config"; +import { expect, test } from "@/e2e/lib/test"; + +// eslint-disable-next-line @typescript-eslint/no-non-null-assertion +const baseUrl = process.env.NUXT_PUBLIC_APP_BASE_URL!; + +test("sets a canonical url", async ({ page }) => { + for (const locale of locales) { + await page.goto(`/${locale}`); + + const canonicalUrl = page.locator('link[rel="canonical"]'); + await expect(canonicalUrl).toHaveAttribute( + "href", + String(createUrl({ baseUrl, pathname: `/${locale}` })), + ); + } +}); + +test("sets document title on not-found page", async ({ page }) => { + await page.goto("/unknown"); + await expect(page).toHaveTitle("Page not found | OpenAtlas Discovery"); + + await page.goto("/de/unknown"); + await expect(page).toHaveTitle("Seite nicht gefunden | OpenAtlas Discovery"); +}); + +test("disallows indexing of not-found page", async ({ page }) => { + for (const pathname of ["/unknown", "/de/unknown"]) { + await page.goto(pathname); + + const ogTitle = page.locator('meta[name="robots"]'); + await expect(ogTitle).toHaveAttribute("content", "noindex"); + } +}); + +test.describe("sets page metadata", () => { + test("static", async ({ page }) => { + await page.goto("/en"); + + const ogType = page.locator('meta[property="og:type"]'); + await expect(ogType).toHaveAttribute("content", "website"); + + const twCard = page.locator('meta[name="twitter:card"]'); + await expect(twCard).toHaveAttribute("content", "summary_large_image"); + + const twCreator = page.locator('meta[name="twitter:creator"]'); + await expect(twCreator).toHaveAttribute("content", "@openatlas_eu"); + + const twSite = page.locator('meta[name="twitter:site"]'); + await expect(twSite).toHaveAttribute("content", "@openatlas_eu"); + + // const googleSiteVerification = page.locator('meta[name="google-site-verification"]'); + // await expect(googleSiteVerification).toHaveAttribute("content", ""); + }); + + test("with en locale", async ({ page }) => { + await page.goto("/en"); + + await expect(page).toHaveTitle("Home | OpenAtlas Discovery"); + + const metaDescription = page.locator('meta[name="description"]'); + await expect(metaDescription).toHaveAttribute( + "content", + "OpenAtlas is an open source database software developed especially to acquire, edit and manage research data from various fields of humanities.", + ); + + const ogTitle = page.locator('meta[property="og:title"]'); + await expect(ogTitle).toHaveAttribute("content", "Home"); + + const ogDescription = page.locator('meta[property="og:description"]'); + await expect(ogDescription).toHaveAttribute( + "content", + "OpenAtlas is an open source database software developed especially to acquire, edit and manage research data from various fields of humanities.", + ); + + const ogUrl = page.locator('meta[property="og:url"]'); + await expect(ogUrl).toHaveAttribute("content", String(createUrl({ baseUrl, pathname: "/en" }))); + + const ogLocale = page.locator('meta[property="og:locale"]'); + await expect(ogLocale).toHaveAttribute("content", "en"); + }); + + test("with de locale", async ({ page }) => { + await page.goto("/de"); + + await expect(page).toHaveTitle("Startseite | OpenAtlas Discovery"); + + const metaDescription = page.locator('meta[name="description"]'); + await expect(metaDescription).toHaveAttribute( + "content", + "OpenAtlas ist eine Open-Source-Datenbanksoftware, die speziell für die Erfassung, Bearbeitung und Verwaltung von Forschungsdaten aus verschiedenen Bereichen der Geisteswissenschaften entwickelt wurde.", + ); + + const ogTitle = page.locator('meta[property="og:title"]'); + await expect(ogTitle).toHaveAttribute("content", "Startseite"); + + const ogDescription = page.locator('meta[property="og:description"]'); + await expect(ogDescription).toHaveAttribute( + "content", + "OpenAtlas ist eine Open-Source-Datenbanksoftware, die speziell für die Erfassung, Bearbeitung und Verwaltung von Forschungsdaten aus verschiedenen Bereichen der Geisteswissenschaften entwickelt wurde.", + ); + + const ogUrl = page.locator('meta[property="og:url"]'); + await expect(ogUrl).toHaveAttribute("content", String(createUrl({ baseUrl, pathname: "/de" }))); + + const ogLocale = page.locator('meta[property="og:locale"]'); + await expect(ogLocale).toHaveAttribute("content", "de"); + }); +}); + +test.describe("adds json+ld metadata", () => { + test("with en locale", async ({ page }) => { + await page.goto("/en"); + + const metadata = await page.locator('script[type="application/ld+json"]').textContent(); + expect(metadata).toBe( + JSON.stringify({ + "@context": "https://schema.org", + "@type": "WebSite", + name: "OpenAtlas Discovery", + description: + "OpenAtlas is an open source database software developed especially to acquire, edit and manage research data from various fields of humanities.", + }), + ); + }); + + test("with de locale", async ({ page }) => { + await page.goto("/de"); + + const metadata = await page.locator('script[type="application/ld+json"]').textContent(); + expect(metadata).toBe( + JSON.stringify({ + "@context": "https://schema.org", + "@type": "WebSite", + name: "OpenAtlas Discovery", + description: + "OpenAtlas ist eine Open-Source-Datenbanksoftware, die speziell für die Erfassung, Bearbeitung und Verwaltung von Forschungsdaten aus verschiedenen Bereichen der Geisteswissenschaften entwickelt wurde.", + }), + ); + }); +}); + +test("serves an open-graph image", async ({ request }) => { + for (const _locale of locales) { + // FIXME: serve og image per locale + // const response = await request.get(`/${locale}/opengraph-image.png`); + const response = await request.get("opengraph-image.png"); + const status = response.status(); + + expect(status).toEqual(200); + } +}); diff --git a/e2e/tests/global.setup.ts b/e2e/tests/global.setup.ts new file mode 100644 index 00000000..bac38586 --- /dev/null +++ b/e2e/tests/global.setup.ts @@ -0,0 +1,14 @@ +import { createUrl } from "@acdh-oeaw/lib"; +import { test as setup } from "@playwright/test"; + +if (process.env.NUXT_PUBLIC_MATOMO_BASE_URL) { + const baseUrl = String( + createUrl({ baseUrl: process.env.NUXT_PUBLIC_MATOMO_BASE_URL, pathname: "/**" }), + ); + + setup.beforeEach("should block requests to analytics service", async ({ context }) => { + await context.route(baseUrl, (route) => { + return route.fulfill({ status: 204, body: "" }); + }); + }); +} diff --git a/e2e/tests/pages/imprint.test.ts b/e2e/tests/pages/imprint.test.ts new file mode 100644 index 00000000..fdf47733 --- /dev/null +++ b/e2e/tests/pages/imprint.test.ts @@ -0,0 +1,52 @@ +import { locales } from "@/config/i18n.config"; +import { expect, test } from "@/e2e/lib/test"; + +test.describe("imprint page", () => { + test("should have document title", async ({ createI18n, createImprintPage }) => { + for (const locale of locales) { + const { t } = await createI18n(locale); + const imprintPage = createImprintPage(locale); + await imprintPage.goto(); + + await expect(imprintPage.page).toHaveTitle( + [t("ImprintPage.meta.title"), t("Metadata.name")].join(" | "), + ); + } + }); + + test("should have imprint text", async ({ createImprintPage }) => { + const imprints = { + de: "Offenlegung", + en: "Legal disclosure", + }; + + for (const locale of locales) { + const imprintPage = createImprintPage(locale); + await imprintPage.goto(); + + await expect(imprintPage.page.getByRole("main")).toContainText(imprints[locale]); + } + }); + + test("should not have any automatically detectable accessibility issues", async ({ + createAccessibilityScanner, + createImprintPage, + }) => { + for (const locale of locales) { + const imprintPage = createImprintPage(locale); + await imprintPage.goto(); + + const { getViolations } = await createAccessibilityScanner(); + expect(await getViolations()).toEqual([]); + } + }); + + test("should not have visible changes", async ({ createImprintPage }) => { + for (const locale of locales) { + const imprintPage = createImprintPage(locale); + await imprintPage.goto(); + + await expect(imprintPage.page).toHaveScreenshot(); + } + }); +}); diff --git a/e2e/tests/pages/index.test.ts b/e2e/tests/pages/index.test.ts new file mode 100644 index 00000000..f392c7f6 --- /dev/null +++ b/e2e/tests/pages/index.test.ts @@ -0,0 +1,38 @@ +import { locales } from "@/config/i18n.config"; +import { expect, test } from "@/e2e/lib/test"; + +test.describe("index page", () => { + test("should have document title", async ({ createI18n, createIndexPage }) => { + for (const locale of locales) { + const { t } = await createI18n(locale); + const indexPage = createIndexPage(locale); + await indexPage.goto(); + + await expect(indexPage.page).toHaveTitle( + [t("IndexPage.meta.title"), t("Metadata.name")].join(" | "), + ); + } + }); + + test("should not have any automatically detectable accessibility issues", async ({ + createAccessibilityScanner, + createIndexPage, + }) => { + for (const locale of locales) { + const indexPage = createIndexPage(locale); + await indexPage.goto(); + + const { getViolations } = await createAccessibilityScanner(); + expect(await getViolations()).toEqual([]); + } + }); + + test("should not have visible changes", async ({ createIndexPage }) => { + for (const locale of locales) { + const indexPage = createIndexPage(locale); + await indexPage.goto(); + + await expect(indexPage.page).toHaveScreenshot(); + } + }); +}); diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json index 1b5c7cb2..045e168f 100644 --- a/e2e/tsconfig.json +++ b/e2e/tsconfig.json @@ -4,7 +4,7 @@ "compilerOptions": { "baseUrl": "..", "paths": { - "@/*": ["./*"], - }, - }, + "@/*": ["./*"] + } + } } diff --git a/error.vue b/error.vue new file mode 100644 index 00000000..62d24218 --- /dev/null +++ b/error.vue @@ -0,0 +1,69 @@ + + + diff --git a/i18n.config.ts b/i18n.config.ts index 97132a8f..33689e1b 100644 --- a/i18n.config.ts +++ b/i18n.config.ts @@ -1,8 +1,8 @@ -import discoveryConfig from "./config/discoveryConfig.json"; +import { defaultLocale } from "@/config/i18n.config"; export default defineI18nConfig(() => { return { + fallbackLocale: defaultLocale, legacy: false, - fallbackLocale: discoveryConfig.defaultLocale, }; }); diff --git a/layouts/default.vue b/layouts/default.vue index 5425b0aa..5d4083d7 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -1,32 +1,111 @@ - +
+ {{ t("DefaultLayout.skip-to-main-content") }} - + + + + + + + + +
+ diff --git a/license b/license index 4fee9313..415e3594 100644 --- a/license +++ b/license @@ -1,7 +1,6 @@ MIT License -Copyright (c) 2022-2024 Austrian Centre for Digital Humanities and Cultural Heritage (ACDH-CH) at -the Austrian Academy of Sciences +Copyright (c) 2023-2024 Austrian Centre for Digital Humanities & Cultural Heritage Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, diff --git a/locales/de.json b/locales/de.json deleted file mode 100644 index 077404e5..00000000 --- a/locales/de.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "global": { - "basics": { - "hello": "Hallo, {name}!", - "language": "Sprache", - "of": "von", - "map": "Karte", - "more details": "weitere Infos", - "search": "Suche", - "title": "Titel", - "unknown": "Unbekannt", - "data": "Daten", - "de": "deutsch", - "en": "englisch", - "loading": "Laden", - "license": "Lizenz", - "depictions": "Darstellungen", - "backHome": "Zurück zur Startseite", - "language-selection": "Sprach Auswahl" - }, - "entity": { - "class": "Klasse", - "name": "Name", - "description": "Beschreibung", - "begin": "Beginn", - "end": "Ende", - "system_classes": { - "acquisition": "Erwerb", - "activity": "Aktivität", - "actor_appellation": "Akteursbezeichnung", - "administrative_unit": "administrative Einheit", - "appellation": "Bezeichnung", - "artifact": "Artefakt", - "bibliography": "Bibliographie", - "edition": "Auflage", - "external_reference": "externe Referenz", - "feature": "Merkmal", - "group": "Gruppe", - "human_remains": "menschliche Überreste", - "move": "Verschiebung", - "object_location": "Objektstandort", - "person": "Person", - "place": "Ort", - "referenceSystem": "Referenzsystem", - "source": "Quelle", - "stratigraphic_unit": "stratigraphische Einheit", - "source_translation": "Quellenübersetzung", - "type": "Typ" - }, - "alias": "Alias", - "cidoc class": "Cidoc Klasse", - "system class": "System Klasse", - "type id": "Typ-ID", - "value type id": "Werttyp-ID", - "type id with subs": "Typ-ID mit Subtypen", - "type name": "Typname", - "begin from": "Beginn von", - "begin to": "Beginn bis", - "end from": "Ende von", - "end to": "Ende bis", - "realation to id": "Beziehung-ID", - "id": "ID" - }, - "imprint": "Impressum" - }, - "components": { - "entity": { - "prim_description_missing": "Primäre Beschreibung fehlt.", - "class_missing": "Klasse fehlt", - "details_header": "Details", - "detail": { - "more": "weitere" - }, - "basics": { - "start": "Anfang", - "end": "Ende" - }, - "details": { - "types": "Typen" - } - }, - "when-display": { - "no-dates": "Keine Kalenderdaten bekannt", - "details_header": "Details" - } - } -} diff --git a/locales/en.json b/locales/en.json deleted file mode 100644 index 1c21adc4..00000000 --- a/locales/en.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "global": { - "basics": { - "hello": "Hello, {name}!", - "language": "Language", - "of": "of", - "map": "map", - "more details": "more details", - "search": "search", - "title": "Titel", - "unknown": "unknown", - "data": "data", - "de": "german", - "en": "english", - "loading": "loading", - "license": "License", - "depictions": "Depictions", - "backHome": "Go back home", - "language-selection": "Locale Selection" - }, - "entity": { - "class": "class", - "name": "name", - "description": "description", - "begin": "begin", - "end": "end", - "system_classes": { - "acquisition": "acquisition", - "activity": "activity", - "actor_appellation": "actor appellation", - "administrative_unit": "administrative unit", - "appellation": "appellation", - "artifact": "artifact", - "bibliography": "bibliography", - "edition": "edition", - "external_reference": "external reference", - "feature": "feature", - "group": "group", - "human_remains": "human remains", - "move": "move", - "object_location": "object location", - "person": "person", - "place": "place", - "referenceSystem": "reference system", - "source": "source", - "stratigraphic_unit": "stratigraphic unit", - "source_translation": "source translation", - "type": "type" - }, - "alias": "alias", - "cidoc class": "cidoc class", - "system class": "system class", - "type id": "type id", - "value type id": "value type id", - "type id with subs": "type id with subtypes", - "type name": "type name", - "begin from": "begin from", - "begin to": "begin to", - "end from": "end from", - "end to": "end to", - "realation to id": "realation to id", - "id": "id" - }, - "imprint": "Imprint" - }, - "components": { - "entity": { - "prim_description_missing": "Primary Description missing.", - "class_missing": "Missing Class", - "details_header": "Details", - "detail": { - "more": "others" - }, - "basics": { - "start": "Begin", - "end": "End" - }, - "details": { - "types": "Types" - } - }, - "when-display": { - "no-dates": "No known Calendar Dates", - "details_header": "Details" - } - } -} diff --git a/messages/de/common.json b/messages/de/common.json new file mode 100644 index 00000000..492a2358 --- /dev/null +++ b/messages/de/common.json @@ -0,0 +1,190 @@ +{ + "AppFooter": { + "links": { + "imprint": "Impressum" + }, + "navigation-secondary": "Sekundärnavigation", + "with-love": "Mit {0} von {1}" + }, + "AppHeader": { + "links": { + "data": "Daten", + "home": "Startseite", + "map": "Karte", + "team": "Team" + }, + "navigation-main": "Hauptnavigation", + "navigation-menu": "Navigationsmenü" + }, + "ColorSchemeSwitcher": { + "change-color-scheme": "Farbschema ändern", + "color-schemes": { + "dark": "Dunkel", + "light": "Hell", + "system": "System" + } + }, + "ContentPage": { + "error": { + "not-found": "Dokument nicht gefunden", + "unknown": "Dokument kann nicht angezeigt werden" + }, + "meta": { + "title": "Inhalt" + } + }, + "DataMapView": { + "end-date": "End-Datum", + "start-date": "Start-Datum" + }, + "DataPage": { + "meta": { + "title": "Daten" + }, + "nothing-found": "Nichts gefunden", + "search": "Suche", + "title": "Daten", + "work-in-progress": "Die Datenbank ist derzeit im Aufbau." + }, + "DefaultLayout": { + "skip-to-main-content": "Zum Hauptinhalt springen" + }, + "EntityDescriptionsDisplay": { + "no-descriptions": "Keine Beschreibungen verfügbar." + }, + "EntityPage": { + "details": "Details", + "images": "Bilder ({count})", + "map": "Karte", + "meta": { + "title": "Entität" + } + }, + "ErrorBoundary": { + "error": "Fehler" + }, + "ErrorPage": { + "meta": { + "title": "Fehler" + }, + "title": "Etwas ist schief gelaufen!", + "try-again": "Erneut versuchen" + }, + "ImprintPage": { + "error": { + "not-found": "Impressum nicht gefunden", + "unknown": "Interner Fehler" + }, + "meta": { + "title": "Impressum" + }, + "title": "Impressum" + }, + "IndexPage": { + "error": { + "not-found": "Seite nicht gefunden", + "unknown": "Interner Fehler" + }, + "meta": { + "title": "Startseite" + } + }, + "LocaleSwitcher": { + "current-locale": "Aktuelle Sprache: {locale}", + "switch-locale": "Zu {locale} wechseln" + }, + "MapPage": { + "meta": { + "title": "Karte" + }, + "title": "Karte", + "work-in-progress": "Die Datenbank ist derzeit im Aufbau." + }, + "NotFoundPage": { + "meta": { + "title": "Seite nicht gefunden" + }, + "title": "Seite nicht gefunden" + }, + "SearchForm": { + "filter": "Filter", + "filters": { + "beginFrom": "Beginn von", + "beginTo": "Beginn bis", + "endFrom": "Ende von", + "endTo": "Ende bis", + "entityAliases": "Alias", + "entityCidocClass": "CIDOC Klasse", + "entityDescription": "Beschreibung", + "entityID": "ID", + "entityName": "Name", + "entitySystemClass": "System Klasse", + "relationToID": "Beziehung-ID", + "typeID": "Typ-ID", + "typeIDWithSubs": "Typ-ID mit Subtypen", + "typeName": "Typname", + "valueTypeID": "Werttyp-ID" + }, + "search": "Suche", + "select-filter": "Filter auswählen" + }, + "SearchResultsTable": { + "header": { + "begin": "Anfang", + "class": "Klasse", + "description": "Beschreibung", + "end": "Ende", + "name": "Name" + }, + "search-results": "Suchergebnisse" + }, + "SystemClassNames": { + "acquisition": "Erwerb", + "activity": "Aktivität", + "actor_function": "Akteursfunktion", + "actor_relation": "Akteursbeziehung", + "administrative_unit": "Verwaltungseinheit", + "appellation": "Bezeichnung", + "artifact": "Artefakt", + "bibliography": "Bibliographie", + "creation": "Kreation", + "edition": "Edition", + "event": "Ereignis", + "external_reference": "Externe Referenz", + "feature": "Feature", + "file": "Datei", + "group": "Gruppe", + "human_remains": "Menschliche Überreste", + "involvement": "Beteiligung", + "modification": "Modifikation", + "move": "Move", + "object_location": "Objektstandort", + "person": "Person", + "place": "Ort", + "production": "Produktion", + "reference_system": "Referenzsystem", + "source": "Quelle", + "source_translation": "Quellenübersetzung", + "stratigraphic_unit": "Stratigraphische Einheit", + "type": "Typ", + "type_tools": "Typ-Werkzeuge" + }, + "TeamPage": { + "error": { + "not-found": "Seite nicht gefunden", + "unknown": "Interner Fehler" + }, + "meta": { + "title": "Team" + }, + "team-members": "Teammitglieder" + }, + "TimespansDisplay": { + "end": "Ende", + "no-dates": "Keine Kalenderdaten bekannt", + "start": "Beginn" + }, + "Toast": { + "error": "Fehler" + } +} diff --git a/messages/de/project.json b/messages/de/project.json new file mode 100644 index 00000000..08777ad4 --- /dev/null +++ b/messages/de/project.json @@ -0,0 +1,8 @@ +{ + "__cms__": true, + "Metadata": { + "name": "OpenAtlas Discovery", + "shortName": "OpenAtlas Discovery", + "description": "OpenAtlas ist eine Open-Source-Datenbanksoftware, die speziell für die Erfassung, Bearbeitung und Verwaltung von Forschungsdaten aus verschiedenen Bereichen der Geisteswissenschaften entwickelt wurde." + } +} diff --git a/messages/en/common.json b/messages/en/common.json new file mode 100644 index 00000000..b1efeee3 --- /dev/null +++ b/messages/en/common.json @@ -0,0 +1,190 @@ +{ + "AppFooter": { + "links": { + "imprint": "Imprint" + }, + "navigation-secondary": "Secondary", + "with-love": "With {0} from {1}" + }, + "AppHeader": { + "links": { + "data": "Data", + "home": "Home", + "map": "Map", + "team": "Team" + }, + "navigation-main": "Main", + "navigation-menu": "Navigation menu" + }, + "ColorSchemeSwitcher": { + "change-color-scheme": "Change color scheme", + "color-schemes": { + "dark": "Dark", + "light": "Light", + "system": "System" + } + }, + "ContentPage": { + "error": { + "not-found": "Document not found", + "unknown": "Failed to display document" + }, + "meta": { + "title": "Content" + } + }, + "DataMapView": { + "end-date": "End date", + "start-date": "Start date" + }, + "DataPage": { + "meta": { + "title": "Data" + }, + "nothing-found": "Nothing found", + "search": "Search", + "title": "Data", + "work-in-progress": "The database is currently work in progress." + }, + "DefaultLayout": { + "skip-to-main-content": "Skip to main content" + }, + "EntityDescriptionsDisplay": { + "no-descriptions": "No descriptions available." + }, + "EntityPage": { + "details": "Details", + "images": "Images ({count})", + "map": "Map", + "meta": { + "title": "Entity" + } + }, + "ErrorBoundary": { + "error": "Error" + }, + "ErrorPage": { + "meta": { + "title": "Error" + }, + "title": "Something went wrong!", + "try-again": "Try again" + }, + "ImprintPage": { + "error": { + "not-found": "Imprint not found", + "unknown": "Internal Error" + }, + "meta": { + "title": "Imprint" + }, + "title": "Imprint" + }, + "IndexPage": { + "error": { + "not-found": "Page not found", + "unknown": "Internal Error" + }, + "meta": { + "title": "Home" + } + }, + "LocaleSwitcher": { + "current-locale": "Current language: {locale}", + "switch-locale": "Switch to {locale}" + }, + "MapPage": { + "meta": { + "title": "Map" + }, + "title": "Map", + "work-in-progress": "The database is currently work in progress." + }, + "NotFoundPage": { + "meta": { + "title": "Page not found" + }, + "title": "Page not found" + }, + "SearchForm": { + "filter": "Filter", + "filters": { + "beginFrom": "Begin from", + "beginTo": "Begin to", + "endFrom": "End from", + "endTo": "End to", + "entityAliases": "Alias", + "entityCidocClass": "CIDOC class", + "entityDescription": "Description", + "entityID": "ID", + "entityName": "Name", + "entitySystemClass": "System class", + "relationToID": "Relation to ID", + "typeID": "Type ID", + "typeIDWithSubs": "Type ID with subs", + "typeName": "Type name", + "valueTypeID": "Value type ID" + }, + "search": "Search", + "select-filter": "Select filter" + }, + "SearchResultsTable": { + "header": { + "begin": "Begin", + "class": "Class", + "description": "Description", + "end": "End", + "name": "Name" + }, + "search-results": "Search results" + }, + "SystemClassNames": { + "acquisition": "Acquisition", + "activity": "Activity", + "actor_function": "Actor function", + "actor_relation": "Actor relation", + "administrative_unit": "Administrative unit", + "appellation": "Appellation", + "artifact": "Artifact", + "bibliography": "Bibliography", + "creation": "Creation", + "edition": "Edition", + "event": "Event", + "external_reference": "External reference", + "feature": "Feature", + "file": "File", + "group": "Group", + "human_remains": "Human remains", + "involvement": "Involvement", + "modification": "Modification", + "move": "Move", + "object_location": "Object location", + "person": "Person", + "place": "Place", + "production": "Production", + "reference_system": "Reference system", + "source": "Source", + "source_translation": "Source translation", + "stratigraphic_unit": "Stratigraphic unit", + "type": "Type", + "type_tools": "Type tools" + }, + "TeamPage": { + "error": { + "not-found": "Page not found", + "unknown": "Internal Error" + }, + "meta": { + "title": "Team" + }, + "team-members": "Team members" + }, + "TimespansDisplay": { + "end": "End", + "no-dates": "No known calendar dates", + "start": "Start" + }, + "Toast": { + "error": "Error" + } +} diff --git a/messages/en/project.json b/messages/en/project.json new file mode 100644 index 00000000..d7f06cd5 --- /dev/null +++ b/messages/en/project.json @@ -0,0 +1,8 @@ +{ + "__cms__": true, + "Metadata": { + "name": "OpenAtlas Discovery", + "shortName": "OpenAtlas Discovery", + "description": "OpenAtlas is an open source database software developed especially to acquire, edit and manage research data from various fields of humanities." + } +} diff --git a/middleware/api.ts b/middleware/api.ts deleted file mode 100644 index 1c2efa14..00000000 --- a/middleware/api.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default defineNuxtRouteMiddleware(() => { - if (useRuntimeConfig().public.APIBase === undefined) { - return navigateTo("/", { redirectCode: 308 }); - } -}); diff --git a/nuxt.config.ts b/nuxt.config.ts index d4eb668f..2d45535b 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,90 +1,107 @@ -import { execSync } from "node:child_process"; +import { fileURLToPath } from "node:url"; -import discoveryConfig from "./config/discoveryConfig.json"; +import { defaultLocale, localesMap } from "./config/i18n.config"; +import { getGitInfo } from "./utils/get-git-info"; -const branchName = execSync("git rev-parse --abbrev-ref HEAD").toString().trimEnd(); -const commitHash = execSync("git rev-parse HEAD").toString().trimEnd(); -const gitTag = execSync("git describe --always --tags").toString().trimEnd(); +// eslint-disable-next-line @typescript-eslint/no-non-null-assertion +const baseUrl = process.env.NUXT_PUBLIC_APP_BASE_URL!; + +const { branchName, commitHash, tag } = getGitInfo(); -// https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ - typescript: { - shim: false, - strict: true, - // https://github.com/nuxt/nuxt/issues/14816#issuecomment-1484918081 - tsConfig: { - compilerOptions: { - paths: { - "@/*": ["./*"], - }, - }, - }, + alias: { + "@": fileURLToPath(new URL("./", import.meta.url)), }, app: { - head: { - meta: [ - { - name: discoveryConfig.title, - }, - ], - }, + layoutTransition: false, + pageTransition: false, }, - runtimeConfig: { - // Keys within public, will be also exposed to the client-side - public: { - APIBase: process.env.NUXT_PUBLIC_API_BASE_URL, - commitHash, - branchName, - gitTag, + colorMode: { + classSuffix: "", + dataValue: "ui-color-scheme", + }, + components: [{ path: "@/components", extensions: [".vue"], pathPrefix: false }], + content: { + defaultLocale, + locales: Object.keys(localesMap), + markdown: {}, + }, + css: ["@fontsource-variable/inter/slnt.css", "tailwindcss/tailwind.css", "@/styles/index.css"], + devtools: { + enabled: process.env.NODE_ENV === "development", + }, + experimental: { + componentIslands: { + selectiveClient: true, + }, + defaults: { + useAsyncData: { + deep: false, + }, + useFetch: { + timeout: 250, + }, }, + inlineRouteRules: true, }, - modules: ["@nuxtjs/i18n", "@nuxt/image", "@nuxt/content", "vuetify-nuxt-module"], i18n: { - baseUrl: process.env.NUXT_PUBLIC_APP_BASE_URL, - defaultLocale: discoveryConfig.defaultLocale, + baseUrl, + defaultLocale, detectBrowserLanguage: { redirectOn: "root", }, - locales: [ - { - nativeName: "Deutsch", - englishName: "German", - code: "de", - iso: "de-DE", - file: "./de.json", - }, - { - nativeName: "English", - englishName: "English", - code: "en", - iso: "en-US", - file: "./en.json", - }, - ], + langDir: "./messages", lazy: true, - langDir: "./locales", + locales: Object.values(localesMap), strategy: "prefix", vueI18n: "./i18n.config.ts", }, - vuetify: { - moduleOptions: { - /* module specific options */ + image: { + domains: [], + }, + imports: { + dirs: ["./config/"], + }, + modules: ["@nuxt/content", "@nuxt/image", "@nuxtjs/color-mode", "@nuxtjs/i18n", "@vueuse/nuxt"], + nitro: { + compressPublicAssets: true, + prerender: { + routes: ["/manifest.webmanifest", "/robots.txt", "/sitemap.xml"], }, - vuetifyOptions: { - /* vuetify options */ + }, + postcss: { + plugins: { + tailwindcss: {}, }, }, - css: ["vuetify/styles", "@mdi/font/css/materialdesignicons.min.css", "leaflet/dist/leaflet.css"], - build: {}, - vite: { - define: { - "process.env.DEBUG": false, + runtimeConfig: { + NODE_ENV: process.env.NODE_ENV, + public: { + NUXT_PUBLIC_API_BASE_URL: process.env.NUXT_PUBLIC_API_BASE_URL, + NUXT_PUBLIC_APP_BASE_URL: process.env.NUXT_PUBLIC_APP_BASE_URL, + NUXT_PUBLIC_BOTS: process.env.NUXT_PUBLIC_BOTS, + NUXT_PUBLIC_DATABASE: process.env.NUXT_PUBLIC_DATABASE, + NUXT_PUBLIC_GIT_BRANCH_NAME: branchName, + NUXT_PUBLIC_GIT_COMMIT_HASH: commitHash, + NUXT_PUBLIC_GIT_TAG: tag, + NUXT_PUBLIC_MAP_BASELAYER_URL_DARK: process.env.NUXT_PUBLIC_MAP_BASELAYER_URL_DARK, + NUXT_PUBLIC_MAP_BASELAYER_URL_LIGHT: process.env.NUXT_PUBLIC_MAP_BASELAYER_URL_LIGHT, + NUXT_PUBLIC_MATOMO_BASE_URL: process.env.NUXT_PUBLIC_MATOMO_BASE_URL, + NUXT_PUBLIC_MATOMO_ID: process.env.NUXT_PUBLIC_MATOMO_ID, + NUXT_PUBLIC_OPENAPI_BASE_URL: process.env.NUXT_PUBLIC_OPENAPI_BASE_URL, + NUXT_PUBLIC_REDMINE_ID: process.env.NUXT_PUBLIC_REDMINE_ID, }, }, - image: { - domains: process.env.NUXT_PUBLIC_IMAGE_DOMAINS - ? JSON.parse(process.env.NUXT_PUBLIC_IMAGE_DOMAINS) - : [], - inject: true, + typescript: { + shim: false, + strict: true, + // https://github.com/nuxt/nuxt/issues/14816#issuecomment-1484918081 + tsConfig: { + compilerOptions: { + paths: { + "@/*": ["./*"], + }, + }, + }, }, }); diff --git a/package.json b/package.json index 7b76071b..7361a1b2 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "node": "20.x", "pnpm": "8.x" }, - "packageManager": "pnpm@8.15.1", + "packageManager": "pnpm@8.15.3", "scripts": { "analyze": "nuxt analyze", "build": "nuxt build --dotenv ./.env.local", @@ -15,6 +15,7 @@ "dev:cms": "decap-server", "format:check": "prettier . \"!./content/**\" --cache --check --ignore-path ./.gitignore", "format:fix": "pnpm run format:check --write", + "generate:api-client": "dotenv -c -- tsx ./scripts/generate-api-client.ts", "lint:check": "run-p --continue-on-error \"lint:*:check\"", "lint:fix": "run-p --continue-on-error \"lint:*:fix\"", "lint:code:check": "eslint . --cache --ext .js,.ts,.vue --ignore-path ./.gitignore", @@ -23,33 +24,58 @@ "lint:styles:fix": "pnpm run lint:styles:check --fix", "postinstall": "nuxt prepare", "preinstall": "npx only-allow pnpm", - "prepare": "run-s setup", + "prepare": "run-s setup generate:api-client", "setup": "is-ci || simple-git-hooks", "start": "nuxt preview --dotenv ./.env.local", - "test": "run-s test:install-browsers test:e2e", + "sync": "nuxt prepare", + "test": "exit 0", "test:e2e": "playwright test", "test:e2e:codegen": "playwright codegen", "test:e2e:ui": "playwright test --ui", - "test:install-browsers": "playwright install", "types:check": "nuxt typecheck", "validate": "run-p format:check lint:check types:check test test:e2e" }, "dependencies": { "@acdh-oeaw/lib": "^0.1.7", - "@mdi/font": "^7.4.47", - "@nuxt/content": "^2.11.0", + "@acdh-oeaw/tsconfig": "^1.0.2", + "@fontsource-variable/inter": "^5.0.16", + "@nuxt/content": "^2.12.0", "@nuxt/image": "^1.3.0", - "@nuxtjs/i18n": "^8.0.0", + "@nuxtjs/color-mode": "^3.3.2", + "@nuxtjs/i18n": "^8.1.1", + "@nuxtjs/mdc": "^0.5.0", "@stefanprobst/netlify-cms-oauth-client": "^0.4.0", - "ci-info": "^4.0.0", + "@stefanprobst/openapi-client": "^0.0.3", + "@tanstack/vue-query": "^5.21.2", + "@tanstack/vue-table": "^8.12.0", + "@turf/turf": "^6.5.0", + "@vee-validate/zod": "^4.12.5", + "@vueuse/core": "^10.7.2", + "@vueuse/nuxt": "^10.7.2", + "colorjs.io": "^0.4.5", + "cva": "^1.0.0-beta.1", + "dotenv": "^16.4.4", + "dotenv-cli": "^7.3.0", + "dotenv-expand": "^11.0.4", + "embla-carousel": "^8.0.0-rc22", + "embla-carousel-vue": "^8.0.0-rc22", + "fast-glob": "^3.3.2", "is-ci": "^3.0.1", - "leaflet": "^1.9.4", - "npm-run-all2": "^6.1.1", - "nuxt": "^3.9.3", - "simple-git-hooks": "^2.9.0", - "vue": "^3.4.15", + "lucide-vue-next": "^0.331.0", + "maplibre-gl": "^4.0.1", + "npm-run-all2": "^6.1.2", + "nuxt": "^3.10.2", + "openapi-typescript": "^7.0.0-next.7", + "pino-http": "^9.0.0", + "radix-vue": "^1.4.6", + "tailwind-merge": "^2.2.1", + "tsx": "^4.7.1", + "vee-validate": "^4.12.5", + "vue": "^3.4.19", + "vue-i18n": "^9.9.1", + "vue-i18n-routing": "^1.2.0", "vue-router": "^4.2.5", - "vuetify-nuxt-module": "0.10.3", + "vue-sonner": "^1.0.3", "zod": "^3.22.4" }, "devDependencies": { @@ -58,24 +84,34 @@ "@acdh-oeaw/eslint-config-vue": "^1.0.10", "@acdh-oeaw/prettier-config": "^2.0.0", "@acdh-oeaw/stylelint-config": "^2.0.1", - "@acdh-oeaw/tsconfig": "^1.0.2", - "@playwright/test": "^1.41.1", - "@types/geojson": "^7946.0.13", - "@types/leaflet": "^1.9.8", - "@types/node": "^20.11.10", - "decap-server": "^3.0.1", - "dotenv": "^16.4.1", - "dotenv-cli": "^7.3.0", - "dotenv-expand": "^10.0.0", + "@acdh-oeaw/tailwindcss-preset": "^0.0.21", + "@nuxt/devtools": "^1.0.8", + "@playwright/test": "^1.41.2", + "@tanstack/eslint-plugin-query": "^5.20.1", + "@types/geojson": "^7946.0.14", + "@types/node": "^20.11.19", + "axe-core": "^4.8.4", + "axe-playwright": "^2.0.1", + "ci-info": "^4.0.0", + "decap-server": "^3.0.2", "eslint": "^8.56.0", - "lint-staged": "^15.2.0", - "nuxi": "^3.10.0", - "prettier": "^3.2.4", - "sass": "^1.70.0", - "stylelint": "^16.2.0", + "eslint-plugin-tailwindcss": "^3.14.2", + "is-ci": "^3.0.1", + "lint-staged": "^15.2.2", + "postcss": "^8.4.35", + "prettier": "^3.2.5", + "schema-dts": "^1.1.2", + "simple-git-hooks": "^2.9.0", + "stylelint": "^16.2.1", + "tailwindcss": "^3.4.1", "typescript": "^5.3.3", "vue-tsc": "^1.8.27" }, + "pnpm": { + "patchedDependencies": { + "@turf/turf@6.5.0": "patches/@turf__turf@6.5.0.patch" + } + }, "browserslist": { "development": [ "last 1 chrome version", @@ -93,13 +129,19 @@ "@acdh-oeaw/eslint-config", "@acdh-oeaw/eslint-config/strict", "@acdh-oeaw/eslint-config-vue", - "@acdh-oeaw/eslint-config-nuxt" + "@acdh-oeaw/eslint-config-nuxt", + "plugin:@tanstack/eslint-plugin-query/recommended", + "plugin:eslint-plugin-tailwindcss/recommended" ], "rules": { - "vue/valid-v-slot": [ + "arrow-body-style": [ + "error", + "always" + ], + "prefer-arrow-callback": [ "error", { - "allowModifiers": true + "allowNamedFunctions": true } ] } @@ -120,23 +162,16 @@ ], "*.!(css|js|ts|vue),!./content/**": "prettier --cache --ignore-unknown --write" }, + "postcss": { + "plugins": { + "tailwindcss": {} + } + }, "prettier": "@acdh-oeaw/prettier-config", "simple-git-hooks": { "pre-commit": "pnpm exec lint-staged" }, "stylelint": { - "extends": "@acdh-oeaw/stylelint-config", - "rules": { - "function-no-unknown": [ - true, - { - "ignoreFunctions": [ - "theme", - "v-bind" - ] - } - ], - "selector-class-pattern": null - } + "extends": "@acdh-oeaw/stylelint-config" } } diff --git a/pages/[...slug].vue b/pages/[...slug].vue deleted file mode 100644 index f1e88c6f..00000000 --- a/pages/[...slug].vue +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/pages/content/[...id].vue b/pages/content/[...id].vue new file mode 100644 index 00000000..81b54217 --- /dev/null +++ b/pages/content/[...id].vue @@ -0,0 +1,61 @@ + + + diff --git a/pages/data/index.vue b/pages/data/index.vue index e6b8dd1d..9bc419ab 100644 --- a/pages/data/index.vue +++ b/pages/data/index.vue @@ -1,83 +1,30 @@ - - diff --git a/pages/map/index.vue b/pages/map/index.vue index 161706d7..b4f789a7 100644 --- a/pages/map/index.vue +++ b/pages/map/index.vue @@ -1,158 +1,30 @@ - - - + + + + diff --git a/pages/team.vue b/pages/team.vue new file mode 100644 index 00000000..115e1b39 --- /dev/null +++ b/pages/team.vue @@ -0,0 +1,108 @@ + + + diff --git a/patches/@turf__turf@6.5.0.patch b/patches/@turf__turf@6.5.0.patch new file mode 100644 index 00000000..1c05804a --- /dev/null +++ b/patches/@turf__turf@6.5.0.patch @@ -0,0 +1,12 @@ +diff --git a/package.json b/package.json +index 1946d013646f884c74f2d5c7bf94d282154accdc..d956e3b82a007089856d29986f98b8ec485d36de 100644 +--- a/package.json ++++ b/package.json +@@ -48,6 +48,7 @@ + "exports": { + "./package.json": "./package.json", + ".": { ++ "types": "./index.d.ts", + "import": "./dist/es/index.js", + "require": "./dist/js/index.js" + } diff --git a/plugins/query-client.ts b/plugins/query-client.ts new file mode 100644 index 00000000..f3d2afde --- /dev/null +++ b/plugins/query-client.ts @@ -0,0 +1,87 @@ +import { HttpError, log } from "@acdh-oeaw/lib"; +import { + dehydrate, + type DehydratedState, + hydrate, + keepPreviousData, + QueryCache, + QueryClient, + VueQueryPlugin, + type VueQueryPluginOptions, +} from "@tanstack/vue-query"; +import type { I18n } from "vue-i18n"; + +import { toast } from "@/components/ui/toast"; +import type { Locale } from "@/config/i18n.config"; + +export default defineNuxtPlugin((nuxt) => { + const state = useState("vue-query"); + // eslint-disable-next-line @typescript-eslint/ban-types + const { t } = nuxt.$i18n as I18n<{ [K in Locale]: Messages }, {}, {}, Locale, false>["global"]; + + const queryClient = new QueryClient({ + defaultOptions: { + queries: { + gcTime: 1000 * 60 * 15, + placeholderData: keepPreviousData, + staleTime: 1000 * 60 * 30, + }, + }, + queryCache: new QueryCache({ + async onError(error) { + const message = await getErrorMessage(error); + + if (import.meta.client) { + toast.error(t("Toast.error"), { + description: message, + }); + } else { + log.error(message); + } + }, + }), + }); + + const options: VueQueryPluginOptions = { queryClient }; + + nuxt.vueApp.use(VueQueryPlugin, options); + + if (import.meta.server) { + nuxt.hooks.hook("app:rendered", () => { + state.value = dehydrate(queryClient); + }); + } + + if (import.meta.client) { + nuxt.hooks.hook("app:created", () => { + hydrate(queryClient, state.value); + }); + } +}); + +async function getErrorMessage(error: Error): Promise { + if (error instanceof HttpError) { + const mediaType = error.response.headers.get("content-type")?.split(";", 1).at(0); + if (mediaType === "application/json" && !error.response.bodyUsed) { + try { + /** + * @see https://manual.openatlas.eu/technical/api.html#error-handling + */ + const data = (await error.response.json()) as { + message: string; + timestamp: string; + title: string; + status: number; + }; + + return data.message; + } catch { + /** */ + } + } + + return error.response.statusText; + } + + return error.message; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 437eb7db..0aad35a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,52 +4,132 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +patchedDependencies: + '@turf/turf@6.5.0': + hash: 65icnyz54ddmc6g3kliqppfovu + path: patches/@turf__turf@6.5.0.patch + dependencies: '@acdh-oeaw/lib': specifier: ^0.1.7 version: 0.1.7 - '@mdi/font': - specifier: ^7.4.47 - version: 7.4.47 + '@acdh-oeaw/tsconfig': + specifier: ^1.0.2 + version: 1.0.2(typescript@5.3.3) + '@fontsource-variable/inter': + specifier: ^5.0.16 + version: 5.0.16 '@nuxt/content': - specifier: ^2.11.0 - version: 2.11.0(nuxt@3.9.3)(rollup@4.9.6)(vue@3.4.15) + specifier: ^2.12.0 + version: 2.12.0(nuxt@3.10.2)(rollup@4.11.0)(vue@3.4.19) '@nuxt/image': specifier: ^1.3.0 - version: 1.3.0(rollup@4.9.6) + version: 1.3.0(rollup@4.11.0) + '@nuxtjs/color-mode': + specifier: ^3.3.2 + version: 3.3.2(rollup@4.11.0) '@nuxtjs/i18n': - specifier: ^8.0.0 - version: 8.0.0(rollup@4.9.6)(vue-router@4.2.5)(vue@3.4.15) + specifier: ^8.1.1 + version: 8.1.1(rollup@4.11.0)(vue@3.4.19) + '@nuxtjs/mdc': + specifier: ^0.5.0 + version: 0.5.0(rollup@4.11.0) '@stefanprobst/netlify-cms-oauth-client': specifier: ^0.4.0 version: 0.4.0 - ci-info: - specifier: ^4.0.0 - version: 4.0.0 + '@stefanprobst/openapi-client': + specifier: ^0.0.3 + version: 0.0.3(openapi-typescript@7.0.0-next.7) + '@tanstack/vue-query': + specifier: ^5.21.2 + version: 5.21.2(vue@3.4.19) + '@tanstack/vue-table': + specifier: ^8.12.0 + version: 8.12.0(vue@3.4.19) + '@turf/turf': + specifier: ^6.5.0 + version: 6.5.0(patch_hash=65icnyz54ddmc6g3kliqppfovu) + '@vee-validate/zod': + specifier: ^4.12.5 + version: 4.12.5(vue@3.4.19) + '@vueuse/core': + specifier: ^10.7.2 + version: 10.7.2(vue@3.4.19) + '@vueuse/nuxt': + specifier: ^10.7.2 + version: 10.7.2(nuxt@3.10.2)(rollup@4.11.0)(vue@3.4.19) + colorjs.io: + specifier: ^0.4.5 + version: 0.4.5 + cva: + specifier: ^1.0.0-beta.1 + version: 1.0.0-beta.1(typescript@5.3.3) + dotenv: + specifier: ^16.4.4 + version: 16.4.4 + dotenv-cli: + specifier: ^7.3.0 + version: 7.3.0 + dotenv-expand: + specifier: ^11.0.4 + version: 11.0.4 + embla-carousel: + specifier: ^8.0.0-rc22 + version: 8.0.0-rc22 + embla-carousel-vue: + specifier: ^8.0.0-rc22 + version: 8.0.0-rc22(vue@3.4.19) + fast-glob: + specifier: ^3.3.2 + version: 3.3.2 is-ci: specifier: ^3.0.1 version: 3.0.1 - leaflet: - specifier: ^1.9.4 - version: 1.9.4 + lucide-vue-next: + specifier: ^0.331.0 + version: 0.331.0(vue@3.4.19) + maplibre-gl: + specifier: ^4.0.1 + version: 4.0.1 npm-run-all2: - specifier: ^6.1.1 - version: 6.1.1 + specifier: ^6.1.2 + version: 6.1.2 nuxt: - specifier: ^3.9.3 - version: 3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@4.9.6)(sass@1.70.0)(stylelint@16.2.0)(typescript@5.3.3)(vite@5.0.12)(vue-tsc@1.8.27) - simple-git-hooks: - specifier: ^2.9.0 - version: 2.9.0 + specifier: ^3.10.2 + version: 3.10.2(@types/node@20.11.19)(eslint@8.56.0)(rollup@4.11.0)(stylelint@16.2.1)(typescript@5.3.3)(vite@5.1.3)(vue-tsc@1.8.27) + openapi-typescript: + specifier: ^7.0.0-next.7 + version: 7.0.0-next.7(typescript@5.3.3) + pino-http: + specifier: ^9.0.0 + version: 9.0.0 + radix-vue: + specifier: ^1.4.6 + version: 1.4.6(vue@3.4.19) + tailwind-merge: + specifier: ^2.2.1 + version: 2.2.1 + tsx: + specifier: ^4.7.1 + version: 4.7.1 + vee-validate: + specifier: ^4.12.5 + version: 4.12.5(vue@3.4.19) vue: - specifier: ^3.4.15 - version: 3.4.15(typescript@5.3.3) + specifier: ^3.4.19 + version: 3.4.19(typescript@5.3.3) + vue-i18n: + specifier: ^9.9.1 + version: 9.9.1(vue@3.4.19) + vue-i18n-routing: + specifier: ^1.2.0 + version: 1.2.0(vue-i18n@9.9.1)(vue-router@4.2.5)(vue@3.4.19) vue-router: specifier: ^4.2.5 - version: 4.2.5(vue@3.4.15) - vuetify-nuxt-module: - specifier: 0.10.3 - version: 0.10.3(rollup@4.9.6)(typescript@5.3.3)(vite@5.0.12)(vue@3.4.15) + version: 4.2.5(vue@3.4.19) + vue-sonner: + specifier: ^1.0.3 + version: 1.0.3 zod: specifier: ^3.22.4 version: 3.22.4 @@ -66,55 +146,67 @@ devDependencies: version: 1.0.10(@acdh-oeaw/eslint-config@1.0.5)(eslint@8.56.0) '@acdh-oeaw/prettier-config': specifier: ^2.0.0 - version: 2.0.0(prettier@3.2.4) + version: 2.0.0(prettier@3.2.5) '@acdh-oeaw/stylelint-config': specifier: ^2.0.1 - version: 2.0.1(postcss-html@1.6.0)(stylelint-order@6.0.4)(stylelint@16.2.0) - '@acdh-oeaw/tsconfig': - specifier: ^1.0.2 - version: 1.0.2(typescript@5.3.3) + version: 2.0.1(postcss-html@1.6.0)(stylelint-order@6.0.4)(stylelint@16.2.1) + '@acdh-oeaw/tailwindcss-preset': + specifier: ^0.0.21 + version: 0.0.21(tailwindcss@3.4.1) + '@nuxt/devtools': + specifier: ^1.0.8 + version: 1.0.8(nuxt@3.10.2)(rollup@4.11.0)(vite@5.1.3) '@playwright/test': - specifier: ^1.41.1 - version: 1.41.1 + specifier: ^1.41.2 + version: 1.41.2 + '@tanstack/eslint-plugin-query': + specifier: ^5.20.1 + version: 5.20.1(eslint@8.56.0)(typescript@5.3.3) '@types/geojson': - specifier: ^7946.0.13 - version: 7946.0.13 - '@types/leaflet': - specifier: ^1.9.8 - version: 1.9.8 + specifier: ^7946.0.14 + version: 7946.0.14 '@types/node': - specifier: ^20.11.10 - version: 20.11.10 + specifier: ^20.11.19 + version: 20.11.19 + axe-core: + specifier: ^4.8.4 + version: 4.8.4 + axe-playwright: + specifier: ^2.0.1 + version: 2.0.1(playwright@1.41.2) + ci-info: + specifier: ^4.0.0 + version: 4.0.0 decap-server: - specifier: ^3.0.1 - version: 3.0.1 - dotenv: - specifier: ^16.4.1 - version: 16.4.1 - dotenv-cli: - specifier: ^7.3.0 - version: 7.3.0 - dotenv-expand: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^3.0.2 + version: 3.0.2 eslint: specifier: ^8.56.0 version: 8.56.0 + eslint-plugin-tailwindcss: + specifier: ^3.14.2 + version: 3.14.2(tailwindcss@3.4.1) lint-staged: - specifier: ^15.2.0 - version: 15.2.0 - nuxi: - specifier: ^3.10.0 - version: 3.10.0 + specifier: ^15.2.2 + version: 15.2.2 + postcss: + specifier: ^8.4.35 + version: 8.4.35 prettier: - specifier: ^3.2.4 - version: 3.2.4 - sass: - specifier: ^1.70.0 - version: 1.70.0 + specifier: ^3.2.5 + version: 3.2.5 + schema-dts: + specifier: ^1.1.2 + version: 1.1.2(typescript@5.3.3) + simple-git-hooks: + specifier: ^2.9.0 + version: 2.9.0 stylelint: - specifier: ^16.2.0 - version: 16.2.0(typescript@5.3.3) + specifier: ^16.2.1 + version: 16.2.1(typescript@5.3.3) + tailwindcss: + specifier: ^3.4.1 + version: 3.4.1 typescript: specifier: ^5.3.3 version: 5.3.3 @@ -148,7 +240,7 @@ packages: '@acdh-oeaw/eslint-config': 1.0.5 dependencies: '@acdh-oeaw/eslint-config': 1.0.5(eslint@8.56.0)(typescript@5.3.3) - eslint-plugin-vue: 9.20.1(eslint@8.56.0) + eslint-plugin-vue: 9.21.1(eslint@8.56.0) eslint-plugin-vuejs-accessibility: 2.2.1(eslint@8.56.0) transitivePeerDependencies: - eslint @@ -161,12 +253,12 @@ packages: eslint: '>=8' typescript: '>=5' dependencies: - '@typescript-eslint/eslint-plugin': 6.20.0(@typescript-eslint/parser@6.20.0)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) eslint: 8.56.0 eslint-config-prettier: 9.1.0(eslint@8.56.0) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.20.0)(eslint-plugin-i@2.29.1)(eslint@8.56.0) - eslint-plugin-import: /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-plugin-i@2.29.1)(eslint@8.56.0) + eslint-plugin-import: /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) eslint-plugin-simple-import-sort: 10.0.0(eslint@8.56.0) typescript: 5.3.3 transitivePeerDependencies: @@ -180,34 +272,49 @@ packages: engines: {node: '>=18', pnpm: '>=8'} dev: false - /@acdh-oeaw/prettier-config@2.0.0(prettier@3.2.4): + /@acdh-oeaw/prettier-config@2.0.0(prettier@3.2.5): resolution: {integrity: sha512-PhjHkJRb5K5uWMZ6s6IzNLvBns4Ei+osR6g/XmItFb0B844VOsU6iO3DbRyrHo8zTpMzsftkxVxT9S/b3KVmtQ==} peerDependencies: prettier: 3.x dependencies: - prettier: 3.2.4 + prettier: 3.2.5 dev: true - /@acdh-oeaw/stylelint-config@2.0.1(postcss-html@1.6.0)(stylelint-order@6.0.4)(stylelint@16.2.0): + /@acdh-oeaw/stylelint-config@2.0.1(postcss-html@1.6.0)(stylelint-order@6.0.4)(stylelint@16.2.1): resolution: {integrity: sha512-1OP+u0pJkaXztfDc+n3zHGPJ1q0PVowyEYCl7unqORpeZ48pNicHJ32z+iAON29fBascKD507Ca9GWUgDPXu6A==} peerDependencies: stylelint: '>=16.1' dependencies: - stylelint: 16.2.0(typescript@5.3.3) - stylelint-config-html: 1.1.0(postcss-html@1.6.0)(stylelint@16.2.0) - stylelint-config-hudochenkov: 10.0.0(stylelint-order@6.0.4)(stylelint@16.2.0) - stylelint-config-standard: 36.0.0(stylelint@16.2.0) + stylelint: 16.2.1(typescript@5.3.3) + stylelint-config-html: 1.1.0(postcss-html@1.6.0)(stylelint@16.2.1) + stylelint-config-hudochenkov: 10.0.0(stylelint-order@6.0.4)(stylelint@16.2.1) + stylelint-config-standard: 36.0.0(stylelint@16.2.1) transitivePeerDependencies: - postcss-html - stylelint-order dev: true + /@acdh-oeaw/tailwindcss-preset@0.0.21(tailwindcss@3.4.1): + resolution: {integrity: sha512-nRXJDLgwC9LmIqdLfbvrKwaH2lk3PS2FVHF6rgOK2sGr5VA+wg4CMhcoK0qzhyoWlX2CVfC7BBB+lhcfxNwt4Q==} + peerDependencies: + tailwindcss: 3.x + dependencies: + '@tailwindcss/typography': 0.5.10(tailwindcss@3.4.1) + tailwindcss: 3.4.1 + tailwindcss-animate: 1.0.7(tailwindcss@3.4.1) + dev: true + /@acdh-oeaw/tsconfig@1.0.2(typescript@5.3.3): resolution: {integrity: sha512-gNSjq64DlR1pgpM3bYWNedxbN8VrD4dXlT/ZOP/xv4VCloslNBzadXI5WABkFvdSK56YuAn8uTo4BCD9lW2skg==} peerDependencies: typescript: '>=5' dependencies: typescript: 5.3.3 + dev: false + + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} dev: true /@ampproject/remapping@2.2.1: @@ -216,11 +323,9 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.22 - dev: false /@antfu/utils@0.7.7: resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} - dev: false /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} @@ -232,7 +337,6 @@ packages: /@babel/compat-data@7.23.5: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} - dev: false /@babel/core@7.23.9: resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} @@ -255,7 +359,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false /@babel/generator@7.23.6: resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} @@ -265,14 +368,12 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.22 jsesc: 2.5.2 - dev: false /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.9 - dev: false /@babel/helper-compilation-targets@7.23.6: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} @@ -280,13 +381,12 @@ packages: dependencies: '@babel/compat-data': 7.23.5 '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.3 + browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 - dev: false - /@babel/helper-create-class-features-plugin@7.23.9(@babel/core@7.23.9): - resolution: {integrity: sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw==} + /@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.23.9): + resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -301,12 +401,10 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - dev: false /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} - dev: false /@babel/helper-function-name@7.23.0: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} @@ -314,28 +412,24 @@ packages: dependencies: '@babel/template': 7.23.9 '@babel/types': 7.23.9 - dev: false /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.9 - dev: false /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.9 - dev: false /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.9 - dev: false /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} @@ -349,19 +443,16 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 - dev: false /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.9 - dev: false /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - dev: false /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} @@ -373,28 +464,24 @@ packages: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - dev: false /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.9 - dev: false /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.9 - dev: false /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.9 - dev: false /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} @@ -407,7 +494,6 @@ packages: /@babel/helper-validator-option@7.23.5: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} - dev: false /@babel/helpers@7.23.9: resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} @@ -418,7 +504,6 @@ packages: '@babel/types': 7.23.9 transitivePeerDependencies: - supports-color - dev: false /@babel/highlight@7.23.4: resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} @@ -442,10 +527,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.23.9) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.9) - dev: false /@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==} @@ -455,7 +539,6 @@ packages: dependencies: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} @@ -465,7 +548,6 @@ packages: dependencies: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} @@ -474,7 +556,6 @@ packages: dependencies: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} @@ -484,7 +565,6 @@ packages: dependencies: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} @@ -494,7 +574,6 @@ packages: dependencies: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.9): resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} @@ -504,16 +583,21 @@ packages: dependencies: '@babel/core': 7.23.9 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.23.9) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) - dev: false - /@babel/standalone@7.23.9: - resolution: {integrity: sha512-89NGhVfgKDqDQrtNPxqfnhIReKvp2CR80ofPNEAUpbtnouFelq33hQFURLralD9I+eFS7s5zVK61JRg/D1nLWg==} + /@babel/runtime@7.23.9: + resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 dev: false + /@babel/standalone@7.23.10: + resolution: {integrity: sha512-xqWviI/pt1Zb/d+6ilWa5IDL2mkDzsBnlHbreqnfyP3/QB/ofQ1bNVcHj8YQX154Rf/xZKR6y0s1ydVF3nAS8g==} + engines: {node: '>=6.9.0'} + /@babel/template@7.23.9: resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} engines: {node: '>=6.9.0'} @@ -521,7 +605,6 @@ packages: '@babel/code-frame': 7.23.5 '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - dev: false /@babel/traverse@7.23.9: resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} @@ -539,7 +622,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: false /@babel/types@7.23.9: resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} @@ -553,7 +635,6 @@ packages: resolution: {integrity: sha512-lKN2XCfKCmpKb86a1tl4GIwsJYDy9TGuwjhDELLmpKygQhw8X2xR4dusgpC5Tg7q1pB96Eb0rBo81kxSILQMwA==} dependencies: mime: 3.0.0 - dev: false /@colors/colors@1.6.0: resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} @@ -612,7 +693,14 @@ packages: cpu: [ppc64] os: [aix] requiresBuild: true - dev: false + optional: true + + /@esbuild/aix-ppc64@0.20.0: + resolution: {integrity: sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true optional: true /@esbuild/android-arm64@0.19.12: @@ -621,7 +709,14 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: false + optional: true + + /@esbuild/android-arm64@0.20.0: + resolution: {integrity: sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true optional: true /@esbuild/android-arm@0.19.12: @@ -630,7 +725,14 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: false + optional: true + + /@esbuild/android-arm@0.20.0: + resolution: {integrity: sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true optional: true /@esbuild/android-x64@0.19.12: @@ -639,7 +741,14 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: false + optional: true + + /@esbuild/android-x64@0.20.0: + resolution: {integrity: sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true optional: true /@esbuild/darwin-arm64@0.19.12: @@ -648,7 +757,14 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: false + optional: true + + /@esbuild/darwin-arm64@0.20.0: + resolution: {integrity: sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true optional: true /@esbuild/darwin-x64@0.19.12: @@ -657,7 +773,14 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: false + optional: true + + /@esbuild/darwin-x64@0.20.0: + resolution: {integrity: sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true optional: true /@esbuild/freebsd-arm64@0.19.12: @@ -666,7 +789,14 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: false + optional: true + + /@esbuild/freebsd-arm64@0.20.0: + resolution: {integrity: sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true optional: true /@esbuild/freebsd-x64@0.19.12: @@ -675,7 +805,14 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: false + optional: true + + /@esbuild/freebsd-x64@0.20.0: + resolution: {integrity: sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true optional: true /@esbuild/linux-arm64@0.19.12: @@ -684,7 +821,14 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: false + optional: true + + /@esbuild/linux-arm64@0.20.0: + resolution: {integrity: sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-arm@0.19.12: @@ -693,7 +837,14 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: false + optional: true + + /@esbuild/linux-arm@0.20.0: + resolution: {integrity: sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-ia32@0.19.12: @@ -702,7 +853,14 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: false + optional: true + + /@esbuild/linux-ia32@0.20.0: + resolution: {integrity: sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-loong64@0.19.12: @@ -711,7 +869,14 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true - dev: false + optional: true + + /@esbuild/linux-loong64@0.20.0: + resolution: {integrity: sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-mips64el@0.19.12: @@ -720,7 +885,14 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: false + optional: true + + /@esbuild/linux-mips64el@0.20.0: + resolution: {integrity: sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-ppc64@0.19.12: @@ -729,7 +901,14 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: false + optional: true + + /@esbuild/linux-ppc64@0.20.0: + resolution: {integrity: sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-riscv64@0.19.12: @@ -738,7 +917,14 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: false + optional: true + + /@esbuild/linux-riscv64@0.20.0: + resolution: {integrity: sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-s390x@0.19.12: @@ -747,7 +933,14 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: false + optional: true + + /@esbuild/linux-s390x@0.20.0: + resolution: {integrity: sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-x64@0.19.12: @@ -756,7 +949,14 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: false + optional: true + + /@esbuild/linux-x64@0.20.0: + resolution: {integrity: sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true /@esbuild/netbsd-x64@0.19.12: @@ -765,7 +965,14 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: false + optional: true + + /@esbuild/netbsd-x64@0.20.0: + resolution: {integrity: sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true optional: true /@esbuild/openbsd-x64@0.19.12: @@ -774,7 +981,14 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: false + optional: true + + /@esbuild/openbsd-x64@0.20.0: + resolution: {integrity: sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true optional: true /@esbuild/sunos-x64@0.19.12: @@ -783,7 +997,14 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: false + optional: true + + /@esbuild/sunos-x64@0.20.0: + resolution: {integrity: sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true optional: true /@esbuild/win32-arm64@0.19.12: @@ -792,7 +1013,14 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: false + optional: true + + /@esbuild/win32-arm64@0.20.0: + resolution: {integrity: sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true optional: true /@esbuild/win32-ia32@0.19.12: @@ -801,7 +1029,14 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: false + optional: true + + /@esbuild/win32-ia32@0.20.0: + resolution: {integrity: sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true optional: true /@esbuild/win32-x64@0.19.12: @@ -810,7 +1045,14 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: false + optional: true + + /@esbuild/win32-x64@0.20.0: + resolution: {integrity: sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true optional: true /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): @@ -834,7 +1076,7 @@ packages: debug: 4.3.4 espree: 9.6.1 globals: 13.24.0 - ignore: 5.3.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -856,6 +1098,37 @@ packages: /@fastify/busboy@2.1.0: resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} + + /@floating-ui/core@1.6.0: + resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + dependencies: + '@floating-ui/utils': 0.2.1 + dev: false + + /@floating-ui/dom@1.6.3: + resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} + dependencies: + '@floating-ui/core': 1.6.0 + '@floating-ui/utils': 0.2.1 + dev: false + + /@floating-ui/utils@0.2.1: + resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + dev: false + + /@floating-ui/vue@1.0.6(vue@3.4.19): + resolution: {integrity: sha512-EdrOljjkpkkqZnrpqUcPoz9NvHxuTjUtSInh6GMv3+Mcy+giY2cE2pHh9rpacRcZ2eMSCxel9jWkWXTjLmY55w==} + dependencies: + '@floating-ui/dom': 1.6.3 + '@floating-ui/utils': 0.2.1 + vue-demi: 0.14.7(vue@3.4.19) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@fontsource-variable/inter@5.0.16: + resolution: {integrity: sha512-k+BUNqksTL+AN+o+OV7ILeiE9B5M5X+/jA7LWvCwjbV9ovXTqZyKRhA/x7uYv/ml8WQ0XNLBM7cRFIx4jW0/hg==} dev: false /@hapi/address@4.1.0: @@ -1100,7 +1373,7 @@ packages: dev: false optional: true - /@intlify/bundle-utils@7.5.0(vue-i18n@9.9.0): + /@intlify/bundle-utils@7.5.0(vue-i18n@9.9.1): resolution: {integrity: sha512-6DymqusddBQ8kVtVBsVFFF7arNfIhuLacOmmsqayT2vl427j9m0VX12mMC+cgoVIodSpRfzYPaPTdPuJq7mK0Q==} engines: {node: '>= 14.16'} peerDependencies: @@ -1112,57 +1385,57 @@ packages: vue-i18n: optional: true dependencies: - '@intlify/message-compiler': 9.9.0 - '@intlify/shared': 9.9.0 + '@intlify/message-compiler': 9.9.1 + '@intlify/shared': 9.9.1 acorn: 8.11.3 escodegen: 2.1.0 estree-walker: 2.0.2 jsonc-eslint-parser: 2.4.0 - magic-string: 0.30.5 + magic-string: 0.30.7 mlly: 1.5.0 source-map-js: 1.0.2 - vue-i18n: 9.9.0(vue@3.4.15) + vue-i18n: 9.9.1(vue@3.4.19) yaml-eslint-parser: 1.2.2 dev: false - /@intlify/core-base@9.9.0: - resolution: {integrity: sha512-C7UXPymDIOlMGSNjAhNLtKgzITc/8BjINK5gNKXg8GiWCTwL6n3MWr55czksxn8RM5wTMz0qcLOFT+adtaVQaA==} + /@intlify/core-base@9.9.1: + resolution: {integrity: sha512-qsV15dg7jNX2faBRyKMgZS8UcFJViWEUPLdzZ9UR0kQZpFVeIpc0AG7ZOfeP7pX2T9SQ5jSiorq/tii9nkkafA==} engines: {node: '>= 16'} dependencies: - '@intlify/message-compiler': 9.9.0 - '@intlify/shared': 9.9.0 + '@intlify/message-compiler': 9.9.1 + '@intlify/shared': 9.9.1 dev: false - /@intlify/core@9.9.0: - resolution: {integrity: sha512-pm5liIc7KDVknpLS6x4HLr928Gs2HLMA7RkCP0sUNelTYouKZfSd7UM6rS8bQAZGUWZuzIxeJAEd0K5RqnuATQ==} + /@intlify/core@9.9.1: + resolution: {integrity: sha512-KPD++4tB2M3TeeRqUtsSRFREVtrZHBdUzxF05zF0tbd/hZQJugJYN0t/AY1fp75OKWYZHJOKz7kKX36q8Qx7FA==} engines: {node: '>= 16'} dependencies: - '@intlify/core-base': 9.9.0 - '@intlify/shared': 9.9.0 + '@intlify/core-base': 9.9.1 + '@intlify/shared': 9.9.1 dev: false /@intlify/h3@0.5.0: resolution: {integrity: sha512-cgfrtD3qu3BPJ47gfZ35J2LJpI64Riic0K8NGgid5ilyPXRQTNY7mXlT/B+HZYQg1hmBxKa5G5HJXyAZ4R2H5A==} engines: {node: '>= 18'} dependencies: - '@intlify/core': 9.9.0 + '@intlify/core': 9.9.1 '@intlify/utils': 0.12.0 dev: false - /@intlify/message-compiler@9.9.0: - resolution: {integrity: sha512-yDU/jdUm9KuhEzYfS+wuyja209yXgdl1XFhMlKtXEgSFTxz4COZQCRXXbbH8JrAjMsaJ7bdoPSLsKlY6mXG2iA==} + /@intlify/message-compiler@9.9.1: + resolution: {integrity: sha512-zTvP6X6HeumHOXuAE1CMMsV6tTX+opKMOxO1OHTCg5N5Sm/F7d8o2jdT6W6L5oHUsJ/vvkGefHIs7Q3hfowmsA==} engines: {node: '>= 16'} dependencies: - '@intlify/shared': 9.9.0 + '@intlify/shared': 9.9.1 source-map-js: 1.0.2 dev: false - /@intlify/shared@9.9.0: - resolution: {integrity: sha512-1ECUyAHRrzOJbOizyGufYP2yukqGrWXtkmTu4PcswVnWbkcjzk3YQGmJ0bLkM7JZ0ZYAaohLGdYvBYnTOGYJ9g==} + /@intlify/shared@9.9.1: + resolution: {integrity: sha512-b3Pta1nwkz5rGq434v0psHwEwHGy1pYCttfcM22IE//K9owbpkEvFptx9VcuRAxjQdrO2If249cmDDjBu5wMDA==} engines: {node: '>= 16'} dev: false - /@intlify/unplugin-vue-i18n@2.0.0(rollup@4.9.6)(vue-i18n@9.9.0): + /@intlify/unplugin-vue-i18n@2.0.0(rollup@4.11.0)(vue-i18n@9.9.1): resolution: {integrity: sha512-1oKvm92L9l2od2H9wKx2ZvR4tzn7gUtd7bPLI7AWUmm7U9H1iEypndt5d985ypxGsEs0gToDaKTrytbBIJwwSg==} engines: {node: '>= 14.16'} peerDependencies: @@ -1177,10 +1450,10 @@ packages: vue-i18n-bridge: optional: true dependencies: - '@intlify/bundle-utils': 7.5.0(vue-i18n@9.9.0) - '@intlify/shared': 9.9.0 - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) - '@vue/compiler-sfc': 3.4.15 + '@intlify/bundle-utils': 7.5.0(vue-i18n@9.9.1) + '@intlify/shared': 9.9.1 + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) + '@vue/compiler-sfc': 3.4.19 debug: 4.3.4 fast-glob: 3.3.2 js-yaml: 4.1.0 @@ -1188,8 +1461,8 @@ packages: pathe: 1.1.2 picocolors: 1.0.0 source-map-js: 1.0.2 - unplugin: 1.6.0 - vue-i18n: 9.9.0(vue@3.4.15) + unplugin: 1.7.1 + vue-i18n: 9.9.1(vue@3.4.19) transitivePeerDependencies: - rollup - supports-color @@ -1200,7 +1473,7 @@ packages: engines: {node: '>= 18'} dev: false - /@intlify/vue-i18n-bridge@1.1.0(vue-i18n@9.9.0): + /@intlify/vue-i18n-bridge@1.1.0(vue-i18n@9.9.1): resolution: {integrity: sha512-yBwGpr70Rc56pjsPdtvNRi/ju0P9h3670EkCOuxAzKKR5OH61uF9LprLUGmph/Uy2TXBO2DKqpnJBFXyXJQKeg==} engines: {node: '>= 12'} hasBin: true @@ -1217,10 +1490,10 @@ packages: vue-i18n-bridge: optional: true dependencies: - vue-i18n: 9.9.0(vue@3.4.15) + vue-i18n: 9.9.1(vue@3.4.19) dev: false - /@intlify/vue-router-bridge@1.1.0(vue-router@4.2.5)(vue@3.4.15): + /@intlify/vue-router-bridge@1.1.0(vue-router@4.2.5)(vue@3.4.19): resolution: {integrity: sha512-EX+KndT9VS3muMdZWFmc99D8nUaWTOXr322a8zNf5HnMCbpbogdifWYW8hat+nVE73St/gcDbPz6u5smVUPoQg==} engines: {node: '>= 12'} hasBin: true @@ -1234,15 +1507,14 @@ packages: vue-router: optional: true dependencies: - vue-demi: 0.14.6(vue@3.4.15) - vue-router: 4.2.5(vue@3.4.15) + vue-demi: 0.14.7(vue@3.4.19) + vue-router: 4.2.5(vue@3.4.19) transitivePeerDependencies: - vue dev: false /@ioredis/commands@1.2.0: resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} - dev: false /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -1262,35 +1534,29 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.22 - dev: false - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - dev: false /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: false /@jridgewell/source-map@0.3.5: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.22 - dev: false /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: false /@jridgewell/trace-mapping@0.3.22: resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} dependencies: - '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - dev: false /@kwsites/file-exists@1.1.1: resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} @@ -1302,6 +1568,19 @@ packages: /@kwsites/promise-deferred@1.1.1: resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + /@mapbox/geojson-rewind@0.5.2: + resolution: {integrity: sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==} + hasBin: true + dependencies: + get-stream: 6.0.1 + minimist: 1.2.8 + dev: false + + /@mapbox/jsonlint-lines-primitives@2.0.2: + resolution: {integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==} + engines: {node: '>= 0.6'} + dev: false + /@mapbox/node-pre-gyp@1.0.11: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true @@ -1313,47 +1592,73 @@ packages: nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.5.4 + semver: 7.6.0 tar: 6.2.0 transitivePeerDependencies: - encoding - supports-color + + /@mapbox/point-geometry@0.1.0: + resolution: {integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==} + dev: false + + /@mapbox/tiny-sdf@2.0.6: + resolution: {integrity: sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==} + dev: false + + /@mapbox/unitbezier@0.0.1: + resolution: {integrity: sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==} dev: false - /@mdi/font@7.4.47: - resolution: {integrity: sha512-43MtGpd585SNzHZPcYowu/84Vz2a2g31TvPMTm9uTiCSWzaheQySUcSyUH/46fPnuPQWof2yd0pGBtzee/IQWw==} + /@mapbox/vector-tile@1.3.1: + resolution: {integrity: sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==} + dependencies: + '@mapbox/point-geometry': 0.1.0 + dev: false + + /@mapbox/whoots-js@3.1.0: + resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==} + engines: {node: '>=6.0.0'} dev: false - /@miyaneee/rollup-plugin-json5@1.2.0(rollup@4.9.6): + /@maplibre/maplibre-gl-style-spec@20.1.1: + resolution: {integrity: sha512-z85ARNPCBI2Cs5cPOS3DSbraTN+ue8zrcYVoSWBuNrD/mA+2SKAJ+hIzI22uN7gac6jBMnCdpPKRxS/V0KSZVQ==} + hasBin: true + dependencies: + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/unitbezier': 0.0.1 + json-stringify-pretty-compact: 4.0.0 + minimist: 1.2.8 + rw: 1.3.3 + sort-object: 3.0.3 + dev: false + + /@miyaneee/rollup-plugin-json5@1.2.0(rollup@4.11.0): resolution: {integrity: sha512-JjTIaXZp9WzhUHpElrqPnl1AzBi/rvRs065F71+aTmlqvTMVkdbjZ8vfFl4nRlgJy+TPBw69ZK4pwFdmOAt4aA==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) json5: 2.2.3 - rollup: 4.9.6 + rollup: 4.11.0 dev: false - /@netlify/functions@2.5.1: - resolution: {integrity: sha512-7//hmiFHXGusAzuzEuXvRT9ItaeRjRs5lRs6lYUkaAXO1jnTWYDB2XdqFq5X4yMRX+/A96nrQ2HwCE+Pd0YMwg==} + /@netlify/functions@2.6.0: + resolution: {integrity: sha512-vU20tij0fb4nRGACqb+5SQvKd50JYyTyEhQetCMHdakcJFzjLDivvRR16u1G2Oy4A7xNAtGJF1uz8reeOtTVcQ==} engines: {node: '>=14.0.0'} dependencies: - '@netlify/serverless-functions-api': 1.13.0 - is-promise: 4.0.0 - dev: false + '@netlify/serverless-functions-api': 1.14.0 /@netlify/node-cookies@0.1.0: resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} engines: {node: ^14.16.0 || >=16.0.0} - dev: false - /@netlify/serverless-functions-api@1.13.0: - resolution: {integrity: sha512-H3SMpHw24jWjnEMqbXgILWdo3/Iv/2DRzOZZevqqEswRTOWcQJGlU35Dth72VAOxhPyWXjulogG1zJNRw8m2sQ==} + /@netlify/serverless-functions-api@1.14.0: + resolution: {integrity: sha512-HUNETLNvNiC2J+SB/YuRwJA9+agPrc0azSoWVk8H85GC+YE114hcS5JW+dstpKwVerp2xILE3vNWN7IMXP5Q5Q==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@netlify/node-cookies': 0.1.0 urlpattern-polyfill: 8.0.2 - dev: false /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1371,27 +1676,25 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.0 + fastq: 1.17.1 - /@npmcli/agent@2.2.0: - resolution: {integrity: sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==} + /@npmcli/agent@2.2.1: + resolution: {integrity: sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ==} engines: {node: ^16.14.0 || >=18.0.0} dependencies: agent-base: 7.1.0 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 lru-cache: 10.2.0 socks-proxy-agent: 8.0.2 transitivePeerDependencies: - supports-color - dev: false /@npmcli/fs@3.1.0: resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - semver: 7.5.4 - dev: false + semver: 7.6.0 /@npmcli/git@5.0.4: resolution: {integrity: sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ==} @@ -1403,11 +1706,10 @@ packages: proc-log: 3.0.0 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.5.4 + semver: 7.6.0 which: 4.0.0 transitivePeerDependencies: - bluebird - dev: false /@npmcli/installed-package-contents@2.0.2: resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} @@ -1416,12 +1718,10 @@ packages: dependencies: npm-bundled: 3.0.0 npm-normalize-package-bin: 3.0.1 - dev: false /@npmcli/node-gyp@3.0.0: resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: false /@npmcli/package-json@5.0.0: resolution: {integrity: sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g==} @@ -1433,17 +1733,15 @@ packages: json-parse-even-better-errors: 3.0.1 normalize-package-data: 6.0.0 proc-log: 3.0.0 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - bluebird - dev: false /@npmcli/promise-spawn@7.0.1: resolution: {integrity: sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==} engines: {node: ^16.14.0 || >=18.0.0} dependencies: which: 4.0.0 - dev: false /@npmcli/run-script@7.0.4: resolution: {integrity: sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==} @@ -1457,16 +1755,15 @@ packages: transitivePeerDependencies: - bluebird - supports-color - dev: false - /@nuxt/content@2.11.0(nuxt@3.9.3)(rollup@4.9.6)(vue@3.4.15): - resolution: {integrity: sha512-bHk4Vs+9k94z9WDdQcjTKWeXEkHiRsatTPx/914okegKaWz3yntt3x6NUPv6Ch3zI5JJZvepqbVPoWxuySFmmQ==} + /@nuxt/content@2.12.0(nuxt@3.10.2)(rollup@4.11.0)(vue@3.4.19): + resolution: {integrity: sha512-XQkbkJzFRWKdX4aoVDprqLphbQGDsRX35ZRgHe4i7Phe3F1z2EzXVhZ9WXBTmpXau3MkLlmsQ+NzcRns1kOOvQ==} dependencies: - '@nuxt/kit': 3.9.3(rollup@4.9.6) - '@nuxtjs/mdc': 0.3.2(rollup@4.9.6) - '@vueuse/core': 10.7.2(vue@3.4.15) - '@vueuse/head': 2.0.0(vue@3.4.15) - '@vueuse/nuxt': 10.7.2(nuxt@3.9.3)(rollup@4.9.6)(vue@3.4.15) + '@nuxt/kit': 3.10.2(rollup@4.11.0) + '@nuxtjs/mdc': 0.5.0(rollup@4.11.0) + '@vueuse/core': 10.7.2(vue@3.4.19) + '@vueuse/head': 2.0.0(vue@3.4.19) + '@vueuse/nuxt': 10.7.2(nuxt@3.10.2)(rollup@4.11.0)(vue@3.4.19) consola: 3.2.3 defu: 6.1.4 destr: 2.0.2 @@ -1481,11 +1778,11 @@ packages: minisearch: 6.3.0 ohash: 1.1.3 pathe: 1.1.2 - scule: 1.2.0 - shikiji: 0.9.19 + scule: 1.3.0 + shiki: 1.1.2 slugify: 1.6.6 socket.io-client: 4.7.4 - ufo: 1.3.2 + ufo: 1.4.0 unist-util-stringify-position: 4.0.0 unstorage: 1.10.1 ws: 8.16.0 @@ -1513,30 +1810,28 @@ packages: /@nuxt/devalue@2.0.2: resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==} - dev: false - /@nuxt/devtools-kit@1.0.8(nuxt@3.9.3)(rollup@4.9.6)(vite@5.0.12): + /@nuxt/devtools-kit@1.0.8(nuxt@3.10.2)(rollup@4.11.0)(vite@5.1.3): resolution: {integrity: sha512-j7bNZmoAXQ1a8qv6j6zk4c/aekrxYqYVQM21o/Hy4XHCUq4fajSgpoc8mjyWJSTfpkOmuLyEzMexpDWiIVSr6A==} peerDependencies: nuxt: ^3.9.0 vite: '*' dependencies: - '@nuxt/kit': 3.9.3(rollup@4.9.6) - '@nuxt/schema': 3.9.3(rollup@4.9.6) + '@nuxt/kit': 3.10.2(rollup@4.11.0) + '@nuxt/schema': 3.10.2(rollup@4.11.0) execa: 7.2.0 - nuxt: 3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@4.9.6)(sass@1.70.0)(stylelint@16.2.0)(typescript@5.3.3)(vite@5.0.12)(vue-tsc@1.8.27) - vite: 5.0.12(@types/node@20.11.10)(sass@1.70.0) + nuxt: 3.10.2(@types/node@20.11.19)(eslint@8.56.0)(rollup@4.11.0)(stylelint@16.2.1)(typescript@5.3.3)(vite@5.1.3)(vue-tsc@1.8.27) + vite: 5.1.3(@types/node@20.11.19) transitivePeerDependencies: - rollup - supports-color - dev: false /@nuxt/devtools-wizard@1.0.8: resolution: {integrity: sha512-RxyOlM7Isk5npwXwDJ/rjm9ekX5sTNG0LS0VOBMdSx+D5nlRPMRr/r9yO+9WQDyzPLClLzHaXRHBWLPlRX3IMw==} hasBin: true dependencies: consola: 3.2.3 - diff: 5.1.0 + diff: 5.2.0 execa: 7.2.0 global-directory: 4.0.1 magicast: 0.3.3 @@ -1544,10 +1839,9 @@ packages: pkg-types: 1.0.3 prompts: 2.4.2 rc9: 2.1.1 - semver: 7.5.4 - dev: false + semver: 7.6.0 - /@nuxt/devtools@1.0.8(nuxt@3.9.3)(rollup@4.9.6)(vite@5.0.12): + /@nuxt/devtools@1.0.8(nuxt@3.10.2)(rollup@4.11.0)(vite@5.1.3): resolution: {integrity: sha512-o6aBFEBxc8OgVHV4OPe2g0q9tFIe9HiTxRiJnlTJ+jHvOQsBLS651ArdVtwLChf9UdMouFlpLLJ1HteZqTbtsQ==} hasBin: true peerDependencies: @@ -1555,9 +1849,9 @@ packages: vite: '*' dependencies: '@antfu/utils': 0.7.7 - '@nuxt/devtools-kit': 1.0.8(nuxt@3.9.3)(rollup@4.9.6)(vite@5.0.12) + '@nuxt/devtools-kit': 1.0.8(nuxt@3.10.2)(rollup@4.11.0)(vite@5.1.3) '@nuxt/devtools-wizard': 1.0.8 - '@nuxt/kit': 3.9.3(rollup@4.9.6) + '@nuxt/kit': 3.10.2(rollup@4.11.0) birpc: 0.2.15 consola: 3.2.3 destr: 2.0.2 @@ -1572,7 +1866,7 @@ packages: launch-editor: 2.6.1 local-pkg: 0.5.0 magicast: 0.3.3 - nuxt: 3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@4.9.6)(sass@1.70.0)(stylelint@16.2.0)(typescript@5.3.3)(vite@5.0.12)(vue-tsc@1.8.27) + nuxt: 3.10.2(@types/node@20.11.19)(eslint@8.56.0)(rollup@4.11.0)(stylelint@16.2.1)(typescript@5.3.3)(vite@5.1.3)(vue-tsc@1.8.27) nypm: 0.3.6 ohash: 1.1.3 pacote: 17.0.6 @@ -1580,14 +1874,14 @@ packages: perfect-debounce: 1.0.0 pkg-types: 1.0.3 rc9: 2.1.1 - scule: 1.2.0 - semver: 7.5.4 + scule: 1.3.0 + semver: 7.6.0 simple-git: 3.22.0 sirv: 2.0.4 - unimport: 3.7.1(rollup@4.9.6) - vite: 5.0.12(@types/node@20.11.10)(sass@1.70.0) - vite-plugin-inspect: 0.8.3(@nuxt/kit@3.9.3)(rollup@4.9.6)(vite@5.0.12) - vite-plugin-vue-inspector: 4.0.2(vite@5.0.12) + unimport: 3.7.1(rollup@4.11.0) + vite: 5.1.3(@types/node@20.11.19) + vite-plugin-inspect: 0.8.3(@nuxt/kit@3.10.2)(rollup@4.11.0)(vite@5.1.3) + vite-plugin-vue-inspector: 4.0.2(vite@5.1.3) which: 3.0.1 ws: 8.16.0 transitivePeerDependencies: @@ -1596,24 +1890,23 @@ packages: - rollup - supports-color - utf-8-validate - dev: false - /@nuxt/image@1.3.0(rollup@4.9.6): + /@nuxt/image@1.3.0(rollup@4.11.0): resolution: {integrity: sha512-HoAvBImqRrAwCLhZe7IsRwUWvV0ZVqUKFE/GsT8Jo01NBEd+PXhhu2XgHKV+aasqPXdeaQjhL43CSIwuNEwG1w==} engines: {node: ^14.16.0 || >=16.11.0} dependencies: - '@nuxt/kit': 3.9.3(rollup@4.9.6) + '@nuxt/kit': 3.10.2(rollup@4.11.0) consola: 3.2.3 defu: 6.1.4 h3: 1.10.1 image-meta: 0.2.0 - node-fetch-native: 1.6.1 + node-fetch-native: 1.6.2 ohash: 1.1.3 pathe: 1.1.2 std-env: 3.7.0 - ufo: 1.3.2 + ufo: 1.4.0 optionalDependencies: - ipx: 3.0.0 + ipx: 3.0.1 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -1631,35 +1924,34 @@ packages: - supports-color dev: false - /@nuxt/kit@3.9.3(rollup@4.9.6): - resolution: {integrity: sha512-bHGXpTB6E+YJCC1L9tTwrP7txgLZzyuFes/tgy1ZM4dlfrCsGqLK/K4mddROMdC3D81scnH84u7yQsN0JRgoTg==} + /@nuxt/kit@3.10.2(rollup@4.11.0): + resolution: {integrity: sha512-Bua7taY9CIm7HCTpHXqFyM1xlZkrUl6HOqWrkGjLLQg9eeWAdKT7ppT0iEMiGnb9f+5T0uL5Ec3TvuR5J8P9WA==} engines: {node: ^14.18.0 || >=16.10.0} dependencies: - '@nuxt/schema': 3.9.3(rollup@4.9.6) - c12: 1.6.1 + '@nuxt/schema': 3.10.2(rollup@4.11.0) + c12: 1.8.0 consola: 3.2.3 defu: 6.1.4 - globby: 14.0.0 + globby: 14.0.1 hash-sum: 2.0.0 - ignore: 5.3.0 + ignore: 5.3.1 jiti: 1.21.0 knitwork: 1.0.0 mlly: 1.5.0 pathe: 1.1.2 pkg-types: 1.0.3 - scule: 1.2.0 - semver: 7.5.4 - ufo: 1.3.2 + scule: 1.3.0 + semver: 7.6.0 + ufo: 1.4.0 unctx: 2.3.1 - unimport: 3.7.1(rollup@4.9.6) + unimport: 3.7.1(rollup@4.11.0) untyped: 1.4.2 transitivePeerDependencies: - rollup - supports-color - dev: false - /@nuxt/schema@3.9.3(rollup@4.9.6): - resolution: {integrity: sha512-pchkGBYdEJ9TAOoC5DKnLuAaFPjzgn2k0OUTr31QwbtHdTR3Q2Ua/oKsS1g9CPU7KRzSE5Vkf7ECE8zVydqF5A==} + /@nuxt/schema@3.10.2(rollup@4.11.0): + resolution: {integrity: sha512-hHVnMlPKYR6AVK889gvcYVgewB1885/KPZW6uYhVWkeKGc63JzNCILq8ykTqG/t8LpG1ZJpwxo5KtDk9nIZrfA==} engines: {node: ^14.18.0 || >=16.10.0} dependencies: '@nuxt/ui-templates': 1.3.1 @@ -1668,27 +1960,26 @@ packages: hookable: 5.5.3 pathe: 1.1.2 pkg-types: 1.0.3 - scule: 1.2.0 + scule: 1.3.0 std-env: 3.7.0 - ufo: 1.3.2 - unimport: 3.7.1(rollup@4.9.6) + ufo: 1.4.0 + unimport: 3.7.1(rollup@4.11.0) untyped: 1.4.2 transitivePeerDependencies: - rollup - supports-color - dev: false - /@nuxt/telemetry@2.5.3(rollup@4.9.6): + /@nuxt/telemetry@2.5.3(rollup@4.11.0): resolution: {integrity: sha512-Ghv2MgWbJcUM9G5Dy3oQP0cJkUwEgaiuQxEF61FXJdn0a69Q4StZEP/hLF0MWPM9m6EvAwI7orxkJHM7MrmtVg==} hasBin: true dependencies: - '@nuxt/kit': 3.9.3(rollup@4.9.6) + '@nuxt/kit': 3.10.2(rollup@4.11.0) ci-info: 4.0.0 consola: 3.2.3 create-require: 1.1.1 defu: 6.1.4 destr: 2.0.2 - dotenv: 16.4.1 + dotenv: 16.4.4 git-url-parse: 13.1.1 is-docker: 3.0.0 jiti: 1.21.0 @@ -1702,28 +1993,26 @@ packages: transitivePeerDependencies: - rollup - supports-color - dev: false /@nuxt/ui-templates@1.3.1: resolution: {integrity: sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA==} - dev: false - /@nuxt/vite-builder@3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@4.9.6)(sass@1.70.0)(stylelint@16.2.0)(typescript@5.3.3)(vue-tsc@1.8.27)(vue@3.4.15): - resolution: {integrity: sha512-HruOrxn0g6TS31j3jycJvGZ7pt3JNEbcXNByVh7YJwQx6ToFX8kPWRu4LPeMhrLYvZzeUr2w3iELBECFxbDmvw==} + /@nuxt/vite-builder@3.10.2(@types/node@20.11.19)(eslint@8.56.0)(rollup@4.11.0)(stylelint@16.2.1)(typescript@5.3.3)(vue-tsc@1.8.27)(vue@3.4.19): + resolution: {integrity: sha512-FFMfcb/o2ID42QqX7LyspjG+cbibTUVMVYDNbxXviIsj0VWt5trlSL4zU81HaLn8nAgGTozMYqV5SJgT4rp/Zg==} engines: {node: ^14.18.0 || >=16.10.0} peerDependencies: vue: ^3.3.4 dependencies: - '@nuxt/kit': 3.9.3(rollup@4.9.6) - '@rollup/plugin-replace': 5.0.5(rollup@4.9.6) - '@vitejs/plugin-vue': 5.0.3(vite@5.0.11)(vue@3.4.15) - '@vitejs/plugin-vue-jsx': 3.1.0(vite@5.0.11)(vue@3.4.15) - autoprefixer: 10.4.17(postcss@8.4.33) + '@nuxt/kit': 3.10.2(rollup@4.11.0) + '@rollup/plugin-replace': 5.0.5(rollup@4.11.0) + '@vitejs/plugin-vue': 5.0.4(vite@5.1.1)(vue@3.4.19) + '@vitejs/plugin-vue-jsx': 3.1.0(vite@5.1.1)(vue@3.4.19) + autoprefixer: 10.4.17(postcss@8.4.35) clear: 0.1.0 consola: 3.2.3 - cssnano: 6.0.3(postcss@8.4.33) + cssnano: 6.0.3(postcss@8.4.35) defu: 6.1.4 - esbuild: 0.19.12 + esbuild: 0.20.0 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 externality: 1.0.2 @@ -1731,22 +2020,23 @@ packages: get-port-please: 3.1.2 h3: 1.10.1 knitwork: 1.0.0 - magic-string: 0.30.5 + magic-string: 0.30.7 mlly: 1.5.0 ohash: 1.1.3 pathe: 1.1.2 perfect-debounce: 1.0.0 pkg-types: 1.0.3 - postcss: 8.4.33 - rollup-plugin-visualizer: 5.12.0(rollup@4.9.6) + postcss: 8.4.35 + rollup-plugin-visualizer: 5.12.0(rollup@4.11.0) std-env: 3.7.0 strip-literal: 2.0.0 - ufo: 1.3.2 - unplugin: 1.6.0 - vite: 5.0.11(@types/node@20.11.10)(sass@1.70.0) - vite-node: 1.2.2(@types/node@20.11.10)(sass@1.70.0) - vite-plugin-checker: 0.6.2(eslint@8.56.0)(stylelint@16.2.0)(typescript@5.3.3)(vite@5.0.11)(vue-tsc@1.8.27) - vue: 3.4.15(typescript@5.3.3) + ufo: 1.4.0 + unenv: 1.9.0 + unplugin: 1.7.1 + vite: 5.1.1(@types/node@20.11.19) + vite-node: 1.2.2(@types/node@20.11.19) + vite-plugin-checker: 0.6.4(eslint@8.56.0)(stylelint@16.2.1)(typescript@5.3.3)(vite@5.1.1)(vue-tsc@1.8.27) + vue: 3.4.19(typescript@5.3.3) vue-bundle-renderer: 2.0.0 transitivePeerDependencies: - '@types/node' @@ -1766,51 +2056,61 @@ packages: - vls - vti - vue-tsc + + /@nuxtjs/color-mode@3.3.2(rollup@4.11.0): + resolution: {integrity: sha512-BLpBfrYZngV2QWFQ4HNEFwAXa3Pno43Ge+2XHcZJTTa1Z4KzRLvOwku8yiyV3ovIaaXKGwduBdv3Z5Ocdp0/+g==} + dependencies: + '@nuxt/kit': 3.10.2(rollup@4.11.0) + lodash.template: 4.5.0 + pathe: 1.1.2 + transitivePeerDependencies: + - rollup + - supports-color dev: false - /@nuxtjs/i18n@8.0.0(rollup@4.9.6)(vue-router@4.2.5)(vue@3.4.15): - resolution: {integrity: sha512-h436bYKJ9a8NpLoY5kc5QyM6WTsuFU2IGtSErm+iRgWBinguLg/gp0cvgji35WgVlRUAhocYkxOqTSpZiUZyYA==} + /@nuxtjs/i18n@8.1.1(rollup@4.11.0)(vue@3.4.19): + resolution: {integrity: sha512-woq2gdXv+soVRc2yeE2pwWODiLnF7fx1eAEXi5Zx+StQDxHegAHTbKX/ZqcsW8VZ3mqlcpzfqN399KCZ9qXJ8g==} engines: {node: ^14.16.0 || >=16.11.0} dependencies: '@intlify/h3': 0.5.0 - '@intlify/shared': 9.9.0 - '@intlify/unplugin-vue-i18n': 2.0.0(rollup@4.9.6)(vue-i18n@9.9.0) + '@intlify/shared': 9.9.1 + '@intlify/unplugin-vue-i18n': 2.0.0(rollup@4.11.0)(vue-i18n@9.9.1) '@intlify/utils': 0.12.0 - '@miyaneee/rollup-plugin-json5': 1.2.0(rollup@4.9.6) - '@nuxt/kit': 3.9.3(rollup@4.9.6) - '@rollup/plugin-yaml': 4.1.2(rollup@4.9.6) - '@vue/compiler-sfc': 3.4.15 + '@miyaneee/rollup-plugin-json5': 1.2.0(rollup@4.11.0) + '@nuxt/kit': 3.10.2(rollup@4.11.0) + '@rollup/plugin-yaml': 4.1.2(rollup@4.11.0) + '@vue/compiler-sfc': 3.4.19 debug: 4.3.4 defu: 6.1.4 estree-walker: 3.0.3 is-https: 4.0.0 knitwork: 1.0.0 - magic-string: 0.30.5 + magic-string: 0.30.7 mlly: 1.5.0 pathe: 1.1.2 sucrase: 3.35.0 - ufo: 1.3.2 - unplugin: 1.6.0 - vue-i18n: 9.9.0(vue@3.4.15) - vue-i18n-routing: 1.2.0(vue-i18n@9.9.0)(vue-router@4.2.5)(vue@3.4.15) + ufo: 1.4.0 + unplugin: 1.7.1 + vue-i18n: 9.9.1(vue@3.4.19) + vue-router: 4.2.5(vue@3.4.19) transitivePeerDependencies: - - '@vue/composition-api' - petite-vue-i18n - rollup - supports-color - vue - vue-i18n-bridge - - vue-router dev: false - /@nuxtjs/mdc@0.3.2(rollup@4.9.6): - resolution: {integrity: sha512-iSepiwfNCh5dgO3ETqSdBHWdendRuRIZ7OsgIpEQXX2J9ubHK5XvRsK3DSUOqZZ8PHbRZ3eSr/9ZF9+IeZ0GFw==} + /@nuxtjs/mdc@0.5.0(rollup@4.11.0): + resolution: {integrity: sha512-480Ajc7o/YAl9b21btd0oRtVe/UjUWmVSEWauS+H+izwEGdGvJTVfZRdaiAXcXKl+UmUTpf+POel027sE9HAZQ==} dependencies: - '@nuxt/kit': 3.9.3(rollup@4.9.6) - '@types/hast': 3.0.3 + '@nuxt/kit': 3.10.2(rollup@4.11.0) + '@shikijs/transformers': 1.1.2 + '@types/hast': 3.0.4 '@types/mdast': 4.0.3 - '@vue/compiler-core': 3.4.15 + '@vue/compiler-core': 3.4.19 consola: 3.2.3 + debug: 4.3.4 defu: 6.1.4 destr: 2.0.2 detab: 3.0.2 @@ -1819,6 +2119,8 @@ packages: mdast-util-to-hast: 13.1.0 micromark-util-sanitize-uri: 2.0.0 ohash: 1.1.3 + parse5: 7.1.2 + pathe: 1.1.2 property-information: 6.4.1 rehype-external-links: 3.0.0 rehype-raw: 7.0.0 @@ -1830,10 +2132,9 @@ packages: remark-mdc: 3.0.2 remark-parse: 11.0.0 remark-rehype: 11.1.0 - scule: 1.2.0 - shikiji: 0.9.19 - shikiji-transformers: 0.9.19 - ufo: 1.3.2 + scule: 1.3.0 + shiki: 1.1.2 + ufo: 1.4.0 unified: 11.0.4 unist-builder: 4.0.0 unist-util-visit: 5.0.0 @@ -1849,7 +2150,6 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: false optional: true /@parcel/watcher-darwin-arm64@2.4.0: @@ -1858,7 +2158,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: false optional: true /@parcel/watcher-darwin-x64@2.4.0: @@ -1867,7 +2166,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: false optional: true /@parcel/watcher-freebsd-x64@2.4.0: @@ -1876,7 +2174,6 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: false optional: true /@parcel/watcher-linux-arm-glibc@2.4.0: @@ -1885,7 +2182,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: false optional: true /@parcel/watcher-linux-arm64-glibc@2.4.0: @@ -1894,7 +2190,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: false optional: true /@parcel/watcher-linux-arm64-musl@2.4.0: @@ -1903,7 +2198,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: false optional: true /@parcel/watcher-linux-x64-glibc@2.4.0: @@ -1912,7 +2206,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: false optional: true /@parcel/watcher-linux-x64-musl@2.4.0: @@ -1921,7 +2214,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: false optional: true /@parcel/watcher-wasm@2.4.0: @@ -1930,7 +2222,6 @@ packages: dependencies: is-glob: 4.0.3 micromatch: 4.0.5 - dev: false bundledDependencies: - napi-wasm @@ -1940,7 +2231,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: false optional: true /@parcel/watcher-win32-ia32@2.4.0: @@ -1949,7 +2239,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: false optional: true /@parcel/watcher-win32-x64@2.4.0: @@ -1958,7 +2247,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: false optional: true /@parcel/watcher@2.4.0: @@ -1982,7 +2270,6 @@ packages: '@parcel/watcher-win32-arm64': 2.4.0 '@parcel/watcher-win32-ia32': 2.4.0 '@parcel/watcher-win32-x64': 2.4.0 - dev: false /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -1990,19 +2277,44 @@ packages: requiresBuild: true optional: true - /@playwright/test@1.41.1: - resolution: {integrity: sha512-9g8EWTjiQ9yFBXc6HjCWe41msLpxEX0KhmfmPl9RPLJdfzL4F0lg2BdJ91O9azFdl11y1pmpwdjBiSxvqc+btw==} + /@playwright/test@1.41.2: + resolution: {integrity: sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg==} engines: {node: '>=16'} hasBin: true dependencies: - playwright: 1.41.1 + playwright: 1.41.2 dev: true /@polka/url@1.0.0-next.24: resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + + /@redocly/ajv@8.11.0: + resolution: {integrity: sha512-9GWx27t7xWhDIR02PA18nzBdLcKQRgc46xNQvjFkrYk4UOmvKhJ/dawwiX0cCOeetN5LcaaiqQbVOWYK62SGHw==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 dev: false - /@rollup/plugin-alias@5.1.0(rollup@4.9.6): + /@redocly/openapi-core@1.9.0: + resolution: {integrity: sha512-n8Uye07wx5ca59HPIxmfPYFnYW/L60i2uaBnOgmDXZIxA61xVJ48YTRSaSLUluoidfy9XwNJv0XX7Mz9uNnF2w==} + engines: {node: '>=14.19.0', npm: '>=7.0.0'} + dependencies: + '@redocly/ajv': 8.11.0 + colorette: 1.4.0 + js-levenshtein: 1.1.6 + js-yaml: 4.1.0 + lodash.isequal: 4.5.0 + minimatch: 5.1.6 + node-fetch: 2.7.0 + pluralize: 8.0.0 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - encoding + dev: false + + /@rollup/plugin-alias@5.1.0(rollup@4.11.0): resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2011,11 +2323,10 @@ packages: rollup: optional: true dependencies: - rollup: 4.9.6 + rollup: 4.11.0 slash: 4.0.0 - dev: false - /@rollup/plugin-commonjs@25.0.7(rollup@4.9.6): + /@rollup/plugin-commonjs@25.0.7(rollup@4.11.0): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2024,16 +2335,15 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.30.5 - rollup: 4.9.6 - dev: false + magic-string: 0.30.7 + rollup: 4.11.0 - /@rollup/plugin-inject@5.0.5(rollup@4.9.6): + /@rollup/plugin-inject@5.0.5(rollup@4.11.0): resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2042,13 +2352,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) estree-walker: 2.0.2 - magic-string: 0.30.5 - rollup: 4.9.6 - dev: false + magic-string: 0.30.7 + rollup: 4.11.0 - /@rollup/plugin-json@6.1.0(rollup@4.9.6): + /@rollup/plugin-json@6.1.0(rollup@4.11.0): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2057,11 +2366,10 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) - rollup: 4.9.6 - dev: false + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) + rollup: 4.11.0 - /@rollup/plugin-node-resolve@15.2.3(rollup@4.9.6): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.11.0): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2070,16 +2378,15 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.9.6 - dev: false + rollup: 4.11.0 - /@rollup/plugin-replace@5.0.5(rollup@4.9.6): + /@rollup/plugin-replace@5.0.5(rollup@4.11.0): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2088,12 +2395,11 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) - magic-string: 0.30.5 - rollup: 4.9.6 - dev: false + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) + magic-string: 0.30.7 + rollup: 4.11.0 - /@rollup/plugin-terser@0.4.4(rollup@4.9.6): + /@rollup/plugin-terser@0.4.4(rollup@4.11.0): resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2102,13 +2408,12 @@ packages: rollup: optional: true dependencies: - rollup: 4.9.6 + rollup: 4.11.0 serialize-javascript: 6.0.2 smob: 1.4.1 - terser: 5.27.0 - dev: false + terser: 5.27.1 - /@rollup/plugin-wasm@6.2.2(rollup@4.9.6): + /@rollup/plugin-wasm@6.2.2(rollup@4.11.0): resolution: {integrity: sha512-gpC4R1G9Ni92ZIRTexqbhX7U+9estZrbhP+9SRb0DW9xpB9g7j34r+J2hqrcW/lRI7dJaU84MxZM0Rt82tqYPQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2117,11 +2422,10 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) - rollup: 4.9.6 - dev: false + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) + rollup: 4.11.0 - /@rollup/plugin-yaml@4.1.2(rollup@4.9.6): + /@rollup/plugin-yaml@4.1.2(rollup@4.11.0): resolution: {integrity: sha512-RpupciIeZMUqhgFE97ba0s98mOFS7CWzN3EJNhJkqSv9XLlWYtwVdtE6cDw6ASOF/sZVFS7kRJXftaqM2Vakdw==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2130,9 +2434,9 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) js-yaml: 4.1.0 - rollup: 4.9.6 + rollup: 4.11.0 tosource: 2.0.0-alpha.3 dev: false @@ -2142,9 +2446,8 @@ packages: dependencies: estree-walker: 2.0.2 picomatch: 2.3.1 - dev: false - /@rollup/pluginutils@5.1.0(rollup@4.9.6): + /@rollup/pluginutils@5.1.0(rollup@4.11.0): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2156,205 +2459,1299 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.9.6 - dev: false + rollup: 4.11.0 - /@rollup/rollup-android-arm-eabi@4.9.6: - resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} + /@rollup/rollup-android-arm-eabi@4.11.0: + resolution: {integrity: sha512-BV+u2QSfK3i1o6FucqJh5IK9cjAU6icjFFhvknzFgu472jzl0bBojfDAkJLBEsHFMo+YZg6rthBvBBt8z12IBQ==} cpu: [arm] os: [android] requiresBuild: true - dev: false optional: true - /@rollup/rollup-android-arm64@4.9.6: - resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} + /@rollup/rollup-android-arm64@4.11.0: + resolution: {integrity: sha512-0ij3iw7sT5jbcdXofWO2NqDNjSVVsf6itcAkV2I6Xsq4+6wjW1A8rViVB67TfBEan7PV2kbLzT8rhOVWLI2YXw==} cpu: [arm64] os: [android] requiresBuild: true - dev: false optional: true - /@rollup/rollup-darwin-arm64@4.9.6: - resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} + /@rollup/rollup-darwin-arm64@4.11.0: + resolution: {integrity: sha512-yPLs6RbbBMupArf6qv1UDk6dzZvlH66z6NLYEwqTU0VHtss1wkI4UYeeMS7TVj5QRVvaNAWYKP0TD/MOeZ76Zg==} cpu: [arm64] os: [darwin] requiresBuild: true - dev: false optional: true - /@rollup/rollup-darwin-x64@4.9.6: - resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} + /@rollup/rollup-darwin-x64@4.11.0: + resolution: {integrity: sha512-OvqIgwaGAwnASzXaZEeoJY3RltOFg+WUbdkdfoluh2iqatd090UeOG3A/h0wNZmE93dDew9tAtXgm3/+U/B6bw==} cpu: [x64] os: [darwin] requiresBuild: true - dev: false optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.9.6: - resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.11.0: + resolution: {integrity: sha512-X17s4hZK3QbRmdAuLd2EE+qwwxL8JxyVupEqAkxKPa/IgX49ZO+vf0ka69gIKsaYeo6c1CuwY3k8trfDtZ9dFg==} cpu: [arm] os: [linux] requiresBuild: true - dev: false optional: true - /@rollup/rollup-linux-arm64-gnu@4.9.6: - resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} + /@rollup/rollup-linux-arm64-gnu@4.11.0: + resolution: {integrity: sha512-673Lu9EJwxVB9NfYeA4AdNu0FOHz7g9t6N1DmT7bZPn1u6bTF+oZjj+fuxUcrfxWXE0r2jxl5QYMa9cUOj9NFg==} cpu: [arm64] os: [linux] requiresBuild: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.11.0: + resolution: {integrity: sha512-yFW2msTAQNpPJaMmh2NpRalr1KXI7ZUjlN6dY/FhWlOclMrZezm5GIhy3cP4Ts2rIAC+IPLAjNibjp1BsxCVGg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.11.0: + resolution: {integrity: sha512-kKT9XIuhbvYgiA3cPAGntvrBgzhWkGpBMzuk1V12Xuoqg7CI41chye4HU0vLJnGf9MiZzfNh4I7StPeOzOWJfA==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.11.0: + resolution: {integrity: sha512-6q4ESWlyTO+erp1PSCmASac+ixaDv11dBk1fqyIuvIUc/CmRAX2Zk+2qK1FGo5q7kyDcjHCFVwgGFCGIZGVwCA==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.11.0: + resolution: {integrity: sha512-vIAQUmXeMLmaDN78HSE4Kh6xqof2e3TJUKr+LPqXWU4NYNON0MDN9h2+t4KHrPAQNmU3w1GxBQ/n01PaWFwa5w==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.11.0: + resolution: {integrity: sha512-LVXo9dDTGPr0nezMdqa1hK4JeoMZ02nstUxGYY/sMIDtTYlli1ZxTXBYAz3vzuuvKO4X6NBETciIh7N9+abT1g==} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.11.0: + resolution: {integrity: sha512-xZVt6K70Gr3I7nUhug2dN6VRR1ibot3rXqXS3wo+8JP64t7djc3lBFyqO4GiVrhNaAIhUCJtwQ/20dr0h0thmQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.11.0: + resolution: {integrity: sha512-f3I7h9oTg79UitEco9/2bzwdciYkWr8pITs3meSDSlr1TdvQ7IxkQaaYN2YqZXX5uZhiYL+VuYDmHwNzhx+HOg==} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + + /@shikijs/core@1.1.2: + resolution: {integrity: sha512-ERVzNQz88ZkDqUpWeC57Kp+Kmx5RjqeDBR1M8AGWGom4yrkITiTfXCGmjchlDSw12MhDTuPYR4HVFW8uT61RaQ==} + dev: false + + /@shikijs/transformers@1.1.2: + resolution: {integrity: sha512-tldkUMW7RBkU2F6eXbiRMw3ja+hQer1EjwhD2NGOv6K0pgZdVp3JKjU8uisRtg65tyBqrVHq7zlLHVk7EKmUZA==} + dependencies: + shiki: 1.1.2 + dev: false + + /@sigstore/bundle@2.2.0: + resolution: {integrity: sha512-5VI58qgNs76RDrwXNhpmyN/jKpq9evV/7f1XrcqcAfvxDl5SeVY/I5Rmfe96ULAV7/FK5dge9RBKGBJPhL1WsQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.3.0 + + /@sigstore/core@1.0.0: + resolution: {integrity: sha512-dW2qjbWLRKGu6MIDUTBuJwXCnR8zivcSpf5inUzk7y84zqy/dji0/uahppoIgMoKeR+6pUZucrwHfkQQtiG9Rw==} + engines: {node: ^16.14.0 || >=18.0.0} + + /@sigstore/protobuf-specs@0.3.0: + resolution: {integrity: sha512-zxiQ66JFOjVvP9hbhGj/F/qNdsZfkGb/dVXSanNRNuAzMlr4MC95voPUBX8//ZNnmv3uSYzdfR/JSkrgvZTGxA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + /@sigstore/sign@2.2.3: + resolution: {integrity: sha512-LqlA+ffyN02yC7RKszCdMTS6bldZnIodiox+IkT8B2f8oRYXCB3LQ9roXeiEL21m64CVH1wyveYAORfD65WoSw==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 2.2.0 + '@sigstore/core': 1.0.0 + '@sigstore/protobuf-specs': 0.3.0 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + + /@sigstore/tuf@2.3.1: + resolution: {integrity: sha512-9Iv40z652td/QbV0o5n/x25H9w6IYRt2pIGbTX55yFDYlApDQn/6YZomjz6+KBx69rXHLzHcbtTS586mDdFD+Q==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.3.0 + tuf-js: 2.2.0 + transitivePeerDependencies: + - supports-color + + /@sigstore/verify@1.1.0: + resolution: {integrity: sha512-1fTqnqyTBWvV7cftUUFtDcHPdSox0N3Ub7C0lRyReYx4zZUlNTZjCV+HPy4Lre+r45dV7Qx5JLKvqqsgxuyYfg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 2.2.0 + '@sigstore/core': 1.0.0 + '@sigstore/protobuf-specs': 0.3.0 + + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: false + + /@sindresorhus/merge-streams@2.2.1: + resolution: {integrity: sha512-255V7MMIKw6aQ43Wbqp9HZ+VHn6acddERTLiiLnlcPLU9PdTq9Aijl12oklAgUEblLWye+vHLzmqBx6f2TGcZw==} + engines: {node: '>=18'} + + /@socket.io/component-emitter@3.1.0: + resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + dev: false + + /@stefanprobst/lib@0.1.4: + resolution: {integrity: sha512-zRW3DbXP7G49g+a66orQ3D5KqsWb5ejm32s4SXdrRHdLCNhp/bLY9jNY6g5GwlvYbiHQf8pDnP/JWYABcx01Zw==} + engines: {node: '>=18', pnpm: '>=8'} + dev: false + + /@stefanprobst/netlify-cms-oauth-client@0.4.0: + resolution: {integrity: sha512-GUpm8LQgDXYaE7mzlDHHDFgFTwdWmCSYPb2PbpNc8S+FsXDGXMqNdnla5GNPNnCjPK/sAIGN1KFfW4FmYaUYmQ==} + engines: {node: '>=18', pnpm: '>=8'} + dependencies: + '@stefanprobst/lib': 0.1.4 + strip-indent: 4.0.0 + dev: false + + /@stefanprobst/openapi-client@0.0.3(openapi-typescript@7.0.0-next.7): + resolution: {integrity: sha512-RAJJhpdJTd3591oexcd81bx5KQjDr2ikMqwgRO47fCzcj1A6spSlQFYTt6Ic2KUc0LLo03VLqs7h2Aj656V0cg==} + engines: {node: '>=18', pnpm: '>=8'} + peerDependencies: + openapi-typescript: ^7.0.0-next.2 + dependencies: + '@acdh-oeaw/lib': 0.1.7 + openapi-typescript: 7.0.0-next.7(typescript@5.3.3) + openapi-typescript-helpers: 0.0.4 + dev: false + + /@tailwindcss/typography@0.5.10(tailwindcss@3.4.1): + resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.1 + dev: true + + /@tanstack/eslint-plugin-query@5.20.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-oIp7Wh90KHOm1FKCvcv87fiD2H96xo/crFrlhbvqBzR2f0tMEGOK/ANKMGNFQprd6BT6lyZhQPlOEkFdezsjIg==} + peerDependencies: + eslint: ^8.0.0 + dependencies: + '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@tanstack/match-sorter-utils@8.11.8: + resolution: {integrity: sha512-3VPh0SYMGCa5dWQEqNab87UpCMk+ANWHDP4ALs5PeEW9EpfTAbrezzaOk/OiM52IESViefkoAOYuxdoa04p6aA==} + engines: {node: '>=12'} + dependencies: + remove-accents: 0.4.2 + dev: false + + /@tanstack/query-core@5.21.2: + resolution: {integrity: sha512-jg7OcDG44oLT3uuGQQ9BM65ZBIdAq9xNZXPEk7Gr6w1oM1wo2/95H3dPDjLVs0yZKwrmE/ORUOC2Pyi1sp2fDA==} + dev: false + + /@tanstack/table-core@8.12.0: + resolution: {integrity: sha512-cq/ylWVrOwixmwNXQjgZaQw1Izf7+nPxjczum7paAnMtwPg1S2qRAJU+Jb8rEBUWm69voC/zcChmePlk2hc6ug==} + engines: {node: '>=12'} + dev: false + + /@tanstack/vue-query@5.21.2(vue@3.4.19): + resolution: {integrity: sha512-ojgcXy08oNz7HhQTaQyxL861cFMPoVmXPUeE3zaxso3ecFSBuztvmaGl/B+OkluOxVWBsPf3fB2RPO8HJfRPog==} + peerDependencies: + '@vue/composition-api': ^1.1.2 + vue: ^2.6.0 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + '@tanstack/match-sorter-utils': 8.11.8 + '@tanstack/query-core': 5.21.2 + '@vue/devtools-api': 6.6.1 + vue: 3.4.19(typescript@5.3.3) + vue-demi: 0.14.7(vue@3.4.19) + dev: false + + /@tanstack/vue-table@8.12.0(vue@3.4.19): + resolution: {integrity: sha512-iQ44iv6EROmL3wrM9k1Z+cLXvKM1StgT3hY/ewRRTTVBitekmb6OnXq+/2CiEdkqTkQTlpIZ1i/VZpYqGINuXg==} + engines: {node: '>=12'} + peerDependencies: + vue: ^3.2.33 + dependencies: + '@tanstack/table-core': 8.12.0 + vue: 3.4.19(typescript@5.3.3) + dev: false + + /@trysound/sax@0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + requiresBuild: true + + /@tufjs/canonical-json@2.0.0: + resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} + engines: {node: ^16.14.0 || >=18.0.0} + + /@tufjs/models@2.0.0: + resolution: {integrity: sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@tufjs/canonical-json': 2.0.0 + minimatch: 9.0.3 + + /@turf/along@6.5.0: + resolution: {integrity: sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==} + dependencies: + '@turf/bearing': 6.5.0 + '@turf/destination': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/angle@6.5.0: + resolution: {integrity: sha512-4pXMbWhFofJJAOvTMCns6N4C8CMd5Ih4O2jSAG9b3dDHakj3O4yN1+Zbm+NUei+eVEZ9gFeVp9svE3aMDenIkw==} + dependencies: + '@turf/bearing': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/rhumb-bearing': 6.5.0 + dev: false + + /@turf/area@6.5.0: + resolution: {integrity: sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/bbox-clip@6.5.0: + resolution: {integrity: sha512-F6PaIRF8WMp8EmgU/Ke5B1Y6/pia14UAYB5TiBC668w5rVVjy5L8rTm/m2lEkkDMHlzoP9vNY4pxpNthE7rLcQ==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/bbox-polygon@6.5.0: + resolution: {integrity: sha512-+/r0NyL1lOG3zKZmmf6L8ommU07HliP4dgYToMoTxqzsWzyLjaj/OzgQ8rBmv703WJX+aS6yCmLuIhYqyufyuw==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@turf/bbox@6.5.0: + resolution: {integrity: sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/bearing@6.5.0: + resolution: {integrity: sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/bezier-spline@6.5.0: + resolution: {integrity: sha512-vokPaurTd4PF96rRgGVm6zYYC5r1u98ZsG+wZEv9y3kJTuJRX/O3xIY2QnTGTdbVmAJN1ouOsD0RoZYaVoXORQ==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/boolean-clockwise@6.5.0: + resolution: {integrity: sha512-45+C7LC5RMbRWrxh3Z0Eihsc8db1VGBO5d9BLTOAwU4jR6SgsunTfRWR16X7JUwIDYlCVEmnjcXJNi/kIU3VIw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/boolean-contains@6.5.0: + resolution: {integrity: sha512-4m8cJpbw+YQcKVGi8y0cHhBUnYT+QRfx6wzM4GI1IdtYH3p4oh/DOBJKrepQyiDzFDaNIjxuWXBh0ai1zVwOQQ==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/boolean-point-in-polygon': 6.5.0 + '@turf/boolean-point-on-line': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/boolean-crosses@6.5.0: + resolution: {integrity: sha512-gvshbTPhAHporTlQwBJqyfW+2yV8q/mOTxG6PzRVl6ARsqNoqYQWkd4MLug7OmAqVyBzLK3201uAeBjxbGw0Ng==} + dependencies: + '@turf/boolean-point-in-polygon': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/line-intersect': 6.5.0 + '@turf/polygon-to-line': 6.5.0 + dev: false + + /@turf/boolean-disjoint@6.5.0: + resolution: {integrity: sha512-rZ2ozlrRLIAGo2bjQ/ZUu4oZ/+ZjGvLkN5CKXSKBcu6xFO6k2bgqeM8a1836tAW+Pqp/ZFsTA5fZHsJZvP2D5g==} + dependencies: + '@turf/boolean-point-in-polygon': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/line-intersect': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/polygon-to-line': 6.5.0 + dev: false + + /@turf/boolean-equal@6.5.0: + resolution: {integrity: sha512-cY0M3yoLC26mhAnjv1gyYNQjn7wxIXmL2hBmI/qs8g5uKuC2hRWi13ydufE3k4x0aNRjFGlg41fjoYLwaVF+9Q==} + dependencies: + '@turf/clean-coords': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + geojson-equality: 0.1.6 + dev: false + + /@turf/boolean-intersects@6.5.0: + resolution: {integrity: sha512-nIxkizjRdjKCYFQMnml6cjPsDOBCThrt+nkqtSEcxkKMhAQj5OO7o2CecioNTaX8EayqwMGVKcsz27oP4mKPTw==} + dependencies: + '@turf/boolean-disjoint': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/boolean-overlap@6.5.0: + resolution: {integrity: sha512-8btMIdnbXVWUa1M7D4shyaSGxLRw6NjMcqKBcsTXcZdnaixl22k7ar7BvIzkaRYN3SFECk9VGXfLncNS3ckQUw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/line-intersect': 6.5.0 + '@turf/line-overlap': 6.5.0 + '@turf/meta': 6.5.0 + geojson-equality: 0.1.6 + dev: false + + /@turf/boolean-parallel@6.5.0: + resolution: {integrity: sha512-aSHJsr1nq9e5TthZGZ9CZYeXklJyRgR5kCLm5X4urz7+MotMOp/LsGOsvKvK9NeUl9+8OUmfMn8EFTT8LkcvIQ==} + dependencies: + '@turf/clean-coords': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/line-segment': 6.5.0 + '@turf/rhumb-bearing': 6.5.0 + dev: false + + /@turf/boolean-point-in-polygon@6.5.0: + resolution: {integrity: sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/boolean-point-on-line@6.5.0: + resolution: {integrity: sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/boolean-within@6.5.0: + resolution: {integrity: sha512-YQB3oU18Inx35C/LU930D36RAVe7LDXk1kWsQ8mLmuqYn9YdPsDQTMTkLJMhoQ8EbN7QTdy333xRQ4MYgToteQ==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/boolean-point-in-polygon': 6.5.0 + '@turf/boolean-point-on-line': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/buffer@6.5.0: + resolution: {integrity: sha512-qeX4N6+PPWbKqp1AVkBVWFerGjMYMUyencwfnkCesoznU6qvfugFHNAngNqIBVnJjZ5n8IFyOf+akcxnrt9sNg==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/center': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/projection': 6.5.0 + d3-geo: 1.7.1 + turf-jsts: 1.2.3 + dev: false + + /@turf/center-mean@6.5.0: + resolution: {integrity: sha512-AAX6f4bVn12pTVrMUiB9KrnV94BgeBKpyg3YpfnEbBpkN/znfVhL8dG8IxMAxAoSZ61Zt9WLY34HfENveuOZ7Q==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/center-median@6.5.0: + resolution: {integrity: sha512-dT8Ndu5CiZkPrj15PBvslpuf01ky41DEYEPxS01LOxp5HOUHXp1oJxsPxvc+i/wK4BwccPNzU1vzJ0S4emd1KQ==} + dependencies: + '@turf/center-mean': 6.5.0 + '@turf/centroid': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/center-of-mass@6.5.0: + resolution: {integrity: sha512-EWrriU6LraOfPN7m1jZi+1NLTKNkuIsGLZc2+Y8zbGruvUW+QV7K0nhf7iZWutlxHXTBqEXHbKue/o79IumAsQ==} + dependencies: + '@turf/centroid': 6.5.0 + '@turf/convex': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/center@6.5.0: + resolution: {integrity: sha512-T8KtMTfSATWcAX088rEDKjyvQCBkUsLnK/Txb6/8WUXIeOZyHu42G7MkdkHRoHtwieLdduDdmPLFyTdG5/e7ZQ==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/helpers': 6.5.0 + dev: false + + /@turf/centroid@6.5.0: + resolution: {integrity: sha512-MwE1oq5E3isewPprEClbfU5pXljIK/GUOMbn22UM3IFPDJX0KeoyLNwghszkdmFp/qMGL/M13MMWvU+GNLXP/A==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/circle@6.5.0: + resolution: {integrity: sha512-oU1+Kq9DgRnoSbWFHKnnUdTmtcRUMmHoV9DjTXu9vOLNV5OWtAAh1VZ+mzsioGGzoDNT/V5igbFOkMfBQc0B6A==} + dependencies: + '@turf/destination': 6.5.0 + '@turf/helpers': 6.5.0 + dev: false + + /@turf/clean-coords@6.5.0: + resolution: {integrity: sha512-EMX7gyZz0WTH/ET7xV8MyrExywfm9qUi0/MY89yNffzGIEHuFfqwhcCqZ8O00rZIPZHUTxpmsxQSTfzJJA1CPw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/clone@6.5.0: + resolution: {integrity: sha512-mzVtTFj/QycXOn6ig+annKrM6ZlimreKYz6f/GSERytOpgzodbQyOgkfwru100O1KQhhjSudKK4DsQ0oyi9cTw==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@turf/clusters-dbscan@6.5.0: + resolution: {integrity: sha512-SxZEE4kADU9DqLRiT53QZBBhu8EP9skviSyl+FGj08Y01xfICM/RR9ACUdM0aEQimhpu+ZpRVcUK+2jtiCGrYQ==} + dependencies: + '@turf/clone': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + density-clustering: 1.3.0 + dev: false + + /@turf/clusters-kmeans@6.5.0: + resolution: {integrity: sha512-DwacD5+YO8kwDPKaXwT9DV46tMBVNsbi1IzdajZu1JDSWoN7yc7N9Qt88oi+p30583O0UPVkAK+A10WAQv4mUw==} + dependencies: + '@turf/clone': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + skmeans: 0.9.7 + dev: false + + /@turf/clusters@6.5.0: + resolution: {integrity: sha512-Y6gfnTJzQ1hdLfCsyd5zApNbfLIxYEpmDibHUqR5z03Lpe02pa78JtgrgUNt1seeO/aJ4TG1NLN8V5gOrHk04g==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/collect@6.5.0: + resolution: {integrity: sha512-4dN/T6LNnRg099m97BJeOcTA5fSI8cu87Ydgfibewd2KQwBexO69AnjEFqfPX3Wj+Zvisj1uAVIZbPmSSrZkjg==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/boolean-point-in-polygon': 6.5.0 + '@turf/helpers': 6.5.0 + rbush: 2.0.2 + dev: false + + /@turf/combine@6.5.0: + resolution: {integrity: sha512-Q8EIC4OtAcHiJB3C4R+FpB4LANiT90t17uOd851qkM2/o6m39bfN5Mv0PWqMZIHWrrosZqRqoY9dJnzz/rJxYQ==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/concave@6.5.0: + resolution: {integrity: sha512-I/sUmUC8TC5h/E2vPwxVht+nRt+TnXIPRoztDFvS8/Y0+cBDple9inLSo9nnPXMXidrBlGXZ9vQx/BjZUJgsRQ==} + dependencies: + '@turf/clone': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/tin': 6.5.0 + topojson-client: 3.1.0 + topojson-server: 3.0.1 + dev: false + + /@turf/convex@6.5.0: + resolution: {integrity: sha512-x7ZwC5z7PJB0SBwNh7JCeCNx7Iu+QSrH7fYgK0RhhNop13TqUlvHMirMLRgf2db1DqUetrAO2qHJeIuasquUWg==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + concaveman: 1.2.1 + dev: false + + /@turf/destination@6.5.0: + resolution: {integrity: sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/difference@6.5.0: + resolution: {integrity: sha512-l8iR5uJqvI+5Fs6leNbhPY5t/a3vipUF/3AeVLpwPQcgmedNXyheYuy07PcMGH5Jdpi5gItOiTqwiU/bUH4b3A==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + polygon-clipping: 0.15.7 + dev: false + + /@turf/dissolve@6.5.0: + resolution: {integrity: sha512-WBVbpm9zLTp0Bl9CE35NomTaOL1c4TQCtEoO43YaAhNEWJOOIhZMFJyr8mbvYruKl817KinT3x7aYjjCMjTAsQ==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + polygon-clipping: 0.15.7 + dev: false + + /@turf/distance-weight@6.5.0: + resolution: {integrity: sha512-a8qBKkgVNvPKBfZfEJZnC3DV7dfIsC3UIdpRci/iap/wZLH41EmS90nM+BokAJflUHYy8PqE44wySGWHN1FXrQ==} + dependencies: + '@turf/centroid': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/distance@6.5.0: + resolution: {integrity: sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/ellipse@6.5.0: + resolution: {integrity: sha512-kuXtwFviw/JqnyJXF1mrR/cb496zDTSbGKtSiolWMNImYzGGkbsAsFTjwJYgD7+4FixHjp0uQPzo70KDf3AIBw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/rhumb-destination': 6.5.0 + '@turf/transform-rotate': 6.5.0 + dev: false + + /@turf/envelope@6.5.0: + resolution: {integrity: sha512-9Z+FnBWvOGOU4X+fMZxYFs1HjFlkKqsddLuMknRaqcJd6t+NIv5DWvPtDL8ATD2GEExYDiFLwMdckfr1yqJgHA==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/bbox-polygon': 6.5.0 + '@turf/helpers': 6.5.0 + dev: false + + /@turf/explode@6.5.0: + resolution: {integrity: sha512-6cSvMrnHm2qAsace6pw9cDmK2buAlw8+tjeJVXMfMyY+w7ZUi1rprWMsY92J7s2Dar63Bv09n56/1V7+tcj52Q==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/flatten@6.5.0: + resolution: {integrity: sha512-IBZVwoNLVNT6U/bcUUllubgElzpMsNoCw8tLqBw6dfYg9ObGmpEjf9BIYLr7a2Yn5ZR4l7YIj2T7kD5uJjZADQ==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/flip@6.5.0: + resolution: {integrity: sha512-oyikJFNjt2LmIXQqgOGLvt70RgE2lyzPMloYWM7OR5oIFGRiBvqVD2hA6MNw6JewIm30fWZ8DQJw1NHXJTJPbg==} + dependencies: + '@turf/clone': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/great-circle@6.5.0: + resolution: {integrity: sha512-7ovyi3HaKOXdFyN7yy1yOMa8IyOvV46RC1QOQTT+RYUN8ke10eyqExwBpL9RFUPvlpoTzoYbM/+lWPogQlFncg==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/helpers@6.5.0: + resolution: {integrity: sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==} + dev: false + + /@turf/hex-grid@6.5.0: + resolution: {integrity: sha512-Ln3tc2tgZT8etDOldgc6e741Smg1CsMKAz1/Mlel+MEL5Ynv2mhx3m0q4J9IB1F3a4MNjDeVvm8drAaf9SF33g==} + dependencies: + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/intersect': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/interpolate@6.5.0: + resolution: {integrity: sha512-LSH5fMeiGyuDZ4WrDJNgh81d2DnNDUVJtuFryJFup8PV8jbs46lQGfI3r1DJ2p1IlEJIz3pmAZYeTfMMoeeohw==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/centroid': 6.5.0 + '@turf/clone': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/hex-grid': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/point-grid': 6.5.0 + '@turf/square-grid': 6.5.0 + '@turf/triangle-grid': 6.5.0 + dev: false + + /@turf/intersect@6.5.0: + resolution: {integrity: sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + polygon-clipping: 0.15.7 + dev: false + + /@turf/invariant@6.5.0: + resolution: {integrity: sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@turf/isobands@6.5.0: + resolution: {integrity: sha512-4h6sjBPhRwMVuFaVBv70YB7eGz+iw0bhPRnp+8JBdX1UPJSXhoi/ZF2rACemRUr0HkdVB/a1r9gC32vn5IAEkw==} + dependencies: + '@turf/area': 6.5.0 + '@turf/bbox': 6.5.0 + '@turf/boolean-point-in-polygon': 6.5.0 + '@turf/explode': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + object-assign: 4.1.1 + dev: false + + /@turf/isolines@6.5.0: + resolution: {integrity: sha512-6ElhiLCopxWlv4tPoxiCzASWt/jMRvmp6mRYrpzOm3EUl75OhHKa/Pu6Y9nWtCMmVC/RcWtiiweUocbPLZLm0A==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + object-assign: 4.1.1 + dev: false + + /@turf/kinks@6.5.0: + resolution: {integrity: sha512-ViCngdPt1eEL7hYUHR2eHR662GvCgTc35ZJFaNR6kRtr6D8plLaDju0FILeFFWSc+o8e3fwxZEJKmFj9IzPiIQ==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@turf/length@6.5.0: + resolution: {integrity: sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==} + dependencies: + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/line-arc@6.5.0: + resolution: {integrity: sha512-I6c+V6mIyEwbtg9P9zSFF89T7QPe1DPTG3MJJ6Cm1MrAY0MdejwQKOpsvNl8LDU2ekHOlz2kHpPVR7VJsoMllA==} + dependencies: + '@turf/circle': 6.5.0 + '@turf/destination': 6.5.0 + '@turf/helpers': 6.5.0 + dev: false + + /@turf/line-chunk@6.5.0: + resolution: {integrity: sha512-i1FGE6YJaaYa+IJesTfyRRQZP31QouS+wh/pa6O3CC0q4T7LtHigyBSYjrbjSLfn2EVPYGlPCMFEqNWCOkC6zg==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/length': 6.5.0 + '@turf/line-slice-along': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/line-intersect@6.5.0: + resolution: {integrity: sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/line-segment': 6.5.0 + '@turf/meta': 6.5.0 + geojson-rbush: 3.2.0 + dev: false + + /@turf/line-offset@6.5.0: + resolution: {integrity: sha512-CEXZbKgyz8r72qRvPchK0dxqsq8IQBdH275FE6o4MrBkzMcoZsfSjghtXzKaz9vvro+HfIXal0sTk2mqV1lQTw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/line-overlap@6.5.0: + resolution: {integrity: sha512-xHOaWLd0hkaC/1OLcStCpfq55lPHpPNadZySDXYiYjEz5HXr1oKmtMYpn0wGizsLwrOixRdEp+j7bL8dPt4ojQ==} + dependencies: + '@turf/boolean-point-on-line': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/line-segment': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/nearest-point-on-line': 6.5.0 + deep-equal: 1.1.2 + geojson-rbush: 3.2.0 + dev: false + + /@turf/line-segment@6.5.0: + resolution: {integrity: sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/line-slice-along@6.5.0: + resolution: {integrity: sha512-KHJRU6KpHrAj+BTgTNqby6VCTnDzG6a1sJx/I3hNvqMBLvWVA2IrkR9L9DtsQsVY63IBwVdQDqiwCuZLDQh4Ng==} + dependencies: + '@turf/bearing': 6.5.0 + '@turf/destination': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + dev: false + + /@turf/line-slice@6.5.0: + resolution: {integrity: sha512-vDqJxve9tBHhOaVVFXqVjF5qDzGtKWviyjbyi2QnSnxyFAmLlLnBfMX8TLQCAf2GxHibB95RO5FBE6I2KVPRuw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/nearest-point-on-line': 6.5.0 + dev: false + + /@turf/line-split@6.5.0: + resolution: {integrity: sha512-/rwUMVr9OI2ccJjw7/6eTN53URtGThNSD5I0GgxyFXMtxWiloRJ9MTff8jBbtPWrRka/Sh2GkwucVRAEakx9Sw==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/line-intersect': 6.5.0 + '@turf/line-segment': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/nearest-point-on-line': 6.5.0 + '@turf/square': 6.5.0 + '@turf/truncate': 6.5.0 + geojson-rbush: 3.2.0 + dev: false + + /@turf/line-to-polygon@6.5.0: + resolution: {integrity: sha512-qYBuRCJJL8Gx27OwCD1TMijM/9XjRgXH/m/TyuND4OXedBpIWlK5VbTIO2gJ8OCfznBBddpjiObLBrkuxTpN4Q==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/clone': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/mask@6.5.0: + resolution: {integrity: sha512-RQha4aU8LpBrmrkH8CPaaoAfk0Egj5OuXtv6HuCQnHeGNOQt3TQVibTA3Sh4iduq4EPxnZfDjgsOeKtrCA19lg==} + dependencies: + '@turf/helpers': 6.5.0 + polygon-clipping: 0.15.7 + dev: false + + /@turf/meta@6.5.0: + resolution: {integrity: sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@turf/midpoint@6.5.0: + resolution: {integrity: sha512-MyTzV44IwmVI6ec9fB2OgZ53JGNlgOpaYl9ArKoF49rXpL84F9rNATndbe0+MQIhdkw8IlzA6xVP4lZzfMNVCw==} + dependencies: + '@turf/bearing': 6.5.0 + '@turf/destination': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + dev: false + + /@turf/moran-index@6.5.0: + resolution: {integrity: sha512-ItsnhrU2XYtTtTudrM8so4afBCYWNaB0Mfy28NZwLjB5jWuAsvyV+YW+J88+neK/ougKMTawkmjQqodNJaBeLQ==} + dependencies: + '@turf/distance-weight': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/nearest-point-on-line@6.5.0: + resolution: {integrity: sha512-WthrvddddvmymnC+Vf7BrkHGbDOUu6Z3/6bFYUGv1kxw8tiZ6n83/VG6kHz4poHOfS0RaNflzXSkmCi64fLBlg==} + dependencies: + '@turf/bearing': 6.5.0 + '@turf/destination': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/line-intersect': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/nearest-point-to-line@6.5.0: + resolution: {integrity: sha512-PXV7cN0BVzUZdjj6oeb/ESnzXSfWmEMrsfZSDRgqyZ9ytdiIj/eRsnOXLR13LkTdXVOJYDBuf7xt1mLhM4p6+Q==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/point-to-line-distance': 6.5.0 + object-assign: 4.1.1 + dev: false + + /@turf/nearest-point@6.5.0: + resolution: {integrity: sha512-fguV09QxilZv/p94s8SMsXILIAMiaXI5PATq9d7YWijLxWUj6Q/r43kxyoi78Zmwwh1Zfqz9w+bCYUAxZ5+euA==} + dependencies: + '@turf/clone': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/planepoint@6.5.0: + resolution: {integrity: sha512-R3AahA6DUvtFbka1kcJHqZ7DMHmPXDEQpbU5WaglNn7NaCQg9HB0XM0ZfqWcd5u92YXV+Gg8QhC8x5XojfcM4Q==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/point-grid@6.5.0: + resolution: {integrity: sha512-Iq38lFokNNtQJnOj/RBKmyt6dlof0yhaHEDELaWHuECm1lIZLY3ZbVMwbs+nXkwTAHjKfS/OtMheUBkw+ee49w==} + dependencies: + '@turf/boolean-within': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/point-on-feature@6.5.0: + resolution: {integrity: sha512-bDpuIlvugJhfcF/0awAQ+QI6Om1Y1FFYE8Y/YdxGRongivix850dTeXCo0mDylFdWFPGDo7Mmh9Vo4VxNwW/TA==} + dependencies: + '@turf/boolean-point-in-polygon': 6.5.0 + '@turf/center': 6.5.0 + '@turf/explode': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/nearest-point': 6.5.0 + dev: false + + /@turf/point-to-line-distance@6.5.0: + resolution: {integrity: sha512-opHVQ4vjUhNBly1bob6RWy+F+hsZDH9SA0UW36pIRzfpu27qipU18xup0XXEePfY6+wvhF6yL/WgCO2IbrLqEA==} + dependencies: + '@turf/bearing': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/projection': 6.5.0 + '@turf/rhumb-bearing': 6.5.0 + '@turf/rhumb-distance': 6.5.0 + dev: false + + /@turf/points-within-polygon@6.5.0: + resolution: {integrity: sha512-YyuheKqjliDsBDt3Ho73QVZk1VXX1+zIA2gwWvuz8bR1HXOkcuwk/1J76HuFMOQI3WK78wyAi+xbkx268PkQzQ==} + dependencies: + '@turf/boolean-point-in-polygon': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 dev: false - optional: true - /@rollup/rollup-linux-arm64-musl@4.9.6: - resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} - cpu: [arm64] - os: [linux] - requiresBuild: true + /@turf/polygon-smooth@6.5.0: + resolution: {integrity: sha512-LO/X/5hfh/Rk4EfkDBpLlVwt3i6IXdtQccDT9rMjXEP32tRgy0VMFmdkNaXoGlSSKf/1mGqLl4y4wHd86DqKbg==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 dev: false - optional: true - /@rollup/rollup-linux-riscv64-gnu@4.9.6: - resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} - cpu: [riscv64] - os: [linux] - requiresBuild: true + /@turf/polygon-tangents@6.5.0: + resolution: {integrity: sha512-sB4/IUqJMYRQH9jVBwqS/XDitkEfbyqRy+EH/cMRJURTg78eHunvJ708x5r6umXsbiUyQU4eqgPzEylWEQiunw==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/boolean-within': 6.5.0 + '@turf/explode': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/nearest-point': 6.5.0 dev: false - optional: true - /@rollup/rollup-linux-x64-gnu@4.9.6: - resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} - cpu: [x64] - os: [linux] - requiresBuild: true + /@turf/polygon-to-line@6.5.0: + resolution: {integrity: sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 dev: false - optional: true - /@rollup/rollup-linux-x64-musl@4.9.6: - resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} - cpu: [x64] - os: [linux] - requiresBuild: true + /@turf/polygonize@6.5.0: + resolution: {integrity: sha512-a/3GzHRaCyzg7tVYHo43QUChCspa99oK4yPqooVIwTC61npFzdrmnywMv0S+WZjHZwK37BrFJGFrZGf6ocmY5w==} + dependencies: + '@turf/boolean-point-in-polygon': 6.5.0 + '@turf/envelope': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 dev: false - optional: true - /@rollup/rollup-win32-arm64-msvc@4.9.6: - resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} - cpu: [arm64] - os: [win32] - requiresBuild: true + /@turf/projection@6.5.0: + resolution: {integrity: sha512-/Pgh9mDvQWWu8HRxqpM+tKz8OzgauV+DiOcr3FCjD6ubDnrrmMJlsf6fFJmggw93mtVPrZRL6yyi9aYCQBOIvg==} + dependencies: + '@turf/clone': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 dev: false - optional: true - /@rollup/rollup-win32-ia32-msvc@4.9.6: - resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} - cpu: [ia32] - os: [win32] - requiresBuild: true + /@turf/random@6.5.0: + resolution: {integrity: sha512-8Q25gQ/XbA7HJAe+eXp4UhcXM9aOOJFaxZ02+XSNwMvY8gtWSCBLVqRcW4OhqilgZ8PeuQDWgBxeo+BIqqFWFQ==} + dependencies: + '@turf/helpers': 6.5.0 dev: false - optional: true - /@rollup/rollup-win32-x64-msvc@4.9.6: - resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} - cpu: [x64] - os: [win32] - requiresBuild: true + /@turf/rectangle-grid@6.5.0: + resolution: {integrity: sha512-yQZ/1vbW68O2KsSB3OZYK+72aWz/Adnf7m2CMKcC+aq6TwjxZjAvlbCOsNUnMAuldRUVN1ph6RXMG4e9KEvKvg==} + dependencies: + '@turf/boolean-intersects': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 dev: false - optional: true - /@sigstore/bundle@2.1.1: - resolution: {integrity: sha512-v3/iS+1nufZdKQ5iAlQKcCsoh0jffQyABvYIxKsZQFWc4ubuGjwZklFHpDgV6O6T7vvV78SW5NHI91HFKEcxKg==} - engines: {node: ^16.14.0 || >=18.0.0} + /@turf/rewind@6.5.0: + resolution: {integrity: sha512-IoUAMcHWotBWYwSYuYypw/LlqZmO+wcBpn8ysrBNbazkFNkLf3btSDZMkKJO/bvOzl55imr/Xj4fi3DdsLsbzQ==} dependencies: - '@sigstore/protobuf-specs': 0.2.1 + '@turf/boolean-clockwise': 6.5.0 + '@turf/clone': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 dev: false - /@sigstore/core@0.2.0: - resolution: {integrity: sha512-THobAPPZR9pDH2CAvDLpkrYedt7BlZnsyxDe+Isq4ZmGfPy5juOFZq487vCU2EgKD7aHSiTfE/i7sN7aEdzQnA==} - engines: {node: ^16.14.0 || >=18.0.0} + /@turf/rhumb-bearing@6.5.0: + resolution: {integrity: sha512-jMyqiMRK4hzREjQmnLXmkJ+VTNTx1ii8vuqRwJPcTlKbNWfjDz/5JqJlb5NaFDcdMpftWovkW5GevfnuzHnOYA==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 dev: false - /@sigstore/protobuf-specs@0.2.1: - resolution: {integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + /@turf/rhumb-destination@6.5.0: + resolution: {integrity: sha512-RHNP1Oy+7xTTdRrTt375jOZeHceFbjwohPHlr9Hf68VdHHPMAWgAKqiX2YgSWDcvECVmiGaBKWus1Df+N7eE4Q==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 dev: false - /@sigstore/sign@2.2.1: - resolution: {integrity: sha512-U5sKQEj+faE1MsnLou1f4DQQHeFZay+V9s9768lw48J4pKykPj34rWyI1lsMOGJ3Mae47Ye6q3HAJvgXO21rkQ==} - engines: {node: ^16.14.0 || >=18.0.0} + /@turf/rhumb-distance@6.5.0: + resolution: {integrity: sha512-oKp8KFE8E4huC2Z1a1KNcFwjVOqa99isxNOwfo4g3SUABQ6NezjKDDrnvC4yI5YZ3/huDjULLBvhed45xdCrzg==} dependencies: - '@sigstore/bundle': 2.1.1 - '@sigstore/core': 0.2.0 - '@sigstore/protobuf-specs': 0.2.1 - make-fetch-happen: 13.0.0 - transitivePeerDependencies: - - supports-color + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 dev: false - /@sigstore/tuf@2.3.0: - resolution: {integrity: sha512-S98jo9cpJwO1mtQ+2zY7bOdcYyfVYCUaofCG6wWRzk3pxKHVAkSfshkfecto2+LKsx7Ovtqbgb2LS8zTRhxJ9Q==} - engines: {node: ^16.14.0 || >=18.0.0} + /@turf/sample@6.5.0: + resolution: {integrity: sha512-kSdCwY7el15xQjnXYW520heKUrHwRvnzx8ka4eYxX9NFeOxaFITLW2G7UtXb6LJK8mmPXI8Aexv23F2ERqzGFg==} dependencies: - '@sigstore/protobuf-specs': 0.2.1 - tuf-js: 2.2.0 - transitivePeerDependencies: - - supports-color + '@turf/helpers': 6.5.0 dev: false - /@sigstore/verify@0.1.0: - resolution: {integrity: sha512-2UzMNYAa/uaz11NhvgRnIQf4gpLTJ59bhb8ESXaoSS5sxedfS+eLak8bsdMc+qpNQfITUTFoSKFx5h8umlRRiA==} - engines: {node: ^16.14.0 || >=18.0.0} + /@turf/sector@6.5.0: + resolution: {integrity: sha512-cYUOkgCTWqa23SOJBqxoFAc/yGCUsPRdn/ovbRTn1zNTm/Spmk6hVB84LCKOgHqvSF25i0d2kWqpZDzLDdAPbw==} dependencies: - '@sigstore/bundle': 2.1.1 - '@sigstore/core': 0.2.0 - '@sigstore/protobuf-specs': 0.2.1 + '@turf/circle': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/line-arc': 6.5.0 + '@turf/meta': 6.5.0 dev: false - /@sindresorhus/is@4.6.0: - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} + /@turf/shortest-path@6.5.0: + resolution: {integrity: sha512-4de5+G7+P4hgSoPwn+SO9QSi9HY5NEV/xRJ+cmoFVRwv2CDsuOPDheHKeuIAhKyeKDvPvPt04XYWbac4insJMg==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/bbox-polygon': 6.5.0 + '@turf/boolean-point-in-polygon': 6.5.0 + '@turf/clean-coords': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/transform-scale': 6.5.0 dev: false - /@sindresorhus/merge-streams@1.0.0: - resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} - engines: {node: '>=18'} + /@turf/simplify@6.5.0: + resolution: {integrity: sha512-USas3QqffPHUY184dwQdP8qsvcVH/PWBYdXY5am7YTBACaQOMAlf6AKJs9FT8jiO6fQpxfgxuEtwmox+pBtlOg==} + dependencies: + '@turf/clean-coords': 6.5.0 + '@turf/clone': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 dev: false - /@socket.io/component-emitter@3.1.0: - resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + /@turf/square-grid@6.5.0: + resolution: {integrity: sha512-mlR0ayUdA+L4c9h7p4k3pX6gPWHNGuZkt2c5II1TJRmhLkW2557d6b/Vjfd1z9OVaajb1HinIs1FMSAPXuuUrA==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/rectangle-grid': 6.5.0 dev: false - /@stefanprobst/lib@0.1.4: - resolution: {integrity: sha512-zRW3DbXP7G49g+a66orQ3D5KqsWb5ejm32s4SXdrRHdLCNhp/bLY9jNY6g5GwlvYbiHQf8pDnP/JWYABcx01Zw==} - engines: {node: '>=18', pnpm: '>=8'} + /@turf/square@6.5.0: + resolution: {integrity: sha512-BM2UyWDmiuHCadVhHXKIx5CQQbNCpOxB6S/aCNOCLbhCeypKX5Q0Aosc5YcmCJgkwO5BERCC6Ee7NMbNB2vHmQ==} + dependencies: + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 dev: false - /@stefanprobst/netlify-cms-oauth-client@0.4.0: - resolution: {integrity: sha512-GUpm8LQgDXYaE7mzlDHHDFgFTwdWmCSYPb2PbpNc8S+FsXDGXMqNdnla5GNPNnCjPK/sAIGN1KFfW4FmYaUYmQ==} - engines: {node: '>=18', pnpm: '>=8'} + /@turf/standard-deviational-ellipse@6.5.0: + resolution: {integrity: sha512-02CAlz8POvGPFK2BKK8uHGUk/LXb0MK459JVjKxLC2yJYieOBTqEbjP0qaWhiBhGzIxSMaqe8WxZ0KvqdnstHA==} dependencies: - '@stefanprobst/lib': 0.1.4 - strip-indent: 4.0.0 + '@turf/center-mean': 6.5.0 + '@turf/ellipse': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/points-within-polygon': 6.5.0 dev: false - /@trysound/sax@0.2.0: - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - requiresBuild: true + /@turf/tag@6.5.0: + resolution: {integrity: sha512-XwlBvrOV38CQsrNfrxvBaAPBQgXMljeU0DV8ExOyGM7/hvuGHJw3y8kKnQ4lmEQcmcrycjDQhP7JqoRv8vFssg==} + dependencies: + '@turf/boolean-point-in-polygon': 6.5.0 + '@turf/clone': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 dev: false - /@tufjs/canonical-json@2.0.0: - resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} - engines: {node: ^16.14.0 || >=18.0.0} + /@turf/tesselate@6.5.0: + resolution: {integrity: sha512-M1HXuyZFCfEIIKkglh/r5L9H3c5QTEsnMBoZOFQiRnGPGmJWcaBissGb7mTFX2+DKE7FNWXh4TDnZlaLABB0dQ==} + dependencies: + '@turf/helpers': 6.5.0 + earcut: 2.2.4 dev: false - /@tufjs/models@2.0.0: - resolution: {integrity: sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==} - engines: {node: ^16.14.0 || >=18.0.0} + /@turf/tin@6.5.0: + resolution: {integrity: sha512-YLYikRzKisfwj7+F+Tmyy/LE3d2H7D4kajajIfc9mlik2+esG7IolsX/+oUz1biguDYsG0DUA8kVYXDkobukfg==} dependencies: - '@tufjs/canonical-json': 2.0.0 - minimatch: 9.0.3 + '@turf/helpers': 6.5.0 + dev: false + + /@turf/transform-rotate@6.5.0: + resolution: {integrity: sha512-A2Ip1v4246ZmpssxpcL0hhiVBEf4L8lGnSPWTgSv5bWBEoya2fa/0SnFX9xJgP40rMP+ZzRaCN37vLHbv1Guag==} + dependencies: + '@turf/centroid': 6.5.0 + '@turf/clone': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/rhumb-bearing': 6.5.0 + '@turf/rhumb-destination': 6.5.0 + '@turf/rhumb-distance': 6.5.0 + dev: false + + /@turf/transform-scale@6.5.0: + resolution: {integrity: sha512-VsATGXC9rYM8qTjbQJ/P7BswKWXHdnSJ35JlV4OsZyHBMxJQHftvmZJsFbOqVtQnIQIzf2OAly6rfzVV9QLr7g==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/center': 6.5.0 + '@turf/centroid': 6.5.0 + '@turf/clone': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/rhumb-bearing': 6.5.0 + '@turf/rhumb-destination': 6.5.0 + '@turf/rhumb-distance': 6.5.0 + dev: false + + /@turf/transform-translate@6.5.0: + resolution: {integrity: sha512-NABLw5VdtJt/9vSstChp93pc6oel4qXEos56RBMsPlYB8hzNTEKYtC146XJvyF4twJeeYS8RVe1u7KhoFwEM5w==} + dependencies: + '@turf/clone': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/rhumb-destination': 6.5.0 + dev: false + + /@turf/triangle-grid@6.5.0: + resolution: {integrity: sha512-2jToUSAS1R1htq4TyLQYPTIsoy6wg3e3BQXjm2rANzw4wPQCXGOxrur1Fy9RtzwqwljlC7DF4tg0OnWr8RjmfA==} + dependencies: + '@turf/distance': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/intersect': 6.5.0 + dev: false + + /@turf/truncate@6.5.0: + resolution: {integrity: sha512-pFxg71pLk+eJj134Z9yUoRhIi8vqnnKvCYwdT4x/DQl/19RVdq1tV3yqOT3gcTQNfniteylL5qV1uTBDV5sgrg==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/turf@6.5.0(patch_hash=65icnyz54ddmc6g3kliqppfovu): + resolution: {integrity: sha512-ipMCPnhu59bh92MNt8+pr1VZQhHVuTMHklciQURo54heoxRzt1neNYZOBR6jdL+hNsbDGAECMuIpAutX+a3Y+w==} + dependencies: + '@turf/along': 6.5.0 + '@turf/angle': 6.5.0 + '@turf/area': 6.5.0 + '@turf/bbox': 6.5.0 + '@turf/bbox-clip': 6.5.0 + '@turf/bbox-polygon': 6.5.0 + '@turf/bearing': 6.5.0 + '@turf/bezier-spline': 6.5.0 + '@turf/boolean-clockwise': 6.5.0 + '@turf/boolean-contains': 6.5.0 + '@turf/boolean-crosses': 6.5.0 + '@turf/boolean-disjoint': 6.5.0 + '@turf/boolean-equal': 6.5.0 + '@turf/boolean-intersects': 6.5.0 + '@turf/boolean-overlap': 6.5.0 + '@turf/boolean-parallel': 6.5.0 + '@turf/boolean-point-in-polygon': 6.5.0 + '@turf/boolean-point-on-line': 6.5.0 + '@turf/boolean-within': 6.5.0 + '@turf/buffer': 6.5.0 + '@turf/center': 6.5.0 + '@turf/center-mean': 6.5.0 + '@turf/center-median': 6.5.0 + '@turf/center-of-mass': 6.5.0 + '@turf/centroid': 6.5.0 + '@turf/circle': 6.5.0 + '@turf/clean-coords': 6.5.0 + '@turf/clone': 6.5.0 + '@turf/clusters': 6.5.0 + '@turf/clusters-dbscan': 6.5.0 + '@turf/clusters-kmeans': 6.5.0 + '@turf/collect': 6.5.0 + '@turf/combine': 6.5.0 + '@turf/concave': 6.5.0 + '@turf/convex': 6.5.0 + '@turf/destination': 6.5.0 + '@turf/difference': 6.5.0 + '@turf/dissolve': 6.5.0 + '@turf/distance': 6.5.0 + '@turf/distance-weight': 6.5.0 + '@turf/ellipse': 6.5.0 + '@turf/envelope': 6.5.0 + '@turf/explode': 6.5.0 + '@turf/flatten': 6.5.0 + '@turf/flip': 6.5.0 + '@turf/great-circle': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/hex-grid': 6.5.0 + '@turf/interpolate': 6.5.0 + '@turf/intersect': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/isobands': 6.5.0 + '@turf/isolines': 6.5.0 + '@turf/kinks': 6.5.0 + '@turf/length': 6.5.0 + '@turf/line-arc': 6.5.0 + '@turf/line-chunk': 6.5.0 + '@turf/line-intersect': 6.5.0 + '@turf/line-offset': 6.5.0 + '@turf/line-overlap': 6.5.0 + '@turf/line-segment': 6.5.0 + '@turf/line-slice': 6.5.0 + '@turf/line-slice-along': 6.5.0 + '@turf/line-split': 6.5.0 + '@turf/line-to-polygon': 6.5.0 + '@turf/mask': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/midpoint': 6.5.0 + '@turf/moran-index': 6.5.0 + '@turf/nearest-point': 6.5.0 + '@turf/nearest-point-on-line': 6.5.0 + '@turf/nearest-point-to-line': 6.5.0 + '@turf/planepoint': 6.5.0 + '@turf/point-grid': 6.5.0 + '@turf/point-on-feature': 6.5.0 + '@turf/point-to-line-distance': 6.5.0 + '@turf/points-within-polygon': 6.5.0 + '@turf/polygon-smooth': 6.5.0 + '@turf/polygon-tangents': 6.5.0 + '@turf/polygon-to-line': 6.5.0 + '@turf/polygonize': 6.5.0 + '@turf/projection': 6.5.0 + '@turf/random': 6.5.0 + '@turf/rewind': 6.5.0 + '@turf/rhumb-bearing': 6.5.0 + '@turf/rhumb-destination': 6.5.0 + '@turf/rhumb-distance': 6.5.0 + '@turf/sample': 6.5.0 + '@turf/sector': 6.5.0 + '@turf/shortest-path': 6.5.0 + '@turf/simplify': 6.5.0 + '@turf/square': 6.5.0 + '@turf/square-grid': 6.5.0 + '@turf/standard-deviational-ellipse': 6.5.0 + '@turf/tag': 6.5.0 + '@turf/tesselate': 6.5.0 + '@turf/tin': 6.5.0 + '@turf/transform-rotate': 6.5.0 + '@turf/transform-scale': 6.5.0 + '@turf/transform-translate': 6.5.0 + '@turf/triangle-grid': 6.5.0 + '@turf/truncate': 6.5.0 + '@turf/union': 6.5.0 + '@turf/unkink-polygon': 6.5.0 + '@turf/voronoi': 6.5.0 + dev: false + patched: true + + /@turf/union@6.5.0: + resolution: {integrity: sha512-igYWCwP/f0RFHIlC2c0SKDuM/ObBaqSljI3IdV/x71805QbIvY/BYGcJdyNcgEA6cylIGl/0VSlIbpJHZ9ldhw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + polygon-clipping: 0.15.7 + dev: false + + /@turf/unkink-polygon@6.5.0: + resolution: {integrity: sha512-8QswkzC0UqKmN1DT6HpA9upfa1HdAA5n6bbuzHy8NJOX8oVizVAqfEPY0wqqTgboDjmBR4yyImsdPGUl3gZ8JQ==} + dependencies: + '@turf/area': 6.5.0 + '@turf/boolean-point-in-polygon': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + rbush: 2.0.2 + dev: false + + /@turf/voronoi@6.5.0: + resolution: {integrity: sha512-C/xUsywYX+7h1UyNqnydHXiun4UPjK88VDghtoRypR9cLlb7qozkiLRphQxxsCM0KxyxpVPHBVQXdAL3+Yurow==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + d3-voronoi: 1.1.2 dev: false /@types/debug@4.1.12: @@ -2365,14 +3762,22 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + /@types/geojson-vt@3.2.5: + resolution: {integrity: sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==} + dependencies: + '@types/geojson': 7946.0.14 dev: false - /@types/geojson@7946.0.13: - resolution: {integrity: sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==} - dev: true + /@types/geojson@7946.0.14: + resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==} - /@types/hast@3.0.3: - resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==} + /@types/geojson@7946.0.8: + resolution: {integrity: sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==} + dev: false + + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} dependencies: '@types/unist': 3.0.2 dev: false @@ -2380,19 +3785,28 @@ packages: /@types/http-proxy@1.17.14: resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: - '@types/node': 20.11.10 - dev: false + '@types/node': 20.11.19 /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: true - /@types/leaflet@1.9.8: - resolution: {integrity: sha512-EXdsL4EhoUtGm2GC2ZYtXn+Fzc6pluVgagvo2VC1RHWToLGlTRwVYoDpqS/7QXa01rmDyBjJk3Catpf60VMkwg==} - dependencies: - '@types/geojson': 7946.0.13 + /@types/junit-report-builder@3.0.2: + resolution: {integrity: sha512-R5M+SYhMbwBeQcNXYWNCZkl09vkVfAtcPIaCGdzIkkbeaTrVbGQ7HVgi4s+EmM/M1K4ZuWQH0jGcvMvNePfxYA==} dev: true + /@types/mapbox__point-geometry@0.1.4: + resolution: {integrity: sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==} + dev: false + + /@types/mapbox__vector-tile@1.3.4: + resolution: {integrity: sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==} + dependencies: + '@types/geojson': 7946.0.14 + '@types/mapbox__point-geometry': 0.1.4 + '@types/pbf': 3.0.5 + dev: false + /@types/mdast@4.0.3: resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} dependencies: @@ -2403,23 +3817,28 @@ packages: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} dev: false - /@types/node@20.11.10: - resolution: {integrity: sha512-rZEfe/hJSGYmdfX9tvcPMYeYPW2sNl50nsw4jZmRcaG0HIAb0WYEpsB05GOb53vjqpyE9GUhlDQ4jLSoB5q9kg==} + /@types/node@20.11.19: + resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} dependencies: undici-types: 5.26.5 - /@types/normalize-package-data@2.4.4: - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + /@types/pbf@3.0.5: + resolution: {integrity: sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==} dev: false /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - dev: false - /@types/semver@7.5.6: - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + /@types/semver@7.5.7: + resolution: {integrity: sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==} dev: true + /@types/supercluster@7.1.3: + resolution: {integrity: sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==} + dependencies: + '@types/geojson': 7946.0.14 + dev: false + /@types/triple-beam@1.3.5: resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} dev: true @@ -2436,8 +3855,8 @@ packages: resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} dev: false - /@typescript-eslint/eslint-plugin@6.20.0(@typescript-eslint/parser@6.20.0)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg==} + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -2448,25 +3867,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.20.0 - '@typescript-eslint/type-utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.20.0 + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 eslint: 8.56.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.3) + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==} + /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2475,10 +3894,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.20.0 - '@typescript-eslint/types': 6.20.0 - '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.20.0 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 eslint: 8.56.0 typescript: 5.3.3 @@ -2486,16 +3905,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.20.0: - resolution: {integrity: sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==} + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.20.0 - '@typescript-eslint/visitor-keys': 6.20.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/type-utils@6.20.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g==} + /@typescript-eslint/type-utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2504,23 +3923,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4 eslint: 8.56.0 - ts-api-utils: 1.0.3(typescript@5.3.3) + ts-api-utils: 1.2.1(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.20.0: - resolution: {integrity: sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==} + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.20.0(typescript@5.3.3): - resolution: {integrity: sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==} + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -2528,43 +3947,43 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.20.0 - '@typescript-eslint/visitor-keys': 6.20.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.3) + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.20.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==} + /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.20.0 - '@typescript-eslint/types': 6.20.0 - '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) + '@types/semver': 7.5.7 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) eslint: 8.56.0 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.20.0: - resolution: {integrity: sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==} + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.20.0 + '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2576,29 +3995,25 @@ packages: dependencies: '@unhead/schema': 1.8.10 '@unhead/shared': 1.8.10 - dev: false /@unhead/schema@1.8.10: resolution: {integrity: sha512-cy8RGOPkwOVY5EmRoCgGV8AqLjy/226xBVTY54kBct02Om3hBdpB9FZa9frM910pPUXMI8PNmFgABO23O7IdJA==} dependencies: hookable: 5.5.3 zhead: 2.2.4 - dev: false /@unhead/shared@1.8.10: resolution: {integrity: sha512-pEFryAs3EmV+ShDQx2ZBwUnt5l3RrMrXSMZ50oFf+MImKZNARVvD4+3I8fEI9wZh+Zq0JYG3UAfzo51MUP+Juw==} dependencies: '@unhead/schema': 1.8.10 - dev: false /@unhead/ssr@1.8.10: resolution: {integrity: sha512-7wKRKDd8c2NFmMyPetj8Ah5u2hXunDBZT5Y2DH83O16PiMxx4/uobGamTV1EfcqjTvOKJvAqkrYZNYSWss99NQ==} dependencies: '@unhead/schema': 1.8.10 '@unhead/shared': 1.8.10 - dev: false - /@unhead/vue@1.8.10(vue@3.4.15): + /@unhead/vue@1.8.10(vue@3.4.19): resolution: {integrity: sha512-KF8pftHnxnlBlgNpKXWLTg3ZUtkuDCxRPUFSDBy9CtqRSX/qvAhLZ26mbqRVmHj8KigiRHP/wnPWNyGnUx20Bg==} peerDependencies: vue: '>=2.7 || >=3' @@ -2607,7 +4022,16 @@ packages: '@unhead/shared': 1.8.10 hookable: 5.5.3 unhead: 1.8.10 - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.19(typescript@5.3.3) + + /@vee-validate/zod@4.12.5(vue@3.4.19): + resolution: {integrity: sha512-hUjvXaa4HHvlZeosucViIDOUikQmyKaXXuL6P8LR1ETOUrBV6ntTsafJGvRYtwhXosoLYuolUD6Km737okK4Gg==} + dependencies: + type-fest: 4.10.2 + vee-validate: 4.12.5(vue@3.4.19) + zod: 3.22.4 + transitivePeerDependencies: + - vue dev: false /@vercel/nft@0.24.4: @@ -2629,9 +4053,8 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /@vitejs/plugin-vue-jsx@3.1.0(vite@5.0.11)(vue@3.4.15): + /@vitejs/plugin-vue-jsx@3.1.0(vite@5.1.1)(vue@3.4.19): resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -2641,22 +4064,20 @@ packages: '@babel/core': 7.23.9 '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) '@vue/babel-plugin-jsx': 1.2.1(@babel/core@7.23.9) - vite: 5.0.11(@types/node@20.11.10)(sass@1.70.0) - vue: 3.4.15(typescript@5.3.3) + vite: 5.1.1(@types/node@20.11.19) + vue: 3.4.19(typescript@5.3.3) transitivePeerDependencies: - supports-color - dev: false - /@vitejs/plugin-vue@5.0.3(vite@5.0.11)(vue@3.4.15): - resolution: {integrity: sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==} + /@vitejs/plugin-vue@5.0.4(vite@5.1.1)(vue@3.4.19): + resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 vue: ^3.2.25 dependencies: - vite: 5.0.11(@types/node@20.11.10)(sass@1.70.0) - vue: 3.4.15(typescript@5.3.3) - dev: false + vite: 5.1.1(@types/node@20.11.19) + vue: 3.4.19(typescript@5.3.3) /@volar/language-core@1.11.1: resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} @@ -2674,7 +4095,7 @@ packages: '@volar/language-core': 1.11.1 path-browserify: 1.0.1 - /@vue-macros/common@1.10.1(rollup@4.9.6)(vue@3.4.15): + /@vue-macros/common@1.10.1(rollup@4.11.0)(vue@3.4.19): resolution: {integrity: sha512-uftSpfwdwitcQT2lM8aVxcfe5rKQBzC9jMrtJM5sG4hEuFyfIvnJihpPpnaWxY+X4p64k+YYXtBFv+1O5Bq3dg==} engines: {node: '>=16.14.0'} peerDependencies: @@ -2684,19 +4105,17 @@ packages: optional: true dependencies: '@babel/types': 7.23.9 - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) - '@vue/compiler-sfc': 3.4.15 - ast-kit: 0.11.3(rollup@4.9.6) + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) + '@vue/compiler-sfc': 3.4.19 + ast-kit: 0.11.3(rollup@4.11.0) local-pkg: 0.5.0 magic-string-ast: 0.3.0 - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.19(typescript@5.3.3) transitivePeerDependencies: - rollup - dev: false /@vue/babel-helper-vue-transform-on@1.2.1: resolution: {integrity: sha512-jtEXim+pfyHWwvheYwUwSXm43KwQo8nhOBDyjrUITV6X2tB7lJm6n/+4sqR8137UVZZul5hBzWHdZ2uStYpyRQ==} - dev: false /@vue/babel-plugin-jsx@1.2.1(@babel/core@7.23.9): resolution: {integrity: sha512-Yy9qGktktXhB39QE99So/BO2Uwm/ZG+gpL9vMg51ijRRbINvgbuhyJEi4WYmGRMx/MSTfK0xjgZ3/MyY+iLCEg==} @@ -2720,7 +4139,6 @@ packages: svg-tags: 1.0.0 transitivePeerDependencies: - supports-color - dev: false /@vue/babel-plugin-resolve-type@1.2.1(@babel/core@7.23.9): resolution: {integrity: sha512-IOtnI7pHunUzHS/y+EG/yPABIAp0VN8QhQ0UCS09jeMVxgAnI9qdOzO85RXdQGxq+aWCdv8/+k3W0aYO6j/8fQ==} @@ -2732,48 +4150,44 @@ packages: '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/parser': 7.23.9 - '@vue/compiler-sfc': 3.4.15 - dev: false + '@vue/compiler-sfc': 3.4.19 - /@vue/compiler-core@3.4.15: - resolution: {integrity: sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==} + /@vue/compiler-core@3.4.19: + resolution: {integrity: sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==} dependencies: '@babel/parser': 7.23.9 - '@vue/shared': 3.4.15 + '@vue/shared': 3.4.19 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.0.2 - /@vue/compiler-dom@3.4.15: - resolution: {integrity: sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==} + /@vue/compiler-dom@3.4.19: + resolution: {integrity: sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA==} dependencies: - '@vue/compiler-core': 3.4.15 - '@vue/shared': 3.4.15 + '@vue/compiler-core': 3.4.19 + '@vue/shared': 3.4.19 - /@vue/compiler-sfc@3.4.15: - resolution: {integrity: sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==} + /@vue/compiler-sfc@3.4.19: + resolution: {integrity: sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==} dependencies: '@babel/parser': 7.23.9 - '@vue/compiler-core': 3.4.15 - '@vue/compiler-dom': 3.4.15 - '@vue/compiler-ssr': 3.4.15 - '@vue/shared': 3.4.15 + '@vue/compiler-core': 3.4.19 + '@vue/compiler-dom': 3.4.19 + '@vue/compiler-ssr': 3.4.19 + '@vue/shared': 3.4.19 estree-walker: 2.0.2 - magic-string: 0.30.5 - postcss: 8.4.33 + magic-string: 0.30.7 + postcss: 8.4.35 source-map-js: 1.0.2 - dev: false - /@vue/compiler-ssr@3.4.15: - resolution: {integrity: sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==} + /@vue/compiler-ssr@3.4.19: + resolution: {integrity: sha512-P0PLKC4+u4OMJ8sinba/5Z/iDT84uMRRlrWzadgLA69opCpI1gG4N55qDSC+dedwq2fJtzmGald05LWR5TFfLw==} dependencies: - '@vue/compiler-dom': 3.4.15 - '@vue/shared': 3.4.15 - dev: false + '@vue/compiler-dom': 3.4.19 + '@vue/shared': 3.4.19 - /@vue/devtools-api@6.5.1: - resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} - dev: false + /@vue/devtools-api@6.6.1: + resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} /@vue/language-core@1.8.27(typescript@5.3.3): resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} @@ -2785,8 +4199,8 @@ packages: dependencies: '@volar/language-core': 1.11.1 '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.4.15 - '@vue/shared': 3.4.15 + '@vue/compiler-dom': 3.4.19 + '@vue/shared': 3.4.19 computeds: 0.0.1 minimatch: 9.0.3 muggle-string: 0.3.1 @@ -2794,64 +4208,49 @@ packages: typescript: 5.3.3 vue-template-compiler: 2.7.16 - /@vue/reactivity@3.4.15: - resolution: {integrity: sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==} + /@vue/reactivity@3.4.19: + resolution: {integrity: sha512-+VcwrQvLZgEclGZRHx4O2XhyEEcKaBi50WbxdVItEezUf4fqRh838Ix6amWTdX0CNb/b6t3Gkz3eOebfcSt+UA==} dependencies: - '@vue/shared': 3.4.15 - dev: false + '@vue/shared': 3.4.19 - /@vue/runtime-core@3.4.15: - resolution: {integrity: sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==} + /@vue/runtime-core@3.4.19: + resolution: {integrity: sha512-/Z3tFwOrerJB/oyutmJGoYbuoadphDcJAd5jOuJE86THNZji9pYjZroQ2NFsZkTxOq0GJbb+s2kxTYToDiyZzw==} dependencies: - '@vue/reactivity': 3.4.15 - '@vue/shared': 3.4.15 - dev: false + '@vue/reactivity': 3.4.19 + '@vue/shared': 3.4.19 - /@vue/runtime-dom@3.4.15: - resolution: {integrity: sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==} + /@vue/runtime-dom@3.4.19: + resolution: {integrity: sha512-IyZzIDqfNCF0OyZOauL+F4yzjMPN2rPd8nhqPP2N1lBn3kYqJpPHHru+83Rkvo2lHz5mW+rEeIMEF9qY3PB94g==} dependencies: - '@vue/runtime-core': 3.4.15 - '@vue/shared': 3.4.15 + '@vue/runtime-core': 3.4.19 + '@vue/shared': 3.4.19 csstype: 3.1.3 - dev: false - /@vue/server-renderer@3.4.15(vue@3.4.15): - resolution: {integrity: sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==} + /@vue/server-renderer@3.4.19(vue@3.4.19): + resolution: {integrity: sha512-eAj2p0c429RZyyhtMRnttjcSToch+kTWxFPHlzGMkR28ZbF1PDlTcmGmlDxccBuqNd9iOQ7xPRPAGgPVj+YpQw==} peerDependencies: - vue: 3.4.15 + vue: 3.4.19 dependencies: - '@vue/compiler-ssr': 3.4.15 - '@vue/shared': 3.4.15 - vue: 3.4.15(typescript@5.3.3) - dev: false - - /@vue/shared@3.4.15: - resolution: {integrity: sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==} + '@vue/compiler-ssr': 3.4.19 + '@vue/shared': 3.4.19 + vue: 3.4.19(typescript@5.3.3) - /@vuetify/loader-shared@2.0.1(vue@3.4.15)(vuetify@3.5.1): - resolution: {integrity: sha512-zy5/ohEO7RcJaWYu2Xiy8TBEOkTb42XvWvSAJwXAtY8OlwqyGhzzBp9OvMVjLGIuFXumBpXKlsaVIkeN0OWWSw==} - peerDependencies: - vue: ^3.0.0 - vuetify: ^3.0.0 - dependencies: - upath: 2.0.1 - vue: 3.4.15(typescript@5.3.3) - vuetify: 3.5.1(typescript@5.3.3)(vite-plugin-vuetify@2.0.1)(vue@3.4.15) - dev: false + /@vue/shared@3.4.19: + resolution: {integrity: sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==} - /@vueuse/core@10.7.2(vue@3.4.15): + /@vueuse/core@10.7.2(vue@3.4.19): resolution: {integrity: sha512-AOyAL2rK0By62Hm+iqQn6Rbu8bfmbgaIMXcE3TSr7BdQ42wnSFlwIdPjInO62onYsEMK/yDMU8C6oGfDAtZ2qQ==} dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.7.2 - '@vueuse/shared': 10.7.2(vue@3.4.15) - vue-demi: 0.14.6(vue@3.4.15) + '@vueuse/shared': 10.7.2(vue@3.4.19) + vue-demi: 0.14.7(vue@3.4.19) transitivePeerDependencies: - '@vue/composition-api' - vue dev: false - /@vueuse/head@2.0.0(vue@3.4.15): + /@vueuse/head@2.0.0(vue@3.4.19): resolution: {integrity: sha512-ykdOxTGs95xjD4WXE4na/umxZea2Itl0GWBILas+O4oqS7eXIods38INvk3XkJKjqMdWPcpCyLX/DioLQxU1KA==} peerDependencies: vue: '>=2.7 || >=3' @@ -2859,25 +4258,25 @@ packages: '@unhead/dom': 1.8.10 '@unhead/schema': 1.8.10 '@unhead/ssr': 1.8.10 - '@unhead/vue': 1.8.10(vue@3.4.15) - vue: 3.4.15(typescript@5.3.3) + '@unhead/vue': 1.8.10(vue@3.4.19) + vue: 3.4.19(typescript@5.3.3) dev: false /@vueuse/metadata@10.7.2: resolution: {integrity: sha512-kCWPb4J2KGrwLtn1eJwaJD742u1k5h6v/St5wFe8Quih90+k2a0JP8BS4Zp34XUuJqS2AxFYMb1wjUL8HfhWsQ==} dev: false - /@vueuse/nuxt@10.7.2(nuxt@3.9.3)(rollup@4.9.6)(vue@3.4.15): + /@vueuse/nuxt@10.7.2(nuxt@3.10.2)(rollup@4.11.0)(vue@3.4.19): resolution: {integrity: sha512-yv2hY4AiRoSqg9ELNpN6gOkDWxGuLiKE/bEbuTAAuUBhS5OeEDf5aB/kY0e/V6ZXj5XiU4LX3nE8YV8c+UKfmQ==} peerDependencies: nuxt: ^3.0.0 dependencies: - '@nuxt/kit': 3.9.3(rollup@4.9.6) - '@vueuse/core': 10.7.2(vue@3.4.15) + '@nuxt/kit': 3.10.2(rollup@4.11.0) + '@vueuse/core': 10.7.2(vue@3.4.19) '@vueuse/metadata': 10.7.2 local-pkg: 0.5.0 - nuxt: 3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@4.9.6)(sass@1.70.0)(stylelint@16.2.0)(typescript@5.3.3)(vite@5.0.12)(vue-tsc@1.8.27) - vue-demi: 0.14.6(vue@3.4.15) + nuxt: 3.10.2(@types/node@20.11.19)(eslint@8.56.0)(rollup@4.11.0)(stylelint@16.2.1)(typescript@5.3.3)(vite@5.1.3)(vue-tsc@1.8.27) + vue-demi: 0.14.7(vue@3.4.19) transitivePeerDependencies: - '@vue/composition-api' - rollup @@ -2885,10 +4284,10 @@ packages: - vue dev: false - /@vueuse/shared@10.7.2(vue@3.4.15): + /@vueuse/shared@10.7.2(vue@3.4.19): resolution: {integrity: sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==} dependencies: - vue-demi: 0.14.6(vue@3.4.15) + vue-demi: 0.14.7(vue@3.4.19) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -2896,11 +4295,16 @@ packages: /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: false /abbrev@2.0.0: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 dev: false /accepts@1.3.8: @@ -2930,7 +4334,6 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false /agent-base@7.1.0: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} @@ -2939,7 +4342,6 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} @@ -2947,7 +4349,6 @@ packages: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - dev: false /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -2968,14 +4369,12 @@ packages: /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} - dev: false /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 - dev: false /ansi-escapes@6.2.0: resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} @@ -3010,7 +4409,6 @@ packages: /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: false /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -3021,7 +4419,6 @@ packages: /aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: false /archiver-utils@4.0.1: resolution: {integrity: sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==} @@ -3033,7 +4430,6 @@ packages: lodash: 4.17.21 normalize-path: 3.0.0 readable-stream: 3.6.2 - dev: false /archiver@6.0.1: resolution: {integrity: sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==} @@ -3046,7 +4442,6 @@ packages: readdir-glob: 1.1.3 tar-stream: 3.1.7 zip-stream: 5.0.1 - dev: false /are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} @@ -3054,7 +4449,10 @@ packages: dependencies: delegates: 1.0.0 readable-stream: 3.6.2 - dev: false + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -3065,6 +4463,11 @@ packages: dequal: 2.0.3 dev: true + /arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: false + /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: true @@ -3073,37 +4476,39 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - /ast-kit@0.11.3(rollup@4.9.6): + /assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + dev: false + + /ast-kit@0.11.3(rollup@4.11.0): resolution: {integrity: sha512-qdwwKEhckRk0XE22/xDdmU3v/60E8Edu4qFhgTLIhGGDs/PAJwLw9pQn8Rj99PitlbBZbYpx0k/lbir4kg0SuA==} engines: {node: '>=16.14.0'} dependencies: '@babel/parser': 7.23.9 - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) pathe: 1.1.2 transitivePeerDependencies: - rollup - dev: false - /ast-kit@0.9.5(rollup@4.9.6): + /ast-kit@0.9.5(rollup@4.11.0): resolution: {integrity: sha512-kbL7ERlqjXubdDd+szuwdlQ1xUxEz9mCz1+m07ftNVStgwRb2RWw+U6oKo08PAvOishMxiqz1mlJyLl8yQx2Qg==} engines: {node: '>=16.14.0'} dependencies: '@babel/parser': 7.23.9 - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) pathe: 1.1.2 transitivePeerDependencies: - rollup - dev: false - /ast-walker-scope@0.5.0(rollup@4.9.6): + /ast-walker-scope@0.5.0(rollup@4.11.0): resolution: {integrity: sha512-NsyHMxBh4dmdEHjBo1/TBZvCKxffmZxRYhmclfu0PP6Aftre47jOHYaYaNqJcV0bxihxFXhDkzLHUwHc0ocd0Q==} engines: {node: '>=16.14.0'} dependencies: '@babel/parser': 7.23.9 - ast-kit: 0.9.5(rollup@4.9.6) + ast-kit: 0.9.5(rollup@4.11.0) transitivePeerDependencies: - rollup - dev: false /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -3117,30 +4522,61 @@ packages: /async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - dev: false /async@3.2.5: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - /autoprefixer@10.4.17(postcss@8.4.33): + /atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + dev: false + + /autoprefixer@10.4.17(postcss@8.4.35): resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.22.3 - caniuse-lite: 1.0.30001581 + browserslist: 4.23.0 + caniuse-lite: 1.0.30001587 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.33 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /b4a@1.6.4: - resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} - dev: false + /axe-core@4.8.4: + resolution: {integrity: sha512-CZLSKisu/bhJ2awW4kJndluz2HLZYIHh5Uy1+ZwDRkJi69811xgIXXfdU9HSLX0Th+ILrHj8qfL/5wzamsFtQg==} + engines: {node: '>=4'} + dev: true + + /axe-html-reporter@2.2.3(axe-core@4.8.4): + resolution: {integrity: sha512-io8aCEt4fJvv43W+33n3zEa8rdplH5Ti2v5fOnth3GBKLhLHarNs7jj46xGfpnGnpaNrz23/tXPHC3HbwTzwwA==} + engines: {node: '>=8.9.0'} + peerDependencies: + axe-core: '>=3' + dependencies: + axe-core: 4.8.4 + mustache: 4.2.0 + rimraf: 3.0.2 + dev: true + + /axe-playwright@2.0.1(playwright@1.41.2): + resolution: {integrity: sha512-MHjNjGARulF9XzqSfspmNjw+tpBz4x9o1VlTuLWEUW9fqzhn+xWa1qEpuOIQPbsRWQiLfooDjQAunLeE0PM5AQ==} + peerDependencies: + playwright: '>1.0.0' + dependencies: + '@types/junit-report-builder': 3.0.2 + axe-core: 4.8.4 + axe-html-reporter: 2.2.3(axe-core@4.8.4) + junit-report-builder: 3.2.1 + picocolors: 1.0.0 + playwright: 1.41.2 + dev: true + + /b4a@1.6.6: + resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -3152,6 +4588,15 @@ packages: /balanced-match@2.0.0: resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + /bare-events@2.2.0: + resolution: {integrity: sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==} + requiresBuild: true + optional: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false + /basic-auth@2.0.1: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} @@ -3167,11 +4612,9 @@ packages: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} dependencies: file-uri-to-path: 1.0.0 - dev: false /birpc@0.2.15: resolution: {integrity: sha512-LuZgWLW6DB1zenkfJuF4/kfSZdazOR2xaMSzeqgvfbNIwECwV1AJso9wpNje79uaRU86Obbujv4qtDnwoOLQww==} - dev: false /body-parser@1.20.1: resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} @@ -3213,68 +4656,82 @@ packages: dependencies: fill-range: 7.0.1 - /browserslist@4.22.3: - resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001581 - electron-to-chromium: 1.4.650 + caniuse-lite: 1.0.30001587 + electron-to-chromium: 1.4.672 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.3) - dev: false + update-browserslist-db: 1.0.13(browserslist@4.23.0) /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - dev: false /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 dev: false /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - dev: false /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: - semver: 7.5.4 - dev: false + semver: 7.6.0 /bundle-name@4.1.0: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} dependencies: run-applescript: 7.0.0 - dev: false /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} dev: true - /c12@1.6.1: - resolution: {integrity: sha512-fAZOi3INDvIbmjuwAVVggusyRTxwNdTAnwLay8IsXwhFzDwPPGzFxzrx6L55CPFGPulUSZI0eyFUvRDXveoE3g==} + /bytewise-core@1.2.3: + resolution: {integrity: sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==} + dependencies: + typewise-core: 1.2.0 + dev: false + + /bytewise@1.1.0: + resolution: {integrity: sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==} dependencies: - chokidar: 3.5.3 + bytewise-core: 1.2.3 + typewise: 1.0.3 + dev: false + + /c12@1.8.0: + resolution: {integrity: sha512-93U6RndoaAwFQPBcS9F/6lwtgBfrWh4695sQ/ChILkbj0C7zOZVptOU3Sxp0I/9xvfW/lzBWD90AXDQz4muSkA==} + dependencies: + chokidar: 3.6.0 defu: 6.1.4 - dotenv: 16.4.1 + dotenv: 16.4.4 giget: 1.2.1 jiti: 1.21.0 + json5: 2.2.3 + jsonc-parser: 3.2.1 mlly: 1.5.0 ohash: 1.1.3 pathe: 1.1.2 perfect-debounce: 1.0.0 pkg-types: 1.0.3 rc9: 2.1.1 - dev: false /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - dev: false /cacache@18.0.2: resolution: {integrity: sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==} @@ -3292,37 +4749,40 @@ packages: ssri: 10.0.5 tar: 6.2.0 unique-filename: 3.0.0 - dev: false - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.2.0 - dev: true + get-intrinsic: 1.2.4 + set-function-length: 1.2.1 /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - dev: false /caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - browserslist: 4.22.3 - caniuse-lite: 1.0.30001581 + browserslist: 4.23.0 + caniuse-lite: 1.0.30001587 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - dev: false - /caniuse-lite@1.0.30001581: - resolution: {integrity: sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==} - dev: false + /caniuse-lite@1.0.30001587: + resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -3368,8 +4828,8 @@ packages: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} dev: false - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 @@ -3385,7 +4845,6 @@ packages: /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - dev: false /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} @@ -3395,22 +4854,18 @@ packages: /ci-info@4.0.0: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} - dev: false - /citty@0.1.5: - resolution: {integrity: sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==} + /citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} dependencies: consola: 3.2.3 - dev: false /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} - dev: false /clear@0.1.0: resolution: {integrity: sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==} - dev: false /cli-cursor@4.0.0: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} @@ -3434,7 +4889,6 @@ packages: execa: 8.0.1 is-wsl: 3.1.0 is64bit: 2.0.0 - dev: false /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -3443,12 +4897,15 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} dev: false /cluster-key-slot@1.1.2: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} - dev: false /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -3476,7 +4933,6 @@ packages: /color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true - dev: false /color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} @@ -3498,10 +4954,18 @@ packages: /colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + /colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + dev: false + /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} dev: true + /colorjs.io@0.4.5: + resolution: {integrity: sha512-yCtUNCmge7llyfd/Wou19PMAcf5yC3XXhgFoAh6zsO2pGswhUPBaaUh8jzgHnXtXuZyFKzXZNAnyF5i+apICow==} + dev: false + /colorspace@1.1.4: resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} dependencies: @@ -3520,27 +4984,22 @@ packages: /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - dev: false /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} requiresBuild: true - dev: false /commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} - dev: false /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: false /compress-commons@5.0.1: resolution: {integrity: sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==} @@ -3550,7 +5009,6 @@ packages: crc32-stream: 5.0.0 normalize-path: 3.0.0 readable-stream: 3.6.2 - dev: false /computeds@0.0.1: resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} @@ -3558,14 +5016,21 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + /concaveman@1.2.1: + resolution: {integrity: sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==} + dependencies: + point-in-polygon: 1.1.0 + rbush: 3.0.1 + robust-predicates: 2.0.4 + tinyqueue: 2.0.3 + dev: false + /consola@3.2.3: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} engines: {node: ^14.18.0 || >=16.10.0} - dev: false /console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: false /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} @@ -3581,11 +5046,9 @@ packages: /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: false /cookie-es@1.0.0: resolution: {integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==} - dev: false /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} @@ -3598,7 +5061,6 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} @@ -3627,7 +5089,6 @@ packages: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} hasBin: true - dev: false /crc32-stream@5.0.0: resolution: {integrity: sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==} @@ -3635,11 +5096,9 @@ packages: dependencies: crc-32: 1.2.2 readable-stream: 3.6.2 - dev: false /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: false /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -3651,16 +5110,14 @@ packages: /crossws@0.1.1: resolution: {integrity: sha512-c9c/o7bS3OjsdpSkvexpka0JNlesBF2JU9B2V1yNsYGwRbAafxhJQ7VI9b48D5bpONz/oxbPGMzBojy9sXoQIQ==} - dev: false - /css-declaration-sorter@7.1.1(postcss@8.4.33): + /css-declaration-sorter@7.1.1(postcss@8.4.35): resolution: {integrity: sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.0.9 dependencies: - postcss: 8.4.33 - dev: false + postcss: 8.4.35 /css-functions-list@3.2.1: resolution: {integrity: sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==} @@ -3675,7 +5132,6 @@ packages: domhandler: 5.0.3 domutils: 3.1.0 nth-check: 2.1.1 - dev: false /css-tree@2.2.1: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} @@ -3684,7 +5140,6 @@ packages: dependencies: mdn-data: 2.0.28 source-map-js: 1.0.2 - dev: false /css-tree@2.3.1: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} @@ -3697,7 +5152,6 @@ packages: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} requiresBuild: true - dev: false /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -3710,76 +5164,102 @@ packages: dev: false optional: true - /cssnano-preset-default@6.0.3(postcss@8.4.33): + /cssnano-preset-default@6.0.3(postcss@8.4.35): resolution: {integrity: sha512-4y3H370aZCkT9Ev8P4SO4bZbt+AExeKhh8wTbms/X7OLDo5E7AYUUy6YPxa/uF5Grf+AJwNcCnxKhZynJ6luBA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - css-declaration-sorter: 7.1.1(postcss@8.4.33) - cssnano-utils: 4.0.1(postcss@8.4.33) - postcss: 8.4.33 - postcss-calc: 9.0.1(postcss@8.4.33) - postcss-colormin: 6.0.2(postcss@8.4.33) - postcss-convert-values: 6.0.2(postcss@8.4.33) - postcss-discard-comments: 6.0.1(postcss@8.4.33) - postcss-discard-duplicates: 6.0.1(postcss@8.4.33) - postcss-discard-empty: 6.0.1(postcss@8.4.33) - postcss-discard-overridden: 6.0.1(postcss@8.4.33) - postcss-merge-longhand: 6.0.2(postcss@8.4.33) - postcss-merge-rules: 6.0.3(postcss@8.4.33) - postcss-minify-font-values: 6.0.1(postcss@8.4.33) - postcss-minify-gradients: 6.0.1(postcss@8.4.33) - postcss-minify-params: 6.0.2(postcss@8.4.33) - postcss-minify-selectors: 6.0.2(postcss@8.4.33) - postcss-normalize-charset: 6.0.1(postcss@8.4.33) - postcss-normalize-display-values: 6.0.1(postcss@8.4.33) - postcss-normalize-positions: 6.0.1(postcss@8.4.33) - postcss-normalize-repeat-style: 6.0.1(postcss@8.4.33) - postcss-normalize-string: 6.0.1(postcss@8.4.33) - postcss-normalize-timing-functions: 6.0.1(postcss@8.4.33) - postcss-normalize-unicode: 6.0.2(postcss@8.4.33) - postcss-normalize-url: 6.0.1(postcss@8.4.33) - postcss-normalize-whitespace: 6.0.1(postcss@8.4.33) - postcss-ordered-values: 6.0.1(postcss@8.4.33) - postcss-reduce-initial: 6.0.2(postcss@8.4.33) - postcss-reduce-transforms: 6.0.1(postcss@8.4.33) - postcss-svgo: 6.0.2(postcss@8.4.33) - postcss-unique-selectors: 6.0.2(postcss@8.4.33) - dev: false - - /cssnano-utils@4.0.1(postcss@8.4.33): + css-declaration-sorter: 7.1.1(postcss@8.4.35) + cssnano-utils: 4.0.1(postcss@8.4.35) + postcss: 8.4.35 + postcss-calc: 9.0.1(postcss@8.4.35) + postcss-colormin: 6.0.2(postcss@8.4.35) + postcss-convert-values: 6.0.2(postcss@8.4.35) + postcss-discard-comments: 6.0.1(postcss@8.4.35) + postcss-discard-duplicates: 6.0.1(postcss@8.4.35) + postcss-discard-empty: 6.0.1(postcss@8.4.35) + postcss-discard-overridden: 6.0.1(postcss@8.4.35) + postcss-merge-longhand: 6.0.2(postcss@8.4.35) + postcss-merge-rules: 6.0.3(postcss@8.4.35) + postcss-minify-font-values: 6.0.1(postcss@8.4.35) + postcss-minify-gradients: 6.0.1(postcss@8.4.35) + postcss-minify-params: 6.0.2(postcss@8.4.35) + postcss-minify-selectors: 6.0.2(postcss@8.4.35) + postcss-normalize-charset: 6.0.1(postcss@8.4.35) + postcss-normalize-display-values: 6.0.1(postcss@8.4.35) + postcss-normalize-positions: 6.0.1(postcss@8.4.35) + postcss-normalize-repeat-style: 6.0.1(postcss@8.4.35) + postcss-normalize-string: 6.0.1(postcss@8.4.35) + postcss-normalize-timing-functions: 6.0.1(postcss@8.4.35) + postcss-normalize-unicode: 6.0.2(postcss@8.4.35) + postcss-normalize-url: 6.0.1(postcss@8.4.35) + postcss-normalize-whitespace: 6.0.1(postcss@8.4.35) + postcss-ordered-values: 6.0.1(postcss@8.4.35) + postcss-reduce-initial: 6.0.2(postcss@8.4.35) + postcss-reduce-transforms: 6.0.1(postcss@8.4.35) + postcss-svgo: 6.0.2(postcss@8.4.35) + postcss-unique-selectors: 6.0.2(postcss@8.4.35) + + /cssnano-utils@4.0.1(postcss@8.4.35): resolution: {integrity: sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 - dev: false + postcss: 8.4.35 - /cssnano@6.0.3(postcss@8.4.33): + /cssnano@6.0.3(postcss@8.4.35): resolution: {integrity: sha512-MRq4CIj8pnyZpcI2qs6wswoYoDD1t0aL28n+41c1Ukcpm56m1h6mCexIHBGjfZfnTqtGSSCP4/fB1ovxgjBOiw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - cssnano-preset-default: 6.0.3(postcss@8.4.33) - lilconfig: 3.0.0 - postcss: 8.4.33 + cssnano-preset-default: 6.0.3(postcss@8.4.35) + lilconfig: 3.1.0 + postcss: 8.4.35 + + /csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + requiresBuild: true + dependencies: + css-tree: 2.2.1 + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /cva@1.0.0-beta.1(typescript@5.3.3): + resolution: {integrity: sha512-gznFqTgERU9q4wg7jfgqtt34+RUt9S5t0xDAAEuDwQEAXEgjdDkKXpLLNjwSxsB4Ln/sqWJEH7yhE8Ny0mxd0w==} + peerDependencies: + typescript: '>= 4.5.5 < 6' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + clsx: 2.0.0 + typescript: 5.3.3 dev: false - /csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - requiresBuild: true + /d3-array@1.2.4: + resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} + dev: false + + /d3-geo@1.7.1: + resolution: {integrity: sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==} dependencies: - css-tree: 2.2.1 + d3-array: 1.2.4 dev: false - /csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + /d3-voronoi@1.1.2: + resolution: {integrity: sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==} dev: false + /date-format@4.0.3: + resolution: {integrity: sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==} + engines: {node: '>=4.0'} + dev: true + /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -3815,8 +5295,8 @@ packages: dependencies: ms: 2.1.2 - /decap-server@3.0.1: - resolution: {integrity: sha512-djqNHCpKvYU0EqCCKROumK/QT23O1pV+pjqvbg2teCEj+z3mB6ji6GbZk7DXhpK6nHvvvXXdoSz6Ilrll1U9Ug==} + /decap-server@3.0.2: + resolution: {integrity: sha512-v1G0rx3MY2dAD3Dxv3YCF2yeWQPbSeTXoVAphs+ybnteH4YjsKNfIiwchzLkmsZILNFoAHYJwaV4lahslRqoeA==} engines: {node: '>=v10.22.1'} hasBin: true dependencies: @@ -3839,18 +5319,28 @@ packages: character-entities: 2.0.2 dev: false + /deep-equal@1.1.2: + resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==} + engines: {node: '>= 0.4'} + dependencies: + is-arguments: 1.1.1 + is-date-object: 1.0.5 + is-regex: 1.1.4 + object-is: 1.1.5 + object-keys: 1.1.1 + regexp.prototype.flags: 1.5.2 + dev: false + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - dev: false /default-browser-id@5.0.0: resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} engines: {node: '>=18'} - dev: false /default-browser@5.2.1: resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} @@ -3858,38 +5348,44 @@ packages: dependencies: bundle-name: 4.1.0 default-browser-id: 5.0.0 - dev: false - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 + es-define-property: 1.0.0 + es-errors: 1.3.0 gopd: 1.0.1 - has-property-descriptors: 1.0.1 - dev: true /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - dev: false /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 dev: false /defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - dev: false /delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: false /denque@2.1.0: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} + + /density-clustering@1.3.0: + resolution: {integrity: sha512-icpmBubVTwLnsaor9qH/4tG5+7+f61VcqMN3V3pm9sxxSCt2Jcs0zWOgwZW9ARJYaKD3FumIgHiMOcIMRRAzFQ==} dev: false /depd@2.0.0: @@ -3902,7 +5398,6 @@ packages: /destr@2.0.2: resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==} - dev: false /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} @@ -3916,16 +5411,13 @@ packages: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} hasBin: true - dev: false /detect-libc@2.0.2: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} - dev: false /devalue@4.3.2: resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} - dev: false /devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -3933,10 +5425,13 @@ packages: dequal: 2.0.3 dev: false - /diff@5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + + /diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} - dev: false /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -3944,6 +5439,10 @@ packages: dependencies: path-type: 4.0.0 + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -3979,34 +5478,43 @@ packages: engines: {node: '>=16'} dependencies: type-fest: 3.13.1 - dev: false /dotenv-cli@7.3.0: resolution: {integrity: sha512-314CA4TyK34YEJ6ntBf80eUY+t1XaFLyem1k9P0sX1gn30qThZ5qZr/ZwE318gEnzyYP9yj9HJk6SqwE0upkfw==} hasBin: true dependencies: cross-spawn: 7.0.3 - dotenv: 16.4.1 + dotenv: 16.4.4 dotenv-expand: 10.0.0 minimist: 1.2.8 - dev: true + dev: false /dotenv-expand@10.0.0: resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} engines: {node: '>=12'} - dev: true + dev: false + + /dotenv-expand@11.0.4: + resolution: {integrity: sha512-1a/jdB9ZFVtAxt8QvXkLmIAcQw1lqAg+KaRB0Eh2BaG0yHCSUUPttyuPFqH36WhZvEVpjghSfUaobNzisuH4Ng==} + engines: {node: '>=12'} + dependencies: + dotenv: 16.4.4 + dev: false /dotenv@10.0.0: resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} engines: {node: '>=10'} dev: true - /dotenv@16.4.1: - resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==} + /dotenv@16.4.4: + resolution: {integrity: sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg==} engines: {node: '>=12'} /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + /earcut@2.2.4: + resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} dev: false /eastasianwidth@0.2.0: @@ -4015,8 +5523,29 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - /electron-to-chromium@1.4.650: - resolution: {integrity: sha512-sYSQhJCJa4aGA1wYol5cMQgekDBlbVfTRavlGZVr3WZpDdOPcp6a6xUnFfrt8TqZhsBYYbDxJZCjGfHuGupCRQ==} + /electron-to-chromium@1.4.672: + resolution: {integrity: sha512-YYCy+goe3UqZqa3MOQCI5Mx/6HdBLzXL/mkbGCEWL3sP3Z1BP9zqAzeD3YEmLZlespYGFtyM8tRp5i2vfaUGCA==} + + /embla-carousel-reactive-utils@8.0.0-rc22(embla-carousel@8.0.0-rc22): + resolution: {integrity: sha512-K4b8QhQGXYW5wr4l+U6XryhafsFV5c/IyohDnZN3MGoYIB9xY7qpjUWAcs5bTDjAD+qCZPOuXre0D3IVa28mqw==} + peerDependencies: + embla-carousel: 8.0.0-rc22 + dependencies: + embla-carousel: 8.0.0-rc22 + dev: false + + /embla-carousel-vue@8.0.0-rc22(vue@3.4.19): + resolution: {integrity: sha512-QTMZ/q987KNc8yCSHs+q8hVa/c65yD/m04vHY5BkU5yqLTAde0jmisNVRAZhiLKin5U7CJKkd+vVIZvQIfBggQ==} + peerDependencies: + vue: ^3.2.37 + dependencies: + embla-carousel: 8.0.0-rc22 + embla-carousel-reactive-utils: 8.0.0-rc22(embla-carousel@8.0.0-rc22) + vue: 3.4.19(typescript@5.3.3) + dev: false + + /embla-carousel@8.0.0-rc22: + resolution: {integrity: sha512-MeXnPT1LShfgAu8qXj3CskayV0R6OkHx7w3cPTx+Q5ZWKyShKpIuu7qVQJ5BoFegalE4n6yxqoQaRuGFbK9pYw==} dev: false /emoji-regex@10.3.0: @@ -4050,7 +5579,6 @@ packages: requiresBuild: true dependencies: iconv-lite: 0.6.3 - dev: false optional: true /engine.io-client@6.5.3: @@ -4058,7 +5586,7 @@ packages: dependencies: '@socket.io/component-emitter': 3.1.0 debug: 4.3.4 - engine.io-parser: 5.2.1 + engine.io-parser: 5.2.2 ws: 8.11.0 xmlhttprequest-ssl: 2.0.0 transitivePeerDependencies: @@ -4067,8 +5595,8 @@ packages: - utf-8-validate dev: false - /engine.io-parser@5.2.1: - resolution: {integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==} + /engine.io-parser@5.2.2: + resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} engines: {node: '>=10.0.0'} dev: false @@ -4089,7 +5617,6 @@ packages: /err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - dev: false /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -4098,7 +5625,16 @@ packages: /error-stack-parser-es@0.1.1: resolution: {integrity: sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==} - dev: false + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} /esbuild@0.19.12: resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} @@ -4129,12 +5665,40 @@ packages: '@esbuild/win32-arm64': 0.19.12 '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 - dev: false - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + /esbuild@0.20.0: + resolution: {integrity: sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.0 + '@esbuild/android-arm': 0.20.0 + '@esbuild/android-arm64': 0.20.0 + '@esbuild/android-x64': 0.20.0 + '@esbuild/darwin-arm64': 0.20.0 + '@esbuild/darwin-x64': 0.20.0 + '@esbuild/freebsd-arm64': 0.20.0 + '@esbuild/freebsd-x64': 0.20.0 + '@esbuild/linux-arm': 0.20.0 + '@esbuild/linux-arm64': 0.20.0 + '@esbuild/linux-ia32': 0.20.0 + '@esbuild/linux-loong64': 0.20.0 + '@esbuild/linux-mips64el': 0.20.0 + '@esbuild/linux-ppc64': 0.20.0 + '@esbuild/linux-riscv64': 0.20.0 + '@esbuild/linux-s390x': 0.20.0 + '@esbuild/linux-x64': 0.20.0 + '@esbuild/netbsd-x64': 0.20.0 + '@esbuild/openbsd-x64': 0.20.0 + '@esbuild/sunos-x64': 0.20.0 + '@esbuild/win32-arm64': 0.20.0 + '@esbuild/win32-ia32': 0.20.0 + '@esbuild/win32-x64': 0.20.0 + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} - dev: false /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -4150,7 +5714,6 @@ packages: /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - dev: false /escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} @@ -4183,7 +5746,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.20.0)(eslint-plugin-i@2.29.1)(eslint@8.56.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-plugin-i@2.29.1)(eslint@8.56.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -4193,8 +5756,8 @@ packages: debug: 4.3.4 enhanced-resolve: 5.15.0 eslint: 8.56.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) - eslint-plugin-import: /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-import: /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -4206,7 +5769,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -4227,16 +5790,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) debug: 3.2.7 eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.20.0)(eslint-plugin-i@2.29.1)(eslint@8.56.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-plugin-i@2.29.1)(eslint@8.56.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): resolution: {integrity: sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==} engines: {node: '>=12'} peerDependencies: @@ -4246,11 +5809,11 @@ packages: doctrine: 3.0.0 eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) get-tsconfig: 4.7.2 is-glob: 4.0.3 minimatch: 3.1.2 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-typescript @@ -4261,8 +5824,8 @@ packages: /eslint-plugin-nuxt@4.0.0(eslint@8.56.0): resolution: {integrity: sha512-v3Vwdk8YKe52bAz8eSIDqQuTtfL/T1r9dSl1uhC5SyR5pgLxgKkQdxXVf/Bf6Ax7uyd9rHqiAuYVdqqDb7ILdA==} dependencies: - eslint-plugin-vue: 9.20.1(eslint@8.56.0) - semver: 7.5.4 + eslint-plugin-vue: 9.21.1(eslint@8.56.0) + semver: 7.6.0 vue-eslint-parser: 9.4.2(eslint@8.56.0) transitivePeerDependencies: - eslint @@ -4277,8 +5840,19 @@ packages: eslint: 8.56.0 dev: true - /eslint-plugin-vue@9.20.1(eslint@8.56.0): - resolution: {integrity: sha512-GyCs8K3lkEvoyC1VV97GJhP1SvqsKCiWGHnbn0gVUYiUhaH2+nB+Dv1uekv1THFMPbBfYxukrzQdltw950k+LQ==} + /eslint-plugin-tailwindcss@3.14.2(tailwindcss@3.4.1): + resolution: {integrity: sha512-fNzdf4poZP2yQC0xC2prQxMuArMSb5mnellLQvwb9HC3NcLzxs+0IVKWIg1BqUqyui0c+bbjMmhWcKUWK67SLQ==} + engines: {node: '>=12.13.0'} + peerDependencies: + tailwindcss: ^3.4.0 + dependencies: + fast-glob: 3.3.2 + postcss: 8.4.35 + tailwindcss: 3.4.1 + dev: true + + /eslint-plugin-vue@9.21.1(eslint@8.56.0): + resolution: {integrity: sha512-XVtI7z39yOVBFJyi8Ljbn7kY9yHzznKXL02qQYn+ta63Iy4A9JFBw6o4OSB9hyD2++tVT+su9kQqetUyCCwhjw==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 @@ -4288,7 +5862,7 @@ packages: natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.15 - semver: 7.5.4 + semver: 7.6.0 vue-eslint-parser: 9.4.2(eslint@8.56.0) xml-name-validator: 4.0.0 transitivePeerDependencies: @@ -4350,7 +5924,7 @@ packages: glob-parent: 6.0.2 globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -4403,7 +5977,6 @@ packages: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: '@types/estree': 1.0.5 - dev: false /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} @@ -4413,10 +5986,20 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false + /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: true + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false + /execa@7.2.0: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} @@ -4430,7 +6013,6 @@ packages: onetime: 6.0.0 signal-exit: 3.0.7 strip-final-newline: 3.0.0 - dev: false /execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} @@ -4448,7 +6030,6 @@ packages: /exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - dev: false /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} @@ -4489,6 +6070,21 @@ packages: - supports-color dev: true + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: false + + /extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: false + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: false @@ -4499,15 +6095,13 @@ packages: enhanced-resolve: 5.15.0 mlly: 1.5.0 pathe: 1.1.2 - ufo: 1.3.2 - dev: false + ufo: 1.4.0 /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} /fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - dev: false /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} @@ -4525,12 +6119,17 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + /fast-redact@3.3.0: + resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} + engines: {node: '>=6'} + dev: false + /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} - /fastq@1.17.0: - resolution: {integrity: sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==} + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 @@ -4552,7 +6151,6 @@ packages: /file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - dev: false /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} @@ -4601,7 +6199,6 @@ packages: /flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - dev: false /flat@6.0.1: resolution: {integrity: sha512-/3FfIa8mbrg3xE7+wAhWeV+bd7L2Mof+xtZb5dRDKZ+wDvYJK4WDYeIOuOhre5Yv5aQObZrlbRmk3RTSiuQBtw==} @@ -4630,7 +6227,6 @@ packages: /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - dev: false /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} @@ -4643,21 +6239,18 @@ packages: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - dev: false /fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} dependencies: minipass: 3.3.6 - dev: false /fs-minipass@3.0.3: resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: minipass: 7.0.4 - dev: false /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -4680,6 +6273,10 @@ packages: /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: false + /gauge@3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} engines: {node: '>=10'} @@ -4693,40 +6290,56 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wide-align: 1.1.5 - dev: false /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + + /geojson-equality@0.1.6: + resolution: {integrity: sha512-TqG8YbqizP3EfwP5Uw4aLu6pKkg6JQK9uq/XZ1lXQntvTHD1BBKJWhNpJ2M0ax6TuWMP3oyx6Oq7FCIfznrgpQ==} + dependencies: + deep-equal: 1.1.2 + dev: false + + /geojson-rbush@3.2.0: + resolution: {integrity: sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==} + dependencies: + '@turf/bbox': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + '@types/geojson': 7946.0.8 + rbush: 3.0.1 + dev: false + + /geojson-vt@3.2.1: + resolution: {integrity: sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==} dev: false /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: false /get-east-asian-width@1.2.0: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} engines: {node: '>=18'} dev: true - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: + es-errors: 1.3.0 function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 - hasown: 2.0.0 - dev: true + hasown: 2.0.1 /get-port-please@3.1.2: resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} - dev: false /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - dev: false /get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} @@ -4736,44 +6349,48 @@ packages: resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} dependencies: resolve-pkg-maps: 1.0.0 - dev: true + + /get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + dev: false /giget@1.2.1: resolution: {integrity: sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==} hasBin: true dependencies: - citty: 0.1.5 + citty: 0.1.6 consola: 3.2.3 defu: 6.1.4 - node-fetch-native: 1.6.1 + node-fetch-native: 1.6.2 nypm: 0.3.6 ohash: 1.1.3 pathe: 1.1.2 tar: 6.2.0 - dev: false /git-config-path@2.0.0: resolution: {integrity: sha512-qc8h1KIQbJpp+241id3GuAtkdyJ+IK+LIVtkiFTRKRrmddDzs3SI9CvP1QYmWBFvm1I/PWRwj//of8bgAc0ltA==} engines: {node: '>=4'} - dev: false /git-up@7.0.0: resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} dependencies: is-ssh: 1.4.0 parse-url: 8.1.0 - dev: false /git-url-parse@13.1.1: resolution: {integrity: sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==} dependencies: git-up: 7.0.0 - dev: false /github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} dev: false + /gl-matrix@3.4.3: + resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==} + dev: false + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -4816,14 +6433,12 @@ packages: inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - dev: false /global-directory@4.0.1: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} dependencies: ini: 4.1.1 - dev: false /global-modules@2.0.0: resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} @@ -4842,7 +6457,6 @@ packages: /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - dev: false /globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} @@ -4857,21 +6471,20 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 - /globby@14.0.0: - resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} + /globby@14.0.1: + resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} engines: {node: '>=18'} dependencies: - '@sindresorhus/merge-streams': 1.0.0 + '@sindresorhus/merge-streams': 2.2.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 path-type: 5.0.0 slash: 5.1.0 unicorn-magic: 0.1.0 - dev: false /globjoin@0.1.4: resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} @@ -4879,8 +6492,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.2 - dev: true + get-intrinsic: 1.2.4 /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -4893,7 +6505,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: duplexer: 0.1.2 - dev: false /h3@1.10.1: resolution: {integrity: sha512-UBAUp47hmm4BB5/njB4LrEa9gpuvZj4/Qf/ynSMzO6Ku2RXaouxEfiG2E2IFnv6fxbhAkzjasDxmo6DFdEeXRg==} @@ -4904,10 +6515,9 @@ packages: iron-webcrypto: 1.0.0 ohash: 1.1.3 radix3: 1.1.0 - ufo: 1.3.2 + ufo: 1.4.0 uncrypto: 0.1.3 unenv: 1.9.0 - dev: false /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} @@ -4917,32 +6527,34 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - get-intrinsic: 1.2.2 - dev: true + es-define-property: 1.0.0 /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} - dev: true /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - dev: true + + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: false /hash-sum@2.0.0: resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} - dev: false - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + /hasown@2.0.1: + resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 @@ -4950,7 +6562,7 @@ packages: /hast-util-from-parse5@8.0.1: resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/unist': 3.0.2 devlop: 1.1.0 hastscript: 8.0.0 @@ -4963,25 +6575,25 @@ packages: /hast-util-heading-rank@3.0.0: resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 dev: false /hast-util-is-element@3.0.0: resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 dev: false /hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 dev: false /hast-util-raw@9.0.2: resolution: {integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/unist': 3.0.2 '@ungap/structured-clone': 1.2.0 hast-util-from-parse5: 8.0.1 @@ -4999,7 +6611,7 @@ packages: /hast-util-to-parse5@8.0.0: resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 property-information: 6.4.1 @@ -5011,13 +6623,13 @@ packages: /hast-util-to-string@3.0.0: resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 dev: false /hastscript@8.0.0: resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 6.4.1 @@ -5030,14 +6642,12 @@ packages: /hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - dev: false /hosted-git-info@7.0.1: resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} engines: {node: ^16.14.0 || >=18.0.0} dependencies: lru-cache: 10.2.0 - dev: false /html-tags@3.3.1: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} @@ -5058,7 +6668,6 @@ packages: /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: false /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} @@ -5070,20 +6679,18 @@ packages: statuses: 2.0.1 toidentifier: 1.0.1 - /http-proxy-agent@7.0.0: - resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + /http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false /http-shutdown@1.2.2: resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: false /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} @@ -5093,26 +6700,22 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false - /https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + /https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false /httpxy@0.1.5: resolution: {integrity: sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ==} - dev: false /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} - dev: false /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} @@ -5131,26 +6734,24 @@ packages: requiresBuild: true dependencies: safer-buffer: 2.1.2 - dev: false optional: true + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + /ignore-walk@6.0.4: resolution: {integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: minimatch: 9.0.3 - dev: false - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} /image-meta@0.2.0: resolution: {integrity: sha512-ZBGjl0ZMEMeOC3Ns0wUF/5UdUmr3qQhBSCniT0LxOgGGIRHiNFOkMtIHB7EOznRU47V2AxPgiVP+s+0/UCU0Hg==} - dev: false - - /immutable@4.3.5: - resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -5166,7 +6767,6 @@ packages: /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - dev: false /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} @@ -5183,7 +6783,6 @@ packages: /ini@4.1.1: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: false /ioredis@5.3.2: resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} @@ -5200,24 +6799,26 @@ packages: standard-as-callback: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} - dev: false + /ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} dev: true - /ipx@3.0.0: - resolution: {integrity: sha512-hE/WwWsNZ2nlNpRUc8ri7rqLlBgMBp3kTuwbvfseO32e9kNzfvj05sNwdf2/7P/M3XOKAGc1RP8e/iQzYz/thA==} + /ipx@3.0.1: + resolution: {integrity: sha512-OqbP9wLqpGXtI/le0sU4exCH5cb7kZS9jaV5xDDM8wZ62VJZBBhEjR0gXwK0agA/GfS4g/GGwY9fFSIFrTb4Gg==} hasBin: true requiresBuild: true dependencies: '@fastify/accept-negotiator': 1.1.0 - citty: 0.1.5 + citty: 0.1.6 consola: 3.2.3 defu: 6.1.4 destr: 2.0.2 @@ -5229,7 +6830,7 @@ packages: pathe: 1.1.2 sharp: 0.33.2 svgo: 3.2.0 - ufo: 1.3.2 + ufo: 1.4.0 unstorage: 1.10.1 xss: 1.0.14 transitivePeerDependencies: @@ -5251,7 +6852,6 @@ packages: /iron-webcrypto@1.0.0: resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==} - dev: false /is-absolute-url@4.0.1: resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} @@ -5269,6 +6869,14 @@ packages: is-decimal: 2.0.1 dev: false + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: false + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -5287,7 +6895,6 @@ packages: engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 - dev: false /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} @@ -5299,7 +6906,14 @@ packages: /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.1 + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: false /is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} @@ -5309,12 +6923,22 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - dev: false /is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: false + + /is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-object: 2.0.4 dev: false /is-extglob@2.1.1: @@ -5357,7 +6981,6 @@ packages: hasBin: true dependencies: is-docker: 3.0.0 - dev: false /is-installed-globally@1.0.0: resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==} @@ -5365,15 +6988,12 @@ packages: dependencies: global-directory: 4.0.1 is-path-inside: 4.0.0 - dev: false /is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - dev: false /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - dev: false /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -5386,13 +7006,19 @@ packages: /is-path-inside@4.0.0: resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} engines: {node: '>=12'} - dev: false /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} dev: false + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: false + /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} @@ -5400,23 +7026,24 @@ packages: /is-primitive@3.0.1: resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} engines: {node: '>=0.10.0'} - dev: false - - /is-promise@4.0.0: - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - dev: false /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: '@types/estree': 1.0.5 + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: false /is-ssh@1.4.0: resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} dependencies: protocols: 2.0.1 - dev: false /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} @@ -5432,25 +7059,21 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - dev: false /is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} dependencies: is-inside-container: 1.0.0 - dev: false /is64bit@2.0.0: resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} engines: {node: '>=18'} dependencies: system-architecture: 0.1.0 - dev: false /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -5458,6 +7081,10 @@ packages: /isexe@3.1.1: resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} engines: {node: '>=16'} + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} dev: false /jackspeak@2.3.6: @@ -5471,13 +7098,17 @@ packages: /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true + + /js-levenshtein@1.1.6: + resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} + engines: {node: '>=0.10.0'} dev: false /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-tokens@8.0.2: - resolution: {integrity: sha512-Olnt+V7xYdvGze9YTbGFZIfQXuGV4R3nQwwl8BrtgaPE/wq8UFpUHWuTNc05saowhSr1ZO6tx+V6RjE9D5YQog==} + /js-tokens@8.0.3: + resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} @@ -5485,11 +7116,13 @@ packages: dependencies: argparse: 2.0.1 + /jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true - dev: false /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -5500,7 +7133,6 @@ packages: /json-parse-even-better-errors@3.0.1: resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: false /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -5511,11 +7143,14 @@ packages: /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + /json-stringify-pretty-compact@4.0.0: + resolution: {integrity: sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==} + dev: false + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - dev: false /jsonc-eslint-parser@2.4.0: resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} @@ -5524,12 +7159,11 @@ packages: acorn: 8.11.3 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - semver: 7.5.4 + semver: 7.6.0 dev: false /jsonc-parser@3.2.1: resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} - dev: false /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -5537,11 +7171,23 @@ packages: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 - dev: false /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} + + /junit-report-builder@3.2.1: + resolution: {integrity: sha512-IMCp5XyDQ4YESDE4Za7im3buM0/7cMnRfe17k2X8B05FnUl9vqnaliX6cgOEmPIeWKfJrEe/gANRq/XgqttCqQ==} + engines: {node: '>=8'} + dependencies: + date-format: 4.0.3 + lodash: 4.17.21 + make-dir: 3.1.0 + xmlbuilder: 15.1.1 + dev: true + + /kdbush@4.0.2: + resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==} dev: false /keyv@4.5.4: @@ -5556,23 +7202,19 @@ packages: /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - dev: false /klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} - dev: false /knitwork@1.0.0: resolution: {integrity: sha512-dWl0Dbjm6Xm+kDxhPQJsCBTxrJzuGl0aP9rhr+TG8D3l+GL90N8O8lYUi7dTSAN2uuDqCtNgb6aEuQH5wsiV8Q==} - dev: false /known-css-properties@0.29.0: resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} /kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - dev: false /kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} @@ -5583,18 +7225,12 @@ packages: dependencies: picocolors: 1.0.0 shell-quote: 1.8.1 - dev: false /lazystream@1.0.1: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} dependencies: readable-stream: 2.3.8 - dev: false - - /leaflet@1.9.4: - resolution: {integrity: sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==} - dev: false /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} @@ -5603,20 +7239,25 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + /lilconfig@3.0.0: resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} engines: {node: '>=14'} + dev: true + + /lilconfig@3.1.0: + resolution: {integrity: sha512-p3cz0JV5vw/XeouBU3Ldnp+ZkBjE+n8ydJ4mcwBrOiXXPqNlrzGBqWs9X4MWF7f+iKUBu794Y8Hh8yawiJbCjw==} + engines: {node: '>=14'} /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /lines-and-columns@2.0.4: - resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - - /lint-staged@15.2.0: - resolution: {integrity: sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==} + /lint-staged@15.2.2: + resolution: {integrity: sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==} engines: {node: '>=18.12.0'} hasBin: true dependencies: @@ -5625,7 +7266,7 @@ packages: debug: 4.3.4 execa: 8.0.1 lilconfig: 3.0.0 - listr2: 8.0.0 + listr2: 8.0.1 micromatch: 4.0.5 pidtree: 0.6.0 string-argv: 0.3.2 @@ -5640,7 +7281,7 @@ packages: dependencies: '@parcel/watcher': 2.4.0 '@parcel/watcher-wasm': 2.4.0 - citty: 0.1.5 + citty: 0.1.6 clipboardy: 4.0.0 consola: 3.2.3 crossws: 0.1.1 @@ -5653,13 +7294,12 @@ packages: node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.7.0 - ufo: 1.3.2 + ufo: 1.4.0 untun: 0.1.3 uqr: 0.1.2 - dev: false - /listr2@8.0.0: - resolution: {integrity: sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==} + /listr2@8.0.1: + resolution: {integrity: sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==} engines: {node: '>=18.0.0'} dependencies: cli-truncate: 4.0.0 @@ -5673,7 +7313,6 @@ packages: /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} - dev: false /local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} @@ -5681,7 +7320,6 @@ packages: dependencies: mlly: 1.5.0 pkg-types: 1.0.3 - dev: false /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} @@ -5689,27 +7327,45 @@ packages: dependencies: p-locate: 5.0.0 - /lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + /lodash._reinterpolate@3.0.0: + resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} dev: false + /lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + dev: true + /lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - dev: false /lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} dev: false + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - dev: false /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - /lodash.pick@4.4.0: - resolution: {integrity: sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==} + /lodash.template@4.5.0: + resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==} + dependencies: + lodash._reinterpolate: 3.0.0 + lodash.templatesettings: 4.2.0 + dev: false + + /lodash.templatesettings@4.2.0: + resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} + dependencies: + lodash._reinterpolate: 3.0.0 dev: false /lodash.truncate@4.4.2: @@ -5717,7 +7373,6 @@ packages: /lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - dev: false /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -5757,7 +7412,6 @@ packages: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 - dev: false /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} @@ -5765,19 +7419,25 @@ packages: dependencies: yallist: 4.0.0 + /lucide-vue-next@0.331.0(vue@3.4.19): + resolution: {integrity: sha512-xMEmEdyuYKVxTwCI94adtWOmjmsG9UZBlEVqJnorxJy8QTBq68ZC5zADXRHN1gehvVaYj9g+H1vdwdVEo3uj7w==} + peerDependencies: + vue: '>=3.0.1' + dependencies: + vue: 3.4.19(typescript@5.3.3) + dev: false + /magic-string-ast@0.3.0: resolution: {integrity: sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==} engines: {node: '>=16.14.0'} dependencies: - magic-string: 0.30.5 - dev: false + magic-string: 0.30.7 - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + /magic-string@0.30.7: + resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: false /magicast@0.3.3: resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} @@ -5785,20 +7445,18 @@ packages: '@babel/parser': 7.23.9 '@babel/types': 7.23.9 source-map-js: 1.0.2 - dev: false /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.1 - dev: false /make-fetch-happen@13.0.0: resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} engines: {node: ^16.14.0 || >=18.0.0} dependencies: - '@npmcli/agent': 2.2.0 + '@npmcli/agent': 2.2.1 cacache: 18.0.2 http-cache-semantics: 4.1.1 is-lambda: 1.0.1 @@ -5811,6 +7469,37 @@ packages: ssri: 10.0.5 transitivePeerDependencies: - supports-color + + /maplibre-gl@4.0.1: + resolution: {integrity: sha512-UF+wI2utIciFXNg6+gYaMe7IGa9fMLzAZM3vdlGilqyWYmuibjcN40yGVgkz2r28//aOLphvtli3TbDEjEqHww==} + engines: {node: '>=16.14.0', npm: '>=8.1.0'} + dependencies: + '@mapbox/geojson-rewind': 0.5.2 + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/point-geometry': 0.1.0 + '@mapbox/tiny-sdf': 2.0.6 + '@mapbox/unitbezier': 0.0.1 + '@mapbox/vector-tile': 1.3.1 + '@mapbox/whoots-js': 3.1.0 + '@maplibre/maplibre-gl-style-spec': 20.1.1 + '@types/geojson': 7946.0.14 + '@types/geojson-vt': 3.2.5 + '@types/mapbox__point-geometry': 0.1.4 + '@types/mapbox__vector-tile': 1.3.4 + '@types/pbf': 3.0.5 + '@types/supercluster': 7.1.3 + earcut: 2.2.4 + geojson-vt: 3.2.1 + gl-matrix: 3.4.3 + global-prefix: 3.0.0 + kdbush: 4.0.2 + murmurhash-js: 1.0.0 + pbf: 3.2.1 + potpack: 2.0.0 + quickselect: 2.0.0 + supercluster: 8.0.1 + tinyqueue: 2.0.3 + vt-pbf: 3.1.3 dev: false /markdown-table@3.0.3: @@ -5917,8 +7606,8 @@ packages: - supports-color dev: false - /mdast-util-phrasing@4.0.0: - resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + /mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} dependencies: '@types/mdast': 4.0.3 unist-util-is: 6.0.0 @@ -5927,7 +7616,7 @@ packages: /mdast-util-to-hast@13.1.0: resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/mdast': 4.0.3 '@ungap/structured-clone': 1.2.0 devlop: 1.1.0 @@ -5944,7 +7633,7 @@ packages: '@types/mdast': 4.0.3 '@types/unist': 3.0.2 longest-streak: 3.1.0 - mdast-util-phrasing: 4.0.0 + mdast-util-phrasing: 4.1.0 mdast-util-to-string: 4.0.0 micromark-util-decode-string: 2.0.0 unist-util-visit: 5.0.0 @@ -5960,7 +7649,6 @@ packages: /mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} requiresBuild: true - dev: false /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} @@ -5979,8 +7667,8 @@ packages: engines: {node: '>= 0.10.0'} dev: false - /meow@13.1.0: - resolution: {integrity: sha512-o5R/R3Tzxq0PJ3v3qcQJtSvSE9nKOLSAaDuuoMzDVuGTwHdccMWcYomh9Xolng2tjT6O/Y83d+0coVGof6tqmA==} + /meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} /merge-descriptors@1.0.1: @@ -6274,7 +7962,6 @@ packages: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} hasBin: true - dev: false /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} @@ -6300,7 +7987,6 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - dev: false /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -6310,14 +7996,13 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true + dev: false /minipass-collect@2.0.1: resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} engines: {node: '>=16 || 14 >=14.17'} dependencies: minipass: 7.0.4 - dev: false /minipass-fetch@3.0.4: resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} @@ -6328,47 +8013,40 @@ packages: minizlib: 2.1.2 optionalDependencies: encoding: 0.1.13 - dev: false /minipass-flush@1.0.5: resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} engines: {node: '>= 8'} dependencies: minipass: 3.3.6 - dev: false /minipass-json-stream@1.0.1: resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} dependencies: jsonparse: 1.3.1 minipass: 3.3.6 - dev: false /minipass-pipeline@1.2.4: resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} engines: {node: '>=8'} dependencies: minipass: 3.3.6 - dev: false /minipass-sized@1.0.3: resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} engines: {node: '>=8'} dependencies: minipass: 3.3.6 - dev: false /minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} dependencies: yallist: 4.0.0 - dev: false /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} - dev: false /minipass@7.0.4: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} @@ -6384,13 +8062,11 @@ packages: dependencies: minipass: 3.3.6 yallist: 4.0.0 - dev: false /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - dev: false /mlly@1.5.0: resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} @@ -6398,8 +8074,7 @@ packages: acorn: 8.11.3 pathe: 1.1.2 pkg-types: 1.0.3 - ufo: 1.3.2 - dev: false + ufo: 1.4.0 /morgan@1.10.0: resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} @@ -6417,12 +8092,10 @@ packages: /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - dev: false /mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} - dev: false /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -6436,13 +8109,21 @@ packages: /muggle-string@0.3.1: resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + /murmurhash-js@1.0.0: + resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} + dev: false + + /mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + dev: true + /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - dev: false /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} @@ -6453,7 +8134,6 @@ packages: resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} engines: {node: ^14 || ^16 || >=18} hasBin: true - dev: false /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -6473,23 +8153,23 @@ packages: optional: true dependencies: '@cloudflare/kv-asset-handler': 0.3.1 - '@netlify/functions': 2.5.1 - '@rollup/plugin-alias': 5.1.0(rollup@4.9.6) - '@rollup/plugin-commonjs': 25.0.7(rollup@4.9.6) - '@rollup/plugin-inject': 5.0.5(rollup@4.9.6) - '@rollup/plugin-json': 6.1.0(rollup@4.9.6) - '@rollup/plugin-node-resolve': 15.2.3(rollup@4.9.6) - '@rollup/plugin-replace': 5.0.5(rollup@4.9.6) - '@rollup/plugin-terser': 0.4.4(rollup@4.9.6) - '@rollup/plugin-wasm': 6.2.2(rollup@4.9.6) - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + '@netlify/functions': 2.6.0 + '@rollup/plugin-alias': 5.1.0(rollup@4.11.0) + '@rollup/plugin-commonjs': 25.0.7(rollup@4.11.0) + '@rollup/plugin-inject': 5.0.5(rollup@4.11.0) + '@rollup/plugin-json': 6.1.0(rollup@4.11.0) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.11.0) + '@rollup/plugin-replace': 5.0.5(rollup@4.11.0) + '@rollup/plugin-terser': 0.4.4(rollup@4.11.0) + '@rollup/plugin-wasm': 6.2.2(rollup@4.11.0) + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) '@types/http-proxy': 1.17.14 '@vercel/nft': 0.24.4 archiver: 6.0.1 - c12: 1.6.1 + c12: 1.8.0 chalk: 5.3.0 - chokidar: 3.5.3 - citty: 0.1.5 + chokidar: 3.6.0 + citty: 0.1.6 consola: 3.2.3 cookie-es: 1.0.0 defu: 6.1.4 @@ -6500,7 +8180,7 @@ packages: estree-walker: 3.0.3 etag: 1.8.1 fs-extra: 11.2.0 - globby: 14.0.0 + globby: 14.0.1 gzip-size: 7.0.0 h3: 1.10.1 hookable: 5.5.3 @@ -6510,11 +8190,11 @@ packages: klona: 2.0.6 knitwork: 1.0.0 listhen: 1.6.0 - magic-string: 0.30.5 + magic-string: 0.30.7 mime: 3.0.0 mlly: 1.5.0 mri: 1.2.0 - node-fetch-native: 1.6.1 + node-fetch-native: 1.6.2 ofetch: 1.3.3 ohash: 1.1.3 openapi-typescript: 6.7.4 @@ -6523,18 +8203,18 @@ packages: pkg-types: 1.0.3 pretty-bytes: 6.1.1 radix3: 1.1.0 - rollup: 4.9.6 - rollup-plugin-visualizer: 5.12.0(rollup@4.9.6) - scule: 1.2.0 - semver: 7.5.4 + rollup: 4.11.0 + rollup-plugin-visualizer: 5.12.0(rollup@4.11.0) + scule: 1.3.0 + semver: 7.6.0 serve-placeholder: 2.0.1 serve-static: 1.15.0 std-env: 3.7.0 - ufo: 1.3.2 + ufo: 1.4.0 uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.9.0 - unimport: 3.7.1(rollup@4.9.6) + unimport: 3.7.1(rollup@4.11.0) unstorage: 1.10.1 transitivePeerDependencies: - '@azure/app-configuration' @@ -6551,12 +8231,10 @@ packages: - encoding - idb-keyval - supports-color - dev: false /node-addon-api@7.1.0: resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} engines: {node: ^16 || ^18 || >= 20} - dev: false /node-emoji@2.1.3: resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} @@ -6568,9 +8246,8 @@ packages: skin-tone: 2.0.0 dev: false - /node-fetch-native@1.6.1: - resolution: {integrity: sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw==} - dev: false + /node-fetch-native@1.6.2: + resolution: {integrity: sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==} /node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} @@ -6582,17 +8259,14 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 - dev: false /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} - dev: false /node-gyp-build@4.8.0: resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} hasBin: true - dev: false /node-gyp@10.0.1: resolution: {integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==} @@ -6606,16 +8280,14 @@ packages: make-fetch-happen: 13.0.0 nopt: 7.2.0 proc-log: 3.0.0 - semver: 7.5.4 + semver: 7.6.0 tar: 6.2.0 which: 4.0.0 transitivePeerDependencies: - supports-color - dev: false /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: false /nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} @@ -6623,7 +8295,6 @@ packages: hasBin: true dependencies: abbrev: 1.1.1 - dev: false /nopt@7.2.0: resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} @@ -6631,7 +8302,6 @@ packages: hasBin: true dependencies: abbrev: 2.0.0 - dev: false /normalize-package-data@6.0.0: resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} @@ -6639,9 +8309,8 @@ packages: dependencies: hosted-git-info: 7.0.1 is-core-module: 2.13.1 - semver: 7.5.4 + semver: 7.6.0 validate-npm-package-license: 3.0.4 - dev: false /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -6650,26 +8319,22 @@ packages: /normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - dev: false /npm-bundled@3.0.0: resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: npm-normalize-package-bin: 3.0.1 - dev: false /npm-install-checks@6.3.0: resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - semver: 7.5.4 - dev: false + semver: 7.6.0 /npm-normalize-package-bin@3.0.1: resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: false /npm-package-arg@11.0.1: resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} @@ -6677,16 +8342,14 @@ packages: dependencies: hosted-git-info: 7.0.1 proc-log: 3.0.0 - semver: 7.5.4 + semver: 7.6.0 validate-npm-package-name: 5.0.0 - dev: false /npm-packlist@8.0.2: resolution: {integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: ignore-walk: 6.0.4 - dev: false /npm-pick-manifest@9.0.0: resolution: {integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==} @@ -6695,8 +8358,7 @@ packages: npm-install-checks: 6.3.0 npm-normalize-package-bin: 3.0.1 npm-package-arg: 11.0.1 - semver: 7.5.4 - dev: false + semver: 7.6.0 /npm-registry-fetch@16.1.0: resolution: {integrity: sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==} @@ -6711,10 +8373,9 @@ packages: proc-log: 3.0.0 transitivePeerDependencies: - supports-color - dev: false - /npm-run-all2@6.1.1: - resolution: {integrity: sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==} + /npm-run-all2@6.1.2: + resolution: {integrity: sha512-WwwnS8Ft+RpXve6T2EIEVpFLSqN+ORHRvgNk3H9N62SZXjmzKoRhMFg3I17TK3oMaAEr+XFbRirWS2Fn3BCPSg==} engines: {node: ^14.18.0 || >=16.0.0, npm: '>= 8'} hasBin: true dependencies: @@ -6723,7 +8384,7 @@ packages: memorystream: 0.3.1 minimatch: 9.0.3 pidtree: 0.6.0 - read-pkg: 8.1.0 + read-package-json-fast: 3.0.2 shell-quote: 1.8.1 dev: false @@ -6732,7 +8393,6 @@ packages: engines: {node: '>=8'} dependencies: path-key: 3.1.1 - dev: false /npm-run-path@5.2.0: resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} @@ -6747,22 +8407,21 @@ packages: console-control-strings: 1.1.0 gauge: 3.0.2 set-blocking: 2.0.0 - dev: false /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 - /nuxi@3.10.0: - resolution: {integrity: sha512-veZXw2NuaQ1PrpvHrnQ1dPgkAjv0WqPlvFReg5Iubum0QVGWdJJvGuNsltDQyPcZ7X7mhMXq9SLIpokK4kpvKA==} + /nuxi@3.10.1: + resolution: {integrity: sha512-ZNt858+FOZDIiKKFJkXO7uJAnALytDdn1XbLgtZAqbtWNMayHbOnWcnxh+WSOE4H9uOi2+loWXEqKElmNWLgcQ==} engines: {node: ^14.18.0 || >=16.10.0} hasBin: true optionalDependencies: fsevents: 2.3.3 - /nuxt@3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@4.9.6)(sass@1.70.0)(stylelint@16.2.0)(typescript@5.3.3)(vite@5.0.12)(vue-tsc@1.8.27): - resolution: {integrity: sha512-IzBJAJImqCGfspVZzvznrALnFIJ5rPe+VJvY8OiccwRzWT8sEygVRjh3Mc64yWV6P59rz497wp9RBBBhuV2MVA==} + /nuxt@3.10.2(@types/node@20.11.19)(eslint@8.56.0)(rollup@4.11.0)(stylelint@16.2.1)(typescript@5.3.3)(vite@5.1.3)(vue-tsc@1.8.27): + resolution: {integrity: sha512-EYRPNPEHRoOzL5ZusOMoBvv1/yifGwdv7BLJPD/jaEDeEZvdXjLXLSRh2NukmdB1SdNmfL3wEnt5xtRpQO1niQ==} engines: {node: ^14.18.0 || >=16.10.0} hasBin: true peerDependencies: @@ -6775,38 +8434,38 @@ packages: optional: true dependencies: '@nuxt/devalue': 2.0.2 - '@nuxt/devtools': 1.0.8(nuxt@3.9.3)(rollup@4.9.6)(vite@5.0.12) - '@nuxt/kit': 3.9.3(rollup@4.9.6) - '@nuxt/schema': 3.9.3(rollup@4.9.6) - '@nuxt/telemetry': 2.5.3(rollup@4.9.6) + '@nuxt/devtools': 1.0.8(nuxt@3.10.2)(rollup@4.11.0)(vite@5.1.3) + '@nuxt/kit': 3.10.2(rollup@4.11.0) + '@nuxt/schema': 3.10.2(rollup@4.11.0) + '@nuxt/telemetry': 2.5.3(rollup@4.11.0) '@nuxt/ui-templates': 1.3.1 - '@nuxt/vite-builder': 3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@4.9.6)(sass@1.70.0)(stylelint@16.2.0)(typescript@5.3.3)(vue-tsc@1.8.27)(vue@3.4.15) - '@types/node': 20.11.10 + '@nuxt/vite-builder': 3.10.2(@types/node@20.11.19)(eslint@8.56.0)(rollup@4.11.0)(stylelint@16.2.1)(typescript@5.3.3)(vue-tsc@1.8.27)(vue@3.4.19) + '@types/node': 20.11.19 '@unhead/dom': 1.8.10 '@unhead/ssr': 1.8.10 - '@unhead/vue': 1.8.10(vue@3.4.15) - '@vue/shared': 3.4.15 + '@unhead/vue': 1.8.10(vue@3.4.19) + '@vue/shared': 3.4.19 acorn: 8.11.3 - c12: 1.6.1 - chokidar: 3.5.3 + c12: 1.8.0 + chokidar: 3.6.0 cookie-es: 1.0.0 defu: 6.1.4 destr: 2.0.2 devalue: 4.3.2 - esbuild: 0.19.12 + esbuild: 0.20.0 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 fs-extra: 11.2.0 - globby: 14.0.0 + globby: 14.0.1 h3: 1.10.1 hookable: 5.5.3 jiti: 1.21.0 klona: 2.0.6 knitwork: 1.0.0 - magic-string: 0.30.5 + magic-string: 0.30.7 mlly: 1.5.0 nitropack: 2.8.1 - nuxi: 3.10.0 + nuxi: 3.10.1 nypm: 0.3.6 ofetch: 1.3.3 ohash: 1.1.3 @@ -6814,22 +8473,22 @@ packages: perfect-debounce: 1.0.0 pkg-types: 1.0.3 radix3: 1.1.0 - scule: 1.2.0 + scule: 1.3.0 std-env: 3.7.0 strip-literal: 2.0.0 - ufo: 1.3.2 + ufo: 1.4.0 ultrahtml: 1.5.2 uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.9.0 - unimport: 3.7.1(rollup@4.9.6) - unplugin: 1.6.0 - unplugin-vue-router: 0.7.0(rollup@4.9.6)(vue-router@4.2.5)(vue@3.4.15) + unimport: 3.7.1(rollup@4.11.0) + unplugin: 1.7.1 + unplugin-vue-router: 0.7.0(rollup@4.11.0)(vue-router@4.2.5)(vue@3.4.19) untyped: 1.4.2 - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.19(typescript@5.3.3) vue-bundle-renderer: 2.0.0 vue-devtools-stub: 0.1.0 - vue-router: 4.2.5(vue@3.4.15) + vue-router: 4.2.5(vue@3.4.19) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -6865,37 +8524,56 @@ packages: - vti - vue-tsc - xml2js - dev: false /nypm@0.3.6: resolution: {integrity: sha512-2CATJh3pd6CyNfU5VZM7qSwFu0ieyabkEdnogE30Obn1czrmOYiZ8DOZLe1yBdLKWoyD3Mcy2maUs+0MR3yVjQ==} engines: {node: ^14.16.0 || >=16.10.0} hasBin: true dependencies: - citty: 0.1.5 + citty: 0.1.6 execa: 8.0.1 pathe: 1.1.2 - ufo: 1.3.2 - dev: false + ufo: 1.4.0 /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true + /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: true + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + dev: false + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: false + /ofetch@1.3.3: resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==} dependencies: destr: 2.0.2 - node-fetch-native: 1.6.1 - ufo: 1.3.2 - dev: false + node-fetch-native: 1.6.2 + ufo: 1.4.0 /ohash@1.1.3: resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + + /on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} dev: false /on-finished@2.3.0: @@ -6948,7 +8626,6 @@ packages: define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 is-wsl: 3.1.0 - dev: false /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} @@ -6957,6 +8634,9 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + + /openapi-typescript-helpers@0.0.4: + resolution: {integrity: sha512-Q0MTapapFAG993+dx8lNw33X6P/6EbFr31yNymJHq56fNc6dODyRm8tWyRnGxuC74lyl1iCRMV6nQCGQsfVNKg==} dev: false /openapi-typescript@6.7.4: @@ -6967,8 +8647,22 @@ packages: fast-glob: 3.3.2 js-yaml: 4.1.0 supports-color: 9.4.0 - undici: 5.28.2 + undici: 5.28.3 + yargs-parser: 21.1.1 + + /openapi-typescript@7.0.0-next.7(typescript@5.3.3): + resolution: {integrity: sha512-10eoW5weEvUV+knxqd4Ve4n5acSSWLBGvZOVkuctfWwr0v65v7J7IRbP5+3K2Oys7yTHGZnvtKmWhn9ao0L/bw==} + hasBin: true + peerDependencies: + typescript: ^5.x + dependencies: + '@redocly/openapi-core': 1.9.0 + ansi-colors: 4.1.3 + supports-color: 9.4.0 + typescript: 5.3.3 yargs-parser: 21.1.1 + transitivePeerDependencies: + - encoding dev: false /optionator@0.9.3: @@ -6999,7 +8693,6 @@ packages: engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 - dev: false /pacote@17.0.6: resolution: {integrity: sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==} @@ -7021,13 +8714,12 @@ packages: promise-retry: 2.0.1 read-package-json: 7.0.0 read-package-json-fast: 3.0.2 - sigstore: 2.2.0 + sigstore: 2.2.2 ssri: 10.0.5 tar: 6.2.0 transitivePeerDependencies: - bluebird - supports-color - dev: false /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -7054,7 +8746,6 @@ packages: dependencies: git-config-path: 2.0.0 ini: 1.3.8 - dev: false /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} @@ -7065,28 +8756,15 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - /parse-json@7.1.1: - resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} - engines: {node: '>=16'} - dependencies: - '@babel/code-frame': 7.23.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 3.0.1 - lines-and-columns: 2.0.4 - type-fest: 3.13.1 - dev: false - /parse-path@7.0.0: resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} dependencies: protocols: 2.0.1 - dev: false /parse-url@8.1.0: resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} dependencies: parse-path: 7.0.0 - dev: false /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -7138,15 +8816,20 @@ packages: /path-type@5.0.0: resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} engines: {node: '>=12'} - dev: false /pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + /pbf@3.2.1: + resolution: {integrity: sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==} + hasBin: true + dependencies: + ieee754: 1.2.1 + resolve-protobuf-schema: 2.1.0 dev: false /perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - dev: false /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -7160,10 +8843,51 @@ packages: engines: {node: '>=0.10'} hasBin: true + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pino-abstract-transport@1.1.0: + resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} + dependencies: + readable-stream: 4.5.2 + split2: 4.2.0 + dev: false + + /pino-http@9.0.0: + resolution: {integrity: sha512-Q9QDNEz0vQmbJtMFjOVr2c9yL92vHudjmr3s3m6J1hbw3DBGFZJm3TIj9TWyynZ4GEsEA9SOtni4heRUr6lNOg==} + dependencies: + get-caller-file: 2.0.5 + pino: 8.18.0 + pino-std-serializers: 6.2.2 + process-warning: 3.0.0 + dev: false + + /pino-std-serializers@6.2.2: + resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} + dev: false + + /pino@8.18.0: + resolution: {integrity: sha512-Mz/gKiRyuXu4HnpHgi1YWdHQCoWMufapzooisvFn78zl4dZciAxS+YeRkUxXl1ee/SzU80YCz1zpECCh4oC6Aw==} + hasBin: true + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.3.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.1.0 + pino-std-serializers: 6.2.2 + process-warning: 3.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.4.3 + sonic-boom: 3.8.0 + thread-stream: 2.4.1 + dev: false + /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - dev: false /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} @@ -7171,314 +8895,361 @@ packages: jsonc-parser: 3.2.1 mlly: 1.5.0 pathe: 1.1.2 - dev: false - /playwright-core@1.41.1: - resolution: {integrity: sha512-/KPO5DzXSMlxSX77wy+HihKGOunh3hqndhqeo/nMxfigiKzogn8kfL0ZBDu0L1RKgan5XHCPmn6zXd2NUJgjhg==} + /playwright-core@1.41.2: + resolution: {integrity: sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==} engines: {node: '>=16'} hasBin: true dev: true - /playwright@1.41.1: - resolution: {integrity: sha512-gdZAWG97oUnbBdRL3GuBvX3nDDmUOuqzV/D24dytqlKt+eI5KbwusluZRGljx1YoJKZ2NRPaeWiFTeGZO7SosQ==} + /playwright@1.41.2: + resolution: {integrity: sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==} engines: {node: '>=16'} hasBin: true dependencies: - playwright-core: 1.41.1 + playwright-core: 1.41.2 optionalDependencies: fsevents: 2.3.2 dev: true - /postcss-calc@9.0.1(postcss@8.4.33): + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: false + + /point-in-polygon@1.1.0: + resolution: {integrity: sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==} + dev: false + + /polygon-clipping@0.15.7: + resolution: {integrity: sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==} + dependencies: + robust-predicates: 3.0.2 + splaytree: 3.1.2 + dev: false + + /postcss-calc@9.0.1(postcss@8.4.35): resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.2 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-selector-parser: 6.0.15 postcss-value-parser: 4.2.0 - dev: false - /postcss-colormin@6.0.2(postcss@8.4.33): + /postcss-colormin@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-TXKOxs9LWcdYo5cgmcSHPkyrLAh86hX1ijmyy6J8SbOhyv6ua053M3ZAM/0j44UsnQNIWdl8gb5L7xX2htKeLw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - browserslist: 4.22.3 + browserslist: 4.23.0 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.33 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-convert-values@6.0.2(postcss@8.4.33): + /postcss-convert-values@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-aeBmaTnGQ+NUSVQT8aY0sKyAD/BaLJenEKZ03YK0JnDE1w1Rr8XShoxdal2V2H26xTJKr3v5haByOhJuyT4UYw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - browserslist: 4.22.3 - postcss: 8.4.33 + browserslist: 4.23.0 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-discard-comments@6.0.1(postcss@8.4.33): + /postcss-discard-comments@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-f1KYNPtqYLUeZGCHQPKzzFtsHaRuECe6jLakf/RjSRqvF5XHLZnM2+fXLhb8Qh/HBFHs3M4cSLb1k3B899RYIg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 - dev: false + postcss: 8.4.35 - /postcss-discard-duplicates@6.0.1(postcss@8.4.33): + /postcss-discard-duplicates@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-1hvUs76HLYR8zkScbwyJ8oJEugfPV+WchpnA+26fpJ7Smzs51CzGBHC32RS03psuX/2l0l0UKh2StzNxOrKCYg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 - dev: false + postcss: 8.4.35 - /postcss-discard-empty@6.0.1(postcss@8.4.33): + /postcss-discard-empty@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-yitcmKwmVWtNsrrRqGJ7/C0YRy53i0mjexBDQ9zYxDwTWVBgbU4+C9jIZLmQlTDT9zhml+u0OMFJh8+31krmOg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 - dev: false + postcss: 8.4.35 - /postcss-discard-overridden@6.0.1(postcss@8.4.33): + /postcss-discard-overridden@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-qs0ehZMMZpSESbRkw1+inkf51kak6OOzNRaoLd/U7Fatp0aN2HQ1rxGOrJvYcRAN9VpX8kUF13R2ofn8OlvFVA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 - dev: false + postcss: 8.4.35 /postcss-html@1.6.0: resolution: {integrity: sha512-OWgQ9/Pe23MnNJC0PL4uZp8k0EDaUvqpJFSiwFxOLClAhmD7UEisyhO3x5hVsD4xFrjReVTXydlrMes45dJ71w==} engines: {node: ^12 || >=14} dependencies: htmlparser2: 8.0.2 - js-tokens: 8.0.2 - postcss: 8.4.33 - postcss-safe-parser: 6.0.0(postcss@8.4.33) + js-tokens: 8.0.3 + postcss: 8.4.35 + postcss-safe-parser: 6.0.0(postcss@8.4.35) + dev: true + + /postcss-import@15.1.0(postcss@8.4.35): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + dev: true + + /postcss-js@4.0.1(postcss@8.4.35): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.35 + dev: true + + /postcss-load-config@4.0.2(postcss@8.4.35): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.1.0 + postcss: 8.4.35 + yaml: 2.3.4 dev: true - /postcss-merge-longhand@6.0.2(postcss@8.4.33): + /postcss-merge-longhand@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-+yfVB7gEM8SrCo9w2lCApKIEzrTKl5yS1F4yGhV3kSim6JzbfLGJyhR1B6X+6vOT0U33Mgx7iv4X9MVWuaSAfw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - stylehacks: 6.0.2(postcss@8.4.33) - dev: false + stylehacks: 6.0.2(postcss@8.4.35) - /postcss-merge-rules@6.0.3(postcss@8.4.33): + /postcss-merge-rules@6.0.3(postcss@8.4.35): resolution: {integrity: sha512-yfkDqSHGohy8sGYIJwBmIGDv4K4/WrJPX355XrxQb/CSsT4Kc/RxDi6akqn5s9bap85AWgv21ArcUWwWdGNSHA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - browserslist: 4.22.3 + browserslist: 4.23.0 caniuse-api: 3.0.0 - cssnano-utils: 4.0.1(postcss@8.4.33) - postcss: 8.4.33 + cssnano-utils: 4.0.1(postcss@8.4.35) + postcss: 8.4.35 postcss-selector-parser: 6.0.15 - dev: false - /postcss-minify-font-values@6.0.1(postcss@8.4.33): + /postcss-minify-font-values@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-tIwmF1zUPoN6xOtA/2FgVk1ZKrLcCvE0dpZLtzyyte0j9zUeB8RTbCqrHZGjJlxOvNWKMYtunLrrl7HPOiR46w==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-minify-gradients@6.0.1(postcss@8.4.33): + /postcss-minify-gradients@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-M1RJWVjd6IOLPl1hYiOd5HQHgpp6cvJVLrieQYS9y07Yo8itAr6jaekzJphaJFR0tcg4kRewCk3kna9uHBxn/w==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: colord: 2.9.3 - cssnano-utils: 4.0.1(postcss@8.4.33) - postcss: 8.4.33 + cssnano-utils: 4.0.1(postcss@8.4.35) + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-minify-params@6.0.2(postcss@8.4.33): + /postcss-minify-params@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-zwQtbrPEBDj+ApELZ6QylLf2/c5zmASoOuA4DzolyVGdV38iR2I5QRMsZcHkcdkZzxpN8RS4cN7LPskOkTwTZw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - browserslist: 4.22.3 - cssnano-utils: 4.0.1(postcss@8.4.33) - postcss: 8.4.33 + browserslist: 4.23.0 + cssnano-utils: 4.0.1(postcss@8.4.35) + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-minify-selectors@6.0.2(postcss@8.4.33): + /postcss-minify-selectors@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-0b+m+w7OAvZejPQdN2GjsXLv5o0jqYHX3aoV0e7RBKPCsB7TYG5KKWBFhGnB/iP3213Ts8c5H4wLPLMm7z28Sg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-selector-parser: 6.0.15 - dev: false - /postcss-normalize-charset@6.0.1(postcss@8.4.33): + /postcss-nested@6.0.1(postcss@8.4.35): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.35 + postcss-selector-parser: 6.0.15 + dev: true + + /postcss-normalize-charset@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-aW5LbMNRZ+oDV57PF9K+WI1Z8MPnF+A8qbajg/T8PP126YrGX1f9IQx21GI2OlGz7XFJi/fNi0GTbY948XJtXg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 - dev: false + postcss: 8.4.35 - /postcss-normalize-display-values@6.0.1(postcss@8.4.33): + /postcss-normalize-display-values@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-mc3vxp2bEuCb4LgCcmG1y6lKJu1Co8T+rKHrcbShJwUmKJiEl761qb/QQCfFwlrvSeET3jksolCR/RZuMURudw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-normalize-positions@6.0.1(postcss@8.4.33): + /postcss-normalize-positions@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-HRsq8u/0unKNvm0cvwxcOUEcakFXqZ41fv3FOdPn916XFUrympjr+03oaLkuZENz3HE9RrQE9yU0Xv43ThWjQg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-normalize-repeat-style@6.0.1(postcss@8.4.33): + /postcss-normalize-repeat-style@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-Gbb2nmCy6tTiA7Sh2MBs3fj9W8swonk6lw+dFFeQT68B0Pzwp1kvisJQkdV6rbbMSd9brMlS8I8ts52tAGWmGQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-normalize-string@6.0.1(postcss@8.4.33): + /postcss-normalize-string@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-5Fhx/+xzALJD9EI26Aq23hXwmv97Zfy2VFrt5PLT8lAhnBIZvmaT5pQk+NuJ/GWj/QWaKSKbnoKDGLbV6qnhXg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-normalize-timing-functions@6.0.1(postcss@8.4.33): + /postcss-normalize-timing-functions@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-4zcczzHqmCU7L5dqTB9rzeqPWRMc0K2HoR+Bfl+FSMbqGBUcP5LRfgcH4BdRtLuzVQK1/FHdFoGT3F7rkEnY+g==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-normalize-unicode@6.0.2(postcss@8.4.33): + /postcss-normalize-unicode@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-Ff2VdAYCTGyMUwpevTZPZ4w0+mPjbZzLLyoLh/RMpqUqeQKZ+xMm31hkxBavDcGKcxm6ACzGk0nBfZ8LZkStKA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - browserslist: 4.22.3 - postcss: 8.4.33 + browserslist: 4.23.0 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-normalize-url@6.0.1(postcss@8.4.33): + /postcss-normalize-url@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-jEXL15tXSvbjm0yzUV7FBiEXwhIa9H88JOXDGQzmcWoB4mSjZIsmtto066s2iW9FYuIrIF4k04HA2BKAOpbsaQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-normalize-whitespace@6.0.1(postcss@8.4.33): + /postcss-normalize-whitespace@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-ordered-values@6.0.1(postcss@8.4.33): + /postcss-ordered-values@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-XXbb1O/MW9HdEhnBxitZpPFbIvDgbo9NK4c/5bOfiKpnIGZDoL2xd7/e6jW5DYLsWxBbs+1nZEnVgnjnlFViaA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - cssnano-utils: 4.0.1(postcss@8.4.33) - postcss: 8.4.33 + cssnano-utils: 4.0.1(postcss@8.4.35) + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false - /postcss-reduce-initial@6.0.2(postcss@8.4.33): + /postcss-reduce-initial@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-YGKalhNlCLcjcLvjU5nF8FyeCTkCO5UtvJEt0hrPZVCTtRLSOH4z00T1UntQPj4dUmIYZgMj8qK77JbSX95hSw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - browserslist: 4.22.3 + browserslist: 4.23.0 caniuse-api: 3.0.0 - postcss: 8.4.33 - dev: false + postcss: 8.4.35 - /postcss-reduce-transforms@6.0.1(postcss@8.4.33): + /postcss-reduce-transforms@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-fUbV81OkUe75JM+VYO1gr/IoA2b/dRiH6HvMwhrIBSUrxq3jNZQZitSnugcTLDi1KkQh1eR/zi+iyxviUNBkcQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - dev: false /postcss-resolve-nested-selector@0.1.1: resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} - /postcss-safe-parser@6.0.0(postcss@8.4.33): + /postcss-safe-parser@6.0.0(postcss@8.4.35): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 dev: true - /postcss-safe-parser@7.0.0(postcss@8.4.33): + /postcss-safe-parser@7.0.0(postcss@8.4.35): resolution: {integrity: sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==} engines: {node: '>=18.0'} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 + + /postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true /postcss-selector-parser@6.0.15: resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} @@ -7487,52 +9258,54 @@ packages: cssesc: 3.0.0 util-deprecate: 1.0.2 - /postcss-sorting@8.0.2(postcss@8.4.33): + /postcss-sorting@8.0.2(postcss@8.4.35): resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==} peerDependencies: postcss: ^8.4.20 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 dev: true - /postcss-svgo@6.0.2(postcss@8.4.33): + /postcss-svgo@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-IH5R9SjkTkh0kfFOQDImyy1+mTCb+E830+9SV1O+AaDcoHTvfsvt6WwJeo7KwcHbFnevZVCsXhDmjFiGVuwqFQ==} engines: {node: ^14 || ^16 || >= 18} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-value-parser: 4.2.0 svgo: 3.2.0 - dev: false - /postcss-unique-selectors@6.0.2(postcss@8.4.33): + /postcss-unique-selectors@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-8IZGQ94nechdG7Y9Sh9FlIY2b4uS8/k8kdKRX040XHsS3B6d1HrJAkXrBSsSu4SuARruSsUjW3nlSw8BHkaAYQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.33 + postcss: 8.4.35 postcss-selector-parser: 6.0.15 - dev: false /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - /postcss@8.4.33: - resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 + /potpack@2.0.0: + resolution: {integrity: sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==} + dev: false + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - /prettier@3.2.4: - resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true dev: true @@ -7540,15 +9313,21 @@ packages: /pretty-bytes@6.1.1: resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} engines: {node: ^14.13.1 || >=16.0.0} - dev: false /proc-log@3.0.0: resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: false /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + /process-warning@3.0.0: + resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} + dev: false + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} dev: false /promise-inflight@1.0.1: @@ -7558,7 +9337,6 @@ packages: peerDependenciesMeta: bluebird: optional: true - dev: false /promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} @@ -7566,7 +9344,6 @@ packages: dependencies: err-code: 2.0.3 retry: 0.12.0 - dev: false /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} @@ -7574,15 +9351,17 @@ packages: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: false /property-information@6.4.1: resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==} dev: false + /protocol-buffers-schema@3.6.0: + resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} + dev: false + /protocols@2.0.1: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} - dev: false /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} @@ -7600,7 +9379,7 @@ packages: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 + side-channel: 1.0.5 dev: true /queue-microtask@1.2.3: @@ -7608,17 +9387,37 @@ packages: /queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + + /quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + dev: false + + /quickselect@1.1.1: + resolution: {integrity: sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==} + dev: false + + /quickselect@2.0.0: + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + dev: false + + /radix-vue@1.4.6(vue@3.4.19): + resolution: {integrity: sha512-PWM4A0xyQV4bu8R+DfAGGEN4zRTM0Qer5rH+gLnQjjsz0kjteZhVOS0KUkpyrKVPprWFYRNqyzpjjkcYBDrlfQ==} + dependencies: + '@floating-ui/dom': 1.6.3 + '@floating-ui/vue': 1.0.6(vue@3.4.19) + fast-deep-equal: 3.1.3 + transitivePeerDependencies: + - '@vue/composition-api' + - vue dev: false /radix3@1.1.0: resolution: {integrity: sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==} - dev: false /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 - dev: false /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} @@ -7634,13 +9433,30 @@ packages: unpipe: 1.0.0 dev: true + /rbush@2.0.2: + resolution: {integrity: sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==} + dependencies: + quickselect: 1.1.1 + dev: false + + /rbush@3.0.1: + resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==} + dependencies: + quickselect: 2.0.0 + dev: false + /rc9@2.1.1: resolution: {integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==} dependencies: defu: 6.1.4 destr: 2.0.2 flat: 5.0.2 - dev: false + + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: true /read-package-json-fast@3.0.2: resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} @@ -7648,7 +9464,6 @@ packages: dependencies: json-parse-even-better-errors: 3.0.1 npm-normalize-package-bin: 3.0.1 - dev: false /read-package-json@7.0.0: resolution: {integrity: sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==} @@ -7658,17 +9473,6 @@ packages: json-parse-even-better-errors: 3.0.1 normalize-package-data: 6.0.0 npm-normalize-package-bin: 3.0.1 - dev: false - - /read-pkg@8.1.0: - resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==} - engines: {node: '>=16'} - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 6.0.0 - parse-json: 7.1.1 - type-fest: 4.10.1 - dev: false /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -7680,7 +9484,6 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 - dev: false /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} @@ -7690,11 +9493,21 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 + /readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + dev: false + /readdir-glob@1.1.3: resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} dependencies: minimatch: 5.1.6 - dev: false /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} @@ -7702,22 +9515,39 @@ packages: dependencies: picomatch: 2.3.1 + /real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + dev: false + /redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} engines: {node: '>=4'} - dev: false /redis-parser@3.0.0: resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} engines: {node: '>=4'} dependencies: redis-errors: 1.2.0 + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: false + + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.1 dev: false /rehype-external-links@3.0.0: resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@ungap/structured-clone': 1.2.0 hast-util-is-element: 3.0.0 is-absolute-url: 4.0.1 @@ -7728,7 +9558,7 @@ packages: /rehype-raw@7.0.0: resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 hast-util-raw: 9.0.2 vfile: 6.0.1 dev: false @@ -7736,7 +9566,7 @@ packages: /rehype-slug@6.0.0: resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 github-slugger: 2.0.0 hast-util-heading-rank: 3.0.0 hast-util-to-string: 3.0.0 @@ -7746,7 +9576,7 @@ packages: /rehype-sort-attribute-values@5.0.0: resolution: {integrity: sha512-dQdHdCIRnpiU+BkrLSqH+aM4lWJyLqGzv49KvH4gHj+JxYwNqvGhoTXckS3AJu4V9ZutwsTcawP0pC7PhwX0tQ==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 hast-util-is-element: 3.0.0 unist-util-visit: 5.0.0 dev: false @@ -7754,7 +9584,7 @@ packages: /rehype-sort-attributes@5.0.0: resolution: {integrity: sha512-6tJUH4xHFcdO85CZRwAcEtHNCzjZ9V9S0VZLgo1pzbN04qy8jiVCZ3oAxDmBVG3Rth5b1xFTDet5WG/UYZeJLQ==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 unist-util-visit: 5.0.0 dev: false @@ -7798,7 +9628,7 @@ packages: micromark-util-character: 2.1.0 micromark-util-types: 2.0.0 parse-entities: 4.0.1 - scule: 1.2.0 + scule: 1.3.0 stringify-entities: 4.0.3 unified: 11.0.4 unist-util-visit: 5.0.0 @@ -7821,7 +9651,7 @@ packages: /remark-rehype@11.1.0: resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/mdast': 4.0.3 mdast-util-to-hast: 13.1.0 unified: 11.0.4 @@ -7836,10 +9666,13 @@ packages: unified: 11.0.4 dev: false + /remove-accents@0.4.2: + resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==} + dev: false + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: false /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} @@ -7855,7 +9688,12 @@ packages: /resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true + + /resolve-protobuf-schema@2.1.0: + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} + dependencies: + protocol-buffers-schema: 3.6.0 + dev: false /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} @@ -7876,7 +9714,6 @@ packages: /retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} - dev: false /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -7899,7 +9736,15 @@ packages: dependencies: glob: 10.3.10 - /rollup-plugin-visualizer@5.12.0(rollup@4.9.6): + /robust-predicates@2.0.4: + resolution: {integrity: sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==} + dev: false + + /robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + dev: false + + /rollup-plugin-visualizer@5.12.0(rollup@4.11.0): resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} engines: {node: '>=14'} hasBin: true @@ -7911,44 +9756,45 @@ packages: dependencies: open: 8.4.2 picomatch: 2.3.1 - rollup: 4.9.6 + rollup: 4.11.0 source-map: 0.7.4 yargs: 17.7.2 - dev: false - /rollup@4.9.6: - resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} + /rollup@4.11.0: + resolution: {integrity: sha512-2xIbaXDXjf3u2tajvA5xROpib7eegJ9Y/uPlSFhXLNpK9ampCczXAhLEb5yLzJyG3LAdI1NWtNjDXiLyniNdjQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.6 - '@rollup/rollup-android-arm64': 4.9.6 - '@rollup/rollup-darwin-arm64': 4.9.6 - '@rollup/rollup-darwin-x64': 4.9.6 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 - '@rollup/rollup-linux-arm64-gnu': 4.9.6 - '@rollup/rollup-linux-arm64-musl': 4.9.6 - '@rollup/rollup-linux-riscv64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-musl': 4.9.6 - '@rollup/rollup-win32-arm64-msvc': 4.9.6 - '@rollup/rollup-win32-ia32-msvc': 4.9.6 - '@rollup/rollup-win32-x64-msvc': 4.9.6 + '@rollup/rollup-android-arm-eabi': 4.11.0 + '@rollup/rollup-android-arm64': 4.11.0 + '@rollup/rollup-darwin-arm64': 4.11.0 + '@rollup/rollup-darwin-x64': 4.11.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.11.0 + '@rollup/rollup-linux-arm64-gnu': 4.11.0 + '@rollup/rollup-linux-arm64-musl': 4.11.0 + '@rollup/rollup-linux-riscv64-gnu': 4.11.0 + '@rollup/rollup-linux-x64-gnu': 4.11.0 + '@rollup/rollup-linux-x64-musl': 4.11.0 + '@rollup/rollup-win32-arm64-msvc': 4.11.0 + '@rollup/rollup-win32-ia32-msvc': 4.11.0 + '@rollup/rollup-win32-x64-msvc': 4.11.0 fsevents: 2.3.3 - dev: false /run-applescript@7.0.0: resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} engines: {node: '>=18'} - dev: false /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 + /rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + dev: false + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -7958,31 +9804,27 @@ packages: /safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} - dev: true /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /sass@1.70.0: - resolution: {integrity: sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==} - engines: {node: '>=14.0.0'} - hasBin: true + /schema-dts@1.1.2(typescript@5.3.3): + resolution: {integrity: sha512-MpNwH0dZJHinVxk9bT8XUdjKTxMYrA5bLtrrGmFA6PTLwlOKnhi67XoRd6/ty+Djt6ZC0slR57qFhZDNMI6DhQ==} + peerDependencies: + typescript: '>=4.1.0' dependencies: - chokidar: 3.5.3 - immutable: 4.3.5 - source-map-js: 1.0.2 + typescript: 5.3.3 + dev: true - /scule@1.2.0: - resolution: {integrity: sha512-CRCmi5zHQnSoeCik9565PONMg0kfkvYmcSqrbOJY4txFfy1wvVULV4FDaiXhUblUgahdqz3F2NwHZ8i4eBTwUw==} - dev: false + /scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - dev: false - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} engines: {node: '>=10'} hasBin: true dependencies: @@ -8012,13 +9854,11 @@ packages: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} dependencies: randombytes: 2.1.0 - dev: false /serve-placeholder@2.0.1: resolution: {integrity: sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ==} dependencies: defu: 6.1.4 - dev: false /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} @@ -8033,18 +9873,36 @@ packages: /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: false - /set-function-length@1.2.0: - resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} + /set-function-length@1.2.1: + resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.4 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 gopd: 1.0.1 - has-property-descriptors: 1.0.1 - dev: true + has-property-descriptors: 1.0.2 + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: false + + /set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: false /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -8056,7 +9914,7 @@ packages: dependencies: color: 4.2.3 detect-libc: 2.0.2 - semver: 7.5.4 + semver: 7.6.0 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.2 '@img/sharp-darwin-x64': 0.33.2 @@ -8092,29 +9950,20 @@ packages: /shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - dev: false - /shikiji-core@0.9.19: - resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==} - dev: false - - /shikiji-transformers@0.9.19: - resolution: {integrity: sha512-lGLI7Z8frQrIBbhZ74/eiJtxMoCQRbpaHEB+gcfvdIy+ZFaAtXncJGnc52932/UET+Y4GyKtwwC/vjWUCp+c/Q==} - dependencies: - shikiji: 0.9.19 - dev: false - - /shikiji@0.9.19: - resolution: {integrity: sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==} + /shiki@1.1.2: + resolution: {integrity: sha512-qNzFwTv5uhEDNUIwp7wHjsrffVeLbmOgWnM5mZZhoiz7G2qAUvqVfUzuWfieD45/YAKipzCtdV9SndacKtABow==} dependencies: - shikiji-core: 0.9.19 + '@shikijs/core': 1.1.2 dev: false - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + /side-channel@1.0.5: + resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 object-inspect: 1.13.1 dev: true @@ -8125,25 +9974,24 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - /sigstore@2.2.0: - resolution: {integrity: sha512-fcU9clHwEss2/M/11FFM8Jwc4PjBgbhXoNskoK5guoK0qGQBSeUbQZRJ+B2fDFIvhyf0gqCaPrel9mszbhAxug==} + /sigstore@2.2.2: + resolution: {integrity: sha512-2A3WvXkQurhuMgORgT60r6pOWiCOO5LlEqY2ADxGBDGVYLSo5HN0uLtb68YpVpuL/Vi8mLTe7+0Dx2Fq8lLqEg==} engines: {node: ^16.14.0 || >=18.0.0} dependencies: - '@sigstore/bundle': 2.1.1 - '@sigstore/core': 0.2.0 - '@sigstore/protobuf-specs': 0.2.1 - '@sigstore/sign': 2.2.1 - '@sigstore/tuf': 2.3.0 - '@sigstore/verify': 0.1.0 + '@sigstore/bundle': 2.2.0 + '@sigstore/core': 1.0.0 + '@sigstore/protobuf-specs': 0.3.0 + '@sigstore/sign': 2.2.3 + '@sigstore/tuf': 2.3.1 + '@sigstore/verify': 1.1.0 transitivePeerDependencies: - supports-color - dev: false /simple-git-hooks@2.9.0: resolution: {integrity: sha512-waSQ5paUQtyGC0ZxlHmcMmD9I1rRXauikBwX31bX58l5vTOhCEcBC5Bi+ZDkPXTjDnZAF8TbCqKBY+9+sVPScw==} hasBin: true requiresBuild: true - dev: false + dev: true /simple-git@3.22.0: resolution: {integrity: sha512-6JujwSs0ac82jkGjMHiCnTifvf1crOiY/+tfs/Pqih6iow7VrpNKRRNdWm6RtaXpvvv/JGNYhlUtLhGFqHF+Yw==} @@ -8167,11 +10015,9 @@ packages: '@polka/url': 1.0.0-next.24 mrmime: 2.0.0 totalist: 3.0.1 - dev: false /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: false /skin-tone@2.0.0: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} @@ -8180,6 +10026,10 @@ packages: unicode-emoji-modifier-base: 1.0.0 dev: false + /skmeans@0.9.7: + resolution: {integrity: sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==} + dev: false + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -8187,12 +10037,10 @@ packages: /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} - dev: false /slash@5.1.0: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} - dev: false /slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} @@ -8226,11 +10074,9 @@ packages: /smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - dev: false /smob@1.4.1: resolution: {integrity: sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==} - dev: false /socket.io-client@4.7.4: resolution: {integrity: sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==} @@ -8262,17 +10108,43 @@ packages: dependencies: agent-base: 7.1.0 debug: 4.3.4 - socks: 2.7.1 + socks: 2.7.3 transitivePeerDependencies: - supports-color - dev: false - /socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + /socks@2.7.3: + resolution: {integrity: sha512-vfuYK48HXCTFD03G/1/zkIls3Ebr2YNa4qU9gHDZdblHLiqhJrJGkY3+0Nx0JpN9qBhJbVObc1CNciT1bIZJxw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} dependencies: - ip: 2.0.0 + ip-address: 9.0.5 smart-buffer: 4.2.0 + + /sonic-boom@3.8.0: + resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==} + dependencies: + atomic-sleep: 1.0.0 + dev: false + + /sort-asc@0.2.0: + resolution: {integrity: sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==} + engines: {node: '>=0.10.0'} + dev: false + + /sort-desc@0.2.0: + resolution: {integrity: sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==} + engines: {node: '>=0.10.0'} + dev: false + + /sort-object@3.0.3: + resolution: {integrity: sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==} + engines: {node: '>=0.10.0'} + dependencies: + bytewise: 1.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + sort-asc: 0.2.0 + sort-desc: 0.2.0 + union-value: 1.0.1 dev: false /source-map-js@1.0.2: @@ -8284,17 +10156,14 @@ packages: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: false /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: false /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - dev: false /space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -8304,30 +10173,44 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.16 - dev: false + spdx-license-ids: 3.0.17 - /spdx-exceptions@2.4.0: - resolution: {integrity: sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==} - dev: false + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: - spdx-exceptions: 2.4.0 - spdx-license-ids: 3.0.16 + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.17 + + /spdx-license-ids@3.0.17: + resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} + + /splaytree@3.1.2: + resolution: {integrity: sha512-4OM2BJgC5UzrhVnnJA4BkHKGtjXNzzUfpQjCO8I05xYPsfS/VuQDwjCGGMi8rYQilHEV4j8NBqTFbls/PZEE7A==} + dev: false + + /split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 dev: false - /spdx-license-ids@3.0.16: - resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} dev: false + /sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + /ssri@10.0.5: resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: minipass: 7.0.4 - dev: false /stack-trace@0.0.10: resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} @@ -8335,7 +10218,6 @@ packages: /standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - dev: false /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} @@ -8343,14 +10225,14 @@ packages: /std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - dev: false - /streamx@2.15.6: - resolution: {integrity: sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==} + /streamx@2.15.8: + resolution: {integrity: sha512-6pwMeMY/SuISiRsuS8TeIrAzyFbG5gGPHFQsYjUr/pbBadaL1PCWmzKw+CHZSwainfvcF6Si6cVLq4XTEwswFQ==} dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 - dev: false + optionalDependencies: + bare-events: 2.2.0 /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} @@ -8386,7 +10268,6 @@ packages: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - dev: false /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -8431,26 +10312,23 @@ packages: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: acorn: 8.11.3 - dev: false /strip-literal@2.0.0: resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} dependencies: - js-tokens: 8.0.2 - dev: false + js-tokens: 8.0.3 - /stylehacks@6.0.2(postcss@8.4.33): + /stylehacks@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-00zvJGnCu64EpMjX8b5iCZ3us2Ptyw8+toEkb92VdmkEaRaSGBNKAoK6aWZckhXxmQP8zWiTaFaiMGIU8Ve8sg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - browserslist: 4.22.3 - postcss: 8.4.33 + browserslist: 4.23.0 + postcss: 8.4.35 postcss-selector-parser: 6.0.15 - dev: false - /stylelint-config-html@1.1.0(postcss-html@1.6.0)(stylelint@16.2.0): + /stylelint-config-html@1.1.0(postcss-html@1.6.0)(stylelint@16.2.1): resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} engines: {node: ^12 || >=14} peerDependencies: @@ -8458,50 +10336,50 @@ packages: stylelint: '>=14.0.0' dependencies: postcss-html: 1.6.0 - stylelint: 16.2.0(typescript@5.3.3) + stylelint: 16.2.1(typescript@5.3.3) dev: true - /stylelint-config-hudochenkov@10.0.0(stylelint-order@6.0.4)(stylelint@16.2.0): + /stylelint-config-hudochenkov@10.0.0(stylelint-order@6.0.4)(stylelint@16.2.1): resolution: {integrity: sha512-/foIJpc2grEsG1NxPXLgqEOezOW1ArC5EvUssLEwcGVkrCMgVzyPN/OxL696oj137ZOJckv0raCjZEiCCoWAVw==} peerDependencies: stylelint: ^16.0.2 stylelint-order: ^6.0.4 dependencies: - stylelint: 16.2.0(typescript@5.3.3) - stylelint-order: 6.0.4(stylelint@16.2.0) + stylelint: 16.2.1(typescript@5.3.3) + stylelint-order: 6.0.4(stylelint@16.2.1) dev: true - /stylelint-config-recommended@14.0.0(stylelint@16.2.0): + /stylelint-config-recommended@14.0.0(stylelint@16.2.1): resolution: {integrity: sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==} engines: {node: '>=18.12.0'} peerDependencies: stylelint: ^16.0.0 dependencies: - stylelint: 16.2.0(typescript@5.3.3) + stylelint: 16.2.1(typescript@5.3.3) dev: true - /stylelint-config-standard@36.0.0(stylelint@16.2.0): + /stylelint-config-standard@36.0.0(stylelint@16.2.1): resolution: {integrity: sha512-3Kjyq4d62bYFp/Aq8PMKDwlgUyPU4nacXsjDLWJdNPRUgpuxALu1KnlAHIj36cdtxViVhXexZij65yM0uNIHug==} engines: {node: '>=18.12.0'} peerDependencies: stylelint: ^16.1.0 dependencies: - stylelint: 16.2.0(typescript@5.3.3) - stylelint-config-recommended: 14.0.0(stylelint@16.2.0) + stylelint: 16.2.1(typescript@5.3.3) + stylelint-config-recommended: 14.0.0(stylelint@16.2.1) dev: true - /stylelint-order@6.0.4(stylelint@16.2.0): + /stylelint-order@6.0.4(stylelint@16.2.1): resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==} peerDependencies: stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 dependencies: - postcss: 8.4.33 - postcss-sorting: 8.0.2(postcss@8.4.33) - stylelint: 16.2.0(typescript@5.3.3) + postcss: 8.4.35 + postcss-sorting: 8.0.2(postcss@8.4.35) + stylelint: 16.2.1(typescript@5.3.3) dev: true - /stylelint@16.2.0(typescript@5.3.3): - resolution: {integrity: sha512-gwqU5AkIb52wrAzzn+359S3NIJDMl02TXLUaV2tzA/L6jUdpTwNt+MCxHlc8+Hb2bUHlYVo92YeSIryF2gJthA==} + /stylelint@16.2.1(typescript@5.3.3): + resolution: {integrity: sha512-SfIMGFK+4n7XVAyv50CpVfcGYWG4v41y6xG7PqOgQSY8M/PgdK0SQbjWFblxjJZlN9jNq879mB4BCZHJRIJ1hA==} engines: {node: '>=18.12.0'} hasBin: true dependencies: @@ -8522,18 +10400,18 @@ packages: globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.3.1 - ignore: 5.3.0 + ignore: 5.3.1 imurmurhash: 0.1.4 is-plain-object: 5.0.0 known-css-properties: 0.29.0 mathml-tag-names: 2.1.3 - meow: 13.1.0 + meow: 13.2.0 micromatch: 4.0.5 normalize-path: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.33 + postcss: 8.4.35 postcss-resolve-nested-selector: 0.1.1 - postcss-safe-parser: 7.0.0(postcss@8.4.33) + postcss-safe-parser: 7.0.0(postcss@8.4.35) postcss-selector-parser: 6.0.15 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 @@ -8559,6 +10437,11 @@ packages: mz: 2.7.0 pirates: 4.0.6 ts-interface-checker: 0.1.13 + + /supercluster@8.0.1: + resolution: {integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==} + dependencies: + kdbush: 4.0.2 dev: false /supports-color@5.5.0: @@ -8576,7 +10459,6 @@ packages: /supports-color@9.4.0: resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} engines: {node: '>=12'} - dev: false /supports-hyperlinks@3.0.0: resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==} @@ -8604,12 +10486,10 @@ packages: css-what: 6.1.0 csso: 5.0.5 picocolors: 1.0.0 - dev: false /system-architecture@0.1.0: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} - dev: false /table@6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} @@ -8621,6 +10501,51 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 + /tailwind-merge@2.2.1: + resolution: {integrity: sha512-o+2GTLkthfa5YUt4JxPfzMIpQzZ3adD1vLVkvKE1Twl9UAhGsEbIZhHHZVRttyW177S8PDJI3bTQNaebyofK3Q==} + dependencies: + '@babel/runtime': 7.23.9 + dev: false + + /tailwindcss-animate@1.0.7(tailwindcss@3.4.1): + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + tailwindcss: 3.4.1 + dev: true + + /tailwindcss@3.4.1: + resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.35 + postcss-import: 15.1.0(postcss@8.4.35) + postcss-js: 4.0.1(postcss@8.4.35) + postcss-load-config: 4.0.2(postcss@8.4.35) + postcss-nested: 6.0.1(postcss@8.4.35) + postcss-selector-parser: 6.0.15 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + dev: true + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -8628,10 +10553,9 @@ packages: /tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} dependencies: - b4a: 1.6.4 + b4a: 1.6.6 fast-fifo: 1.3.2 - streamx: 2.15.6 - dev: false + streamx: 2.15.8 /tar@6.2.0: resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} @@ -8643,10 +10567,9 @@ packages: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 - dev: false - /terser@5.27.0: - resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} + /terser@5.27.1: + resolution: {integrity: sha512-29wAr6UU/oQpnTw5HoadwjUZnFQXGdOfj0LjZ4sVxzqwHh/QVkvr7m8y9WoR4iN3FRitVduTc6KdjcW38Npsug==} engines: {node: '>=10'} hasBin: true dependencies: @@ -8654,7 +10577,6 @@ packages: acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 - dev: false /text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} @@ -8668,16 +10590,23 @@ packages: engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 - dev: false /thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 + + /thread-stream@2.4.1: + resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==} + dependencies: + real-require: 0.2.0 dev: false /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + + /tinyqueue@2.0.3: + resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==} dev: false /to-fast-properties@2.0.0: @@ -8694,6 +10623,20 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + /topojson-client@3.1.0: + resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: false + + /topojson-server@3.0.1: + resolution: {integrity: sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: false + /tosource@2.0.0-alpha.3: resolution: {integrity: sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==} engines: {node: '>=10'} @@ -8702,11 +10645,9 @@ packages: /totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - dev: false /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -8717,13 +10658,13 @@ packages: engines: {node: '>= 14.0.0'} dev: true - /trough@2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + /trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} dev: false - /ts-api-utils@1.0.3(typescript@5.3.3): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} + /ts-api-utils@1.2.1(typescript@5.3.3): + resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} + engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: @@ -8732,11 +10673,21 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: false /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tsx@4.7.1: + resolution: {integrity: sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + esbuild: 0.19.12 + get-tsconfig: 4.7.2 + optionalDependencies: + fsevents: 2.3.3 + dev: false + /tuf-js@2.2.0: resolution: {integrity: sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==} engines: {node: ^16.14.0 || >=18.0.0} @@ -8746,6 +10697,9 @@ packages: make-fetch-happen: 13.0.0 transitivePeerDependencies: - supports-color + + /turf-jsts@1.2.3: + resolution: {integrity: sha512-Ja03QIJlPuHt4IQ2FfGex4F4JAr8m3jpaHbFbQrgwr7s7L6U8ocrHiF3J1+wf9jzhGKxvDeaCAnGDot8OjGFyA==} dev: false /type-check@0.4.0: @@ -8761,14 +10715,13 @@ packages: /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - dev: false /type-fest@3.13.1: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} - /type-fest@4.10.1: - resolution: {integrity: sha512-7ZnJYTp6uc04uYRISWtiX3DSKB/fxNQT0B5o1OUeCqiQiwF+JC9+rJiZIDrPrNCLLuTqyQmh4VdQqh/ZOkv9MQ==} + /type-fest@4.10.2: + resolution: {integrity: sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==} engines: {node: '>=16'} dev: false @@ -8785,45 +10738,41 @@ packages: engines: {node: '>=14.17'} hasBin: true - /ufo@1.3.2: - resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} - dev: false - - /ultrahtml@1.5.2: - resolution: {integrity: sha512-qh4mBffhlkiXwDAOxvSGxhL0QEQsTbnP9BozOK3OYPEGvPvdWzvAUaXNtUSMdNsKDtuyjEbyVUPFZ52SSLhLqw==} + /typewise-core@1.2.0: + resolution: {integrity: sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==} dev: false - /unconfig@0.3.11: - resolution: {integrity: sha512-bV/nqePAKv71v3HdVUn6UefbsDKQWRX+bJIkiSm0+twIds6WiD2bJLWWT3i214+J/B4edufZpG2w7Y63Vbwxow==} + /typewise@1.0.3: + resolution: {integrity: sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==} dependencies: - '@antfu/utils': 0.7.7 - defu: 6.1.4 - jiti: 1.21.0 - mlly: 1.5.0 + typewise-core: 1.2.0 dev: false + /ufo@1.4.0: + resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} + + /ultrahtml@1.5.2: + resolution: {integrity: sha512-qh4mBffhlkiXwDAOxvSGxhL0QEQsTbnP9BozOK3OYPEGvPvdWzvAUaXNtUSMdNsKDtuyjEbyVUPFZ52SSLhLqw==} + /uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - dev: false /unctx@2.3.1: resolution: {integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==} dependencies: acorn: 8.11.3 estree-walker: 3.0.3 - magic-string: 0.30.5 - unplugin: 1.6.0 - dev: false + magic-string: 0.30.7 + unplugin: 1.7.1 /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /undici@5.28.2: - resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} + /undici@5.28.3: + resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} engines: {node: '>=14.0'} dependencies: '@fastify/busboy': 2.1.0 - dev: false /unenv@1.9.0: resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} @@ -8831,9 +10780,8 @@ packages: consola: 3.2.3 defu: 6.1.4 mime: 3.0.0 - node-fetch-native: 1.6.1 + node-fetch-native: 1.6.2 pathe: 1.1.2 - dev: false /unhead@1.8.10: resolution: {integrity: sha512-dth8FvZkLriO5ZWWOBIYBNSfGiwJtKcqpPWpSOk/Z0e2jdlgwoZEWZHFyte0EKvmbZxKcsWNMqIuv7dEmS5yZQ==} @@ -8842,7 +10790,6 @@ packages: '@unhead/schema': 1.8.10 '@unhead/shared': 1.8.10 hookable: 5.5.3 - dev: false /unicode-emoji-modifier-base@1.0.0: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} @@ -8852,7 +10799,6 @@ packages: /unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} - dev: false /unified@11.0.4: resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} @@ -8862,28 +10808,37 @@ packages: devlop: 1.1.0 extend: 3.0.2 is-plain-obj: 4.1.0 - trough: 2.1.0 + trough: 2.2.0 vfile: 6.0.1 dev: false - /unimport@3.7.1(rollup@4.9.6): + /unimport@3.7.1(rollup@4.11.0): resolution: {integrity: sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==} dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) acorn: 8.11.3 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 fast-glob: 3.3.2 local-pkg: 0.5.0 - magic-string: 0.30.5 + magic-string: 0.30.7 mlly: 1.5.0 pathe: 1.1.2 pkg-types: 1.0.3 - scule: 1.2.0 + scule: 1.3.0 strip-literal: 1.3.0 - unplugin: 1.6.0 + unplugin: 1.7.1 transitivePeerDependencies: - rollup + + /union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 dev: false /unique-filename@3.0.0: @@ -8891,14 +10846,12 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: unique-slug: 4.0.0 - dev: false /unique-slug@4.0.0: resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: imurmurhash: 0.1.4 - dev: false /unist-builder@4.0.0: resolution: {integrity: sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==} @@ -8942,14 +10895,13 @@ packages: /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - dev: false /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} dev: true - /unplugin-vue-router@0.7.0(rollup@4.9.6)(vue-router@4.2.5)(vue@3.4.15): + /unplugin-vue-router@0.7.0(rollup@4.11.0)(vue-router@4.2.5)(vue@3.4.19): resolution: {integrity: sha512-ddRreGq0t5vlSB7OMy4e4cfU1w2AwBQCwmvW3oP/0IHQiokzbx4hd3TpwBu3eIAFVuhX2cwNQwp1U32UybTVCw==} peerDependencies: vue-router: ^4.1.0 @@ -8958,32 +10910,30 @@ packages: optional: true dependencies: '@babel/types': 7.23.9 - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) - '@vue-macros/common': 1.10.1(rollup@4.9.6)(vue@3.4.15) - ast-walker-scope: 0.5.0(rollup@4.9.6) - chokidar: 3.5.3 + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) + '@vue-macros/common': 1.10.1(rollup@4.11.0)(vue@3.4.19) + ast-walker-scope: 0.5.0(rollup@4.11.0) + chokidar: 3.6.0 fast-glob: 3.3.2 json5: 2.2.3 local-pkg: 0.4.3 mlly: 1.5.0 pathe: 1.1.2 - scule: 1.2.0 - unplugin: 1.6.0 - vue-router: 4.2.5(vue@3.4.15) + scule: 1.3.0 + unplugin: 1.7.1 + vue-router: 4.2.5(vue@3.4.19) yaml: 2.3.4 transitivePeerDependencies: - rollup - vue - dev: false - /unplugin@1.6.0: - resolution: {integrity: sha512-BfJEpWBu3aE/AyHx8VaNE/WgouoQxgH9baAiH82JjX8cqVyi3uJQstqwD5J+SZxIK326SZIhsSZlALXVBCknTQ==} + /unplugin@1.7.1: + resolution: {integrity: sha512-JqzORDAPxxs8ErLV4x+LL7bk5pk3YlcWqpSNsIkAZj972KzFZLClc/ekppahKkOczGkwIG6ElFgdOgOlK4tXZw==} dependencies: acorn: 8.11.3 - chokidar: 3.5.3 + chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.1 - dev: false /unstorage@1.10.1: resolution: {integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==} @@ -9027,73 +10977,63 @@ packages: optional: true dependencies: anymatch: 3.1.3 - chokidar: 3.5.3 + chokidar: 3.6.0 destr: 2.0.2 h3: 1.10.1 ioredis: 5.3.2 listhen: 1.6.0 lru-cache: 10.2.0 mri: 1.2.0 - node-fetch-native: 1.6.1 + node-fetch-native: 1.6.2 ofetch: 1.3.3 - ufo: 1.3.2 + ufo: 1.4.0 transitivePeerDependencies: - supports-color - dev: false /untun@0.1.3: resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} hasBin: true dependencies: - citty: 0.1.5 + citty: 0.1.6 consola: 3.2.3 pathe: 1.1.2 - dev: false /untyped@1.4.2: resolution: {integrity: sha512-nC5q0DnPEPVURPhfPQLahhSTnemVtPzdx7ofiRxXpOB2SYnb3MfdU3DVGyJdS8Lx+tBWeAePO8BfU/3EgksM7Q==} hasBin: true dependencies: '@babel/core': 7.23.9 - '@babel/standalone': 7.23.9 + '@babel/standalone': 7.23.10 '@babel/types': 7.23.9 defu: 6.1.4 jiti: 1.21.0 mri: 1.2.0 - scule: 1.2.0 + scule: 1.3.0 transitivePeerDependencies: - supports-color - dev: false /unwasm@0.3.7: resolution: {integrity: sha512-+s4iWvHHYnLuwNo+9mqVFLBmBzGc3gIuzkVZ8fdMN9K/kWopCnfaUVnDagd2OX3It5nRR5EenI5nSQb8FOd0fA==} dependencies: - magic-string: 0.30.5 + magic-string: 0.30.7 mlly: 1.5.0 pathe: 1.1.2 pkg-types: 1.0.3 - unplugin: 1.6.0 + unplugin: 1.7.1 dev: false - /upath@2.0.1: - resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} - engines: {node: '>=4'} - dev: false - - /update-browserslist-db@1.0.13(browserslist@4.22.3): + /update-browserslist-db@1.0.13(browserslist@4.23.0): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.3 - escalade: 3.1.1 + browserslist: 4.23.0 + escalade: 3.1.2 picocolors: 1.0.0 - dev: false /uqr@0.1.2: resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} - dev: false /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -9102,7 +11042,6 @@ packages: /urlpattern-polyfill@8.0.2: resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} - dev: false /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -9117,20 +11056,28 @@ packages: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - dev: false /validate-npm-package-name@5.0.0: resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: builtins: 5.0.1 - dev: false /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: true + /vee-validate@4.12.5(vue@3.4.19): + resolution: {integrity: sha512-rvaDfLPSLwTk+mf016XWE4drB8yXzOsKXiKHTb9gNXNLTtQSZ0Ww26O0/xbIFQe+n3+u8Wv1Y8uO/aLDX4fxOg==} + peerDependencies: + vue: ^3.3.11 + dependencies: + '@vue/devtools-api': 6.6.1 + type-fest: 4.10.2 + vue: 3.4.19(typescript@5.3.3) + dev: false + /vfile-location@5.0.2: resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} dependencies: @@ -9153,7 +11100,7 @@ packages: vfile-message: 4.0.2 dev: false - /vite-node@1.2.2(@types/node@20.11.10)(sass@1.70.0): + /vite-node@1.2.2(@types/node@20.11.19): resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -9162,7 +11109,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.0.11(@types/node@20.11.10)(sass@1.70.0) + vite: 5.1.1(@types/node@20.11.19) transitivePeerDependencies: - '@types/node' - less @@ -9172,10 +11119,9 @@ packages: - sugarss - supports-color - terser - dev: false - /vite-plugin-checker@0.6.2(eslint@8.56.0)(stylelint@16.2.0)(typescript@5.3.3)(vite@5.0.11)(vue-tsc@1.8.27): - resolution: {integrity: sha512-YvvvQ+IjY09BX7Ab+1pjxkELQsBd4rPhWNw8WLBeFVxu/E7O+n6VYAqNsKdK/a2luFlX/sMpoWdGFfg4HvwdJQ==} + /vite-plugin-checker@0.6.4(eslint@8.56.0)(stylelint@16.2.1)(typescript@5.3.3)(vite@5.1.1)(vue-tsc@1.8.27): + resolution: {integrity: sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA==} engines: {node: '>=14.16'} peerDependencies: eslint: '>=7' @@ -9208,28 +11154,25 @@ packages: '@babel/code-frame': 7.23.5 ansi-escapes: 4.3.2 chalk: 4.1.2 - chokidar: 3.5.3 + chokidar: 3.6.0 commander: 8.3.0 eslint: 8.56.0 fast-glob: 3.3.2 fs-extra: 11.2.0 - lodash.debounce: 4.0.8 - lodash.pick: 4.4.0 npm-run-path: 4.0.1 - semver: 7.5.4 + semver: 7.6.0 strip-ansi: 6.0.1 - stylelint: 16.2.0(typescript@5.3.3) + stylelint: 16.2.1(typescript@5.3.3) tiny-invariant: 1.3.1 typescript: 5.3.3 - vite: 5.0.11(@types/node@20.11.10)(sass@1.70.0) + vite: 5.1.1(@types/node@20.11.19) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 vue-tsc: 1.8.27(typescript@5.3.3) - dev: false - /vite-plugin-inspect@0.8.3(@nuxt/kit@3.9.3)(rollup@4.9.6)(vite@5.0.12): + /vite-plugin-inspect@0.8.3(@nuxt/kit@3.10.2)(rollup@4.11.0)(vite@5.1.3): resolution: {integrity: sha512-SBVzOIdP/kwe6hjkt7LSW4D0+REqqe58AumcnCfRNw4Kt3mbS9pEBkch+nupu2PBxv2tQi69EQHQ1ZA1vgB/Og==} engines: {node: '>=14'} peerDependencies: @@ -9240,8 +11183,8 @@ packages: optional: true dependencies: '@antfu/utils': 0.7.7 - '@nuxt/kit': 3.9.3(rollup@4.9.6) - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + '@nuxt/kit': 3.10.2(rollup@4.11.0) + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) debug: 4.3.4 error-stack-parser-es: 0.1.1 fs-extra: 11.2.0 @@ -9249,13 +11192,12 @@ packages: perfect-debounce: 1.0.0 picocolors: 1.0.0 sirv: 2.0.4 - vite: 5.0.12(@types/node@20.11.10)(sass@1.70.0) + vite: 5.1.3(@types/node@20.11.19) transitivePeerDependencies: - rollup - supports-color - dev: false - /vite-plugin-vue-inspector@4.0.2(vite@5.0.12): + /vite-plugin-vue-inspector@4.0.2(vite@5.1.3): resolution: {integrity: sha512-KPvLEuafPG13T7JJuQbSm5PwSxKFnVS965+MP1we2xGw9BPkkc/+LPix5MMWenpKWqtjr0ws8THrR+KuoDC8hg==} peerDependencies: vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 @@ -9266,34 +11208,15 @@ packages: '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) '@vue/babel-plugin-jsx': 1.2.1(@babel/core@7.23.9) - '@vue/compiler-dom': 3.4.15 + '@vue/compiler-dom': 3.4.19 kolorist: 1.8.0 - magic-string: 0.30.5 - vite: 5.0.12(@types/node@20.11.10)(sass@1.70.0) - transitivePeerDependencies: - - supports-color - dev: false - - /vite-plugin-vuetify@2.0.1(vite@5.0.12)(vue@3.4.15)(vuetify@3.5.1): - resolution: {integrity: sha512-GlRVAruohE8b0FqmeYYh1cYg3n8THGOv066uMA44qLv9uhUxSLw55CS7fi2yU0wH363TJ2vq36zUsPTjRFrjGQ==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - vite: '>=5' - vue: ^3.0.0 - vuetify: ^3.0.0 - dependencies: - '@vuetify/loader-shared': 2.0.1(vue@3.4.15)(vuetify@3.5.1) - debug: 4.3.4 - upath: 2.0.1 - vite: 5.0.12(@types/node@20.11.10)(sass@1.70.0) - vue: 3.4.15(typescript@5.3.3) - vuetify: 3.5.1(typescript@5.3.3)(vite-plugin-vuetify@2.0.1)(vue@3.4.15) + magic-string: 0.30.7 + vite: 5.1.3(@types/node@20.11.19) transitivePeerDependencies: - supports-color - dev: false - /vite@5.0.11(@types/node@20.11.10)(sass@1.70.0): - resolution: {integrity: sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==} + /vite@5.1.1(@types/node@20.11.19): + resolution: {integrity: sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -9320,17 +11243,15 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.10 + '@types/node': 20.11.19 esbuild: 0.19.12 - postcss: 8.4.33 - rollup: 4.9.6 - sass: 1.70.0 + postcss: 8.4.35 + rollup: 4.11.0 optionalDependencies: fsevents: 2.3.3 - dev: false - /vite@5.0.12(@types/node@20.11.10)(sass@1.70.0): - resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} + /vite@5.1.3(@types/node@20.11.19): + resolution: {integrity: sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -9357,63 +11278,61 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.10 + '@types/node': 20.11.19 esbuild: 0.19.12 - postcss: 8.4.33 - rollup: 4.9.6 - sass: 1.70.0 + postcss: 8.4.35 + rollup: 4.11.0 optionalDependencies: fsevents: 2.3.3 - dev: false /vscode-jsonrpc@6.0.0: resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} engines: {node: '>=8.0.0 || >=10.0.0'} - dev: false /vscode-languageclient@7.0.0: resolution: {integrity: sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==} engines: {vscode: ^1.52.0} dependencies: minimatch: 3.1.2 - semver: 7.5.4 + semver: 7.6.0 vscode-languageserver-protocol: 3.16.0 - dev: false /vscode-languageserver-protocol@3.16.0: resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==} dependencies: vscode-jsonrpc: 6.0.0 vscode-languageserver-types: 3.16.0 - dev: false /vscode-languageserver-textdocument@1.0.11: resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} - dev: false /vscode-languageserver-types@3.16.0: resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} - dev: false /vscode-languageserver@7.0.0: resolution: {integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==} hasBin: true dependencies: vscode-languageserver-protocol: 3.16.0 - dev: false /vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + + /vt-pbf@3.1.3: + resolution: {integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==} + dependencies: + '@mapbox/point-geometry': 0.1.0 + '@mapbox/vector-tile': 1.3.1 + pbf: 3.2.1 dev: false /vue-bundle-renderer@2.0.0: resolution: {integrity: sha512-oYATTQyh8XVkUWe2kaKxhxKVuuzK2Qcehe+yr3bGiaQAhK3ry2kYE4FWOfL+KO3hVFwCdLmzDQTzYhTi9C+R2A==} dependencies: - ufo: 1.3.2 - dev: false + ufo: 1.4.0 - /vue-demi@0.14.6(vue@3.4.15): - resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} + /vue-demi@0.14.7(vue@3.4.19): + resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} engines: {node: '>=12'} hasBin: true requiresBuild: true @@ -9424,12 +11343,11 @@ packages: '@vue/composition-api': optional: true dependencies: - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.19(typescript@5.3.3) dev: false /vue-devtools-stub@0.1.0: resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} - dev: false /vue-eslint-parser@9.4.2(eslint@8.56.0): resolution: {integrity: sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==} @@ -9444,12 +11362,12 @@ packages: espree: 9.6.1 esquery: 1.5.0 lodash: 4.17.21 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color dev: true - /vue-i18n-routing@1.2.0(vue-i18n@9.9.0)(vue-router@4.2.5)(vue@3.4.15): + /vue-i18n-routing@1.2.0(vue-i18n@9.9.1)(vue-router@4.2.5)(vue@3.4.19): resolution: {integrity: sha512-pn+bIFRMX5BN1BVQJ5rn05dYVnBhU/QnkxhjEJAe9HnYtJhDubetvoY+yfgDNWwesNWfHbbvsilsgSGL6DJyeA==} engines: {node: '>= 14.6'} peerDependencies: @@ -9470,35 +11388,38 @@ packages: vue-router: optional: true dependencies: - '@intlify/shared': 9.9.0 - '@intlify/vue-i18n-bridge': 1.1.0(vue-i18n@9.9.0) - '@intlify/vue-router-bridge': 1.1.0(vue-router@4.2.5)(vue@3.4.15) - ufo: 1.3.2 - vue: 3.4.15(typescript@5.3.3) - vue-demi: 0.14.6(vue@3.4.15) - vue-i18n: 9.9.0(vue@3.4.15) - vue-router: 4.2.5(vue@3.4.15) + '@intlify/shared': 9.9.1 + '@intlify/vue-i18n-bridge': 1.1.0(vue-i18n@9.9.1) + '@intlify/vue-router-bridge': 1.1.0(vue-router@4.2.5)(vue@3.4.19) + ufo: 1.4.0 + vue: 3.4.19(typescript@5.3.3) + vue-demi: 0.14.7(vue@3.4.19) + vue-i18n: 9.9.1(vue@3.4.19) + vue-router: 4.2.5(vue@3.4.19) dev: false - /vue-i18n@9.9.0(vue@3.4.15): - resolution: {integrity: sha512-xQ5SxszUAqK5n84N+uUyHH/PiQl9xZ24FOxyAaNonmOQgXeN+rD9z/6DStOpOxNFQn4Cgcquot05gZc+CdOujA==} + /vue-i18n@9.9.1(vue@3.4.19): + resolution: {integrity: sha512-xyQ4VspLdNSPTKBFBPWa1tvtj+9HuockZwgFeD2OhxxXuC2CWeNvV4seu2o9+vbQOyQbhAM5Ez56oxUrrnTWdw==} engines: {node: '>= 16'} peerDependencies: vue: ^3.0.0 dependencies: - '@intlify/core-base': 9.9.0 - '@intlify/shared': 9.9.0 - '@vue/devtools-api': 6.5.1 - vue: 3.4.15(typescript@5.3.3) + '@intlify/core-base': 9.9.1 + '@intlify/shared': 9.9.1 + '@vue/devtools-api': 6.6.1 + vue: 3.4.19(typescript@5.3.3) dev: false - /vue-router@4.2.5(vue@3.4.15): + /vue-router@4.2.5(vue@3.4.19): resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==} peerDependencies: vue: ^3.2.0 dependencies: - '@vue/devtools-api': 6.5.1 - vue: 3.4.15(typescript@5.3.3) + '@vue/devtools-api': 6.6.1 + vue: 3.4.19(typescript@5.3.3) + + /vue-sonner@1.0.3: + resolution: {integrity: sha512-uJPvtcftMjmiXfpsMtB77+TkzWn8gEPI0l5sN+X+UqYuAOVacf0dk7ONqRsc5DWy1ilJtLexz/wSggwjimkYKA==} dev: false /vue-template-compiler@2.7.16: @@ -9515,71 +11436,23 @@ packages: dependencies: '@volar/typescript': 1.11.1 '@vue/language-core': 1.8.27(typescript@5.3.3) - semver: 7.5.4 + semver: 7.6.0 typescript: 5.3.3 - /vue@3.4.15(typescript@5.3.3): - resolution: {integrity: sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==} + /vue@3.4.19(typescript@5.3.3): + resolution: {integrity: sha512-W/7Fc9KUkajFU8dBeDluM4sRGc/aa4YJnOYck8dkjgZoXtVsn3OeTGni66FV1l3+nvPA7VBFYtPioaGKUmEADw==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@vue/compiler-dom': 3.4.15 - '@vue/compiler-sfc': 3.4.15 - '@vue/runtime-dom': 3.4.15 - '@vue/server-renderer': 3.4.15(vue@3.4.15) - '@vue/shared': 3.4.15 - typescript: 5.3.3 - dev: false - - /vuetify-nuxt-module@0.10.3(rollup@4.9.6)(typescript@5.3.3)(vite@5.0.12)(vue@3.4.15): - resolution: {integrity: sha512-CqLpA4KZFzNIEEG5I4p4w/ScubXvlSmH4pHzYiQlwgQE4jEm8xfXf9Paun6xmQzEq1n7wLdEbFc5hOzrL+NPdA==} - dependencies: - '@nuxt/kit': 3.9.3(rollup@4.9.6) - defu: 6.1.4 - destr: 2.0.2 - local-pkg: 0.5.0 - pathe: 1.1.2 - perfect-debounce: 1.0.0 - ufo: 1.3.2 - unconfig: 0.3.11 - vite-plugin-vuetify: 2.0.1(vite@5.0.12)(vue@3.4.15)(vuetify@3.5.1) - vuetify: 3.5.1(typescript@5.3.3)(vite-plugin-vuetify@2.0.1)(vue@3.4.15) - transitivePeerDependencies: - - rollup - - supports-color - - typescript - - vite - - vue - - vue-i18n - - webpack-plugin-vuetify - dev: false - - /vuetify@3.5.1(typescript@5.3.3)(vite-plugin-vuetify@2.0.1)(vue@3.4.15): - resolution: {integrity: sha512-fkhU4UFnX/lBARXg+n9mBCDPTaEDHoYGx9SZ5A/1LlzM7LohoqldmrNgza4WgpPTLIWqr6NvYp2NvT2IrcTfhg==} - engines: {node: ^12.20 || >=14.13} - peerDependencies: - typescript: '>=4.7' - vite-plugin-vuetify: '>=1.0.0-alpha.12' - vue: ^3.3.0 - vue-i18n: ^9.0.0 - webpack-plugin-vuetify: '>=2.0.0-alpha.11' - peerDependenciesMeta: - typescript: - optional: true - vite-plugin-vuetify: - optional: true - vue-i18n: - optional: true - webpack-plugin-vuetify: - optional: true - dependencies: + '@vue/compiler-dom': 3.4.19 + '@vue/compiler-sfc': 3.4.19 + '@vue/runtime-dom': 3.4.19 + '@vue/server-renderer': 3.4.19(vue@3.4.19) + '@vue/shared': 3.4.19 typescript: 5.3.3 - vite-plugin-vuetify: 2.0.1(vite@5.0.12)(vue@3.4.15)(vuetify@3.5.1) - vue: 3.4.15(typescript@5.3.3) - dev: false /web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -9587,16 +11460,13 @@ packages: /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - dev: false /webpack-virtual-modules@0.6.1: resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} - dev: false /what-the-diff@0.6.0: resolution: {integrity: sha512-8BgQ4uo4cxojRXvCIcqDpH4QHaq0Ksn2P3LYfztylC5LDSwZKuGHf0Wf7sAStjPLTcB8eCB8pJJcPQSWfhZlkg==} @@ -9607,7 +11477,6 @@ packages: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: false /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} @@ -9628,7 +11497,6 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: false /which@4.0.0: resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} @@ -9636,16 +11504,14 @@ packages: hasBin: true dependencies: isexe: 3.1.1 - dev: false /wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: string-width: 4.2.3 - dev: false - /winston-transport@4.6.0: - resolution: {integrity: sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==} + /winston-transport@4.7.0: + resolution: {integrity: sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==} engines: {node: '>= 12.0.0'} dependencies: logform: 2.6.0 @@ -9667,7 +11533,7 @@ packages: safe-stable-stringify: 2.4.3 stack-trace: 0.0.10 triple-beam: 1.4.1 - winston-transport: 4.6.0 + winston-transport: 4.7.0 dev: true /wrap-ansi@7.0.0: @@ -9729,13 +11595,17 @@ packages: optional: true utf-8-validate: optional: true - dev: false /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: true + /xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + dev: true + /xmlhttprequest-ssl@2.0.0: resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} engines: {node: '>=0.4.0'} @@ -9755,15 +11625,17 @@ packages: /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: false /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: false /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + /yaml-ast-parser@0.0.43: + resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} + dev: false + /yaml-eslint-parser@1.2.2: resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} engines: {node: ^14.17.0 || >=16.0.0} @@ -9780,20 +11652,18 @@ packages: /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - dev: false /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} dependencies: cliui: 8.0.1 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: false /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} @@ -9801,7 +11671,6 @@ packages: /zhead@2.2.4: resolution: {integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==} - dev: false /zip-stream@5.0.1: resolution: {integrity: sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==} @@ -9810,7 +11679,6 @@ packages: archiver-utils: 4.0.1 compress-commons: 5.0.1 readable-stream: 3.6.2 - dev: false /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} diff --git a/project.config.json b/project.config.json new file mode 100644 index 00000000..ff742af4 --- /dev/null +++ b/project.config.json @@ -0,0 +1,15 @@ +{ + "colors": { + "brand": "#b8cf5b", + "geojson": "#69c0ef" + }, + "defaultLocale": "en", + "logos": { + "light": "/assets/images/logo.svg", + "dark": "/assets/images/logo.svg", + "withTextLight": "/assets/images/logo-with-text-light.svg", + "withTextDark": "/assets/images/logo-with-text-dark.svg" + }, + "imprint": "acdh-ch", + "twitter": "@openatlas_eu" +} diff --git a/public/OpenAtlasDiscovery_logo.jpg b/public/OpenAtlasDiscovery_logo.jpg deleted file mode 100644 index 9bb362eb..00000000 Binary files a/public/OpenAtlasDiscovery_logo.jpg and /dev/null differ diff --git a/public/OpenAtlasDiscovery_logo.png b/public/OpenAtlasDiscovery_logo.png deleted file mode 100644 index 08f6a5b3..00000000 Binary files a/public/OpenAtlasDiscovery_logo.png and /dev/null differ diff --git a/public/OpenAtlas_Discovery_portrait.svg b/public/OpenAtlas_Discovery_portrait.svg deleted file mode 100644 index 4a491ae9..00000000 --- a/public/OpenAtlas_Discovery_portrait.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/OpenAtlas_Logo.svg b/public/OpenAtlas_Logo.svg deleted file mode 100644 index f5869644..00000000 --- a/public/OpenAtlas_Logo.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/admin/config.yml b/public/admin/config.yml index 96e96724..0f6ebe96 100644 --- a/public/admin/config.yml +++ b/public/admin/config.yml @@ -1,11 +1,12 @@ +site_url: https://openatlas-discovery-new.vercel.app +logo_url: /icon.svg load_config_file: true local_backend: true -logo_url: /OpenAtlasDiscovery_logo.png backend: name: github - repo: acdh-oeaw/openatlas-discovery - branch: develop - base_url: https://openatlas-discovery-demo.acdh-ch-dev.oeaw.ac.at/ + repo: stefanprobst/openatlas-discovery-new + branch: main + base_url: https://openatlas-discovery-new.vercel.app auth_endpoint: /api/oauth/authorize auth_scope: repo squash_merges: true @@ -16,8 +17,8 @@ backend: uploadMedia: "content(upload): '{{path}}'" deleteMedia: "content(delete): '{{path}}'" # publish_mode: editorial_workflow -media_folder: public/ -public_folder: / +media_folder: /public/assets/images +public_folder: /assets/images editor: preview: false i18n: @@ -33,22 +34,28 @@ collections: files: - name: project_config label: Project config - file: config/discoveryConfig.json + file: project.config.json fields: - name: colors label: Colors - hint: Colors + # hint: Colors widget: object fields: - - name: primaryColor - label: Primary - hint: Primary color + - name: brand + label: Brand + # hint: Brand color + widget: color + allowInput: true + + - name: geojson + label: GeoJSON features + # hint: GeoJSON feaures color widget: color allowInput: true - name: defaultLocale label: Default locale - hint: Default locale + # hint: Default locale widget: select options: - value: en @@ -56,23 +63,175 @@ collections: - value: de label: German - - name: logo - label: Logo - hint: Logo + - name: logos + label: Logos + # hint: Logos + widget: object + fields: + - name: light + label: Logo (light mode) + hint: Logo in light mode + widget: image + + - name: dark + label: Logo (dark mode) + hint: Logo in dark mode + widget: image + + - name: withTextLight + label: Logo with text (light mode) + hint: Logo with text in light mode + widget: image + + - name: withTextDark + label: Logo with text (dark mode) + hint: Logo with text in dark mode + widget: image + + - name: imprint + label: Imprint + # hint: Imprint page + widget: select + options: + - value: none + label: No imprint + - value: custom + label: Use custom imprint page + - value: acdh-ch + label: Use ACDH-CH imprint + + - name: twitter + label: Twitter + # hint: Twitter handle + required: false + + - name: metadata + label: Metadata + # description: Metadata + i18n: true + # currently file collections only support the "single_file" i18n structure, + # so we create a folder collection with a single entry, and disallow creating + # new entries. + folder: messages + identifier_field: __cms__ + format: json + create: false + delete: false + summary: Project metadata + filter: + field: __cms__ + value: true + fields: + - name: __cms__ + widget: hidden + + - name: Metadata + label: Metadata + i18n: true + # hint: Metadata + widget: object + fields: + - name: name + label: Title + i18n: true + # hint: The website title + + - name: shortName + label: Short title + i18n: true + # hint: The website short title + + - name: description + label: Description + i18n: true + # hint: The website description + widget: text + + - name: systemPages + label: System pages + label_singular: System page + # description: System pages + i18n: true + folder: content/system-pages + create: false + delete: false + fields: + - name: title + label: Title + i18n: true + # hint: The title + + - name: navigation + label: Navigation + i18n: true + # hint: The navigation + widget: object + fields: + - name: title + label: Title + i18n: true + # hint: The navigation title + + - name: image + label: Hero image + i18n: true + # hint: Hero image + widget: object + required: false + fields: + - name: light + label: Hero image (light mode) + i18n: true + # hint: Hero image (light mode) + widget: image + + - name: dark + label: Hero image (dark mode) + i18n: true + # hint: Hero image (dark mode) widget: image - - name: acdhImprint - label: Imprint-Service of the Austrian Academy of Sciences - hint: Imprint-Service - widget: boolean - default: false + - name: leadIn + label: Hero lead-in + i18n: true + # hint: Hero lead-in + widget: markdown + modes: + # - raw + - rich_text + + - name: links + label: Links + i18n: true + hint: Call to action links + widget: list + required: false + fields: + - name: label + label: label + i18n: true + # hint: The link label + + - name: href + label: URL + i18n: duplicate + hint: The pathname, e.g. "/about" + + - name: body + label: Content + i18n: true + # hint: The content + widget: markdown + modes: + # - raw + - rich_text - name: pages label: Pages label_singular: Page # description: Pages i18n: true - folder: content + folder: content/pages create: true delete: true # nested: @@ -80,26 +239,73 @@ collections: # meta: { path: { widget: string, label: 'Path', index_file: 'index' } } fields: - name: title - label: Page Name + label: Title i18n: true - hint: The name of the page (shown in the URL) + # hint: The title - name: navigation - label: Navigation title + label: Navigation i18n: true - hint: The navigation title + # hint: The navigation widget: object fields: - name: title label: Title i18n: true - hint: The navigation title + # hint: The navigation title - name: body label: Content i18n: true - hint: The content + # hint: The content + widget: markdown + modes: + # - raw + - rich_text + + - name: team + label: Team + label_singular: Team member + # description: Team + i18n: true + folder: content/team + media_folder: /public/assets/images/team + public_folder: /assets/images/team + identifier_field: lastName + create: true + delete: true + slug: "{{lastName}}-{{firstName}}" + summary: "{{firstName}} {{lastName}}" + fields: + - name: firstName + label: First name + i18n: duplicate + # hint: The first name + required: false + + - name: lastName + label: Last name + i18n: duplicate + # hint: The last name + + - name: academicTitle + label: Title + i18n: duplicate + # hint: The academic title + required: false + + - name: image + label: Image + i18n: duplicate + # hint: The image + widget: image + required: false + + - name: body + label: Short biography + i18n: true + # hint: The short biography widget: markdown modes: - - raw + # - raw - rich_text diff --git a/public/admin/index.html b/public/admin/index.html index fb1ff2d4..34112af8 100644 --- a/public/admin/index.html +++ b/public/admin/index.html @@ -13,9 +13,6 @@ - + diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png new file mode 100644 index 00000000..1a2688c4 Binary files /dev/null and b/public/android-chrome-192x192.png differ diff --git a/public/android-chrome-512x512.png b/public/android-chrome-512x512.png new file mode 100644 index 00000000..92f1cfc1 Binary files /dev/null and b/public/android-chrome-512x512.png differ diff --git a/public/apple-icon.png b/public/apple-icon.png new file mode 100644 index 00000000..c8f9826a Binary files /dev/null and b/public/apple-icon.png differ diff --git a/public/assets/images/hero-dark.svg b/public/assets/images/hero-dark.svg new file mode 100644 index 00000000..6780f083 --- /dev/null +++ b/public/assets/images/hero-dark.svg @@ -0,0 +1 @@ + diff --git a/public/assets/images/hero-light.svg b/public/assets/images/hero-light.svg new file mode 100644 index 00000000..01b708d1 --- /dev/null +++ b/public/assets/images/hero-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/images/logo-with-text-dark.svg b/public/assets/images/logo-with-text-dark.svg new file mode 100644 index 00000000..ace50dc9 --- /dev/null +++ b/public/assets/images/logo-with-text-dark.svg @@ -0,0 +1 @@ + diff --git a/public/assets/images/logo-with-text-light.svg b/public/assets/images/logo-with-text-light.svg new file mode 100644 index 00000000..f83c2ddd --- /dev/null +++ b/public/assets/images/logo-with-text-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/images/logo.svg b/public/assets/images/logo.svg new file mode 100644 index 00000000..28681d7a --- /dev/null +++ b/public/assets/images/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/images/team/alex.jpg b/public/assets/images/team/alex.jpg new file mode 100644 index 00000000..d4f189af Binary files /dev/null and b/public/assets/images/team/alex.jpg differ diff --git a/public/assets/images/team/stefan.jpg b/public/assets/images/team/stefan.jpg new file mode 100644 index 00000000..85308ab8 Binary files /dev/null and b/public/assets/images/team/stefan.jpg differ diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 00000000..cac2db42 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/favicon.svg b/public/favicon.svg deleted file mode 100644 index 6a094d14..00000000 --- a/public/favicon.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/god_uses_debian.jpg b/public/god_uses_debian.jpg deleted file mode 100644 index bc2600f3..00000000 Binary files a/public/god_uses_debian.jpg and /dev/null differ diff --git a/public/header_logo.svg b/public/header_logo.svg deleted file mode 100644 index 69fb157a..00000000 --- a/public/header_logo.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/icon-maskable.svg b/public/icon-maskable.svg new file mode 100644 index 00000000..97200b24 --- /dev/null +++ b/public/icon-maskable.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icon.svg b/public/icon.svg new file mode 100644 index 00000000..28681d7a --- /dev/null +++ b/public/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/logo.svg b/public/logo.svg deleted file mode 100644 index 6a094d14..00000000 --- a/public/logo.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/oad-favicon.svg b/public/oad-favicon.svg deleted file mode 100644 index 6a094d14..00000000 --- a/public/oad-favicon.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/opengraph-image.png b/public/opengraph-image.png new file mode 100644 index 00000000..17e370de Binary files /dev/null and b/public/opengraph-image.png differ diff --git a/readme.md b/readme.md index 1a9e410d..74bb9747 100644 --- a/readme.md +++ b/readme.md @@ -2,15 +2,114 @@ OpenAtlas Discovery is a presentation website for [OpenAtlas](https://openatlas.eu) projects. -- [Demo](https://openatlas-discovery-demo.acdh-ch-dev.oeaw.ac.at) -- [Wiki](https://redmine.openatlas.eu/projects/openatlas-discovery/wiki/Wiki) -- [Issues](https://redmine.openatlas.eu/projects/openatlas-discovery/issues) +A demo website is deplyed at . -## Licensing +## Content management (CMS) + +The website comes with a content management system, which is deployed at `/admin` and commits all +content chanes to the website repository on GitHub. All content is stored in plain text (markdown or +json), and can also be edited directly with your favourite text editor. + +- "Config" collection: Main configuration file for the website. Allows setting default locale, brand + colors, logos. Saves to [`project.config.json`](project.config.json). +- "Metadata" collection: Project metadata which needs translation in all suppoted languages. Saves + to [`messages/:locale/project.json`](messages/en/project.json). +- "Pages" collection: Custom content pages. Saves to [`content/pages/*.md`](content/pages). +- "Team" collection: Team members. Saves to [`content/team/*.md`](content/team). + +When developing locally, you can run a development CMS server with: + +```bash +pnpm run dev:cms +``` + +This server will _not_ commit content changes to GitHub, but write to the local filesystem instead. + +## Development + +### Pre-requisites + +- [Node.js v20](https://nodejs.org/en/download) +- [pnpm](https://pnpm.io/installation) + +### Environment variables + +Set required environment variables in `.env.local`. Start by copying the template file: + +```bash +cp .env.local.example .env.local +``` + +Environment variables: + +- `NUXT_PUBLIC_APP_BASE_URL`: Should point to the URL where the website is deployed. Used for + setting ``. +- `NUXT_PUBLIC_API_BASE_URL`: Should point to the OpenAtlas backend API used by this website. +- `NUXT_PUBLIC_OPENAPI_BASE_URL`: Should point to the OpenAtlas backend's OpenAPI schema. +- `NUXT_PUBLIC_DATABASE`: Whether the configured OpenAtlas backend is ready, and links to the + `/database` and `/maps` pages should be added to the website. Allowed values are: "enabled" or + "disabled". + +- `NUXT_PUBLIC_MAP_BASELAYER_URL`: The map base layer used on the "/maps" page. Defaults to an + OpenStreetMap map. +- `NUXT_PUBLIC_MAP_BASELAYER_ATTRIBUTION`: Attribution text for the above map. + +- `NUXT_PUBLIC_MATOMO_BASE_URL` and `NUXT_PUBLIC_MATOMO_ID`: When using `matomo` for website + analytics, set the base URL and property id (optional). +- `NUXT_PUBLIC_BOTS`: Set this to "enabled" to allow web crawlers like the Google bot to index this + website. + +- `NUXT_PUBLIC_REDMINE_ID`: Needed when using the ACDH-CH imprint service for the imprint page. + +### Install dependencies + +```bash +pnpm install +``` + +### Development server + +Run a development server at : + +```bash +pnpm run dev +``` + +### Authentication + +The CMS allows signing in with a GitHub account via OAuth. + +In local development, this is optional: you can run a CMS proxy server, which commits content to the +local filesystem, instead of GitHub, and requires to authentication. + +```bash +pnpm run dev:cms +``` + +To properly configure OAuth, create a "GitHub OAuth App" at +, and set these environment variables: + +- `OAUTH_ALLOWED_ORIGIN`: Should point the the URL where the website is deployed. Used by the CMS + for authentication. +- `OAUTH_REDIRECT_URL`: Should point to the "Authorization callback URL" configured in the "GitHub + OAuth App". Usually this should point to the `/api/oauth/callback` path on `OAUTH_ALLOWED_ORIGIN`. +- `OAUTH_CLIENT_ID` and `OAUTH_CLIENT_SECRET`: The GitHub client id and client secret from the newly + created "GitHub OAuth App". + +### Deployment + +The website is deployed via [GitHub action](./.github/workflows/build-deploy.yml). + +### Issues + +To report bugs, or request new features, file an issue on our +[Redmine instance](https://redmine.openatlas.eu/projects/openatlas-discovery/issues). + +## License All code unless otherwise noted is licensed under the terms of the MIT License (MIT). Please refer -to the LICENSE file in the root directory of this repository. +to the file LICENSE in the root directory of this repository. All documentation and images unless otherwise noted are licensed under the terms of Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit -[http://creativecommons.org/licenses/by-sa/4.0/](http://creativecommons.org/licenses/by-sa/4.0/). +. diff --git a/scripts/generate-api-client.ts b/scripts/generate-api-client.ts new file mode 100644 index 00000000..bf9c63d5 --- /dev/null +++ b/scripts/generate-api-client.ts @@ -0,0 +1,41 @@ +import { mkdir, writeFile } from "node:fs/promises"; +import { join } from "node:path"; + +import { log } from "@acdh-oeaw/lib"; +import openapi, { astToString } from "openapi-typescript"; +import { z } from "zod"; + +const schema = z.object({ + NUXT_PUBLIC_OPENAPI_BASE_URL: z.string().url(), +}); + +const result = schema.safeParse(process.env); + +if (!result.success) { + const message = "Invalid environment variables"; + log.error(`${message}:`, result.error.flatten().fieldErrors); + const error = new Error(message); + delete error.stack; + throw error; +} + +const url = result.data.NUXT_PUBLIC_OPENAPI_BASE_URL; + +async function generate() { + const ast = await openapi(url, { + arrayLength: true, + }); + const content = astToString(ast); + const folderPath = join(process.cwd(), "lib", "api-client"); + await mkdir(folderPath, { recursive: true }); + await writeFile(join(folderPath, "api.ts"), content, { encoding: "utf-8" }); +} + +generate() + .then(() => { + log.success("Successfully generated api client."); + }) + .catch((error) => { + log.error("Failed to generate api client.\n", String(error)); + process.exitCode = 1; + }); diff --git a/server/middleware/log.ts b/server/middleware/log.ts new file mode 100644 index 00000000..570e02a6 --- /dev/null +++ b/server/middleware/log.ts @@ -0,0 +1,9 @@ +import pino from "pino-http"; + +const logger = pino(); + +export default defineEventHandler((event) => { + if (import.meta.env.PROD) { + logger(event.node.req, event.node.res); + } +}); diff --git a/server/plugins/content.ts b/server/plugins/content.ts new file mode 100644 index 00000000..49053f54 --- /dev/null +++ b/server/plugins/content.ts @@ -0,0 +1,20 @@ +/* eslint-disable require-atomic-updates, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */ + +import { isNonEmptyString } from "@acdh-oeaw/lib"; +// @ts-expect-error Missing type information. +import { parseMarkdown } from "@nuxtjs/mdc/runtime"; + +/** + * `nuxt/content` cannot render frontmatter fields as markdown, so we work around this + * limitation here by explicitly parsing any hero section `lead-in` fields in system pages. + */ +export default defineNitroPlugin((nitroApp) => { + // @ts-expect-error Missing type information. + nitroApp.hooks.hook("content:file:afterParse", async (file) => { + if (file._path.startsWith("/system-pages/") && file._id.endsWith(".md")) { + if (isNonEmptyString(file.leadIn)) { + file.leadIn = await parseMarkdown(file.leadIn); + } + } + }); +}); diff --git a/server/routes/manifest.webmanifest.get.ts b/server/routes/manifest.webmanifest.get.ts new file mode 100644 index 00000000..8bb795e8 --- /dev/null +++ b/server/routes/manifest.webmanifest.get.ts @@ -0,0 +1,33 @@ +import { createI18n } from "vue-i18n"; + +import en from "@/messages/en/common.json"; +import projectEn from "@/messages/en/project.json"; + +const locale = "en"; + +const { t } = createI18n({ + legacy: false, + locale, + messages: { en: { ...en, ...projectEn } }, +}).global; + +const manifest = { + name: t("Metadata.name"), + short_name: t("Metadata.shortName"), + description: t("Metadata.description"), + start_url: "/", + display: "standalone", + background_color: "#fff", + theme_color: "#fff", + icons: [ + { src: "/icon.svg", sizes: "any", type: "image/svg+xml" }, + { src: "/icon-maskable.svg", sizes: "any", type: "image/svg+xml", purpose: "maskable" }, + { src: "/android-chrome-192x192.png", sizes: "192x192", type: "image/png" }, + { src: "/android-chrome-512x512.png", sizes: "512x512", type: "image/png" }, + ], +}; + +export default defineEventHandler((event) => { + defaultContentType(event, "application/manifest+json"); + return manifest; +}); diff --git a/server/routes/robots.txt.get.ts b/server/routes/robots.txt.get.ts new file mode 100644 index 00000000..9082a304 --- /dev/null +++ b/server/routes/robots.txt.get.ts @@ -0,0 +1,30 @@ +import { createUrl } from "@acdh-oeaw/lib"; +import { z } from "zod"; + +const baseUrl = z.string().url().parse(process.env.NUXT_PUBLIC_APP_BASE_URL); +const bots = z.enum(["disabled", "enabled"]).optional().parse(process.env.NUXT_PUBLIC_BOTS); +const isIndexable = bots === "enabled"; + +const config = isIndexable + ? { + "User-Agent": "*", + Allow: "/", + Host: baseUrl, + Sitemap: String(createUrl({ baseUrl, pathname: "sitemap.xml" })), + } + : { + "User-Agent": "*", + Disallow: "/", + Host: baseUrl, + }; + +const robots = Object.entries(config) + .map(([key, value]) => { + return `${key}: ${value}`; + }) + .join("\n"); + +export default defineEventHandler((event) => { + defaultContentType(event, "text/plain"); + return robots; +}); diff --git a/server/routes/sitemap.xml.get.ts b/server/routes/sitemap.xml.get.ts new file mode 100644 index 00000000..adbb9acc --- /dev/null +++ b/server/routes/sitemap.xml.get.ts @@ -0,0 +1,58 @@ +import { join } from "node:path"; + +import { createUrl } from "@acdh-oeaw/lib"; +import fg from "fast-glob"; +import { z } from "zod"; + +import { locales } from "@/config/i18n.config"; + +const baseUrl = z.string().url().parse(process.env.NUXT_PUBLIC_APP_BASE_URL); + +// eslint-disable-next-line import/no-named-as-default-member +const paths = fg.globSync("./**/*.vue", { cwd: join(process.cwd(), "pages") }); + +const routes: Array = []; + +paths.forEach((path) => { + const _route = path.slice(0, -".vue".length).replace(/(\/)?index$/, ""); + const route = _route.length === 0 ? _route : "/" + _route; + + const segments = []; + + for (const segment of route.split("/")) { + /** Dynamic routes. */ + if (segment.startsWith("[") && segment.endsWith("]")) return; + + segments.push(segment); + } + + routes.push(segments.join("/")); +}); + +const entries: Array<{ url: string; lastModified?: Date }> = locales.flatMap((locale) => { + return routes.map((pathname) => { + return { + url: String(createUrl({ baseUrl, pathname: `/${locale}${pathname}` })), + // lastModified: new Date(), + }; + }); +}); + +const sitemap = [ + '', + '', + ...entries.flatMap((entry) => { + const elements = ["", `${entry.url}`]; + if (entry.lastModified != null) { + elements.push(`${entry.lastModified.toISOString()}`); + } + elements.push(""); + return elements; + }), + "", +].join("\n"); + +export default defineEventHandler((event) => { + defaultContentType(event, "application/xml"); + return sitemap; +}); diff --git a/styles/global.css b/styles/global.css deleted file mode 100644 index 0db9eb19..00000000 --- a/styles/global.css +++ /dev/null @@ -1,3 +0,0 @@ -a { - color: currentColor; -} diff --git a/styles/index.css b/styles/index.css new file mode 100644 index 00000000..d4403739 --- /dev/null +++ b/styles/index.css @@ -0,0 +1,10 @@ +:root { + --font-body: "Inter Variable"; +} + +:root, +body, +#__nuxt { + block-size: 100%; + isolation: isolate; +} diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 00000000..387b9ac5 --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,188 @@ +import { createPreset as createDesignTokenPreset } from "@acdh-oeaw/tailwindcss-preset"; +import type { Config } from "tailwindcss"; +import createPlugin from "tailwindcss/plugin"; + +// import { project } from "./config/project.config"; + +const shadcnPlugin = createPlugin( + ({ addBase }) => { + addBase({ + ":root": { + "--background": "0 0% 100%", + "--foreground": "0 0% 3.9%", + "--card": "0 0% 100%", + "--card-foreground": "0 0% 3.9%", + "--popover": "0 0% 100%", + "--popover-foreground": "0 0% 3.9%", + "--primary": "0 0% 9%", + "--primary-foreground": "0 0% 98%", + "--secondary": "0 0% 96.1%", + "--secondary-foreground": "0 0% 9%", + "--muted": "0 0% 96.1%", + "--muted-foreground": "0 0% 45.1%", + "--accent": "0 0% 96.1%", + "--accent-foreground": "0 0% 9%", + "--destructive": "0 84.2% 60.2%", + "--destructive-foreground": "0 0% 98%", + "--border": "0 0% 89.8%", + "--input": "0 0% 89.8%", + "--ring": "0 0% 3.9%", + "--radius": "0.5rem", + }, + ':root[data-ui-color-scheme="dark"]': { + "--background": "0 0% 3.9%", + "--foreground": "0 0% 98%", + "--card": "0 0% 3.9%", + "--card-foreground": "0 0% 98%", + "--popover": "0 0% 3.9%", + "--popover-foreground": "0 0% 98%", + "--primary": "0 0% 98%", + "--primary-foreground": "0 0% 9%", + "--secondary": "0 0% 14.9%", + "--secondary-foreground": "0 0% 98%", + "--muted": "0 0% 14.9%", + "--muted-foreground": "0 0% 63.9%", + "--accent": "0 0% 14.9%", + "--accent-foreground": "0 0% 98%", + "--destructive": "0 62.8% 30.6%", + "--destructive-foreground": "0 0% 98%", + "--border": "0 0% 14.9%", + "--input": "0 0% 14.9%", + "--ring": "0 0% 83.1%", + }, + }); + + addBase({ + ":root, body, #__nuxt": { + "block-size": "100%", + }, + "*": { + "@apply border-border": "", + }, + body: { + "@apply bg-background text-foreground font-body antialiased": "", + }, + }); + }, + { + theme: { + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", + }, + }, + extend: { + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + }, + keyframes: { + "accordion-down": { + from: { height: "0" }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0" }, + }, + "collapsible-down": { + from: { height: "0" }, + to: { height: "var(--radix-collapsible-content-height)" }, + }, + "collapsible-up": { + from: { height: "var(--radix-collapsible-content-height)" }, + to: { height: "0" }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + "collapsible-down": "collapsible-down 0.2s ease-in-out", + "collapsible-up": "collapsible-up 0.2s ease-in-out", + }, + }, + }, + }, +); + +const oadPlugin = createPlugin( + ({ addBase }) => { + addBase({ + /** + * Currently does not work because esm support in postcss needed for `colorjs.io/fn`. + * Added in default layout instead. + */ + // ":root": { + // "--brand": project.colors.brand, + // "--brand-foreground": project.colors.brandContrast, + // }, + }); + }, + { + theme: { + extend: { + colors: { + brand: { + DEFAULT: "var(--brand)", + foreground: "var(--brand-foreground)", + }, + }, + }, + }, + }, +); + +const designTokensPreset = createDesignTokenPreset(); + +const config: Config = { + content: [ + "./app.vue", + "./error.vue", + "./components/**/*.@(css|ts|vue)", + "./content/**/*.md", + "./layouts/**/*.@(css|ts|vue)", + "./pages/**/*.@(css|ts|vue)", + ], + plugins: [shadcnPlugin, oadPlugin], + presets: [designTokensPreset], +}; + +export default config; diff --git a/tsconfig.json b/tsconfig.json index b459af1a..00473a8e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,32 +1,10 @@ { "$schema": "https://json.schemastore.org/tsconfig", - /** - * `ts-node` (used by `cypress`) cannot parse `extends` array. - * - * @see https://github.com/TypeStrong/ts-node/issues/2000 - */ - "extends": "./.nuxt/tsconfig.json", - // "extends": ["./.nuxt/tsconfig.json", "@acdh-oeaw/tsconfig"], + "extends": ["./.nuxt/tsconfig.json", "@acdh-oeaw/tsconfig"], "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "exactOptionalPropertyTypes": false, - "jsx": "preserve", - "lib": ["dom", "dom.iterable", "es2021"], - "module": "esnext", - "moduleResolution": "bundler", - "noEmit": true, - "noFallthroughCasesInSwitch": true, - "noImplicitReturns": true, - "noPropertyAccessFromIndexSignature": false, - "noUncheckedIndexedAccess": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "strict": true, - "target": "es2021", - "verbatimModuleSyntax": true, /** + * This should be fixed in typescript 5.4. + * * @see https://github.com/microsoft/TypeScript/issues/54057 */ "incremental": false diff --git a/types/api.ts b/types/api.ts new file mode 100644 index 00000000..8efd44c7 --- /dev/null +++ b/types/api.ts @@ -0,0 +1,19 @@ +import type { components } from "@/lib/api-client/api"; + +type LinkedPlacesModel = components["schemas"]["LinkedPlacesModel"]; + +type LinkedPlacesModelFeature = LinkedPlacesModel["features"][number]; + +export interface LinkedPlaceFeature extends LinkedPlacesModelFeature { + type: "Feature"; + geometry: + | components["schemas"]["GeometryCollection"] + | components["schemas"]["LineString"] + | components["schemas"]["Point"] + | components["schemas"]["Polygon"]; +} + +export interface LinkedPlace extends LinkedPlacesModel { + type: "FeatureCollection"; + features: Array; +} diff --git a/types/content.ts b/types/content.ts new file mode 100644 index 00000000..e1fd2d9d --- /dev/null +++ b/types/content.ts @@ -0,0 +1,31 @@ +import type { MarkdownParsedContent } from "@nuxt/content/dist/runtime/types"; + +export interface ContentPage extends MarkdownParsedContent { + title: string; + navigation: { + title: string; + }; +} + +export interface SystemPage extends MarkdownParsedContent { + title: string; + navigation: { + title: string; + }; + image?: { + light: string; + dark: string; + }; + leadIn: MarkdownParsedContent; + links?: Array<{ + label: string; + href: string; + }>; +} + +export interface TeamMember extends MarkdownParsedContent { + firstName?: string; + lastName: string; + academicTitle?: string; + image?: string; +} diff --git a/types/entityDetailTypes.ts b/types/entityDetailTypes.ts deleted file mode 100644 index ca886545..00000000 --- a/types/entityDetailTypes.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { Component } from "nuxt/dist/app/compat/capi"; - -import type { LinkedPlacesModelRelations } from "@/composables/api"; - -export interface relationGroup { - relationType: string; - relations: Array; -} - -export interface DetailItem { - id: string; - label: string; - subheader?: string; -} - -export interface DetailTab { - title: string; - component: Component | string; - props: any; -} diff --git a/types/i18n.d.ts b/types/i18n.d.ts new file mode 100644 index 00000000..2abcc00d --- /dev/null +++ b/types/i18n.d.ts @@ -0,0 +1,5 @@ +import type { Messages } from "@/config/i18n.config"; + +declare module "vue-i18n" { + export interface DefineLocaleMessage extends Messages {} +} diff --git a/types/layouts.ts b/types/layouts.ts deleted file mode 100644 index d224e9cc..00000000 --- a/types/layouts.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface SizeBounds { - minWidth?: string; - minHeight?: string; - maxWidth?: string; - maxHeight?: string; -} diff --git a/types/nuxt.d.ts b/types/nuxt.d.ts new file mode 100644 index 00000000..22fcfe06 --- /dev/null +++ b/types/nuxt.d.ts @@ -0,0 +1,10 @@ +import type { ResourcePath } from "@intlify/core-base"; + +import type { Messages } from "@/config/i18n.config"; + +declare module "#app" { + interface PageMeta { + title: ResourcePath; + description?: ResourcePath; + } +} diff --git a/types/query.ts b/types/query.ts deleted file mode 100644 index 7eac7537..00000000 --- a/types/query.ts +++ /dev/null @@ -1,59 +0,0 @@ -export type ViewClasses = Array< - | "actor" - | "all" - | "artifact" - | "event" - | "file" - | "place" - | "reference_system" - | "reference" - | "source_translation" - | "source" - | "type" ->; -export type Format = - | "geojson-v2" - | "geojson" - | "lp" - | "n3" - | "nt" - | "pretty-xml" - | "turtle" - | "xml"; -export interface Filter { - operator: "equal"; - values: Array | Array; - logicalOperator: "and" | "or"; -} -export interface OrderFilter { - operator: "greaterThan" | "greaterThanEqual" | "lesserThan" | "lesserThanEqual"; - values: Array | Array; - logicalOperator: "and" | "or"; -} - -export interface StringFilter { - operator: "like"; - values: Array; - logicalOperator: "and" | "or"; -} -export interface Search { - entityName?: Array; - entityDescription?: Array; - entityAliases?: Array; - entityCidocClass?: Array; - entitySystemClass?: Array; - entityID?: Array; - typeID?: Array; - valueTypeID?: Array; - typeIDWithSubs?: Array; - typeName?: Array; - beginFrom?: Array; - beginTo?: Array; - endFrom?: Array; - endTo?: Array; - relationToID?: Array; -} -export interface Query { - search?: Array; - view_classes: Array<"actor" | "event" | "place" | "reference" | "source">; -} diff --git a/utils/analytics.ts b/utils/analytics.ts new file mode 100644 index 00000000..d2633308 --- /dev/null +++ b/utils/analytics.ts @@ -0,0 +1,47 @@ +import type { RouteLocationNormalized } from "vue-router"; + +function track(url: string, referrer: string, title: string) { + window._paq?.push(["setReferrerUrl", referrer]); + window._paq?.push(["setCustomUrl", url]); + window._paq?.push(["setDocumentTitle", title]); + window._paq?.push(["trackPageView"]); + window._paq?.push(["enableLinkTracking"]); +} + +export function trackPageView(to: RouteLocationNormalized, from: RouteLocationNormalized): void { + const url = to.fullPath; + const referrer = from.fullPath; + + if (typeof to.meta.title === "string") { + track(url, referrer, to.meta.title); + } else { + /** Wait for `document.title` to be updated. */ + setTimeout(() => { + track(url, referrer, document.title); + }, 500); + } +} + +declare global { + interface Window { + _paq?: Array; + } +} + +export function createAnalyticsScript(baseUrl: string, id: string): string { + return ` + var _paq = (window._paq = window._paq || []) + _paq.push(['disableCookies']) + _paq.push(['enableHeartBeatTimer']) + ;(function () { + var u = '${baseUrl}' + _paq.push(['setTrackerUrl', u + 'matomo.php']) + _paq.push(['setSiteId', '${id}']) + var d = document, + g = d.createElement('script'), + s = d.getElementsByTagName('script')[0] + g.async = true + g.src = u + 'matomo.js' + s.parentNode.insertBefore(g, s) + })()`; +} diff --git a/utils/create-date-span.ts b/utils/create-date-span.ts new file mode 100644 index 00000000..40dd9a5e --- /dev/null +++ b/utils/create-date-span.ts @@ -0,0 +1,14 @@ +export function createDateSpan(date: { earliest?: string | null; latest?: string | null }) { + const { d } = useI18n(); + + const segments: Array = []; + + if (date.earliest != null) { + segments.push(d(date.earliest, { dateStyle: "medium" })); + } + if (date.latest != null) { + segments.push(d(date.latest, { dateStyle: "medium" })); + } + + return segments.join(" - "); +} diff --git a/utils/create-feature-collection.ts b/utils/create-feature-collection.ts new file mode 100644 index 00000000..222fdc11 --- /dev/null +++ b/utils/create-feature-collection.ts @@ -0,0 +1,5 @@ +import type { Feature } from "geojson"; + +export function createFeatureCollection(features: Array) { + return { type: "FeatureCollection" as const, features }; +} diff --git a/utils/create-geojson-feature.ts b/utils/create-geojson-feature.ts new file mode 100644 index 00000000..615b9939 --- /dev/null +++ b/utils/create-geojson-feature.ts @@ -0,0 +1,15 @@ +import type { Feature, Geometry } from "geojson"; + +import type { EntityFeature } from "@/composables/use-create-entity"; + +export type GeoJsonFeature = Feature; + +export function createGeoJsonFeature(entity: EntityFeature): GeoJsonFeature { + return { + type: "Feature", + geometry: entity.geometry, + properties: { + _id: entity.properties._id, + }, + }; +} diff --git a/utils/get-entity-icon.ts b/utils/get-entity-icon.ts new file mode 100644 index 00000000..d9977fee --- /dev/null +++ b/utils/get-entity-icon.ts @@ -0,0 +1,40 @@ +import { + CalendarFoldIcon, + CodeSquareIcon, + MapPinIcon, + ShapesIcon, + TextIcon, + UserIcon, +} from "lucide-vue-next"; + +type Icon = typeof CalendarFoldIcon; + +const icons: Record = { + acquisition: CalendarFoldIcon, + activity: CalendarFoldIcon, + // actor_appellation: null, + administrative_unit: MapPinIcon, + // appellation: null, + artifact: ShapesIcon, + bibliography: TextIcon, + edition: TextIcon, + external_reference: TextIcon, + feature: MapPinIcon, + file: TextIcon, + find: MapPinIcon, + group: UserIcon, + human_remains: MapPinIcon, + move: CalendarFoldIcon, + object_location: MapPinIcon, + person: UserIcon, + place: MapPinIcon, + // referenceSystem: null, + source: TextIcon, + stratigraphic_unit: MapPinIcon, + source_translation: TextIcon, + type: CodeSquareIcon, +}; + +export function getEntityIcon(systemClass: string): Icon | null { + return icons[systemClass] ?? null; +} diff --git a/utils/get-git-info.ts b/utils/get-git-info.ts new file mode 100644 index 00000000..9377de97 --- /dev/null +++ b/utils/get-git-info.ts @@ -0,0 +1,25 @@ +import { execSync } from "node:child_process"; + +import { log } from "@acdh-oeaw/lib"; + +export function getGitInfo() { + try { + const branchName = execSync("git rev-parse --abbrev-ref HEAD").toString().trimEnd(); + const commitHash = execSync("git rev-parse HEAD").toString().trimEnd(); + const tag = execSync("git describe --always --tags").toString().trimEnd(); + + return { + branchName, + commitHash, + tag, + }; + } catch (error) { + log.error("Failed to get git info, using fallback values."); + + return { + branchName: "development", + commitHash: "", + tag: "v0.0.0", + }; + } +} diff --git a/utils/safe-json-ld-replacer.ts b/utils/safe-json-ld-replacer.ts new file mode 100644 index 00000000..6281a11e --- /dev/null +++ b/utils/safe-json-ld-replacer.ts @@ -0,0 +1,44 @@ +type JsonValue = Array | boolean | number | string | { [key: string]: JsonValue } | null; + +const entities = Object.freeze({ + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'", +}); + +const regex = new RegExp(`[${Object.keys(entities).join("")}]`, "g"); + +function replacer(t: string): string { + return entities[t as keyof typeof entities]; +} + +/** + * A replacer for JSON.stringify to strip JSON-LD of illegal HTML entities. + * + * @see https://www.w3.org/TR/json-ld11/#restrictions-for-contents-of-json-ld-script-elements + * @see https://github.com/google/react-schemaorg/blob/main/src/json-ld.tsx + */ +export function safeJsonLdReplacer(_key: string, value: JsonValue): JsonValue | undefined { + switch (typeof value) { + case "object": { + if (value === null) return undefined; + return value; + } + + case "bigint": + case "boolean": + case "number": { + return value; + } + + case "string": { + return value.replace(regex, replacer); + } + + default: { + return undefined; + } + } +} diff --git a/utils/styles.ts b/utils/styles.ts new file mode 100644 index 00000000..6febdefd --- /dev/null +++ b/utils/styles.ts @@ -0,0 +1,16 @@ +import { defineConfig } from "cva"; +import { twMerge } from "tailwind-merge"; + +export const { + cx: cn, + compose, + cva: variants, +} = defineConfig({ + hooks: { + onComplete(className) { + return twMerge(className); + }, + }, +}); + +export type { VariantProps } from "cva"; diff --git a/vuetify.config.ts b/vuetify.config.ts deleted file mode 100644 index 82ea4e91..00000000 --- a/vuetify.config.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { ThemeDefinition } from "vuetify"; -import { defineVuetifyConfiguration } from "vuetify-nuxt-module/custom-configuration"; - -import discoveryConfig from "./config/discoveryConfig.json"; - -const lightTheme: ThemeDefinition = { - dark: false, - colors: { - primary: discoveryConfig.colors.primaryColor, - }, -}; - -if (discoveryConfig.colors.primaryColor) { - lightTheme.colors!.primary = discoveryConfig.colors.primaryColor; -} - -export default defineVuetifyConfiguration({ - theme: { - defaultTheme: "lightTheme", - themes: { - lightTheme, - }, - variations: { - colors: ["primary", "secondary"], - lighten: 1, - darken: 2, - }, - }, -});