diff --git a/packages/cli/vite.config.ts b/packages/cli/vite.config.ts index d02aab21..051513a7 100644 --- a/packages/cli/vite.config.ts +++ b/packages/cli/vite.config.ts @@ -17,6 +17,7 @@ export default defineConfig({ external: [ ...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.peerDependencies || {}), + 'child_process', 'fs', 'fs/promises', 'path', @@ -27,4 +28,3 @@ export default defineConfig({ }, plugins: [dts({ tsconfigPath: 'tsconfig.json', outDir: 'build/src' })] }) - diff --git a/packages/nreact/src/block.tsx b/packages/nreact/src/block.tsx index 54bf8043..83750a67 100644 --- a/packages/nreact/src/block.tsx +++ b/packages/nreact/src/block.tsx @@ -540,7 +540,14 @@ export const Block: React.FC = props => {
{block.format?.bookmark_icon && (
- + { + const target = e.currentTarget as HTMLImageElement + target.style.display = 'none' + }} + />
)} @@ -558,6 +565,10 @@ export const Block: React.FC = props => { style={{ objectFit: 'cover' }} + onError={e => { + const parent = (e.currentTarget as HTMLImageElement).closest('.notion-bookmark-image') + if (parent instanceof HTMLElement) parent.style.display = 'none' + }} />
)} diff --git a/packages/nreact/src/components/lazy-image.tsx b/packages/nreact/src/components/lazy-image.tsx index 9f191a29..9fb27f78 100644 --- a/packages/nreact/src/components/lazy-image.tsx +++ b/packages/nreact/src/components/lazy-image.tsx @@ -15,7 +15,8 @@ export const LazyImage: React.FC<{ height?: number zoomable?: boolean priority?: boolean -}> = ({ src, alt, className, style, zoomable = false, priority = false, height, ...rest }) => { + onError?: React.ReactEventHandler +}> = ({ src, alt, className, style, zoomable = false, priority = false, height, onError, ...rest }) => { const { recordMap, zoom, previewImages, forceCustomImages, components } = useNotionContext() const zoomRef = React.useRef(zoom ? zoom.clone() : null) @@ -95,6 +96,7 @@ export const LazyImage: React.FC<{ ref={attachZoomRef} loading='lazy' decoding='async' + onError={onError} {...rest} /> ) diff --git a/packages/nutils/package.json b/packages/nutils/package.json index da5e71c2..94ddcdb2 100644 --- a/packages/nutils/package.json +++ b/packages/nutils/package.json @@ -31,7 +31,9 @@ "pu": "pnpm publish" }, "devDependencies": { - "vite-plugin-dts": "^3.9.1" + + "vite-plugin-dts": "^4.5.4" + }, "dependencies": { "is-url-superb": "^6.1.0", diff --git a/packages/nutils/src/map-image-url.test.ts b/packages/nutils/src/map-image-url.test.ts new file mode 100644 index 00000000..bacabd7b --- /dev/null +++ b/packages/nutils/src/map-image-url.test.ts @@ -0,0 +1,63 @@ +import { test, expect } from 'vitest' +import { defaultMapImageUrl } from './map-image-url' +import type { Block } from '@texonom/ntypes' + +const mockBlock: Block = { + id: 'test-block-id', + parent_table: 'block', + parent_id: 'test-parent-id', + type: 'bookmark', + version: 1, + alive: true, + created_time: 0, + last_edited_time: 0, + created_by_table: 'user', + created_by_id: '', + last_edited_by_table: 'user', + last_edited_by_id: '' +} as Block + +test('returns null for empty url', () => { + expect(defaultMapImageUrl('', mockBlock)).toBe(null) +}) + +test('returns data URLs as-is', () => { + expect(defaultMapImageUrl('data:image/png;base64,abc', mockBlock)).toBe('data:image/png;base64,abc') +}) + +test('returns unsplash URLs as-is', () => { + expect(defaultMapImageUrl('https://images.unsplash.com/photo-123', mockBlock)).toBe( + 'https://images.unsplash.com/photo-123' + ) +}) + +test('proxies notion-static URLs through notion.so', () => { + const url = 'https://www.notion.so/image/test.jpg' + const result = defaultMapImageUrl(url, mockBlock) + expect(result).toContain('notion.so') +}) + +test('returns external HTTPS URLs as-is (no proxy)', () => { + const externalUrls = [ + 'https://opengraph.githubassets.com/abc/repo', + 'https://cdn.example.com/image.jpg', + 'https://roadmap.sh/og-image.png', + 'https://velog.velcdn.com/images/test.jpg', + 'https://developer.mozilla.org/favicon.ico' + ] + for (const url of externalUrls) { + const result = defaultMapImageUrl(url, mockBlock) + expect(result).toBe(url) + } +}) + +test('still proxies notion.so relative paths', () => { + const result = defaultMapImageUrl('/images/page-cover/test.jpg', mockBlock) + expect(result).toContain('notion.so') +}) + +test('still proxies S3 notion-static URLs without signatures', () => { + const url = 'https://s3.us-west-2.amazonaws.com/secure.notion-static.com/image.jpg' + const result = defaultMapImageUrl(url, mockBlock) + expect(result).toContain('notion.so') +}) diff --git a/packages/nutils/src/map-image-url.ts b/packages/nutils/src/map-image-url.ts index c73ceaab..77b3fdc9 100644 --- a/packages/nutils/src/map-image-url.ts +++ b/packages/nutils/src/map-image-url.ts @@ -19,6 +19,9 @@ export const defaultMapImageUrl = (url: string, block: Block): string | null => ) // if the URL is already signed, then use it as-is return url + + // external HTTPS URLs that aren't from notion.so or amazonaws should bypass the proxy + if (u.protocol === 'https:' && !u.hostname.endsWith('notion.so') && !u.hostname.endsWith('amazonaws.com')) return url } catch { // ignore invalid urls } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c3abf905..1dc84ed0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -229,8 +229,8 @@ importers: version: 9.1.0 devDependencies: vite-plugin-dts: - specifier: ^3.9.1 - version: 3.9.1(@types/node@22.19.9)(rollup@4.52.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.9)(tsx@4.21.0)) + specifier: ^4.5.4 + version: 4.5.4(@types/node@22.19.9)(rollup@4.52.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.9)(tsx@4.21.0)) packages: @@ -585,29 +585,16 @@ packages: katex: '>=0.9' react: '>=16' - '@microsoft/api-extractor-model@7.28.13': - resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} - '@microsoft/api-extractor-model@7.32.2': resolution: {integrity: sha512-Ussc25rAalc+4JJs9HNQE7TuO9y6jpYQX9nWD1DhqUzYPBr3Lr7O9intf+ZY8kD5HnIqeIRJX7ccCT0QyBy2Ww==} - '@microsoft/api-extractor@7.43.0': - resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} - hasBin: true - '@microsoft/api-extractor@7.56.1': resolution: {integrity: sha512-wX9ugJFqhsEWwt+UFTAkvXcBOzSQ1FeKe0ZdwEDKtjsf20Ec2frmCDXPjQwPtSNrpXUy1yQgyaF6YJVuC8gMtg==} hasBin: true - '@microsoft/tsdoc-config@0.16.2': - resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} - '@microsoft/tsdoc-config@0.18.0': resolution: {integrity: sha512-8N/vClYyfOH+l4fLkkr9+myAoR6M7akc8ntBJ4DJdWH2b09uVfr71+LTMpNyG19fNqWDg8KEDZhx5wxuqHyGjw==} - '@microsoft/tsdoc@0.14.2': - resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} - '@microsoft/tsdoc@0.16.0': resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} @@ -844,14 +831,6 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@rushstack/node-core-library@4.0.2': - resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - '@rushstack/node-core-library@5.19.1': resolution: {integrity: sha512-ESpb2Tajlatgbmzzukg6zyAhH+sICqJR2CNXNhXcEbz6UGCQfrKCtkxOpJTftWc8RGouroHG0Nud1SJAszvpmA==} peerDependencies: @@ -868,20 +847,9 @@ packages: '@types/node': optional: true - '@rushstack/rig-package@0.5.2': - resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} - '@rushstack/rig-package@0.6.0': resolution: {integrity: sha512-ZQmfzsLE2+Y91GF15c65L/slMRVhF6Hycq04D4TwtdGaUAbIXXg9c5pKA5KFU7M4QMaihoobp9JJYpYcaY3zOw==} - '@rushstack/terminal@0.10.0': - resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - '@rushstack/terminal@0.21.0': resolution: {integrity: sha512-cLaI4HwCNYmknM5ns4G+drqdEB6q3dCPV423+d3TZeBusYSSm09+nR7CnhzJMjJqeRcdMAaLnrA4M/3xDz4R3w==} peerDependencies: @@ -890,9 +858,6 @@ packages: '@types/node': optional: true - '@rushstack/ts-command-line@4.19.1': - resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} - '@rushstack/ts-command-line@5.2.0': resolution: {integrity: sha512-lYxCX0nDdkDtCkVpvF0m25ymf66SaMWuppbD6b7MdkIzvGXKBXNIVZlwBH/C0YfkanrupnICWf2n4z3AKSfaHw==} @@ -1110,21 +1075,12 @@ packages: '@vitest/utils@4.0.18': resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==} - '@volar/language-core@1.11.1': - resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} - '@volar/language-core@2.4.28': resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} - '@volar/source-map@1.11.1': - resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} - '@volar/source-map@2.4.28': resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} - '@volar/typescript@1.11.1': - resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} - '@volar/typescript@2.4.28': resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} @@ -1137,14 +1093,6 @@ packages: '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} - '@vue/language-core@1.8.27': - resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@vue/language-core@2.2.0': resolution: {integrity: sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==} peerDependencies: @@ -1436,19 +1384,12 @@ packages: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} - commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} compare-versions@6.1.1: resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} - computeds@0.0.1: - resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -2032,10 +1973,6 @@ packages: resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} engines: {node: '>=14.14'} - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -2530,9 +2467,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} @@ -2604,14 +2538,6 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. - - lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. - lodash.ismatch@4.4.0: resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} @@ -2710,9 +2636,6 @@ packages: resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} engines: {node: 20 || >=22} - minimatch@3.0.8: - resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2741,9 +2664,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - muggle-string@0.3.1: - resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} - muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} @@ -3027,7 +2947,6 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} deprecated: |- You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. - (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) quansync@0.2.11: @@ -3170,9 +3089,6 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.19.0: - resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} - resolve@1.22.4: resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} hasBin: true @@ -3668,11 +3584,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} - engines: {node: '>=14.17'} - hasBin: true - typescript@5.8.2: resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} @@ -3701,10 +3612,6 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -3724,20 +3631,6 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validator@13.15.26: - resolution: {integrity: sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==} - engines: {node: '>= 0.10'} - - vite-plugin-dts@3.9.1: - resolution: {integrity: sha512-rVp2KM9Ue22NGWB8dNtWEr+KekN3rIgz1tWD050QnRGlriUCmaDwa7qA5zDEjbXg5lAXhYMSBJtx3q3hQIJZSg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - typescript: '*' - vite: '*' - peerDependenciesMeta: - vite: - optional: true - vite-plugin-dts@4.5.4: resolution: {integrity: sha512-d4sOM8M/8z7vRXHHq/ebbblfaxENjogAAekcfcDCCwAyvGqnPrc7f4NZbvItS+g4WTgerW0xDwSz5qz11JT3vg==} peerDependencies: @@ -3824,15 +3717,6 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - vue-template-compiler@2.7.16: - resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} - - vue-tsc@1.8.27: - resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} - hasBin: true - peerDependencies: - typescript: '*' - warning@4.0.3: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} @@ -3910,11 +3794,6 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - z-schema@5.0.5: - resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} - engines: {node: '>=8.0.0'} - hasBin: true - zod-validation-error@4.0.2: resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} engines: {node: '>=18.0.0'} @@ -4229,14 +4108,6 @@ snapshots: katex: 0.16.28 react: 19.2.4 - '@microsoft/api-extractor-model@7.28.13(@types/node@22.19.9)': - dependencies: - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@22.19.9) - transitivePeerDependencies: - - '@types/node' - '@microsoft/api-extractor-model@7.32.2(@types/node@22.19.9)': dependencies: '@microsoft/tsdoc': 0.16.0 @@ -4245,24 +4116,6 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.43.0(@types/node@22.19.9)': - dependencies: - '@microsoft/api-extractor-model': 7.28.13(@types/node@22.19.9) - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@22.19.9) - '@rushstack/rig-package': 0.5.2 - '@rushstack/terminal': 0.10.0(@types/node@22.19.9) - '@rushstack/ts-command-line': 4.19.1(@types/node@22.19.9) - lodash: 4.17.21 - minimatch: 3.0.8 - resolve: 1.22.4 - semver: 7.5.4 - source-map: 0.6.1 - typescript: 5.4.2 - transitivePeerDependencies: - - '@types/node' - '@microsoft/api-extractor@7.56.1(@types/node@22.19.9)': dependencies: '@microsoft/api-extractor-model': 7.32.2(@types/node@22.19.9) @@ -4282,13 +4135,6 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@microsoft/tsdoc-config@0.16.2': - dependencies: - '@microsoft/tsdoc': 0.14.2 - ajv: 6.12.6 - jju: 1.4.0 - resolve: 1.19.0 - '@microsoft/tsdoc-config@0.18.0': dependencies: '@microsoft/tsdoc': 0.16.0 @@ -4296,8 +4142,6 @@ snapshots: jju: 1.4.0 resolve: 1.22.4 - '@microsoft/tsdoc@0.14.2': {} - '@microsoft/tsdoc@0.16.0': {} '@napi-rs/canvas-android-arm64@0.1.80': @@ -4445,17 +4289,6 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@rushstack/node-core-library@4.0.2(@types/node@22.19.9)': - dependencies: - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.4 - semver: 7.5.4 - z-schema: 5.0.5 - optionalDependencies: - '@types/node': 22.19.9 - '@rushstack/node-core-library@5.19.1(@types/node@22.19.9)': dependencies: ajv: 8.13.0 @@ -4473,23 +4306,11 @@ snapshots: optionalDependencies: '@types/node': 22.19.9 - '@rushstack/rig-package@0.5.2': - dependencies: - resolve: 1.22.4 - strip-json-comments: 3.1.1 - '@rushstack/rig-package@0.6.0': dependencies: resolve: 1.22.4 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.10.0(@types/node@22.19.9)': - dependencies: - '@rushstack/node-core-library': 4.0.2(@types/node@22.19.9) - supports-color: 8.1.1 - optionalDependencies: - '@types/node': 22.19.9 - '@rushstack/terminal@0.21.0(@types/node@22.19.9)': dependencies: '@rushstack/node-core-library': 5.19.1(@types/node@22.19.9) @@ -4498,15 +4319,6 @@ snapshots: optionalDependencies: '@types/node': 22.19.9 - '@rushstack/ts-command-line@4.19.1(@types/node@22.19.9)': - dependencies: - '@rushstack/terminal': 0.10.0(@types/node@22.19.9) - '@types/argparse': 1.0.38 - argparse: 1.0.10 - string-argv: 0.3.2 - transitivePeerDependencies: - - '@types/node' - '@rushstack/ts-command-line@5.2.0(@types/node@22.19.9)': dependencies: '@rushstack/terminal': 0.21.0(@types/node@22.19.9) @@ -4803,25 +4615,12 @@ snapshots: '@vitest/pretty-format': 4.0.18 tinyrainbow: 3.0.3 - '@volar/language-core@1.11.1': - dependencies: - '@volar/source-map': 1.11.1 - '@volar/language-core@2.4.28': dependencies: '@volar/source-map': 2.4.28 - '@volar/source-map@1.11.1': - dependencies: - muggle-string: 0.3.1 - '@volar/source-map@2.4.28': {} - '@volar/typescript@1.11.1': - dependencies: - '@volar/language-core': 1.11.1 - path-browserify: 1.0.1 - '@volar/typescript@2.4.28': dependencies: '@volar/language-core': 2.4.28 @@ -4846,20 +4645,6 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 - '@vue/language-core@1.8.27(typescript@5.9.3)': - dependencies: - '@volar/language-core': 1.11.1 - '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.5.27 - '@vue/shared': 3.5.27 - computeds: 0.0.1 - minimatch: 9.0.5 - muggle-string: 0.3.1 - path-browserify: 1.0.1 - vue-template-compiler: 2.7.16 - optionalDependencies: - typescript: 5.9.3 - '@vue/language-core@2.2.0(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.28 @@ -5191,9 +4976,6 @@ snapshots: commander@8.3.0: {} - commander@9.5.0: - optional: true - compare-func@2.0.0: dependencies: array-ify: 1.0.0 @@ -5201,8 +4983,6 @@ snapshots: compare-versions@6.1.1: {} - computeds@0.0.1: {} - concat-map@0.0.1: {} concat-stream@2.0.0: @@ -6084,12 +5864,6 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 - fs-extra@7.0.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - fsevents@2.3.3: optional: true @@ -6571,10 +6345,6 @@ snapshots: json5@2.2.3: {} - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - jsonfile@6.2.0: dependencies: universalify: 2.0.1 @@ -6650,10 +6420,6 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash.get@4.4.2: {} - - lodash.isequal@4.5.0: {} - lodash.ismatch@4.4.0: {} lodash.merge@4.6.2: {} @@ -6744,10 +6510,6 @@ snapshots: dependencies: '@isaacs/brace-expansion': 5.0.1 - minimatch@3.0.8: - dependencies: - brace-expansion: 1.1.11 - minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -6777,8 +6539,6 @@ snapshots: ms@2.1.3: {} - muggle-string@0.3.1: {} - muggle-string@0.4.1: {} mz@2.7.0: @@ -7213,11 +6973,6 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve@1.19.0: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - resolve@1.22.4: dependencies: is-core-module: 2.16.1 @@ -7809,8 +7564,6 @@ snapshots: transitivePeerDependencies: - supports-color - typescript@5.4.2: {} - typescript@5.8.2: {} typescript@5.9.3: {} @@ -7836,8 +7589,6 @@ snapshots: undici-types@6.21.0: {} - universalify@0.1.2: {} - universalify@2.0.1: {} update-browserslist-db@1.1.3(browserslist@4.26.3): @@ -7857,25 +7608,6 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validator@13.15.26: {} - - vite-plugin-dts@3.9.1(@types/node@22.19.9)(rollup@4.52.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.9)(tsx@4.21.0)): - dependencies: - '@microsoft/api-extractor': 7.43.0(@types/node@22.19.9) - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) - '@vue/language-core': 1.8.27(typescript@5.9.3) - debug: 4.4.3 - kolorist: 1.8.0 - magic-string: 0.30.21 - typescript: 5.9.3 - vue-tsc: 1.8.27(typescript@5.9.3) - optionalDependencies: - vite: 7.3.1(@types/node@22.19.9)(tsx@4.21.0) - transitivePeerDependencies: - - '@types/node' - - rollup - - supports-color - vite-plugin-dts@4.5.4(@types/node@22.19.9)(rollup@4.52.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.9)(tsx@4.21.0)): dependencies: '@microsoft/api-extractor': 7.56.1(@types/node@22.19.9) @@ -7947,18 +7679,6 @@ snapshots: vscode-uri@3.1.0: {} - vue-template-compiler@2.7.16: - dependencies: - de-indent: 1.0.2 - he: 1.2.0 - - vue-tsc@1.8.27(typescript@5.9.3): - dependencies: - '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.27(typescript@5.9.3) - semver: 7.7.3 - typescript: 5.9.3 - warning@4.0.3: dependencies: loose-envify: 1.4.0 @@ -8074,14 +7794,6 @@ snapshots: yocto-queue@0.1.0: {} - z-schema@5.0.5: - dependencies: - lodash.get: 4.4.2 - lodash.isequal: 4.5.0 - validator: 13.15.26 - optionalDependencies: - commander: 9.5.0 - zod-validation-error@4.0.2(zod@4.1.12): dependencies: zod: 4.1.12