From cdcff23a6e07b7ac1025f6e2a61590b4c19d79f9 Mon Sep 17 00:00:00 2001 From: Chris Campbell Date: Fri, 16 Jan 2026 16:56:15 -0800 Subject: [PATCH] fix: replace glob dependency with tinyglobby --- packages/docs-builder/package.json | 4 +- packages/docs-builder/src/build.ts | 12 ++-- pnpm-lock.yaml | 105 +++++++++++++++++------------ 3 files changed, 70 insertions(+), 51 deletions(-) diff --git a/packages/docs-builder/package.json b/packages/docs-builder/package.json index 074df11..53f55ff 100644 --- a/packages/docs-builder/package.json +++ b/packages/docs-builder/package.json @@ -38,7 +38,6 @@ "chokidar": "^3.5.3", "find-up": "^6.3.0", "gettext-parser": "^5.0.0", - "glob": "^8.0.3", "gray-matter": "^4.0.3", "lunr": "^2.3.9", "lunr-languages": "^1.9.0", @@ -48,7 +47,8 @@ "postcss-rtlcss": "^5.7.1", "puppeteer": "^18.2.1", "rev-hash": "^3.0.0", - "semver-compare": "^1.0.0" + "semver-compare": "^1.0.0", + "tinyglobby": "^0.2.15" }, "devDependencies": { "@types/lunr": "^2.3.4", diff --git a/packages/docs-builder/src/build.ts b/packages/docs-builder/src/build.ts index 38602b9..535ef69 100644 --- a/packages/docs-builder/src/build.ts +++ b/packages/docs-builder/src/build.ts @@ -4,10 +4,10 @@ import { dirname, join as joinPath, resolve as resolvePath } from 'node:path' import { fileURLToPath } from 'node:url' import { findUp, pathExists } from 'find-up' -import glob from 'glob' import postcss from 'postcss' import postcssRtlCss from 'postcss-rtlcss' import semverCompare from 'semver-compare' +import { globSync } from 'tinyglobby' import { Assets } from './assets' import type { BuildMode, LangConfig } from './config' @@ -195,9 +195,8 @@ async function buildLang( // Copy all other assets from the "shared src" directory. Note that glob paths // have forward slashes only, so convert backslashes here. const sharedSrcPath = context.config.sourceDir.replaceAll('\\', '/') - const sharedSrcFiles = glob.sync(`${sharedSrcPath}/*`, { nodir: true }) - for (const f of sharedSrcFiles) { - const relPath = f.replace(`${sharedSrcPath}/`, '') + const sharedSrcFiles = globSync(`${sharedSrcPath}/*`, { cwd: sharedSrcPath, onlyFiles: true }) + for (const relPath of sharedSrcFiles) { if (!relPath.endsWith('.html') && !relPath.endsWith('base.css')) { copyToBase(context.config.sourceDir, relPath) } @@ -215,9 +214,8 @@ async function buildLang( '/' ) const langPath = `${localizationDir}/${lang}` - const files = glob.sync(`${langPath}/images/**/*`, { nodir: true }) - for (const f of files) { - const relPath = f.replace(`${langPath}/`, '') + const files = globSync(`${langPath}/images/**/*`, { cwd: langPath, onlyFiles: true }) + for (const relPath of files) { assets.copyWithHash(resolvePath(langPath), relPath, context.outDir) } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38942cc..1c2ab98 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,9 +62,6 @@ importers: gettext-parser: specifier: ^5.0.0 version: 5.1.2 - glob: - specifier: ^8.0.3 - version: 8.0.3 gray-matter: specifier: ^4.0.3 version: 4.0.3 @@ -95,6 +92,9 @@ importers: semver-compare: specifier: ^1.0.0 version: 1.0.0 + tinyglobby: + specifier: ^0.2.15 + version: 0.2.15 devDependencies: '@types/lunr': specifier: ^2.3.4 @@ -719,6 +719,15 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} @@ -917,6 +926,15 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -1017,10 +1035,6 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - glob@8.0.3: - resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} - engines: {node: '>=12'} - globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -1080,8 +1094,8 @@ packages: resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} engines: {node: '>= 0.6'} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} http-parser-js@0.5.8: @@ -1366,9 +1380,9 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime-types@3.0.1: - resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} - engines: {node: '>= 0.6'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} @@ -1381,10 +1395,6 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@5.1.0: - resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} - engines: {node: '>=10'} - minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -1598,6 +1608,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + pidtree@0.3.1: resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} engines: {node: '>=0.10'} @@ -1763,8 +1777,8 @@ packages: engines: {node: '>=10'} hasBin: true - send@1.2.0: - resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} engines: {node: '>= 18'} serve-index@1.9.1: @@ -1846,8 +1860,8 @@ packages: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} std-env@3.7.0: @@ -1948,6 +1962,10 @@ packages: tinybench@2.6.0: resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + tinypool@0.8.2: resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} engines: {node: '>=14.0.0'} @@ -2213,7 +2231,7 @@ snapshots: object-assign: 4.1.1 open: 8.4.0 proxy-middleware: 0.15.0 - send: 1.2.0 + send: 1.2.1 serve-index: 1.9.1 transitivePeerDependencies: - supports-color @@ -2768,6 +2786,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.3: + dependencies: + ms: 2.1.3 + deep-eql@4.1.3: dependencies: type-detect: 4.0.8 @@ -3049,6 +3071,10 @@ snapshots: dependencies: pend: 1.2.0 + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + file-entry-cache@6.0.1: dependencies: flat-cache: 3.0.4 @@ -3166,14 +3192,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@8.0.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.0 - once: 1.4.0 - globals@13.24.0: dependencies: type-fest: 0.20.2 @@ -3236,12 +3254,12 @@ snapshots: setprototypeof: 1.1.0 statuses: 1.5.0 - http-errors@2.0.0: + http-errors@2.0.1: dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 - statuses: 2.0.1 + statuses: 2.0.2 toidentifier: 1.0.1 http-parser-js@0.5.8: {} @@ -3476,7 +3494,7 @@ snapshots: dependencies: mime-db: 1.52.0 - mime-types@3.0.1: + mime-types@3.0.2: dependencies: mime-db: 1.54.0 @@ -3488,10 +3506,6 @@ snapshots: dependencies: brace-expansion: 1.1.11 - minimatch@5.1.0: - dependencies: - brace-expansion: 2.0.1 - minimatch@9.0.3: dependencies: brace-expansion: 2.0.1 @@ -3694,6 +3708,8 @@ snapshots: picomatch@2.3.1: {} + picomatch@4.0.3: {} + pidtree@0.3.1: {} pify@3.0.0: {} @@ -3872,19 +3888,19 @@ snapshots: dependencies: lru-cache: 6.0.0 - send@1.2.0: + send@1.2.1: dependencies: - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 fresh: 2.0.0 - http-errors: 2.0.0 - mime-types: 3.0.1 + http-errors: 2.0.1 + mime-types: 3.0.2 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color @@ -3962,7 +3978,7 @@ snapshots: statuses@1.5.0: {} - statuses@2.0.1: {} + statuses@2.0.2: {} std-env@3.7.0: {} @@ -4076,6 +4092,11 @@ snapshots: tinybench@2.6.0: {} + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + tinypool@0.8.2: {} tinyspy@2.2.1: {}