diff --git a/apps/dokploy/__test__/lib/id-format.test.ts b/apps/dokploy/__test__/lib/id-format.test.ts new file mode 100644 index 00000000000..216d76381d3 --- /dev/null +++ b/apps/dokploy/__test__/lib/id-format.test.ts @@ -0,0 +1,19 @@ +import { generateAppName } from "@dokploy/server/db/schema/utils"; +import { nanoid } from "nanoid"; +import { describe, expect, it } from "vitest"; + +describe("id format", () => { + it("nanoid returns 21 url-safe characters", () => { + for (let i = 0; i < 100; i++) { + expect(nanoid()).toMatch(/^[A-Za-z0-9_-]{21}$/); + } + }); + + it("generateAppName ends with a 6-character lowercase suffix", () => { + for (let i = 0; i < 100; i++) { + const appName = generateAppName("app"); + expect(appName.startsWith("app-")).toBe(true); + expect(appName).toMatch(/-[a-z1-9]{6}$/); + } + }); +}); diff --git a/apps/dokploy/package.json b/apps/dokploy/package.json index 8380a9ffc31..74c6ae5d633 100644 --- a/apps/dokploy/package.json +++ b/apps/dokploy/package.json @@ -113,7 +113,7 @@ "lodash": "4.18.1", "lucide-react": "^1.61.0", "micromatch": "4.0.8", - "nanoid": "3.3.20", + "nanoid": "6.0.2", "next": "16.4.3", "next-themes": "^0.4.6", "nextjs-toploader": "^3.9.17", diff --git a/bun.lock b/bun.lock index 8a375859a4b..91bbfe70ddb 100644 --- a/bun.lock +++ b/bun.lock @@ -113,7 +113,7 @@ "lodash": "4.18.1", "lucide-react": "^1.61.0", "micromatch": "4.0.8", - "nanoid": "3.3.20", + "nanoid": "6.0.2", "next": "16.4.3", "next-themes": "^0.4.6", "nextjs-toploader": "^3.9.17", @@ -255,7 +255,7 @@ "drizzle-zod": "0.8.3", "lodash": "4.18.1", "micromatch": "4.0.8", - "nanoid": "3.3.20", + "nanoid": "6.0.2", "node-os-utils": "2.0.5", "node-pty": "1.1.0", "node-schedule": "2.1.1", @@ -2610,7 +2610,7 @@ "nan": ["nan@2.30.0", "", {}, "sha512-P5mokDkSvCGBz6mZDD/2l+w9QoICRXdCyZ9ONGmTePr40oihJg3Kpn0YU3twKd6PJnwSlLBWNQeOT6yWEV2c4A=="], - "nanoid": ["nanoid@3.3.20", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ=="], + "nanoid": ["nanoid@6.0.2", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-hIvVOb9Qr1p/9CNNLOe0OlWvgx/ziTsVwKN/GDSsuArN2K0wDiafP3s0SWmsm7o2BdnyS8Z9Z64NFBUbn6ziBg=="], "nanostores": ["nanostores@1.5.5", "", {}, "sha512-FixtE239Gl6Gz0ZGCK0WzvNwObNCIwVT+L7zQcf1QgcA6AzBxblzqe9OT88qiucNkhsjSOqiogSaF5jVbJiqSA=="], @@ -3648,6 +3648,8 @@ "pkg-up/find-up": ["find-up@3.0.0", "", { "dependencies": { "locate-path": "^3.0.0" } }, "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg=="], + "postcss/nanoid": ["nanoid@3.3.20", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ=="], + "prompts/kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], "raw-body/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], diff --git a/packages/server/package.json b/packages/server/package.json index c1f3c34d547..d8fb385c209 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -77,7 +77,7 @@ "drizzle-zod": "0.8.3", "lodash": "4.18.1", "micromatch": "4.0.8", - "nanoid": "3.3.20", + "nanoid": "6.0.2", "node-os-utils": "2.0.5", "node-pty": "1.1.0", "node-schedule": "2.1.1",