From 9e834cdc58fb72f0f487457981e4043cab2ea048 Mon Sep 17 00:00:00 2001 From: Stefan Probst Date: Mon, 17 Jul 2023 07:20:22 +0200 Subject: [PATCH] chore: cleanup [skip ci] --- babel.config.js | 4 - .../lemmata}/lemma-list.spec.ts | 3 +- package-lock.json | 499 ++++++++++-------- package.json | 26 +- server/index.ts | 41 +- src/features/articles/annotation.vue | 2 +- src/features/articles/editor-loader.vue | 4 +- src/features/articles/editor.vue | 2 +- src/features/common/side-bar.vue | 10 +- src/features/issues/issue-board.vue | 8 +- src/features/issues/issue-details.vue | 2 +- src/features/issues/issue-list.vue | 6 +- src/features/issues/issue-manager.vue | 4 +- src/features/issues/lemma-labels.vue | 8 +- src/features/issues/user-avatar.vue | 2 +- src/features/lemmata/data-filter.vue | 7 +- .../lemmata/details/full-name-array-field.vue | 4 +- .../lemmata/details/lemma-details.vue | 12 +- .../lemmata/details/lobid-gnd-search.vue | 5 +- .../lemmata/details/zotero-search.vue | 106 ++-- .../lemmata/import/import-file-dialog.vue | 4 +- src/features/lemmata/lemma-add.vue | 3 +- src/features/lemmata/lemma-manager.vue | 27 +- src/features/lemmata/lemma-scrape-result.vue | 2 +- src/features/ui/badge.vue | 4 +- src/features/ui/date-field.vue | 196 +------ src/features/ui/resizable-drawer.vue | 4 +- src/features/ui/select-menu.vue | 4 +- src/features/ui/switch-button.vue | 8 +- src/features/ui/text-field-alternatives.vue | 6 +- src/features/ui/text-field.vue | 58 +- src/features/ui/virtual-table.vue | 2 + src/lib/lemmaimport/datacontainers.ts | 2 +- src/lib/lemmaimport/dataconversion.ts | 8 +- src/lib/lemmaimport/lemmaimport.ts | 4 +- src/lib/lemmaimport/optionmanagement.ts | 4 +- src/lib/router.ts | 26 +- src/pages/lemmata/index.vue | 14 +- src/pages/lemmata/list/[id]/index.vue | 30 ++ src/service/zotero.ts | 2 +- src/store/article.ts | 2 +- src/store/confirm.ts | 3 +- src/store/issue.ts | 6 +- src/store/lemma.ts | 8 +- src/styles/index.css | 10 +- tsconfig.json | 4 +- vue.config.js | 2 +- 47 files changed, 567 insertions(+), 631 deletions(-) rename e2e/{LemmaManager => features/lemmata}/lemma-list.spec.ts (90%) create mode 100644 src/pages/lemmata/list/[id]/index.vue diff --git a/babel.config.js b/babel.config.js index a8a4028..e2c225f 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,8 +1,4 @@ const config = { - /** - * Note that `vue-property-decorator has an issue when compiled with babel: - * @see https://github.com/kaorun343/vue-property-decorator/issues/336 - */ presets: ["@vue/cli-plugin-babel/preset"], }; diff --git a/e2e/LemmaManager/lemma-list.spec.ts b/e2e/features/lemmata/lemma-list.spec.ts similarity index 90% rename from e2e/LemmaManager/lemma-list.spec.ts rename to e2e/features/lemmata/lemma-list.spec.ts index b066081..ede503d 100644 --- a/e2e/LemmaManager/lemma-list.spec.ts +++ b/e2e/features/lemmata/lemma-list.spec.ts @@ -1,4 +1,4 @@ -import { expect, test } from "../fixtures"; +import { expect, test } from "~/e2e/fixtures"; test("add new lemmalist", async ({ page }) => { // https://playwright.dev/docs/test-timeouts#set-timeout-for-a-single-test @@ -6,7 +6,6 @@ test("add new lemmalist", async ({ page }) => { const randomListName = `Testliste ${Math.random().toString(36).substring(2, 10)}`; - await page.goto("/"); await page.goto("/lemmata"); expect(page.getByRole("heading", { name: "Lemmabibliothek" })).toBeVisible(); diff --git a/package-lock.json b/package-lock.json index 3dc2f4e..21b919c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,7 @@ "name": "@acdh-oeaw/irs", "license": "MIT", "dependencies": { - "@acdh-oeaw/lib": "^0.1.4", + "@acdh-oeaw/lib": "^0.1.5", "@babel/polyfill": "^7.12.1", "@mdi/font": "^7.2.96", "@tiptap/extension-highlight": "^2.0.3", @@ -20,18 +20,14 @@ "dexie": "^3.2.4", "express": "^4.18.2", "file-dialog": "^0.0.8", - "human-readable-numbers": "^0.9.5", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "neat-csv": "^5.2.0", "pretty-file-icons": "^2.2.1", "socket.io": "^3.1.1", "socket.io-client": "^3.1.1", - "tippy.js": "^6.3.1", - "tslib": "^2.5.3", - "uuid": "^8.3.2", + "tippy.js": "^6.3.7", + "uuid": "^9.0.0", "vue": "^2.7.14", - "vue-class-component": "^7.2.6", - "vue-property-decorator": "^9.1.2", "vue-router": "^3.6.5", "vue-virtual-table": "^0.2.22", "vuedraggable": "^2.24.3", @@ -46,21 +42,21 @@ "@acdh-oeaw/prettier-config": "^1.0.1", "@acdh-oeaw/stylelint-config": "^1.0.5", "@acdh-oeaw/tsconfig": "^1.0.1", - "@fontsource-variable/roboto-flex": "^5.0.3", - "@playwright/test": "^1.35.1", + "@fontsource-variable/roboto-flex": "^5.0.5", + "@playwright/test": "^1.36.0", "@types/compression": "^1.7.2", "@types/express": "^4.17.17", "@types/lodash": "^4.14.195", "@types/node": "^18.16.19", - "@types/uuid": "^8.3.4", + "@types/uuid": "^9.0.2", "@vue/cli-plugin-babel": "~5.0.8", "@vue/cli-plugin-router": "~5.0.8", "@vue/cli-plugin-typescript": "~5.0.8", "@vue/cli-service": "~5.0.8", "buffer": "^6.0.3", "dotenv-cli": "^7.2.1", - "eslint": "^8.43.0", - "lint-staged": "^13.2.2", + "eslint": "^8.45.0", + "lint-staged": "^13.2.3", "npm-run-all2": "^6.0.6", "openapi-typescript-codegen": "0.9.3", "prettier": "^2.8.8", @@ -70,10 +66,10 @@ "schema-dts": "^1.1.2", "simple-git-hooks": "^2.8.1", "stream-browserify": "^3.0.0", - "stylelint": "^15.10.0", + "stylelint": "^15.10.1", "ts-node": "^9.1.1", "ts-node-dev": "^1.1.6", - "typescript": "~5.1.3", + "typescript": "~5.1.6", "undici": "^5.22.1", "vue-cli-plugin-vuetify": "~2.5.8", "vue-tsc": "^1.8.4", @@ -138,9 +134,9 @@ } }, "node_modules/@acdh-oeaw/lib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@acdh-oeaw/lib/-/lib-0.1.4.tgz", - "integrity": "sha512-ob2SP1i4T03uYwmGRMah1W1SetVohAB/faaQ8NnVWoJUgULiCDTxnbfFJe/SnyCadf1fdahIX4eQo6g4pJJSfA==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@acdh-oeaw/lib/-/lib-0.1.5.tgz", + "integrity": "sha512-GyprRuzIKQF7aSkH1bhG7JvN/o0rLhOmzCLJIIfJpbwdKbkmDonGMUEmM4LCwodkJOO9nUjlvSMmz0QVG7hZAw==", "engines": { "node": ">=18", "pnpm": ">=8" @@ -2151,9 +2147,9 @@ } }, "node_modules/@fontsource-variable/roboto-flex": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@fontsource-variable/roboto-flex/-/roboto-flex-5.0.4.tgz", - "integrity": "sha512-QepTVIBtEMmyBBna6JUXyuOZ1mCrYrPynyrdesGPEDWUf/iRUmDN07UIp3dpg9rg9vcShN9AA8WTUMFMBcUbrg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@fontsource-variable/roboto-flex/-/roboto-flex-5.0.5.tgz", + "integrity": "sha512-6wVl3KHN0RWg9MEv0UEldcDZO1m1Bw8elP32X4iEi5tPA6/I1N0nLGTs1lPJ/IBZxLNQO2b153NICMXN/r1EwA==", "dev": true }, "node_modules/@hapi/hoek": { @@ -2445,13 +2441,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.35.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.35.1.tgz", - "integrity": "sha512-b5YoFe6J9exsMYg0pQAobNDR85T1nLumUYgUTtKm4d21iX2L7WqKq9dW8NGJ+2vX0etZd+Y7UeuqsxDXm9+5ZA==", + "version": "1.36.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.36.1.tgz", + "integrity": "sha512-YK7yGWK0N3C2QInPU6iaf/L3N95dlGdbsezLya4n0ZCh3IL7VgPGxC6Gnznh9ApWdOmkJeleT2kMTcWPRZvzqg==", "dev": true, "dependencies": { "@types/node": "*", - "playwright-core": "1.35.1" + "playwright-core": "1.36.1" }, "bin": { "playwright": "cli.js" @@ -3294,9 +3290,9 @@ "peer": true }, "node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", + "integrity": "sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==", "dev": true }, "node_modules/@types/webpack-env": { @@ -5236,29 +5232,33 @@ } }, "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/camelcase-keys/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/caniuse-api": { @@ -6373,12 +6373,15 @@ } }, "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decamelize-keys": { @@ -6397,6 +6400,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/decamelize-keys/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -7096,9 +7108,9 @@ } }, "node_modules/eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", + "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -7126,7 +7138,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -7138,7 +7149,6 @@ "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -8844,11 +8854,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/human-readable-numbers": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/human-readable-numbers/-/human-readable-numbers-0.9.5.tgz", - "integrity": "sha512-VC1uYLm7FR+4UkLaQdXPLodz7xTVLBte3X6iMCYK/uPJywoHyEZfR40+kCN4YqYd+FNCPJAJNYv2CSMvAprgsQ==" - }, "node_modules/human-signals": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", @@ -10135,26 +10140,26 @@ } }, "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", "dev": true, "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", "decamelize-keys": "^1.1.0", "hard-rejection": "^2.1.0", "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10199,10 +10204,45 @@ "node": ">=10" } }, + "node_modules/meow/node_modules/read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, "engines": { "node": ">=10" @@ -11519,9 +11559,9 @@ } }, "node_modules/playwright-core": { - "version": "1.35.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.35.1.tgz", - "integrity": "sha512-pNXb6CQ7OqmGDRspEjlxE49w+4YtR6a3X6mT1hZXeJHWmsEz7SunmvZeiG/+y1yyMZdHnnn73WKYdtV1er0Xyg==", + "version": "1.36.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.36.1.tgz", + "integrity": "sha512-7+tmPuMcEW4xeCL9cp9KxmYpQYHKkyjwoXRnoeTowaeNat8PoBMk/HwCYhqkH2fRkshfKEOiVus/IhID2Pg8kg==", "dev": true, "bin": { "playwright-core": "cli.js" @@ -12640,12 +12680,15 @@ ] }, "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/randombytes": { @@ -12827,16 +12870,31 @@ } }, "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", "dev": true, "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/redent/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/regenerate": { @@ -13767,6 +13825,15 @@ "websocket-driver": "^0.7.4" } }, + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/sortablejs": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz", @@ -14031,15 +14098,18 @@ } }, "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, "dependencies": { - "min-indent": "^1.0.0" + "min-indent": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-json-comments": { @@ -14077,9 +14147,9 @@ } }, "node_modules/stylelint": { - "version": "15.10.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.0.tgz", - "integrity": "sha512-uDCwoZA+C2Ee29wEFi8irICpH+wie1Ku/57QrWKqtKh+ZE1LuVDkUQUg9Zp3WlWMu8IABXxFaFj3/szy+SRc0Q==", + "version": "15.10.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.1.tgz", + "integrity": "sha512-CYkzYrCFfA/gnOR+u9kJ1PpzwG10WLVnoxHDuBA/JiwGqdM9+yx9+ou6SE/y9YHtfv1mcLo06fdadHTOx4gBZQ==", "dev": true, "dependencies": { "@csstools/css-parser-algorithms": "^2.3.0", @@ -14105,7 +14175,7 @@ "is-plain-object": "^5.0.0", "known-css-properties": "^0.27.0", "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", + "meow": "^10.1.5", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "picocolors": "^1.0.0", @@ -14124,7 +14194,7 @@ "write-file-atomic": "^5.0.1" }, "bin": { - "stylelint": "bin/stylelint.js" + "stylelint": "bin/stylelint.mjs" }, "engines": { "node": "^14.13.1 || >=16.0.0" @@ -14746,12 +14816,15 @@ } }, "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ts-loader": { @@ -14939,7 +15012,8 @@ "node_modules/tslib": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "dev": true }, "node_modules/tsutils": { "version": "3.21.0", @@ -15166,9 +15240,9 @@ } }, "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", "bin": { "uuid": "dist/bin/uuid" } @@ -15210,14 +15284,6 @@ "csstype": "^3.1.0" } }, - "node_modules/vue-class-component": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-7.2.6.tgz", - "integrity": "sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w==", - "peerDependencies": { - "vue": "^2.0.0" - } - }, "node_modules/vue-cli-plugin-vuetify": { "version": "2.5.8", "resolved": "https://registry.npmjs.org/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.5.8.tgz", @@ -15392,15 +15458,6 @@ "resolved": "https://registry.npmjs.org/vue-observe-visibility/-/vue-observe-visibility-0.4.6.tgz", "integrity": "sha512-xo0CEVdkjSjhJoDdLSvoZoQrw/H2BlzB5jrCBKGZNXN2zdZgMuZ9BKrxXDjNP2AxlcCoKc8OahI3F3r3JGLv2Q==" }, - "node_modules/vue-property-decorator": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz", - "integrity": "sha512-xYA8MkZynPBGd/w5QFJ2d/NM0z/YeegMqYTphy7NJQXbZcuU6FC6AOdUAcy4SXP+YnkerC6AfH+ldg7PDk9ESQ==", - "peerDependencies": { - "vue": "*", - "vue-class-component": "*" - } - }, "node_modules/vue-resize": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-0.4.5.tgz", @@ -16381,9 +16438,9 @@ } }, "@acdh-oeaw/lib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@acdh-oeaw/lib/-/lib-0.1.4.tgz", - "integrity": "sha512-ob2SP1i4T03uYwmGRMah1W1SetVohAB/faaQ8NnVWoJUgULiCDTxnbfFJe/SnyCadf1fdahIX4eQo6g4pJJSfA==" + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@acdh-oeaw/lib/-/lib-0.1.5.tgz", + "integrity": "sha512-GyprRuzIKQF7aSkH1bhG7JvN/o0rLhOmzCLJIIfJpbwdKbkmDonGMUEmM4LCwodkJOO9nUjlvSMmz0QVG7hZAw==" }, "@acdh-oeaw/prettier-config": { "version": "1.0.1", @@ -17742,9 +17799,9 @@ "dev": true }, "@fontsource-variable/roboto-flex": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@fontsource-variable/roboto-flex/-/roboto-flex-5.0.4.tgz", - "integrity": "sha512-QepTVIBtEMmyBBna6JUXyuOZ1mCrYrPynyrdesGPEDWUf/iRUmDN07UIp3dpg9rg9vcShN9AA8WTUMFMBcUbrg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@fontsource-variable/roboto-flex/-/roboto-flex-5.0.5.tgz", + "integrity": "sha512-6wVl3KHN0RWg9MEv0UEldcDZO1m1Bw8elP32X4iEi5tPA6/I1N0nLGTs1lPJ/IBZxLNQO2b153NICMXN/r1EwA==", "dev": true }, "@hapi/hoek": { @@ -17976,14 +18033,14 @@ } }, "@playwright/test": { - "version": "1.35.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.35.1.tgz", - "integrity": "sha512-b5YoFe6J9exsMYg0pQAobNDR85T1nLumUYgUTtKm4d21iX2L7WqKq9dW8NGJ+2vX0etZd+Y7UeuqsxDXm9+5ZA==", + "version": "1.36.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.36.1.tgz", + "integrity": "sha512-YK7yGWK0N3C2QInPU6iaf/L3N95dlGdbsezLya4n0ZCh3IL7VgPGxC6Gnznh9ApWdOmkJeleT2kMTcWPRZvzqg==", "dev": true, "requires": { "@types/node": "*", "fsevents": "2.3.2", - "playwright-core": "1.35.1" + "playwright-core": "1.36.1" } }, "@polka/url": { @@ -18625,9 +18682,9 @@ "peer": true }, "@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", + "integrity": "sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==", "dev": true }, "@types/webpack-env": { @@ -20075,20 +20132,21 @@ "dev": true }, "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", "dev": true, "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" }, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true } } @@ -20881,9 +20939,9 @@ } }, "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", "dev": true }, "decamelize-keys": { @@ -20896,6 +20954,12 @@ "map-obj": "^1.0.0" }, "dependencies": { + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -21412,9 +21476,9 @@ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", + "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", @@ -21442,7 +21506,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -21454,7 +21517,6 @@ "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { @@ -22682,11 +22744,6 @@ } } }, - "human-readable-numbers": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/human-readable-numbers/-/human-readable-numbers-0.9.5.tgz", - "integrity": "sha512-VC1uYLm7FR+4UkLaQdXPLodz7xTVLBte3X6iMCYK/uPJywoHyEZfR40+kCN4YqYd+FNCPJAJNYv2CSMvAprgsQ==" - }, "human-signals": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", @@ -23615,23 +23672,23 @@ "dev": true }, "meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", "dev": true, "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", "decamelize-keys": "^1.1.0", "hard-rejection": "^2.1.0", "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" }, "dependencies": { "hosted-git-info": { @@ -23664,10 +23721,33 @@ "validate-npm-package-license": "^3.0.1" } }, + "read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + } + }, + "read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "dev": true, + "requires": { + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" + } + }, "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true }, "yallist": { @@ -24629,9 +24709,9 @@ } }, "playwright-core": { - "version": "1.35.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.35.1.tgz", - "integrity": "sha512-pNXb6CQ7OqmGDRspEjlxE49w+4YtR6a3X6mT1hZXeJHWmsEz7SunmvZeiG/+y1yyMZdHnnn73WKYdtV1er0Xyg==", + "version": "1.36.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.36.1.tgz", + "integrity": "sha512-7+tmPuMcEW4xeCL9cp9KxmYpQYHKkyjwoXRnoeTowaeNat8PoBMk/HwCYhqkH2fRkshfKEOiVus/IhID2Pg8kg==", "dev": true }, "popper.js": { @@ -25427,9 +25507,9 @@ "dev": true }, "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true }, "randombytes": { @@ -25569,13 +25649,21 @@ } }, "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", "dev": true, "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + }, + "dependencies": { + "indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true + } } }, "regenerate": { @@ -26273,6 +26361,14 @@ "faye-websocket": "^0.11.3", "uuid": "^8.3.2", "websocket-driver": "^0.7.4" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } } }, "sortablejs": { @@ -26483,12 +26579,12 @@ "dev": true }, "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, "requires": { - "min-indent": "^1.0.0" + "min-indent": "^1.0.1" } }, "strip-json-comments": { @@ -26514,9 +26610,9 @@ } }, "stylelint": { - "version": "15.10.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.0.tgz", - "integrity": "sha512-uDCwoZA+C2Ee29wEFi8irICpH+wie1Ku/57QrWKqtKh+ZE1LuVDkUQUg9Zp3WlWMu8IABXxFaFj3/szy+SRc0Q==", + "version": "15.10.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.1.tgz", + "integrity": "sha512-CYkzYrCFfA/gnOR+u9kJ1PpzwG10WLVnoxHDuBA/JiwGqdM9+yx9+ou6SE/y9YHtfv1mcLo06fdadHTOx4gBZQ==", "dev": true, "requires": { "@csstools/css-parser-algorithms": "^2.3.0", @@ -26542,7 +26638,7 @@ "is-plain-object": "^5.0.0", "known-css-properties": "^0.27.0", "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", + "meow": "^10.1.5", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "picocolors": "^1.0.0", @@ -27001,9 +27097,9 @@ "dev": true }, "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", "dev": true }, "ts-loader": { @@ -27135,7 +27231,8 @@ "tslib": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "dev": true }, "tsutils": { "version": "3.21.0", @@ -27286,9 +27383,9 @@ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" }, "v-tooltip": { "version": "2.0.2", @@ -27324,12 +27421,6 @@ "csstype": "^3.1.0" } }, - "vue-class-component": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-7.2.6.tgz", - "integrity": "sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w==", - "requires": {} - }, "vue-cli-plugin-vuetify": { "version": "2.5.8", "resolved": "https://registry.npmjs.org/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.5.8.tgz", @@ -27447,12 +27538,6 @@ "resolved": "https://registry.npmjs.org/vue-observe-visibility/-/vue-observe-visibility-0.4.6.tgz", "integrity": "sha512-xo0CEVdkjSjhJoDdLSvoZoQrw/H2BlzB5jrCBKGZNXN2zdZgMuZ9BKrxXDjNP2AxlcCoKc8OahI3F3r3JGLv2Q==" }, - "vue-property-decorator": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz", - "integrity": "sha512-xYA8MkZynPBGd/w5QFJ2d/NM0z/YeegMqYTphy7NJQXbZcuU6FC6AOdUAcy4SXP+YnkerC6AfH+ldg7PDk9ESQ==", - "requires": {} - }, "vue-resize": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-0.4.5.tgz", diff --git a/package.json b/package.json index f60653b..0e9bfd5 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "validate": "run-p format:check lint:check types:check test test:e2e" }, "dependencies": { - "@acdh-oeaw/lib": "^0.1.4", + "@acdh-oeaw/lib": "^0.1.5", "@babel/polyfill": "^7.12.1", "@mdi/font": "^7.2.96", "@tiptap/extension-highlight": "^2.0.3", @@ -51,18 +51,14 @@ "dexie": "^3.2.4", "express": "^4.18.2", "file-dialog": "^0.0.8", - "human-readable-numbers": "^0.9.5", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "neat-csv": "^5.2.0", "pretty-file-icons": "^2.2.1", "socket.io": "^3.1.1", "socket.io-client": "^3.1.1", - "tippy.js": "^6.3.1", - "tslib": "^2.5.3", - "uuid": "^8.3.2", + "tippy.js": "^6.3.7", + "uuid": "^9.0.0", "vue": "^2.7.14", - "vue-class-component": "^7.2.6", - "vue-property-decorator": "^9.1.2", "vue-router": "^3.6.5", "vue-virtual-table": "^0.2.22", "vuedraggable": "^2.24.3", @@ -77,21 +73,21 @@ "@acdh-oeaw/prettier-config": "^1.0.1", "@acdh-oeaw/stylelint-config": "^1.0.5", "@acdh-oeaw/tsconfig": "^1.0.1", - "@fontsource-variable/roboto-flex": "^5.0.3", - "@playwright/test": "^1.35.1", + "@fontsource-variable/roboto-flex": "^5.0.5", + "@playwright/test": "^1.36.0", "@types/compression": "^1.7.2", "@types/express": "^4.17.17", "@types/lodash": "^4.14.195", "@types/node": "^18.16.19", - "@types/uuid": "^8.3.4", + "@types/uuid": "^9.0.2", "@vue/cli-plugin-babel": "~5.0.8", "@vue/cli-plugin-router": "~5.0.8", "@vue/cli-plugin-typescript": "~5.0.8", "@vue/cli-service": "~5.0.8", "buffer": "^6.0.3", "dotenv-cli": "^7.2.1", - "eslint": "^8.43.0", - "lint-staged": "^13.2.2", + "eslint": "^8.45.0", + "lint-staged": "^13.2.3", "npm-run-all2": "^6.0.6", "openapi-typescript-codegen": "0.9.3", "prettier": "^2.8.8", @@ -101,10 +97,10 @@ "schema-dts": "^1.1.2", "simple-git-hooks": "^2.8.1", "stream-browserify": "^3.0.0", - "stylelint": "^15.10.0", + "stylelint": "^15.10.1", "ts-node": "^9.1.1", "ts-node-dev": "^1.1.6", - "typescript": "~5.1.3", + "typescript": "~5.1.6", "undici": "^5.22.1", "vue-cli-plugin-vuetify": "~2.5.8", "vue-tsc": "^1.8.4", diff --git a/server/index.ts b/server/index.ts index 0cf548a..421307e 100644 --- a/server/index.ts +++ b/server/index.ts @@ -4,27 +4,30 @@ import express from "express"; import fs from "fs"; import http from "http"; import socketIo from "socket.io"; +import { z } from 'zod' import zotero from "./zotero"; -if (process.env.ZOTERO_API_KEY === undefined || process.env.ZOTERO_USER === undefined) { - const environment = JSON.stringify({ - ZOTERO_USER: process.env.ZOTERO_USER, - ZOTERO_API_KEY: process.env.ZOTERO_API_KEY, - }); - throw new Error(`Zotero is not correctly configered. See environment: ${environment}`); -} +const schema = z.object({ + ZOTERO_API_KEY: z.string().min(1), + ZOTERO_USER: z.string().min(1), + ALLOWED_ORIGIN: z.string().min(1), + SERVICE_SECRET: z.string().min(1), + PORT: z.coerce.number().default(3333) +}) + +const env = schema.parse(process.env) const app = express(); -const port = process.env.NODE_PORT || process.env.PORT || 3333; +const port = env.PORT -const serviceSecret = process.env.SERVICE_SECRET; +const serviceSecret = env.SERVICE_SECRET; const server = http.createServer(app); // @ts-expect-error FIXME: const io = socketIo(server, { cors: { - origin: JSON.parse(process.env.ALLOWED_ORIGIN), + origin: JSON.parse(env.ALLOWED_ORIGIN), }, }); @@ -62,10 +65,10 @@ app.post("/message/import-lemmas", (req, res) => { app.get("/zotero/search/:query", async (req, res) => { const x = await ( await fetch( - "https://api.zotero.org/users/" + process.env.ZOTERO_USER + "/items?q=" + req.params.query, + "https://api.zotero.org/users/" + env.ZOTERO_USER + "/items?q=" + req.params.query, { headers: { - "Zotero-API-Key": process.env.ZOTERO_API_KEY, + "Zotero-API-Key": env.ZOTERO_API_KEY, }, }, ) @@ -75,7 +78,7 @@ app.get("/zotero/search/:query", async (req, res) => { app.get("/zotero/item/:id", async (request, response) => { const zoteroHeaders = new Headers(); - zoteroHeaders.set("Zotero-API-Key", process.env.ZOTERO_API_KEY); + zoteroHeaders.set("Zotero-API-Key", env.ZOTERO_API_KEY); zoteroHeaders.set("Zotero-Api-Version", "3"); zoteroHeaders.set("Content-Type", "application/json"); @@ -87,10 +90,12 @@ app.get("/zotero/item/:id", async (request, response) => { } const zoteroResponse = await fetch( - "https://api.zotero.org/users/" + process.env.ZOTERO_USER + "/items/" + request.params.id, + "https://api.zotero.org/users/" + env.ZOTERO_USER + "/items/" + request.params.id, { headers: zoteroHeaders }, ); + // @ts-expect-error Remove later response.header["zoteroStatus"] = String(zoteroResponse.status); + // @ts-expect-error Remove later response.header["zoteroStatusText"] = zoteroResponse.statusText; let responseBody = null; @@ -103,12 +108,12 @@ app.get("/zotero/item/:id", async (request, response) => { app.patch("/zotero/item/:id", async (req, res) => { console.log(req.body); const x = await fetch( - "https://api.zotero.org/users/" + process.env.ZOTERO_USER + "/items/" + req.params.id, + "https://api.zotero.org/users/" + env.ZOTERO_USER + "/items/" + req.params.id, { method: "PATCH", body: JSON.stringify(req.body), headers: { - "Zotero-API-Key": process.env.ZOTERO_API_KEY, + "Zotero-API-Key": env.ZOTERO_API_KEY, }, }, ); @@ -133,11 +138,11 @@ app.patch("/zotero/item/:id", async (req, res) => { app.post("/zotero/item", async (req, res) => { console.log(req.body); - const x = await fetch("https://api.zotero.org/users/" + process.env.ZOTERO_USER + "/items/", { + const x = await fetch("https://api.zotero.org/users/" + env.ZOTERO_USER + "/items/", { method: "POST", body: JSON.stringify(req.body), headers: { - "Zotero-API-Key": process.env.ZOTERO_API_KEY, + "Zotero-API-Key": env.ZOTERO_API_KEY, }, }); if (x.ok) { diff --git a/src/features/articles/annotation.vue b/src/features/articles/annotation.vue index 9997c4d..8853792 100644 --- a/src/features/articles/annotation.vue +++ b/src/features/articles/annotation.vue @@ -1,6 +1,6 @@