From b45f1f1fbc7081214aac5565d2609be888970808 Mon Sep 17 00:00:00 2001 From: Evorp <3vorpgaming@gmail.com> Date: Thu, 22 Feb 2024 19:57:41 -0800 Subject: [PATCH] update firestorm also other dependencies --- package-lock.json | 48 +++++++++---------- package.json | 10 ++-- src/v2/repository/contributions.repository.ts | 6 +-- src/v2/repository/packs.repository.ts | 3 +- src/v2/repository/texture.repository.ts | 13 +++-- src/v2/repository/user.repository.ts | 3 +- src/v2/tools/firestorm.ts | 16 ------- 7 files changed, 40 insertions(+), 59 deletions(-) delete mode 100644 src/v2/tools/firestorm.ts diff --git a/package-lock.json b/package-lock.json index c4499c5..d33457a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,11 +15,11 @@ "cloudflare": "^2.9.1", "cors": "^2.8.5", "discord-api-types": "^0.37.70", - "dotenv": "^16.4.4", + "dotenv": "^16.4.5", "express": "^4.18.2", - "firestorm-db": "^1.11.1", + "firestorm-db": "^1.12.0", "form-data": "^4.0.0", - "isomorphic-dompurify": "^2.3.0", + "isomorphic-dompurify": "^2.4.0", "multer": "^1.4.5-lts.1", "response-time": "^2.3.2", "statuses": "^2.0.1", @@ -31,7 +31,7 @@ "@types/body-parser": "^1.19.5", "@types/express": "^4.17.21", "@types/multer": "^1.4.11", - "@types/node": "^20.11.19", + "@types/node": "^20.11.20", "@types/swagger-ui-express": "^4.1.6", "@typescript-eslint/eslint-plugin": "^6.20.0", "@typescript-eslint/parser": "^6.20.0", @@ -42,7 +42,7 @@ "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", "eslint-plugin-prettier": "^5.1.3", - "nodemon": "^3.0.3", + "nodemon": "^3.1.0", "prettier": "^3.2.5", "ts-node": "^10.9.2", "typescript": "^5.3.3" @@ -544,9 +544,9 @@ } }, "node_modules/@types/node": { - "version": "20.11.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", - "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", + "version": "20.11.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz", + "integrity": "sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==", "dependencies": { "undici-types": "~5.26.4" } @@ -1614,14 +1614,14 @@ } }, "node_modules/dompurify": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.8.tgz", - "integrity": "sha512-b7uwreMYL2eZhrSCRC4ahLTeZcPZxSmYfmcQGXGkXiZSNW1X85v+SDM5KsWcpivIiUBH47Ji7NtyUdpLeF5JZQ==" + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.9.tgz", + "integrity": "sha512-uyb4NDIvQ3hRn6NiC+SIFaP4mJ/MdXlvtunaqK9Bn6dD3RuB/1S/gasEjDHD8eiaqdSael2vBv+hOs7Y+jhYOQ==" }, "node_modules/dotenv": { - "version": "16.4.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.4.tgz", - "integrity": "sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "engines": { "node": ">=12" }, @@ -2452,9 +2452,9 @@ } }, "node_modules/firestorm-db": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/firestorm-db/-/firestorm-db-1.11.1.tgz", - "integrity": "sha512-GvpsYBsaVJxc1Dj+gumKtCvB14kPTrQLK0dG5DMOUg/ZiayJsZFSizjLPtxPIyPQ1ZQY/Taza34g6OTGbG4i3w==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/firestorm-db/-/firestorm-db-1.12.0.tgz", + "integrity": "sha512-Acgr/KaHDIKGgQwRs7hpczTbz2eNVBKzoAgneXgja5sVNpJIAvz0IU0JXotdbD5B7bkZ+JMJds7EAAJ/LyRi/w==", "dependencies": { "axios": "^1.6.7" } @@ -3383,12 +3383,12 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isomorphic-dompurify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.3.0.tgz", - "integrity": "sha512-FCoKY4/mW/jnn/+VgE7wXGC2D/RXzVCAmGYuGWEuZXtyWnwmE2100caciIv+RbHk90q9LA0OW5IBn2f+ywHtww==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.4.0.tgz", + "integrity": "sha512-OW3VSGrjppnbshcHz7RNKnoYlCJkyBBJzEE5yxrTSA+kOl9JPTIrXsnIgOuH4wdLqqRujx22bz/IXebGWPLMAg==", "dependencies": { "@types/dompurify": "^3.0.5", - "dompurify": "^3.0.8", + "dompurify": "^3.0.9", "jsdom": "^24.0.0" }, "engines": { @@ -3774,9 +3774,9 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/nodemon": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.3.tgz", - "integrity": "sha512-7jH/NXbFPxVaMwmBCC2B9F/V6X1VkEdNgx3iu9jji8WxWcvhMWkmhNWhI5077zknOnZnBzba9hZP6bCPJLSReQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz", + "integrity": "sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==", "dev": true, "dependencies": { "chokidar": "^3.5.2", diff --git a/package.json b/package.json index 33c621e..c6f95cf 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@types/body-parser": "^1.19.5", "@types/express": "^4.17.21", "@types/multer": "^1.4.11", - "@types/node": "^20.11.19", + "@types/node": "^20.11.20", "@types/swagger-ui-express": "^4.1.6", "@typescript-eslint/eslint-plugin": "^6.20.0", "@typescript-eslint/parser": "^6.20.0", @@ -32,7 +32,7 @@ "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", "eslint-plugin-prettier": "^5.1.3", - "nodemon": "^3.0.3", + "nodemon": "^3.1.0", "prettier": "^3.2.5", "ts-node": "^10.9.2", "typescript": "^5.3.3" @@ -45,11 +45,11 @@ "cloudflare": "^2.9.1", "cors": "^2.8.5", "discord-api-types": "^0.37.70", - "dotenv": "^16.4.4", + "dotenv": "^16.4.5", "express": "^4.18.2", - "firestorm-db": "^1.11.1", + "firestorm-db": "^1.12.0", "form-data": "^4.0.0", - "isomorphic-dompurify": "^2.3.0", + "isomorphic-dompurify": "^2.4.0", "multer": "^1.4.5-lts.1", "response-time": "^2.3.2", "statuses": "^2.0.1", diff --git a/src/v2/repository/contributions.repository.ts b/src/v2/repository/contributions.repository.ts index 70ada2d..ad90d5b 100644 --- a/src/v2/repository/contributions.repository.ts +++ b/src/v2/repository/contributions.repository.ts @@ -8,7 +8,6 @@ import { PackID, } from "../interfaces"; import { contributions, users } from "../firestorm"; -import { selectDistinct } from "../tools/firestorm"; export default class ContributionFirestormRepository implements ContributionsRepository { getContributionById(id: string): Promise { @@ -16,7 +15,7 @@ export default class ContributionFirestormRepository implements ContributionsRep } getPacks(): Promise { - return selectDistinct(contributions, "pack", true); + return contributions.values({ field: "pack" }); } searchContributionsFrom(authors: Array, packs: Array): Promise { @@ -63,7 +62,8 @@ export default class ContributionFirestormRepository implements ContributionsRep const out = {}; return ( - selectDistinct(contributions, "authors", true) + contributions + .values({ field: "authors", flatten: true }) .then((authors) => authors.forEach((id) => { if (!out[id]) out[id] = { id, contributions: 1 }; diff --git a/src/v2/repository/packs.repository.ts b/src/v2/repository/packs.repository.ts index 0d16073..6a44926 100644 --- a/src/v2/repository/packs.repository.ts +++ b/src/v2/repository/packs.repository.ts @@ -12,7 +12,6 @@ import { } from "~/v2/interfaces"; import { contributions, packs } from "../firestorm"; import SubmissionFirestormRepository from "./submissions.repository"; -import { selectDistinct } from "../tools/firestorm"; export default class PackFirestormRepository implements PackRepository { private readonly submissionRepo = new SubmissionFirestormRepository(); @@ -35,7 +34,7 @@ export default class PackFirestormRepository implements PackRepository { } getAllTags(): Promise { - return selectDistinct(packs, "tags", true).then((res) => res.sort()); + return packs.values({ field: "tags", flatten: true }).then((res) => res.sort()); } search(params: PackSearch): Promise { diff --git a/src/v2/repository/texture.repository.ts b/src/v2/repository/texture.repository.ts index 4a1dc76..be44ccc 100644 --- a/src/v2/repository/texture.repository.ts +++ b/src/v2/repository/texture.repository.ts @@ -12,7 +12,6 @@ import { import { NotFoundError } from "../tools/ApiError"; import { textures, paths, uses, contributions, settings } from "../firestorm"; import { MinecraftSorter } from "../tools/sorter"; -import { selectDistinct } from "../tools/firestorm"; export default class TextureFirestormRepository implements TextureRepository { async getByNameIdAndTag( @@ -139,21 +138,21 @@ export default class TextureFirestormRepository implements TextureRepository { } public getEditions() { - return selectDistinct(uses, "edition").then((res) => res.sort()); + return uses.values({ field: "edition" }).then((res) => res.sort()); } public getResolutions(): Promise> { - return selectDistinct(contributions, "resolution").then((res) => res.sort()); + return contributions.values({ field: "resolution" }).then((res) => res.sort()); } public getTags(): Promise> { - return selectDistinct(textures, "tags", true).then((res) => res.sort()); + return textures.values({ field: "tags", flatten: true }).then((res) => res.sort()); } public getVersions(): Promise> { - return selectDistinct(paths, "versions", true).then((res) => - res.sort(MinecraftSorter).reverse(), - ); + return paths + .values({ field: "versions", flatten: true }) + .then((res) => res.sort(MinecraftSorter).reverse()); } public getVersionByEdition(edition: Edition): Promise> { diff --git a/src/v2/repository/user.repository.ts b/src/v2/repository/user.repository.ts index 1383af4..3d15c7e 100644 --- a/src/v2/repository/user.repository.ts +++ b/src/v2/repository/user.repository.ts @@ -11,7 +11,6 @@ import { Username, UserProfile, } from "../interfaces"; -import { selectDistinct } from "../tools/firestorm"; // eslint-disable-next-line no-underscore-dangle const __transformUser = (user: Partial): User => ({ @@ -129,7 +128,7 @@ export default class UserFirestormRepository implements UserRepository { } getRoles(): Promise> { - return selectDistinct(users, "roles", true); + return users.values({ field: "roles", flatten: true }); } getContributionsById(id: string): Promise { diff --git a/src/v2/tools/firestorm.ts b/src/v2/tools/firestorm.ts deleted file mode 100644 index 2f77267..0000000 --- a/src/v2/tools/firestorm.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Collection } from "firestorm-db"; - -/** - * Get all existing values for a given Firestorm field - * @author Evorp - * @param collection collection to search - * @param field field to search - * @param flatten flatten array fields before merging duplicates - * @returns unique values - */ -export const selectDistinct = (collection: Collection, field: keyof T, flatten = false) => - collection - .select({ fields: [field] }) - .then((res) => Object.values(res).map((el) => el[field])) - .then((values) => (flatten ? values.flat() : values)) - .then((values: any[]) => [...new Set(values)]);