From e53d2814fc13ae134487667fc053825eefba8760 Mon Sep 17 00:00:00 2001 From: Przybylski Krzysztof Date: Fri, 10 Jan 2025 17:05:21 +0100 Subject: [PATCH 1/2] fix(#449): use nanoid for image names --- package-lock.json | 73 +++++++++++++++++++++++++++++++++++ package.json | 2 + src/static/hdd/hdd.service.ts | 3 +- 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index ac804aa..0eaadac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,6 +69,8 @@ "eslint-config-prettier": "^9.0.0", "eslint-plugin-import": "^2.28.1", "jest": "^29.6.4", + "jest-mock-extended": "^4.0.0-beta1", + "nanoid": "^3.3.8", "prettier": "^3.0.3", "prisma": "^5.3.1", "supertest": "^6.3.3", @@ -8678,6 +8680,21 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-mock-extended": { + "version": "4.0.0-beta1", + "resolved": "https://artifacts.industrysoftware.automation.siemens.com/artifactory/api/npm/npm/jest-mock-extended/-/jest-mock-extended-4.0.0-beta1.tgz", + "integrity": "sha512-MYcI0wQu3ceNhqKoqAJOdEfsVMamAFqDTjoLN5Y45PAG3iIm4WGnhOu0wpMjlWCexVPO71PMoNir9QrGXrnIlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ts-essentials": "^10.0.2" + }, + "peerDependencies": { + "@jest/globals": "^28.0.0 || ^29.0.0", + "jest": "^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0", + "typescript": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", @@ -9474,6 +9491,25 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://artifacts.industrysoftware.automation.siemens.com/artifactory/api/npm/npm/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -11795,6 +11831,21 @@ "typescript": ">=4.2.0" } }, + "node_modules/ts-essentials": { + "version": "10.0.4", + "resolved": "https://artifacts.industrysoftware.automation.siemens.com/artifactory/api/npm/npm/ts-essentials/-/ts-essentials-10.0.4.tgz", + "integrity": "sha512-lwYdz28+S4nicm+jFi6V58LaAIpxzhg9rLdgNC1VsdP/xiFBseGhF1M/shwCk6zMmwahBZdXcl34LVHrEang3A==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "typescript": ">=4.5.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/ts-jest": { "version": "29.1.1", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", @@ -19112,6 +19163,15 @@ "jest-util": "^29.7.0" } }, + "jest-mock-extended": { + "version": "4.0.0-beta1", + "resolved": "https://artifacts.industrysoftware.automation.siemens.com/artifactory/api/npm/npm/jest-mock-extended/-/jest-mock-extended-4.0.0-beta1.tgz", + "integrity": "sha512-MYcI0wQu3ceNhqKoqAJOdEfsVMamAFqDTjoLN5Y45PAG3iIm4WGnhOu0wpMjlWCexVPO71PMoNir9QrGXrnIlw==", + "dev": true, + "requires": { + "ts-essentials": "^10.0.2" + } + }, "jest-pnp-resolver": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", @@ -19736,6 +19796,12 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "nanoid": { + "version": "3.3.8", + "resolved": "https://artifacts.industrysoftware.automation.siemens.com/artifactory/api/npm/npm/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true + }, "napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -21431,6 +21497,13 @@ "dev": true, "requires": {} }, + "ts-essentials": { + "version": "10.0.4", + "resolved": "https://artifacts.industrysoftware.automation.siemens.com/artifactory/api/npm/npm/ts-essentials/-/ts-essentials-10.0.4.tgz", + "integrity": "sha512-lwYdz28+S4nicm+jFi6V58LaAIpxzhg9rLdgNC1VsdP/xiFBseGhF1M/shwCk6zMmwahBZdXcl34LVHrEang3A==", + "dev": true, + "requires": {} + }, "ts-jest": { "version": "29.1.1", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", diff --git a/package.json b/package.json index a817f73..d1d7e75 100644 --- a/package.json +++ b/package.json @@ -86,6 +86,8 @@ "eslint-config-prettier": "^9.0.0", "eslint-plugin-import": "^2.28.1", "jest": "^29.6.4", + "jest-mock-extended": "^4.0.0-beta1", + "nanoid": "^3.3.8", "prettier": "^3.0.3", "prisma": "^5.3.1", "supertest": "^6.3.3", diff --git a/src/static/hdd/hdd.service.ts b/src/static/hdd/hdd.service.ts index 6ccbf43..092845a 100644 --- a/src/static/hdd/hdd.service.ts +++ b/src/static/hdd/hdd.service.ts @@ -4,12 +4,13 @@ import { writeFileSync, readFileSync, unlink, mkdirSync, existsSync } from 'fs'; import { PNG, PNGWithMetadata } from 'pngjs'; import { Static } from '../static.interface'; import { HDD_IMAGE_PATH } from './constants'; +import { nanoid } from 'nanoid'; export class HddService implements Static { private readonly logger: Logger = new Logger(HddService.name); generateNewImage(type: 'screenshot' | 'diff' | 'baseline'): { imageName: string; imagePath: string } { - const imageName = `${Date.now()}.${type}.png`; + const imageName = `${nanoid()}.${type}.png`; return { imageName, imagePath: this.getImagePath(imageName), From 0fa0dbfb1a95e19c5fb993afa7342d7cc8fd01f6 Mon Sep 17 00:00:00 2001 From: Przybylski Krzysztof Date: Thu, 20 Feb 2025 12:23:46 +0100 Subject: [PATCH 2/2] refactor: use uuid-apikey instead of nanoid --- package-lock.json | 26 -------------------------- package.json | 1 - src/static/hdd/hdd.service.ts | 4 ++-- 3 files changed, 2 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index ec5020a..12438d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -71,7 +71,6 @@ "eslint-plugin-import": "^2.28.1", "jest": "^29.6.4", "jest-mock-extended": "^4.0.0-beta1", - "nanoid": "^3.3.8", "prettier": "^3.0.3", "prisma": "^5.3.1", "supertest": "^6.3.3", @@ -9535,25 +9534,6 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://artifacts.industrysoftware.automation.siemens.com/artifactory/api/npm/npm/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -19880,12 +19860,6 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "nanoid": { - "version": "3.3.8", - "resolved": "https://artifacts.industrysoftware.automation.siemens.com/artifactory/api/npm/npm/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "dev": true - }, "napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", diff --git a/package.json b/package.json index 8cacb49..0caff5f 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,6 @@ "eslint-plugin-import": "^2.28.1", "jest": "^29.6.4", "jest-mock-extended": "^4.0.0-beta1", - "nanoid": "^3.3.8", "prettier": "^3.0.3", "prisma": "^5.3.1", "supertest": "^6.3.3", diff --git a/src/static/hdd/hdd.service.ts b/src/static/hdd/hdd.service.ts index 092845a..0740524 100644 --- a/src/static/hdd/hdd.service.ts +++ b/src/static/hdd/hdd.service.ts @@ -4,13 +4,13 @@ import { writeFileSync, readFileSync, unlink, mkdirSync, existsSync } from 'fs'; import { PNG, PNGWithMetadata } from 'pngjs'; import { Static } from '../static.interface'; import { HDD_IMAGE_PATH } from './constants'; -import { nanoid } from 'nanoid'; +import uuidAPIKey from 'uuid-apikey'; export class HddService implements Static { private readonly logger: Logger = new Logger(HddService.name); generateNewImage(type: 'screenshot' | 'diff' | 'baseline'): { imageName: string; imagePath: string } { - const imageName = `${nanoid()}.${type}.png`; + const imageName = `${uuidAPIKey.create({ noDashes: true }).apiKey}.${type}.png`; return { imageName, imagePath: this.getImagePath(imageName),