diff --git a/package-lock.json b/package-lock.json index 1cc91f0746..dbeab8d1f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9100,28 +9100,12 @@ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "license": "MIT" }, - "node_modules/@types/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", - "dev": true, - "dependencies": { - "@types/minimatch": "^5.1.2", - "@types/node": "*" - } - }, "node_modules/@types/glob-to-regexp": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/@types/glob-to-regexp/-/glob-to-regexp-0.4.4.tgz", "integrity": "sha512-nDKoaKJYbnn1MZxUY0cA1bPmmgZbg0cTq7Rh13d0KWYNOiKbqoR+2d89SnRPszGh7ROzSwZ/GOjZ4jPbmmZ6Eg==", "dev": true }, - "node_modules/@types/glob/node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "license": "MIT" @@ -25756,6 +25740,21 @@ "dev": true, "license": "MIT" }, + "node_modules/tinyglobby": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.11.tgz", + "integrity": "sha512-32TmKeeKUahv0Go8WmQgiEp9Y21NuxjwjqiRC1nrUB51YacfSwuB44xgXD+HdIppmMRgjQNPdrHyA6vIybYZ+g==", + "dependencies": { + "fdir": "^6.4.3", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, "node_modules/tinypool": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", @@ -30129,7 +30128,6 @@ "fast-glob": "^3.3.2", "filter-obj": "^5.0.0", "find-up": "^6.0.0", - "glob": "^8.0.3", "is-builtin-module": "^3.1.0", "is-path-inside": "^4.0.0", "junk": "^4.0.0", @@ -30143,6 +30141,7 @@ "require-package-name": "^2.0.1", "resolve": "^2.0.0-next.1", "semver": "^7.3.8", + "tinyglobby": "^0.2.11", "tmp-promise": "^3.0.2", "toml": "^3.0.0", "unixify": "^1.0.0", @@ -30155,7 +30154,6 @@ }, "devDependencies": { "@types/archiver": "6.0.3", - "@types/glob": "8.1.0", "@types/is-ci": "3.0.4", "@types/node": "20.12.11", "@types/normalize-path": "3.0.2", @@ -30619,35 +30617,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/zip-it-and-ship-it/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/zip-it-and-ship-it/node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "packages/zip-it-and-ship-it/node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", diff --git a/packages/zip-it-and-ship-it/package.json b/packages/zip-it-and-ship-it/package.json index ee90e0cd1d..7e4e369ff8 100644 --- a/packages/zip-it-and-ship-it/package.json +++ b/packages/zip-it-and-ship-it/package.json @@ -55,7 +55,6 @@ "fast-glob": "^3.3.2", "filter-obj": "^5.0.0", "find-up": "^6.0.0", - "glob": "^8.0.3", "is-builtin-module": "^3.1.0", "is-path-inside": "^4.0.0", "junk": "^4.0.0", @@ -69,6 +68,7 @@ "require-package-name": "^2.0.1", "resolve": "^2.0.0-next.1", "semver": "^7.3.8", + "tinyglobby": "^0.2.11", "tmp-promise": "^3.0.2", "toml": "^3.0.0", "unixify": "^1.0.0", @@ -78,7 +78,6 @@ }, "devDependencies": { "@types/archiver": "6.0.3", - "@types/glob": "8.1.0", "@types/is-ci": "3.0.4", "@types/node": "20.12.11", "@types/normalize-path": "3.0.2", diff --git a/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/esbuild/bundler.ts b/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/esbuild/bundler.ts index bb639427be..c23ace31f8 100644 --- a/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/esbuild/bundler.ts +++ b/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/esbuild/bundler.ts @@ -60,7 +60,7 @@ const includedFilesToEsbuildExternals = async (includedFiles: string[], baseDir: if (hasMultipleGlobs) { const resolved = await glob(pattern, { - noglobstar: true, + expandDirectories: false, cwd: baseDir, }) diff --git a/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/nft/side_files.ts b/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/nft/side_files.ts index 61c46e3fb7..afa5a63da8 100644 --- a/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/nft/side_files.ts +++ b/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/nft/side_files.ts @@ -18,7 +18,7 @@ export const getSideFiles = async function (functionPath: string, stat: Stats): absolute: true, cwd: functionPath, ignore: `**/node_modules/**`, - nodir: true, + expandDirectories: false, }) return paths.filter((path) => !isJunk(basename(path))) diff --git a/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/zisi/published.ts b/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/zisi/published.ts index ab977b5e22..8a55f90eb7 100644 --- a/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/zisi/published.ts +++ b/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/zisi/published.ts @@ -5,7 +5,7 @@ export const getPublishedFiles = async function (modulePath: string): Promise { - let normalizedIgnore +export const glob = function (pattern: string, options: GlobOptions): Promise { + let normalizedIgnore: undefined | string | string[] if (options.ignore) { normalizedIgnore = @@ -22,7 +18,7 @@ export const glob = function (pattern: string, options: globFunction.IOptions): : options.ignore.map((expression) => normalizePath(expression)) } - return pGlob(normalizePath(pattern), { ...options, ignore: normalizedIgnore }) + return tinyGlobby(normalizePath(pattern), { ...options, ignore: normalizedIgnore }) } export const minimatch = function (target: string, pattern: string, options?: MinimatchOptions): boolean { diff --git a/packages/zip-it-and-ship-it/tests/v2api.test.ts b/packages/zip-it-and-ship-it/tests/v2api.test.ts index a79c6348ac..1c84857b36 100644 --- a/packages/zip-it-and-ship-it/tests/v2api.test.ts +++ b/packages/zip-it-and-ship-it/tests/v2api.test.ts @@ -1,13 +1,12 @@ import { readFile } from 'fs/promises' import { join, resolve } from 'path' import { platform, version as nodeVersion } from 'process' -import { promisify } from 'util' import { getPath as getBootstrapPath } from '@netlify/serverless-functions-api' import merge from 'deepmerge' -import glob from 'glob' import { pathExists } from 'path-exists' import semver from 'semver' +import { glob } from 'tinyglobby' import { dir as getTmpDir } from 'tmp-promise' import { afterEach, describe, expect, test, vi } from 'vitest' @@ -18,8 +17,6 @@ import { invokeLambda, readAsBuffer } from './helpers/lambda.js' import { zipFixture, unzipFiles, importFunctionFile, FIXTURES_ESM_DIR, FIXTURES_DIR } from './helpers/main.js' import { testMany } from './helpers/test_many.js' -const pGlob = promisify(glob) - vi.mock('../src/utils/shell.js', () => ({ shellUtils: { runCommand: vi.fn() } })) describe.runIf(semver.gte(nodeVersion, '18.13.0'))('V2 functions API', () => { @@ -132,7 +129,7 @@ describe.runIf(semver.gte(nodeVersion, '18.13.0'))('V2 functions API', () => { const [{ name: archive, entryFilename, path }] = files - const untranspiledFiles = await pGlob(`${path}/**/*.ts`) + const untranspiledFiles = await glob(`${path}/**/*.ts`) expect(untranspiledFiles).toEqual([]) const func = await importFunctionFile(`${tmpDir}/${archive}/${entryFilename}`)