diff --git a/apps/core/package.json b/apps/core/package.json index 39ae6eb8..51210211 100644 --- a/apps/core/package.json +++ b/apps/core/package.json @@ -41,6 +41,6 @@ "nodemon": "^2.0.18", "ts-jest": "^28.0.5", "ts-node": "^10.8.2", - "typescript": "^4.7.4" + "typescript": "4.8.4" } } diff --git a/apps/core/src/resources/folders/queries/list-directory.ts b/apps/core/src/resources/folders/queries/list-directory.ts index 16fcb8c7..13c25cc0 100644 --- a/apps/core/src/resources/folders/queries/list-directory.ts +++ b/apps/core/src/resources/folders/queries/list-directory.ts @@ -6,7 +6,7 @@ export const listDirectory: QueryResolvers['listDirectory'] = async (_parent, ar const folders = await context.db.folder.findSubFolders(userId, args.folderId); const snippets = await context.db.snippet.findByFolder(args.folderId); - const paths = await context.db.folder.generateDirectoryPath(args.folderId); + const paths = await context.db.folder.generateBreadcrumb(args.folderId); return { folders, diff --git a/apps/core/src/resources/snippets/queries/find-snippet.ts b/apps/core/src/resources/snippets/queries/find-snippet.ts index c0e299af..137db6a8 100644 --- a/apps/core/src/resources/snippets/queries/find-snippet.ts +++ b/apps/core/src/resources/snippets/queries/find-snippet.ts @@ -8,7 +8,7 @@ export const findSnippet: QueryResolvers['findSnippet'] = async (_parent, args, try { const snippet = await context.db.snippet.findById(args.snippetId); - const paths = await context.db.folder.generateDirectoryPath(snippet.folderId); + const paths = await context.db.folder.generateBreadcrumb(snippet.folderId); return { paths, diff --git a/apps/functions/code-embed/package.json b/apps/functions/code-embed/package.json index b340458d..1ee133e8 100644 --- a/apps/functions/code-embed/package.json +++ b/apps/functions/code-embed/package.json @@ -34,6 +34,6 @@ "serverless-offline": "^9.2.6", "ts-node": "^10.4.0", "tsconfig-paths": "^4.1.0", - "typescript": "^4.8.2" + "typescript": "4.8.4" } } diff --git a/apps/web/package.json b/apps/web/package.json index 307c5391..a51ae3f5 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -54,6 +54,6 @@ "next-transpile-modules": "^9.0.0", "postcss": "^8.4.14", "tailwindcss": "^3.1.6", - "typescript": "4.7.4" + "typescript": "4.8.4" } } diff --git a/packages/database/tests/utils/id.test.ts b/packages/database/__tests__/utils/id.test.ts similarity index 100% rename from packages/database/tests/utils/id.test.ts rename to packages/database/__tests__/utils/id.test.ts diff --git a/packages/database/package.json b/packages/database/package.json index 10643562..3f95356f 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -9,6 +9,7 @@ "build": "tsc --project tsconfig.prod.json", "clean": "rm -rf .turbo dist", "lint": "eslint src index.ts", + "test": "jest", "db:dev": "pscale connect sharingan dev --port 3311", "db:shadow": "docker run -d --rm -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=sharingan --name sharingan-shadow-db -p 3312:3306 mysql:8.0", "db:shadow:stop": "docker kill sharingan-shadow-db && docker container prune -f", @@ -22,15 +23,15 @@ "db:seed": "prisma db seed" }, "dependencies": { - "@prisma/client": "^4.1.1", + "@prisma/client": "^4.5.0", "cuid": "^2.1.8" }, "devDependencies": { "@types/jest": "^28.1.4", "dotenv": "^16.0.1", "jest": "^28.1.2", - "prisma": "^4.1.1", + "prisma": "^4.5.0", "ts-jest": "^28.0.5", - "typescript": "^4.7.4" + "typescript": "^4.8.4" } } diff --git a/packages/database/prisma/migrations/20221020204120_add_path_in_folders_table/migration.sql b/packages/database/prisma/migrations/20221020204120_add_path_in_folders_table/migration.sql new file mode 100644 index 00000000..15c52b4f --- /dev/null +++ b/packages/database/prisma/migrations/20221020204120_add_path_in_folders_table/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE `folders` ADD COLUMN `path` TEXT NULL; diff --git a/packages/database/prisma/schema.prisma b/packages/database/prisma/schema.prisma index cc6e1eb2..b72e1447 100644 --- a/packages/database/prisma/schema.prisma +++ b/packages/database/prisma/schema.prisma @@ -68,6 +68,7 @@ model Folder { userId String @map("user_id") @db.VarChar(50) parentId String? @map("parent_id") name String @db.VarChar(255) + path String? @db.Text isFavorite Boolean @default(false) @map("is_favorite") createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at") diff --git a/packages/database/prisma/schema.test.prisma b/packages/database/prisma/schema.test.prisma index 61896ded..b068c9e5 100644 --- a/packages/database/prisma/schema.test.prisma +++ b/packages/database/prisma/schema.test.prisma @@ -67,6 +67,7 @@ model Folder { userId String @map("user_id") @db.VarChar(50) parentId String? @map("parent_id") name String @db.VarChar(255) + path String? @db.Text isFavorite Boolean @default(false) @map("is_favorite") createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at") diff --git a/packages/database/tsconfig.json b/packages/database/tsconfig.json index 614f7240..e2f2ebc7 100644 --- a/packages/database/tsconfig.json +++ b/packages/database/tsconfig.json @@ -5,10 +5,10 @@ "outDir": "./dist", "declaration": true, "composite": true, - "sourceMap": true + "sourceMap": false }, "files": ["env.d.ts"], - "include": ["./src/**/*", "./tests/**/*", "index.ts"], + "include": ["src", "__tests__", "index.ts"], "exclude": [ "node_modules" ] diff --git a/packages/database/tsconfig.prod.json b/packages/database/tsconfig.prod.json index 346b7e9a..e8c5afe2 100644 --- a/packages/database/tsconfig.prod.json +++ b/packages/database/tsconfig.prod.json @@ -3,5 +3,7 @@ "compilerOptions": { "sourceMap": false }, - "exclude": ["tests"] + "exclude": [ + "__tests__" + ] } diff --git a/packages/domain/tests/services/folders/dtos/create-folder-dto.test.ts b/packages/domain/__tests__/services/folders/dtos/create-folder-dto.test.ts similarity index 99% rename from packages/domain/tests/services/folders/dtos/create-folder-dto.test.ts rename to packages/domain/__tests__/services/folders/dtos/create-folder-dto.test.ts index 8d9627f3..dda433f1 100644 --- a/packages/domain/tests/services/folders/dtos/create-folder-dto.test.ts +++ b/packages/domain/__tests__/services/folders/dtos/create-folder-dto.test.ts @@ -21,6 +21,7 @@ describe('Test Create Folder DTO', () => { isFavorite: false, name: 'blogs', parentId: 'cl23rzwe5000002czaedc8sll', + path: null, updatedAt: expect.any(Date), userId: 'dm34saxf6111113dabfed9tmm', }); diff --git a/packages/domain/tests/services/folders/dtos/create-user-root-folder-dto.test.ts b/packages/domain/__tests__/services/folders/dtos/create-user-root-folder-dto.test.ts similarity index 97% rename from packages/domain/tests/services/folders/dtos/create-user-root-folder-dto.test.ts rename to packages/domain/__tests__/services/folders/dtos/create-user-root-folder-dto.test.ts index c1f0ba2d..eecba72c 100644 --- a/packages/domain/tests/services/folders/dtos/create-user-root-folder-dto.test.ts +++ b/packages/domain/__tests__/services/folders/dtos/create-user-root-folder-dto.test.ts @@ -14,6 +14,7 @@ describe('Test Create User Root Folder DTO', () => { isFavorite: false, name: '__dm34saxf6111113dabfed9tmm__', parentId: null, + path: null, updatedAt: expect.any(Date), userId: 'dm34saxf6111113dabfed9tmm', }); diff --git a/packages/domain/__tests__/services/folders/dtos/update-folder-dto.test.ts b/packages/domain/__tests__/services/folders/dtos/update-folder-dto.test.ts new file mode 100644 index 00000000..7130d2fb --- /dev/null +++ b/packages/domain/__tests__/services/folders/dtos/update-folder-dto.test.ts @@ -0,0 +1,34 @@ +import { Folder } from '@sharingan/database'; + +import { UpdateFolderDto } from '../../../../index'; +import { createTestFolderDto, generateTestId } from '../../../setup/test-utils'; + +describe('Test Update Folder DTO', () => { + it('should return the folder to update', () => { + const parentId = generateTestId(); + const userId = generateTestId(); + + const dto = new UpdateFolderDto({ + creatorId: userId, + folderId: parentId, + name: 'folder updated', + }); + + const currentFolder = createTestFolderDto({ parentId, userId }).toFolder(); + + const folderToUpdate = dto.toFolder(currentFolder); + + const expectedFolder: Folder = { + createdAt: currentFolder.createdAt, + id: currentFolder.id, + isFavorite: currentFolder.isFavorite, + name: 'folder updated', + parentId: currentFolder.parentId, + path: currentFolder.path, + updatedAt: currentFolder.updatedAt, + userId: currentFolder.userId, + }; + + expect(folderToUpdate).toMatchObject(expectedFolder); + }); +}); diff --git a/packages/domain/tests/services/folders/folder.service.test.ts b/packages/domain/__tests__/services/folders/folder.service.test.ts similarity index 85% rename from packages/domain/tests/services/folders/folder.service.test.ts rename to packages/domain/__tests__/services/folders/folder.service.test.ts index 0833e43c..fe583883 100644 --- a/packages/domain/tests/services/folders/folder.service.test.ts +++ b/packages/domain/__tests__/services/folders/folder.service.test.ts @@ -5,6 +5,7 @@ import { CreateUserRootFolderDto } from '../../../index'; import CreateFolderDto from '../../../src/folders/dtos/create-folder-dto'; import { createManyTestFolders, + createTestFolderDto, createTestUser, createUserWithRootFolder, deleteTestFoldersById, @@ -248,4 +249,47 @@ describe('Test Folder service', () => { await deleteTestUsersById([user1.id]); await deleteTestUsersById([user2.id]); }); + + it('should generate the breadcrumb path of a folder', async () => { + // GIVEN + const [user, rootFolder] = await createUserWithRootFolder(); + + const gistFolderDto = createTestFolderDto({ + name: 'My gist', + parentId: rootFolder.id, + userId: user.id, + }); + const gistFolder = await folderService.create(gistFolderDto); + + const nodeFolderDto = createTestFolderDto({ + name: 'Node.js', + parentId: gistFolder.id, + userId: user.id, + }); + const nodeFolder = await folderService.create(nodeFolderDto); + + // WHEN + const subFolders = await folderService.generateBreadcrumb(nodeFolder.id); + + // THEN + expect(subFolders).toHaveLength(2); + expect(subFolders.map((folder) => folder.name)).toEqual(['My gist', 'Node.js']); + + await deleteTestFoldersById([nodeFolder.id, gistFolder.id, rootFolder.id]); + await deleteTestUsersById([user.id]); + }); + + it('should generate the breadcrumb path of the root folder', async () => { + // GIVEN + const [user, rootFolder] = await createUserWithRootFolder(); + + // WHEN + const subFolders = await folderService.generateBreadcrumb(rootFolder.id); + + // THEN + expect(subFolders).toHaveLength(0); + + await deleteTestFoldersById([rootFolder.id]); + await deleteTestUsersById([user.id]); + }); }); diff --git a/packages/domain/tests/services/folders/utils/folders.test.ts b/packages/domain/__tests__/services/folders/utils/folders.test.ts similarity index 100% rename from packages/domain/tests/services/folders/utils/folders.test.ts rename to packages/domain/__tests__/services/folders/utils/folders.test.ts diff --git a/packages/domain/tests/services/roles/dtos/create-role-dto.test.ts b/packages/domain/__tests__/services/roles/dtos/create-role-dto.test.ts similarity index 100% rename from packages/domain/tests/services/roles/dtos/create-role-dto.test.ts rename to packages/domain/__tests__/services/roles/dtos/create-role-dto.test.ts diff --git a/packages/domain/tests/services/sessions/dtos/create-session-dto.test.ts b/packages/domain/__tests__/services/sessions/dtos/create-session-dto.test.ts similarity index 100% rename from packages/domain/tests/services/sessions/dtos/create-session-dto.test.ts rename to packages/domain/__tests__/services/sessions/dtos/create-session-dto.test.ts diff --git a/packages/domain/tests/services/sessions/session.service.test.ts b/packages/domain/__tests__/services/sessions/session.service.test.ts similarity index 100% rename from packages/domain/tests/services/sessions/session.service.test.ts rename to packages/domain/__tests__/services/sessions/session.service.test.ts diff --git a/packages/domain/tests/services/snippets/dtos/create-snippet-dto.test.ts b/packages/domain/__tests__/services/snippets/dtos/create-snippet-dto.test.ts similarity index 100% rename from packages/domain/tests/services/snippets/dtos/create-snippet-dto.test.ts rename to packages/domain/__tests__/services/snippets/dtos/create-snippet-dto.test.ts diff --git a/packages/domain/__tests__/services/snippets/dtos/delete-snippet-dto.test.ts b/packages/domain/__tests__/services/snippets/dtos/delete-snippet-dto.test.ts new file mode 100644 index 00000000..0cd07441 --- /dev/null +++ b/packages/domain/__tests__/services/snippets/dtos/delete-snippet-dto.test.ts @@ -0,0 +1,20 @@ +import DeleteSnippetDto from '../../../../src/snippets/dtos/delete-snippet-dto'; +import { generateTestId } from '../../../setup/test-utils'; + +describe('Test Delete Snippet DTO', () => { + it('should have the right property defined', () => { + const snippetId = generateTestId(); + const userId = generateTestId(); + + // GIVEN + const dto = new DeleteSnippetDto({ + creatorId: userId, + snippetId, + }); + + // WHEN + // THEN + expect(dto.snippetId).toEqual(snippetId); + expect(dto.creatorId).toEqual(userId); + }); +}); diff --git a/packages/domain/__tests__/services/snippets/dtos/update-snippet-dto.test.ts b/packages/domain/__tests__/services/snippets/dtos/update-snippet-dto.test.ts new file mode 100644 index 00000000..e4ac1d43 --- /dev/null +++ b/packages/domain/__tests__/services/snippets/dtos/update-snippet-dto.test.ts @@ -0,0 +1,53 @@ +import { Snippet } from '@sharingan/database'; + +import { UpdateSnippetDto } from '../../../../index'; +import { createTestSnippetDto, generateTestId } from '../../../setup/test-utils'; + +describe('Test Update Snippet DTO', () => { + it('should have the right property defined to update the snippet', () => { + const snippetId = generateTestId(); + const userId = generateTestId(); + + const dto = new UpdateSnippetDto({ + content: + 'import React from "react";\n\nexport const App = () => {\n\n\treturn(\n\t\t
Hello Updated
\n\t);\n};', + creatorId: userId, + description: 'Basic react component updated', + language: 'tsx', + lineHighlight: '[[1, "diff-add"]]', + name: 'app-updated.tsx', + snippetId, + theme: 'one-dark-pro', + visibility: 'private', + }); + + const folderId = generateTestId(); + const currentSnippet = createTestSnippetDto({ + folderId, + name: 'app.tsx', + userId, + visibility: 'public', + }).toSnippet(); + + const snippetToUpdate = dto.toSnippet(currentSnippet); + + const expectedSnippet: Snippet = { + content: + 'import React from "react";\n\nexport const App = () => {\n\n\treturn(\n\t\t
Hello Updated
\n\t);\n};', + createdAt: currentSnippet.createdAt, + description: 'Basic react component updated', + folderId: snippetToUpdate.folderId, + id: currentSnippet.id, + language: 'tsx', + lineHighlight: '[[1, "diff-add"]]', + name: 'app-updated.tsx', + size: expect.any(Number), + theme: 'one-dark-pro', + updatedAt: currentSnippet.updatedAt, + userId, + visibility: 'private', + }; + + expect(snippetToUpdate).toMatchObject(expectedSnippet); + }); +}); diff --git a/packages/domain/tests/services/snippets/snippet.service.test.ts b/packages/domain/__tests__/services/snippets/snippet.service.test.ts similarity index 100% rename from packages/domain/tests/services/snippets/snippet.service.test.ts rename to packages/domain/__tests__/services/snippets/snippet.service.test.ts diff --git a/packages/domain/tests/services/users/dtos/create-user-dto.test.ts b/packages/domain/__tests__/services/users/dtos/create-user-dto.test.ts similarity index 100% rename from packages/domain/tests/services/users/dtos/create-user-dto.test.ts rename to packages/domain/__tests__/services/users/dtos/create-user-dto.test.ts diff --git a/packages/domain/tests/services/users/dtos/update-user-dto.test.ts b/packages/domain/__tests__/services/users/dtos/update-user-dto.test.ts similarity index 100% rename from packages/domain/tests/services/users/dtos/update-user-dto.test.ts rename to packages/domain/__tests__/services/users/dtos/update-user-dto.test.ts diff --git a/packages/domain/tests/services/users/user.service.test.ts b/packages/domain/__tests__/services/users/user.service.test.ts similarity index 100% rename from packages/domain/tests/services/users/user.service.test.ts rename to packages/domain/__tests__/services/users/user.service.test.ts diff --git a/packages/domain/tests/setup/global-setup.ts b/packages/domain/__tests__/setup/global-setup.ts similarity index 100% rename from packages/domain/tests/setup/global-setup.ts rename to packages/domain/__tests__/setup/global-setup.ts diff --git a/packages/domain/tests/setup/test-setup.ts b/packages/domain/__tests__/setup/test-setup.ts similarity index 100% rename from packages/domain/tests/setup/test-setup.ts rename to packages/domain/__tests__/setup/test-setup.ts diff --git a/packages/domain/tests/setup/test-utils.ts b/packages/domain/__tests__/setup/test-utils.ts similarity index 97% rename from packages/domain/tests/setup/test-utils.ts rename to packages/domain/__tests__/setup/test-utils.ts index 3ed18e2b..3fe13d0e 100644 --- a/packages/domain/tests/setup/test-utils.ts +++ b/packages/domain/__tests__/setup/test-utils.ts @@ -135,9 +135,9 @@ export const createManyTestFolders = async ({ export const generateTestId = (): string => dbId.generate(); -export const createTestFolderDto = (args?: { parentId?: string; userId?: string }): CreateFolderDto => { +export const createTestFolderDto = (args?: { name?: string; parentId?: string; userId?: string }): CreateFolderDto => { return new CreateFolderDto({ - name: randWord(), + name: args?.name ?? randWord(), parentId: args?.parentId ?? generateTestId(), userId: args?.userId ?? generateTestId(), }); diff --git a/packages/domain/jest.config.ts b/packages/domain/jest.config.ts index b4802fdb..2d06042f 100644 --- a/packages/domain/jest.config.ts +++ b/packages/domain/jest.config.ts @@ -8,16 +8,13 @@ const config: Config.InitialOptions = { clearMocks: true, maxWorkers: 1, snapshotFormat: { - "printBasicPrototype": false + printBasicPrototype: false, }, - globalSetup: './tests/setup/global-setup.ts', - setupFilesAfterEnv: ['./tests/setup/test-setup.ts'], + globalSetup: './__tests__/setup/global-setup.ts', + setupFilesAfterEnv: ['./__tests__/setup/test-setup.ts'], coverageDirectory: 'coverage', collectCoverage: false, // When set to true, coverage is performed even if coverage flag isn't provided - collectCoverageFrom: [ - 'src/**/*.ts', - '!src/index.ts', - ], + collectCoverageFrom: ['src/**/*.ts', '!src/index.ts'], coverageThreshold: { global: { branches: 40, diff --git a/packages/domain/package.json b/packages/domain/package.json index f24987c6..1967cc1e 100644 --- a/packages/domain/package.json +++ b/packages/domain/package.json @@ -29,6 +29,6 @@ "@types/jest": "^28.1.4", "jest": "^28.1.2", "ts-jest": "^28.0.5", - "typescript": "^4.7.4" + "typescript": "4.8.4" } } diff --git a/packages/domain/src/folders/dtos/create-folder-dto.ts b/packages/domain/src/folders/dtos/create-folder-dto.ts index c7e121a6..21388d9a 100644 --- a/packages/domain/src/folders/dtos/create-folder-dto.ts +++ b/packages/domain/src/folders/dtos/create-folder-dto.ts @@ -32,6 +32,7 @@ export default class CreateFolderDto { isFavorite: false, name: this._input.name, parentId: this._input.parentId, + path: null, updatedAt: new Date(), userId: this._input.userId, }; diff --git a/packages/domain/src/folders/dtos/create-user-root-folder-dto.ts b/packages/domain/src/folders/dtos/create-user-root-folder-dto.ts index fa6772f2..0665c840 100644 --- a/packages/domain/src/folders/dtos/create-user-root-folder-dto.ts +++ b/packages/domain/src/folders/dtos/create-user-root-folder-dto.ts @@ -14,6 +14,7 @@ export default class CreateUserRootFolderDto { isFavorite: false, name: `__${this._userId}__`, parentId: null, + path: null, updatedAt: new Date(), userId: this._userId, }; diff --git a/packages/domain/src/folders/folder.service.ts b/packages/domain/src/folders/folder.service.ts index 1cc54f15..fe475312 100644 --- a/packages/domain/src/folders/folder.service.ts +++ b/packages/domain/src/folders/folder.service.ts @@ -33,11 +33,14 @@ export default class FolderService { const input = createFolderDto.toFolder(); + const parentFolder = await this.findById(createFolderDto.parentFolderId); + return dbClient.folder.create({ data: { id: input.id, name: input.name, parentId: input.parentId, + path: this.buildFolderPath(parentFolder), userId: input.userId, }, }); @@ -108,15 +111,30 @@ export default class FolderService { }); } - async generateDirectoryPath(folderId: string): Promise { - const folders: Folder[] = []; + async generateBreadcrumb(folderId: string): Promise { + const folder = await this.findById(folderId); + + const parentFolderIds = folder.path?.split('/') ?? []; - await this.listParentFolderRecursively(folderId, folders); + if (parentFolderIds.length === 0) { + return []; + } + + const parentFoldersOrdered = await dbClient.folder.findMany({ + orderBy: { + createdAt: 'asc', + }, + where: { + id: { + in: parentFolderIds, + }, + }, + }); // Remove the user root folder - folders.pop(); + parentFoldersOrdered.shift(); - return folders.reverse(); + return parentFoldersOrdered.concat(folder); } async update(updateFolderDto: UpdateFolderDto): Promise { @@ -152,16 +170,12 @@ export default class FolderService { }); } - private async listParentFolderRecursively(folderId: string, result: Folder[] = []): Promise { - const folder = await dbClient.folder.findFirstOrThrow({ where: { id: folderId } }); - - result.push(folder); - - if (!folder.parentId) { - return result; + private buildFolderPath(parentFolder: Folder): string { + if (!parentFolder.path) { + return parentFolder.id; } - return this.listParentFolderRecursively(folder.parentId, result); + return [parentFolder.path, parentFolder.id].join('/'); } private findFolderSubFolders(folderId: string, userId: string): Promise { diff --git a/packages/domain/tsconfig.json b/packages/domain/tsconfig.json index b4d97aba..98d309cf 100644 --- a/packages/domain/tsconfig.json +++ b/packages/domain/tsconfig.json @@ -7,7 +7,7 @@ "sourceMap": true }, "files": ["env.d.ts"], - "include": ["src", "tests", "index.ts"], + "include": ["src", "__tests__", "index.ts"], "exclude": [ "node_modules" ], diff --git a/packages/domain/tsconfig.prod.json b/packages/domain/tsconfig.prod.json index 346b7e9a..e8c5afe2 100644 --- a/packages/domain/tsconfig.prod.json +++ b/packages/domain/tsconfig.prod.json @@ -3,5 +3,7 @@ "compilerOptions": { "sourceMap": false }, - "exclude": ["tests"] + "exclude": [ + "__tests__" + ] } diff --git a/packages/embed/src/oembed/tests/generate-metadata.test.ts b/packages/embed/__tests__/oembed/generate-metadata.test.ts similarity index 95% rename from packages/embed/src/oembed/tests/generate-metadata.test.ts rename to packages/embed/__tests__/oembed/generate-metadata.test.ts index 5d61c253..5842c0af 100644 --- a/packages/embed/src/oembed/tests/generate-metadata.test.ts +++ b/packages/embed/__tests__/oembed/generate-metadata.test.ts @@ -1,4 +1,4 @@ -import { generateOembedMetadata } from '../index'; +import { generateOembedMetadata } from '../../src/oembed'; describe('Test Generate Oembed metadata', () => { it('should generate Oembed metadata for a code snippet', () => { diff --git a/packages/embed/src/renderer/content/tests/html-generator.test.ts b/packages/embed/__tests__/renderer/content/html-generator.test.ts similarity index 86% rename from packages/embed/src/renderer/content/tests/html-generator.test.ts rename to packages/embed/__tests__/renderer/content/html-generator.test.ts index 596877a0..7fba17a6 100644 --- a/packages/embed/src/renderer/content/tests/html-generator.test.ts +++ b/packages/embed/__tests__/renderer/content/html-generator.test.ts @@ -1,4 +1,4 @@ -import { generateNoSnippetHtmlContent } from '../html-generator'; +import { generateNoSnippetHtmlContent } from '../../../src/renderer/content/html-generator'; describe('Test HTML generator functions', () => { it.only('should generates html content for a non existing code snippet', () => { diff --git a/packages/embed/src/renderer/content/tests/preview-template.test.ts b/packages/embed/__tests__/renderer/content/preview-template.test.ts similarity index 95% rename from packages/embed/src/renderer/content/tests/preview-template.test.ts rename to packages/embed/__tests__/renderer/content/preview-template.test.ts index 8bb80c45..e33e365a 100644 --- a/packages/embed/src/renderer/content/tests/preview-template.test.ts +++ b/packages/embed/__tests__/renderer/content/preview-template.test.ts @@ -1,6 +1,6 @@ -import { Args, generateHTMLPreview } from '../preview-template'; +import { Args, generateHTMLPreview } from '../../../src/renderer/content/preview-template'; -jest.mock('../utils', () => { +jest.mock('../../../src/renderer/content/utils', () => { return { generateRandomString: () => 'random-id', }; diff --git a/packages/embed/src/renderer/content/tests/utils.test.ts b/packages/embed/__tests__/renderer/content/utils.test.ts similarity index 95% rename from packages/embed/src/renderer/content/tests/utils.test.ts rename to packages/embed/__tests__/renderer/content/utils.test.ts index 38b60729..55c7b0db 100644 --- a/packages/embed/src/renderer/content/tests/utils.test.ts +++ b/packages/embed/__tests__/renderer/content/utils.test.ts @@ -1,4 +1,8 @@ -import { addWhitespaceForEmptyLine, generateLineHighlightOptions, parseHTMLSnippetCode } from '../utils'; +import { + addWhitespaceForEmptyLine, + generateLineHighlightOptions, + parseHTMLSnippetCode, +} from '../../../src/renderer/content/utils'; describe('Test utils functions', () => { describe('Test addWhitespaceForEmptyLine()', () => { diff --git a/packages/embed/package.json b/packages/embed/package.json index 4a2d0d36..37f30dd8 100644 --- a/packages/embed/package.json +++ b/packages/embed/package.json @@ -30,6 +30,6 @@ "ts-jest": "^29.0.3", "ts-node": "^10.9.1", "tsup": "^6.2.2", - "typescript": "^4.8.4" + "typescript": "4.8.4" } } diff --git a/packages/embed/tsconfig.json b/packages/embed/tsconfig.json index 1e06835f..0da2048c 100644 --- a/packages/embed/tsconfig.json +++ b/packages/embed/tsconfig.json @@ -5,12 +5,12 @@ "outDir": "./dist", "declaration": true, "composite": true, - "sourceMap": true, + "sourceMap": false, "lib": ["es2021", "dom"], "target": "es2021" }, "files": ["env.d.ts"], - "include": ["./src/**/*", "index.ts"], + "include": ["src", "__tests__", "index.ts"], "exclude": [ "node_modules" ] diff --git a/packages/embed/tsconfig.prod.json b/packages/embed/tsconfig.prod.json index 9bd105a1..cd385c22 100644 --- a/packages/embed/tsconfig.prod.json +++ b/packages/embed/tsconfig.prod.json @@ -3,6 +3,6 @@ "extends": "./tsconfig.json", "exclude": [ "node_modules", - "./src/**/*.test.ts" + "__tests__" ] } diff --git a/packages/front/package.json b/packages/front/package.json index 828bfef6..2e134156 100644 --- a/packages/front/package.json +++ b/packages/front/package.json @@ -18,7 +18,7 @@ "react-dom": "18.2.0", "react-hook-form": "^7.33.1", "react-simple-code-editor": "^0.11.2", - "shiki": "^0.10.1", + "shiki": "^0.11.1", "yup": "^0.32.11" }, "devDependencies": { diff --git a/packages/logger/tests/utils/index.test.ts b/packages/logger/__tests__/utils/index.test.ts similarity index 100% rename from packages/logger/tests/utils/index.test.ts rename to packages/logger/__tests__/utils/index.test.ts diff --git a/packages/logger/package.json b/packages/logger/package.json index 3bdb09be..dce551f3 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -22,6 +22,6 @@ "@types/lodash": "^4.14.182", "jest": "^28.1.2", "ts-jest": "^28.0.5", - "typescript": "^4.7.4" + "typescript": "4.8.4" } } diff --git a/packages/logger/tsconfig.json b/packages/logger/tsconfig.json index 184240da..e250017b 100644 --- a/packages/logger/tsconfig.json +++ b/packages/logger/tsconfig.json @@ -6,7 +6,7 @@ "composite": true, "sourceMap": true, }, - "include": ["./src/**/*", "./tests/**/*", "index.ts"], + "include": ["src", "__tests__", "index.ts"], "exclude": [ "node_modules" ] diff --git a/packages/logger/tsconfig.prod.json b/packages/logger/tsconfig.prod.json index 346b7e9a..e8c5afe2 100644 --- a/packages/logger/tsconfig.prod.json +++ b/packages/logger/tsconfig.prod.json @@ -3,5 +3,7 @@ "compilerOptions": { "sourceMap": false }, - "exclude": ["tests"] + "exclude": [ + "__tests__" + ] } diff --git a/packages/utils/tests/common/environment.test.ts b/packages/utils/__tests__/common/environment.test.ts similarity index 100% rename from packages/utils/tests/common/environment.test.ts rename to packages/utils/__tests__/common/environment.test.ts diff --git a/packages/utils/package.json b/packages/utils/package.json index 9979d03d..0e5e71f1 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -22,6 +22,6 @@ "@types/uuid": "^8.3.4", "jest": "^28.1.2", "ts-jest": "^28.0.5", - "typescript": "^4.7.4" + "typescript": "4.8.4" } } diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index 184240da..6cdd0afe 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -4,9 +4,8 @@ "outDir": "./dist", "declaration": true, "composite": true, - "sourceMap": true, }, - "include": ["./src/**/*", "./tests/**/*", "index.ts"], + "include": ["src", "__tests__", "index.ts"], "exclude": [ "node_modules" ] diff --git a/packages/utils/tsconfig.prod.json b/packages/utils/tsconfig.prod.json index 346b7e9a..e8c5afe2 100644 --- a/packages/utils/tsconfig.prod.json +++ b/packages/utils/tsconfig.prod.json @@ -3,5 +3,7 @@ "compilerOptions": { "sourceMap": false }, - "exclude": ["tests"] + "exclude": [ + "__tests__" + ] } diff --git a/yarn.lock b/yarn.lock index 2f67fe25..8bb896e3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2658,22 +2658,22 @@ tiny-glob "^0.2.9" tslib "^2.4.0" -"@prisma/client@^4.1.1": - version "4.1.1" - resolved "https://registry.npmjs.org/@prisma/client/-/client-4.1.1.tgz" - integrity sha512-2pXuIUYxHv5H9o6QTa1VIsl4yMgsAjKQOitlo8WVTB+vo73rmMJITBPavdGUZSWUc7adMkFzEV3y5rVTUQr77Q== +"@prisma/client@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@prisma/client/-/client-4.5.0.tgz#f708549bee3da396d5741d846b4e4306b120210c" + integrity sha512-B2cV0OPI1smhdYUxsJoLYQLoMlLH06MUxgFUWQnHodGMX98VRVXKmQE/9OcrTNkqtke5RC+YU24Szxd04tZA2g== dependencies: - "@prisma/engines-version" "4.1.0-48.8d8414deb360336e4698a65aa45a1fbaf1ce13d8" + "@prisma/engines-version" "4.5.0-43.0362da9eebca54d94c8ef5edd3b2e90af99ba452" -"@prisma/engines-version@4.1.0-48.8d8414deb360336e4698a65aa45a1fbaf1ce13d8": - version "4.1.0-48.8d8414deb360336e4698a65aa45a1fbaf1ce13d8" - resolved "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.1.0-48.8d8414deb360336e4698a65aa45a1fbaf1ce13d8.tgz" - integrity sha512-cRRJwpHFGFJZvtHbY3GZjMffNBEjjZk68ztn+S2hDgPCGB4H66IK26roK94GJxBodSehwRJ0wGyebC2GoIH1JQ== +"@prisma/engines-version@4.5.0-43.0362da9eebca54d94c8ef5edd3b2e90af99ba452": + version "4.5.0-43.0362da9eebca54d94c8ef5edd3b2e90af99ba452" + resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-4.5.0-43.0362da9eebca54d94c8ef5edd3b2e90af99ba452.tgz#5b7fae294ee9bd9790d0e7b7a0b0912e4222ac08" + integrity sha512-o7LyVx8PPJBLrEzLl6lpxxk2D5VnlM4Fwmrbq0NoT6pr5aa1OuHD9ZG+WJY6TlR/iD9bhmo2LNcxddCMr5Rv2A== -"@prisma/engines@4.1.1": - version "4.1.1" - resolved "https://registry.npmjs.org/@prisma/engines/-/engines-4.1.1.tgz" - integrity sha512-DCw8L/SS0IXqmj5IW/fMxOXiifnsfjBzDfRhf0j3NFWqvMCh9OtfjmXQZxVgI2mwvJLc/5jzXhkiWT39qS09dA== +"@prisma/engines@4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-4.5.0.tgz#82df347a893a5ae2a67707d44772ba181f4b9328" + integrity sha512-4t9ir2SbQQr/wMCNU4YpHWp5hU14J2m3wHUZnGJPpmBF8YtkisxyVyQsKd1e6FyLTaGq8LOLhm6VLYHKqKNm+g== "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" @@ -11137,12 +11137,12 @@ pretty-format@^29.0.0, pretty-format@^29.1.2: ansi-styles "^5.0.0" react-is "^18.0.0" -prisma@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/prisma/-/prisma-4.1.1.tgz" - integrity sha512-yw50J8If2dKP4wYIi695zthsCASQFHiogGvUHHWd3falx/rpsD6Sb1LMLRV9nO3iGG3lozxNJ2PSINxK7xwdpg== +prisma@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/prisma/-/prisma-4.5.0.tgz#361ae3f4476d0821b97645e5da42975a7c2943bb" + integrity sha512-9Aeg4qiKlv9Wsjz4NO8k2CzRzlvS3A4FYVJ5+28sBBZ0eEwbiVOE/Jj7v6rZC1tFW2s4GSICQOAyuOjc6WsNew== dependencies: - "@prisma/engines" "4.1.1" + "@prisma/engines" "4.5.0" process-nextick-args@~2.0.0: version "2.0.1" @@ -12047,15 +12047,6 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shiki@^0.10.1: - version "0.10.1" - resolved "https://registry.npmjs.org/shiki/-/shiki-0.10.1.tgz" - integrity sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng== - dependencies: - jsonc-parser "^3.0.0" - vscode-oniguruma "^1.6.1" - vscode-textmate "5.2.0" - shiki@^0.11.1: version "0.11.1" resolved "https://registry.npmjs.org/shiki/-/shiki-0.11.1.tgz" @@ -13200,21 +13191,16 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@4.7.4, typescript@^4.6.4, typescript@^4.7.4: - version "4.7.4" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== - -typescript@^4.8.2: - version "4.8.2" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz" - integrity sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw== - -typescript@^4.8.4: +typescript@4.8.4, typescript@^4.8.4: version "4.8.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== +typescript@^4.6.4: + version "4.7.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" + integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== + ua-parser-js@^0.7.30: version "0.7.31" resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz" @@ -13487,11 +13473,6 @@ vscode-oniguruma@^1.6.1: resolved "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz" integrity sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA== -vscode-textmate@5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz" - integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ== - vscode-textmate@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-6.0.0.tgz"