diff --git a/jest.config.js b/jest.config.js index c64a9acc..e1740f9b 100644 --- a/jest.config.js +++ b/jest.config.js @@ -18,7 +18,9 @@ module.exports = { ...pathsToModuleNameMapper(compilerOptions.paths, { prefix: '/' }), '^src/(.*)$': '/src/$1', '^test/(.*)$': '/test/$1', - src: '/src', + '^src$': '/src', + '^~/(.*)$': '/src/$1', + '^~$': '/src', '^test$': '/test', }, } diff --git a/src/modules/category/category.service.spec.ts b/src/modules/category/category.service.spec.ts deleted file mode 100644 index 891713f9..00000000 --- a/src/modules/category/category.service.spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing' -import { DbModule } from '../../processors/database/database.module' -import { PostModule } from '../post/post.module' -import { CategoryService } from './category.service' - -describe('CategoryService', () => { - let service: CategoryService - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [CategoryService], - imports: [PostModule, DbModule], - }).compile() - - service = module.get(CategoryService) - }) - - it('should be defined', () => { - expect(service).toBeDefined() - }) -}) diff --git a/src/modules/post/post.controller.spec.ts b/src/modules/post/post.controller.spec.ts deleted file mode 100644 index 569e1059..00000000 --- a/src/modules/post/post.controller.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing' -import { PostController } from './post.controller' - -describe('PostController', () => { - let controller: PostController - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [PostController], - }).compile() - - controller = module.get(PostController) - }) - - it('should be defined', () => { - expect(controller).toBeDefined() - }) -}) diff --git a/src/modules/post/post.service.spec.ts b/src/modules/post/post.service.spec.ts deleted file mode 100644 index a4f4bc5d..00000000 --- a/src/modules/post/post.service.spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing' -import { getFakeCategoryModel } from '~/../test/db-model.mock' -import { DbModule } from '../../processors/database/database.module' -import { CategoryService } from '../category/category.service' -import { PostService } from './post.service' - -describe('PostService', () => { - let service: PostService - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [PostService, CategoryService, getFakeCategoryModel()], - imports: [DbModule], - }).compile() - - service = module.get(PostService) - }) - - it('should be defined', () => { - expect(service).toBeDefined() - }) -}) diff --git a/src/processors/helper/helper.image.service.ts b/src/processors/helper/helper.image.service.ts index 888c6474..f121aa4d 100644 --- a/src/processors/helper/helper.image.service.ts +++ b/src/processors/helper/helper.image.service.ts @@ -93,7 +93,7 @@ export class ImageService { const size = imageSize(buffer) // get accent color - const accent = await getAverageRGB(buffer, size) + const accent = await getAverageRGB(buffer) return { size, accent } } diff --git a/src/utils/pic.util.ts b/src/utils/pic.util.ts index a6b61866..a626e4bd 100644 --- a/src/utils/pic.util.ts +++ b/src/utils/pic.util.ts @@ -1,19 +1,24 @@ import Vibrant = require('node-vibrant') -import { ISizeCalculationResult } from 'image-size/dist/types/interface' +import { lexer } from 'marked' -//TODO use ast to parse markdown export const pickImagesFromMarkdown = (text: string) => { - const reg = /(?<=!\[.*\]\()(.+)(?=\))/g + const ast = lexer(text) const images = [] as string[] - for (const r of text.matchAll(reg)) { - images.push(r[0]) + function pickImage(node: any) { + if (node.type === 'image') { + images.push(node.href) + return + } + if (node.tokens && Array.isArray(node.tokens)) { + return node.tokens.forEach(pickImage) + } } + ast.forEach(pickImage) return images } export async function getAverageRGB( buffer: Buffer, - size: ISizeCalculationResult, ): Promise { if (!buffer) { return undefined diff --git a/test/src/utils/pic.util.spec.ts b/test/src/utils/pic.util.spec.ts new file mode 100644 index 00000000..8a55e62a --- /dev/null +++ b/test/src/utils/pic.util.spec.ts @@ -0,0 +1,15 @@ +import { pickImagesFromMarkdown } from '~/utils/pic.util' + +describe('src/utils/pic.util', () => { + it('test marked ast', () => { + const res = pickImagesFromMarkdown(` +![](https://cdn.innei.ren/bed/2021/0813211729.jpeg) + +![](https://cdn.innei.ren/bed/2021/0813212633.jpg) +`) + expect(res).toEqual([ + 'https://cdn.innei.ren/bed/2021/0813211729.jpeg', + 'https://cdn.innei.ren/bed/2021/0813212633.jpg', + ]) + }) +}) diff --git a/tsconfig.json b/tsconfig.json index 53c06266..a9ffb2fd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,7 +22,7 @@ "~/*": [ "./src/*" ] - }, + } }, "exclude": [ "dist",