From 8a9959e2250eb58155e22c257dae242eda3efa0f Mon Sep 17 00:00:00 2001 From: Erik Moura Date: Thu, 24 Oct 2024 22:35:18 -0300 Subject: [PATCH] fix: inline `@types/glob` (#336) --- package.json | 1 - src/types/glob.d.ts | 170 ++++++++++++++++++++++++++++++++++++++++++++ tsconfig.json | 4 ++ yarn.lock | 13 ---- 4 files changed, 174 insertions(+), 14 deletions(-) create mode 100644 src/types/glob.d.ts diff --git a/package.json b/package.json index 8c7bd56..f1f0af2 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "prepare": "tsc" }, "dependencies": { - "@types/glob": "^7.1.0", "commander": "^5.0.0", "glob": "^7.1.6", "minimatch": "^3.0.4" diff --git a/src/types/glob.d.ts b/src/types/glob.d.ts new file mode 100644 index 0000000..7ec426b --- /dev/null +++ b/src/types/glob.d.ts @@ -0,0 +1,170 @@ +/** + * TODO(erikian): remove this file once we upgrade to the latest `glob` version. + * https://github.com/electron/asar/pull/332#issuecomment-2435407933 + */ + +declare module 'glob' { + export function glob( + pattern: string, + options: IGlobOptions, + cb: (err: Error | null, matches: string[]) => void, + ): unknown; + + export interface IOptions extends IGlobOptions {} +} + +interface IMinimatchOptions { + /** + * Dump a ton of stuff to stderr. + * + * @default false + */ + debug?: boolean | undefined; + + /** + * Do not expand `{a,b}` and `{1..3}` brace sets. + * + * @default false + */ + nobrace?: boolean | undefined; + + /** + * Disable `**` matching against multiple folder names. + * + * @default false + */ + noglobstar?: boolean | undefined; + + /** + * Allow patterns to match filenames starting with a period, + * even if the pattern does not explicitly have a period in that spot. + * + * Note that by default, `'a/**' + '/b'` will **not** match `a/.d/b`, unless `dot` is set. + * + * @default false + */ + dot?: boolean | undefined; + + /** + * Disable "extglob" style patterns like `+(a|b)`. + * + * @default false + */ + noext?: boolean | undefined; + + /** + * Perform a case-insensitive match. + * + * @default false + */ + nocase?: boolean | undefined; + + /** + * When a match is not found by `minimatch.match`, + * return a list containing the pattern itself if this option is set. + * Otherwise, an empty list is returned if there are no matches. + * + * @default false + */ + nonull?: boolean | undefined; + + /** + * If set, then patterns without slashes will be matched + * against the basename of the path if it contains slashes. For example, + * `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. + * + * @default false + */ + matchBase?: boolean | undefined; + + /** + * Suppress the behavior of treating `#` at the start of a pattern as a comment. + * + * @default false + */ + nocomment?: boolean | undefined; + + /** + * Suppress the behavior of treating a leading `!` character as negation. + * + * @default false + */ + nonegate?: boolean | undefined; + + /** + * Returns from negate expressions the same as if they were not negated. + * (Ie, true on a hit, false on a miss.) + * + * @default false + */ + flipNegate?: boolean | undefined; + + /** + * Compare a partial path to a pattern. As long as the parts of the path that + * are present are not contradicted by the pattern, it will be treated as a + * match. This is useful in applications where you're walking through a + * folder structure, and don't yet have the full path, but want to ensure that + * you do not walk down paths that can never be a match. + * + * @default false + * + * @example + * import minimatch = require("minimatch"); + * + * minimatch('/a/b', '/a/*' + '/c/d', { partial: true }) // true, might be /a/b/c/d + * minimatch('/a/b', '/**' + '/d', { partial: true }) // true, might be /a/b/.../d + * minimatch('/x/y/z', '/a/**' + '/z', { partial: true }) // false, because x !== a + */ + partial?: boolean; + + /** + * Use `\\` as a path separator _only_, and _never_ as an escape + * character. If set, all `\\` characters are replaced with `/` in + * the pattern. Note that this makes it **impossible** to match + * against paths containing literal glob pattern characters, but + * allows matching with patterns constructed using `path.join()` and + * `path.resolve()` on Windows platforms, mimicking the (buggy!) + * behavior of earlier versions on Windows. Please use with + * caution, and be mindful of the caveat about Windows paths + * + * For legacy reasons, this is also set if + * `options.allowWindowsEscape` is set to the exact value `false`. + * + * @default false + */ + windowsPathsNoEscape?: boolean; +} + +export interface IGlobOptions extends IMinimatchOptions { + cwd?: string | undefined; + root?: string | undefined; + dot?: boolean | undefined; + nomount?: boolean | undefined; + mark?: boolean | undefined; + nosort?: boolean | undefined; + stat?: boolean | undefined; + silent?: boolean | undefined; + strict?: boolean | undefined; + cache?: { [path: string]: boolean | 'DIR' | 'FILE' | ReadonlyArray } | undefined; + statCache?: { [path: string]: false | { isDirectory(): boolean } | undefined } | undefined; + symlinks?: { [path: string]: boolean | undefined } | undefined; + realpathCache?: { [path: string]: string } | undefined; + sync?: boolean | undefined; + nounique?: boolean | undefined; + nonull?: boolean | undefined; + debug?: boolean | undefined; + nobrace?: boolean | undefined; + noglobstar?: boolean | undefined; + noext?: boolean | undefined; + nocase?: boolean | undefined; + matchBase?: any; + nodir?: boolean | undefined; + ignore?: string | ReadonlyArray | undefined; + follow?: boolean | undefined; + realpath?: boolean | undefined; + nonegate?: boolean | undefined; + nocomment?: boolean | undefined; + absolute?: boolean | undefined; + allowWindowsEscape?: boolean | undefined; + fs?: typeof import('fs'); +} diff --git a/tsconfig.json b/tsconfig.json index 9e5b08d..b23352c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,6 +11,10 @@ "types": [ "node" ], + "typeRoots": [ + "node_modules/@types", + "src/types" + ], "allowSyntheticDefaultImports": true, "moduleResolution": "node", "declaration": true, diff --git a/yarn.lock b/yarn.lock index 9436ac4..73cc2f1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,14 +39,6 @@ "@types/node" "*" "@types/responselike" "^1.0.0" -"@types/glob@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - "@types/http-cache-semantics@*": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" @@ -59,11 +51,6 @@ dependencies: "@types/node" "*" -"@types/minimatch@*": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - "@types/minimatch@^3.0.5": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"