diff --git a/.changeset/big-words-poke.md b/.changeset/big-words-poke.md new file mode 100644 index 0000000..34bbb31 --- /dev/null +++ b/.changeset/big-words-poke.md @@ -0,0 +1,5 @@ +--- +"notion-to-utils": minor +--- + +refactor: Remove makePreviewImage and formatNotionImageUrl functionality diff --git a/packages/notion-to-utils/package.json b/packages/notion-to-utils/package.json index 825f4f5..7e061fd 100644 --- a/packages/notion-to-utils/package.json +++ b/packages/notion-to-utils/package.json @@ -43,7 +43,6 @@ "devDependencies": { "@repo/eslint-config": "workspace:*", "@repo/typescript-config": "workspace:*", - "@types/lqip-modern": "^1.1.7", "@types/probe-image-size": "^7.2.5", "@vitest/coverage-v8": "2.1.2", "jsdom": "^26.0.0", @@ -52,7 +51,6 @@ }, "dependencies": { "@notionhq/client": "^2.2.15", - "lqip-modern": "^2.2.1", "open-graph-scraper": "^6.9.0", "probe-image-size": "^7.2.3" } diff --git a/packages/notion-to-utils/src/client/getPageBlocks.ts b/packages/notion-to-utils/src/client/getPageBlocks.ts index 407dabd..dc42aa0 100644 --- a/packages/notion-to-utils/src/client/getPageBlocks.ts +++ b/packages/notion-to-utils/src/client/getPageBlocks.ts @@ -1,12 +1,12 @@ import { Client } from '@notionhq/client'; +import ogs from 'open-graph-scraper'; import { ListBlockChildrenResponse, BlockObjectResponse, PartialBlockObjectResponse, } from '@notionhq/client/build/src/api-endpoints'; -import { formatNotionImageUrl } from './formatNotionImageUrl'; -import { addMetadataToImageBlock } from '../utils'; -import ogs from 'open-graph-scraper'; +import { formatNotionImageUrl } from '../utils/formatNotionImageUrl'; +import { addMetadataToImageBlock } from './utils/getImageMetadata'; // 블록 타입 정의 export type NotionBlock = BlockObjectResponse | PartialBlockObjectResponse; diff --git a/packages/notion-to-utils/src/client/getPageProperties.ts b/packages/notion-to-utils/src/client/getPageProperties.ts index 40bcd10..79982cf 100644 --- a/packages/notion-to-utils/src/client/getPageProperties.ts +++ b/packages/notion-to-utils/src/client/getPageProperties.ts @@ -1,7 +1,7 @@ import { Client } from '@notionhq/client'; import { isPageObjectResponse } from './utils/isPageObjectResponse'; import { extractValuesFromProperties } from './utils/extractValuesFromProperties'; -import { formatNotionImageUrl } from './formatNotionImageUrl'; +import { formatNotionImageUrl } from '../utils/formatNotionImageUrl'; /** * Retrieves properties of a Notion page. diff --git a/packages/notion-to-utils/src/client/index.ts b/packages/notion-to-utils/src/client/index.ts index cbbed44..49c5d96 100644 --- a/packages/notion-to-utils/src/client/index.ts +++ b/packages/notion-to-utils/src/client/index.ts @@ -3,7 +3,6 @@ import type { ClientOptions } from '@notionhq/client/build/src/Client'; import { getPageProperties as getPagePropertiesFunc } from './getPageProperties'; import { getFileUrl as getFileUrlFunc } from './getFileUrl'; import { getPageBlocks as getPageBlocksFunc } from './getPageBlocks'; -import { formatNotionImageUrl as formatNotionImageUrlFunc } from './formatNotionImageUrl'; export class Client extends NotionClient { constructor(options: ClientOptions = {}) { @@ -15,13 +14,11 @@ export class Client extends NotionClient { keys: string[] = [], extractValues = true ) => getPagePropertiesFunc(this, pageId, keys, extractValues); + getPageBlocks = (pageId: string) => getPageBlocksFunc(this, pageId); getFileUrl = (pageId: string, propertyKey: string) => getFileUrlFunc(this, pageId, propertyKey); - //? 25.4.7 formatNotionImageUrl 외부에서 미사용 - formatNotionImageUrl = (url: string, blockId?: string) => - formatNotionImageUrlFunc(url, blockId); } export default Client; diff --git a/packages/notion-to-utils/src/utils/getImageMetadata.ts b/packages/notion-to-utils/src/client/utils/getImageMetadata.ts similarity index 96% rename from packages/notion-to-utils/src/utils/getImageMetadata.ts rename to packages/notion-to-utils/src/client/utils/getImageMetadata.ts index 0918120..4236e13 100644 --- a/packages/notion-to-utils/src/utils/getImageMetadata.ts +++ b/packages/notion-to-utils/src/client/utils/getImageMetadata.ts @@ -5,7 +5,7 @@ import probe from 'probe-image-size'; * @param url 이미지 URL * @returns 이미지 메타데이터 (너비, 높이, 종횡비) 또는 null (추출 실패 시) */ -export async function getImageMetadata(url: string): Promise<{ +async function getImageMetadata(url: string): Promise<{ width: number; height: number; aspectRatio: number; diff --git a/packages/notion-to-utils/src/client/formatNotionImageUrl.spec.ts b/packages/notion-to-utils/src/utils/formatNotionImageUrl.spec.ts similarity index 100% rename from packages/notion-to-utils/src/client/formatNotionImageUrl.spec.ts rename to packages/notion-to-utils/src/utils/formatNotionImageUrl.spec.ts diff --git a/packages/notion-to-utils/src/client/formatNotionImageUrl.ts b/packages/notion-to-utils/src/utils/formatNotionImageUrl.ts similarity index 100% rename from packages/notion-to-utils/src/client/formatNotionImageUrl.ts rename to packages/notion-to-utils/src/utils/formatNotionImageUrl.ts diff --git a/packages/notion-to-utils/src/utils/index.ts b/packages/notion-to-utils/src/utils/index.ts index 3d85abf..5933055 100644 --- a/packages/notion-to-utils/src/utils/index.ts +++ b/packages/notion-to-utils/src/utils/index.ts @@ -1,2 +1 @@ -export * from './makePreviewImage'; -export * from './getImageMetadata'; +export * from './formatNotionImageUrl'; diff --git a/packages/notion-to-utils/src/utils/makePreviewImage.spec.ts b/packages/notion-to-utils/src/utils/makePreviewImage.spec.ts deleted file mode 100644 index c8de196..0000000 --- a/packages/notion-to-utils/src/utils/makePreviewImage.spec.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { describe, it, expect, vi, beforeAll, afterEach } from 'vitest'; -import { makePreviewImage } from './makePreviewImage'; -import lqip from 'lqip-modern'; - -beforeAll(() => { - // lqip-modern 모듈 모킹 - vi.mock('lqip-modern'); - // fetch 모킹 - global.fetch = vi.fn(); -}); - -afterEach(() => { - vi.clearAllMocks(); -}); - -describe('makePreviewImage', () => { - it('이미지 URL이 주어졌을 때 PreviewImage 객체를 반환한다', async () => { - // 테스트 데이터 준비 - const mockImageUrl = 'https://example.com/image.jpg'; - const mockBuffer = Buffer.from('test'); - const mockLqipResult = { - metadata: { - dataURIBase64: 'data:image/jpeg;base64,test', - originalHeight: 100, - originalWidth: 200, - }, - }; - - // fetch 모의 구현 - (global.fetch as unknown as ReturnType).mockResolvedValue({ - arrayBuffer: () => Promise.resolve(mockBuffer), - }); - - // lqip 모의 구현 - (lqip as unknown as ReturnType).mockResolvedValue( - mockLqipResult - ); - - // 함수 실행 - const result = await makePreviewImage(mockImageUrl); - - // 결과 검증 - expect(result).toEqual({ - dataURIBase64: mockLqipResult.metadata.dataURIBase64, - originalHeight: mockLqipResult.metadata.originalHeight, - originalWidth: mockLqipResult.metadata.originalWidth, - }); - - // fetch가 올바른 URL로 호출되었는지 확인 - expect(fetch).toHaveBeenCalledWith(mockImageUrl); - // lqip가 올바른 버퍼로 호출되었는지 확인 - expect(lqip).toHaveBeenCalledWith(mockBuffer); - }); - - it('에러가 발생했을 때 null를 반환한다', async () => { - const mockImageUrl = 'https://example.com/invalid-image.jpg'; - - // fetch 에러 시뮬레이션 - (global.fetch as unknown as ReturnType).mockRejectedValue( - new Error('Failed to fetch') - ); - - const result = await makePreviewImage(mockImageUrl); - - expect(result).toBeNull(); - }); -}); diff --git a/packages/notion-to-utils/src/utils/makePreviewImage.ts b/packages/notion-to-utils/src/utils/makePreviewImage.ts deleted file mode 100644 index 2ad8b84..0000000 --- a/packages/notion-to-utils/src/utils/makePreviewImage.ts +++ /dev/null @@ -1,41 +0,0 @@ -export interface PreviewImage { - originalWidth: number; - originalHeight: number; - dataURIBase64: string; -} - -/** - * Generates a low-quality preview image from a given URL - * - * @param url - The URL of the image to generate a preview for - * @returns A Promise that resolves to a PreviewImage object containing the base64 data URI - * and original dimensions, or undefined if the operation fails - * - * @example - * const preview = await makePreviewImage('https://example.com/image.jpg'); - * if (preview) { - * console.log(preview.dataURIBase64); - * } - */ -export const makePreviewImage = async (url: string) => { - try { - const response = await fetch(url); - const buffer = Buffer.from(await response.arrayBuffer()); - - // 동적 import 사용 - const lqip = (await import('lqip-modern')).default; - - const { - metadata: { dataURIBase64, originalHeight, originalWidth }, - } = await lqip(buffer); - - const result: PreviewImage = { - dataURIBase64, - originalHeight, - originalWidth, - }; - return result; - } catch (error) { - return null; - } -}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3e6d070..1dfd3ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -198,9 +198,6 @@ importers: '@notionhq/client': specifier: ^2.2.15 version: 2.2.16 - lqip-modern: - specifier: ^2.2.1 - version: 2.2.1 open-graph-scraper: specifier: ^6.9.0 version: 6.9.0 @@ -214,9 +211,6 @@ importers: '@repo/typescript-config': specifier: workspace:* version: link:../#typescript-config - '@types/lqip-modern': - specifier: ^1.1.7 - version: 1.1.7 '@types/probe-image-size': specifier: ^7.2.5 version: 7.2.5 @@ -702,14 +696,6 @@ packages: engines: {node: '>=18'} dev: true - /@emnapi/runtime@1.3.1: - resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} - requiresBuild: true - dependencies: - tslib: 2.8.1 - dev: false - optional: true - /@emotion/hash@0.9.2: resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} @@ -1290,186 +1276,6 @@ packages: engines: {node: '>=18.18'} dev: true - /@img/sharp-darwin-arm64@0.33.5: - resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.4 - dev: false - optional: true - - /@img/sharp-darwin-x64@0.33.5: - resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.4 - dev: false - optional: true - - /@img/sharp-libvips-darwin-arm64@1.0.4: - resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-darwin-x64@1.0.4: - resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-arm64@1.0.4: - resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-arm@1.0.5: - resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-s390x@1.0.4: - resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-x64@1.0.4: - resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linuxmusl-arm64@1.0.4: - resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linuxmusl-x64@1.0.4: - resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-linux-arm64@0.33.5: - resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.4 - dev: false - optional: true - - /@img/sharp-linux-arm@0.33.5: - resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.5 - dev: false - optional: true - - /@img/sharp-linux-s390x@0.33.5: - resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.4 - dev: false - optional: true - - /@img/sharp-linux-x64@0.33.5: - resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.4 - dev: false - optional: true - - /@img/sharp-linuxmusl-arm64@0.33.5: - resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - dev: false - optional: true - - /@img/sharp-linuxmusl-x64@0.33.5: - resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - dev: false - optional: true - - /@img/sharp-wasm32@0.33.5: - resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - requiresBuild: true - dependencies: - '@emnapi/runtime': 1.3.1 - dev: false - optional: true - - /@img/sharp-win32-ia32@0.33.5: - resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-win32-x64@0.33.5: - resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -2254,13 +2060,6 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/lqip-modern@1.1.7: - resolution: {integrity: sha512-TwC2Z1aDkT7TQNTkYbg1KqgqIAri1U3TTUVgc65HAG6EpuJTHLOi6VrMAVq2f+jDhhEqFXpnvRc3ZAljSI8ibw==} - dependencies: - '@types/node': 22.13.5 - '@types/sharp': 0.31.1 - dev: true - /@types/mdx@2.0.13: resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} dev: true @@ -2329,12 +2128,6 @@ packages: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true - /@types/sharp@0.31.1: - resolution: {integrity: sha512-5nWwamN9ZFHXaYEincMSuza8nNfOof8nmO+mcI+Agx1uMUk4/pQnNIcix+9rLPXzKrm1pS34+6WRDbDV0Jn7ag==} - dependencies: - '@types/node': 22.13.5 - dev: true - /@types/uuid@9.0.8: resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} dev: true @@ -3535,24 +3328,11 @@ packages: engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 + dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - /color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - dev: false - - /color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - dev: false + dev: true /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} @@ -3767,11 +3547,6 @@ packages: engines: {node: '>=12.20'} dev: true - /detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - dev: false - /detect-newline@4.0.1: resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5144,10 +4919,6 @@ packages: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true - /is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: false - /is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} @@ -5648,14 +5419,6 @@ packages: resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} dev: true - /lqip-modern@2.2.1: - resolution: {integrity: sha512-5XlvR9zczhDiNstMztH5kF3xs2cVbvPu7xmGWpgd4Qwb7UastgplSihZt2PHX9CBkZ241En9miZEDXyy0TgdiQ==} - engines: {node: '>=18'} - dependencies: - p-map: 7.0.3 - sharp: 0.33.5 - dev: false - /lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -6023,11 +5786,6 @@ packages: engines: {node: '>=6'} dev: true - /p-map@7.0.3: - resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} - engines: {node: '>=18'} - dev: false - /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -6590,6 +6348,7 @@ packages: resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} engines: {node: '>=10'} hasBin: true + dev: true /set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} @@ -6622,36 +6381,6 @@ packages: es-object-atoms: 1.1.1 dev: true - /sharp@0.33.5: - resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - requiresBuild: true - dependencies: - color: 4.2.3 - detect-libc: 2.0.3 - semver: 7.7.1 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.5 - '@img/sharp-darwin-x64': 0.33.5 - '@img/sharp-libvips-darwin-arm64': 1.0.4 - '@img/sharp-libvips-darwin-x64': 1.0.4 - '@img/sharp-libvips-linux-arm': 1.0.5 - '@img/sharp-libvips-linux-arm64': 1.0.4 - '@img/sharp-libvips-linux-s390x': 1.0.4 - '@img/sharp-libvips-linux-x64': 1.0.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - '@img/sharp-linux-arm': 0.33.5 - '@img/sharp-linux-arm64': 0.33.5 - '@img/sharp-linux-s390x': 0.33.5 - '@img/sharp-linux-x64': 0.33.5 - '@img/sharp-linuxmusl-arm64': 0.33.5 - '@img/sharp-linuxmusl-x64': 0.33.5 - '@img/sharp-wasm32': 0.33.5 - '@img/sharp-win32-ia32': 0.33.5 - '@img/sharp-win32-x64': 0.33.5 - dev: false - /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -6713,12 +6442,6 @@ packages: engines: {node: '>=14'} dev: true - /simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - dependencies: - is-arrayish: 0.3.2 - dev: false - /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -7166,6 +6889,7 @@ packages: /tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + dev: true /tsup@8.3.6(typescript@5.6.3): resolution: {integrity: sha512-XkVtlDV/58S9Ye0JxUUTcrQk4S+EqlOHKzg6Roa62rdjL1nGWNUstG0xgI4vanHdfIpjP448J8vlN0oK6XOJ5g==}