diff --git a/.changeset/rotten-buses-clean.md b/.changeset/rotten-buses-clean.md new file mode 100644 index 00000000..3b46b9cc --- /dev/null +++ b/.changeset/rotten-buses-clean.md @@ -0,0 +1,8 @@ +--- +"bob-the-bundler": minor +--- + +Support pnpm workspaces from `pnpm-workspace.yaml`.. +Throw an error in case both `pnpm-workspace.yaml` and `package.json#workspaces` fields exist. +Add missing dependency `execa`. +Cleanup and remove unused dependencies. diff --git a/README.md b/README.md index 59642bf3..9ce87928 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ You can add a `bob` key to each `package.json`. **Disable bob for a single package** -```js +```jsonc { "name": "graphql-lfg", "bob": false // exclude a single package from all things bob related @@ -33,7 +33,7 @@ You can add a `bob` key to each `package.json`. **Disable build for a single package** -```js +```json { "name": "graphql-lfg", "bob": { @@ -44,7 +44,7 @@ You can add a `bob` key to each `package.json`. **Disable check for a single package** -```js +```json { "name": "graphql-lfg", "bob": { @@ -55,7 +55,7 @@ You can add a `bob` key to each `package.json`. **Disable check for a single export in a package** -```js +```json { "name": "graphql-lfg", "bob": { @@ -69,11 +69,9 @@ You can add a `bob` key to each `package.json`. ## Usage ```bash - $ bob build $ bob check # only use this command if you know the secret sauce $ bob runify - ``` diff --git a/package.json b/package.json index 4243072a..2eb09474 100644 --- a/package.json +++ b/package.json @@ -22,24 +22,17 @@ "jest-resolver.js" ], "dependencies": { - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^13.3.0", "@vercel/ncc": "^0.36.0", - "builtins": "^5.0.1", "consola": "^2.15.3", - "cross-spawn": "^7.0.3", "dependency-graph": "^0.11.0", + "execa": "5.1.1", "fs-extra": "^10.1.0", "globby": "^11.0.0", + "js-yaml": "^4.1.0", "lodash.get": "^4.4.2", - "minimatch": "^5.1.0", "mkdirp": "^1.0.4", "p-limit": "^3.1.0", - "param-case": "^3.0.4", "resolve.exports": "^1.1.0", - "rollup": "^2.75.6", - "rollup-plugin-generate-package-json": "^3.2.0", - "rollup-plugin-typescript2": "^0.34.0", "tslib": "^2.0.0", "tsup": "^6.5.0", "yargs": "^17.5.1", @@ -55,18 +48,17 @@ }, "devDependencies": { "@actions/core": "1.9.1", - "@changesets/cli": "2.24.4", "@changesets/changelog-github": "0.4.6", + "@changesets/cli": "2.24.4", "@jest/types": "28.1.3", "@types/cross-spawn": "6.0.2", "@types/fs-extra": "9.0.13", "@types/jest": "28.1.8", + "@types/js-yaml": "4.0.5", "@types/lodash.get": "4.4.7", - "@types/minimatch": "3.0.5", "@types/mkdirp": "1.0.2", "@types/node": "16.11.58", "@types/yargs": "15.0.14", - "execa": "5.1.1", "jest": "28.1.3", "rimraf": "3.0.2", "ts-jest": "28.0.8", diff --git a/src/commands/bootstrap.ts b/src/commands/bootstrap.ts index 6c87330e..e7ac7c70 100644 --- a/src/commands/bootstrap.ts +++ b/src/commands/bootstrap.ts @@ -70,7 +70,7 @@ export const presetFieldsESM = { }, }; -async function applyESMModuleTransform(cwd: string) { +async function applyESMModuleTransform(cwd = process.cwd()) { const filePaths = await globby("**/*.ts", { cwd, absolute: true, @@ -108,26 +108,22 @@ export const bootstrapCommand = createCommand<{}, {}>(() => { return yargs.options({}); }, async handler() { - const cwd = process.cwd(); - const rootPackageJSON = await getRootPackageJSON(cwd); - const workspaces = getWorkspaces(rootPackageJSON); + const rootPackageJSON = await getRootPackageJSON(); + const workspaces = await getWorkspaces(rootPackageJSON); const isSinglePackage = workspaces === null; // Make sure all modules are converted to ESM if (isSinglePackage) { - await applyESMModuleTransform(cwd); + await applyESMModuleTransform(); await applyPackageJSONPresetConfig( - path.join(cwd, "package.json"), + path.join(process.cwd(), "package.json"), rootPackageJSON ); return; } - const workspacePackagePaths = await getWorkspacePackagePaths( - cwd, - workspaces - ); + const workspacePackagePaths = await getWorkspacePackagePaths(workspaces); await Promise.all( workspacePackagePaths.map((packagePath) => diff --git a/src/commands/build.ts b/src/commands/build.ts index 210b7187..d88ddcee 100644 --- a/src/commands/build.ts +++ b/src/commands/build.ts @@ -26,7 +26,7 @@ interface PackageInfo { } /** - * A list of files that we don't need need within the published package. + * A list of files that we don't need within the published package. * Also known as test files :) * This list is derived from scouting various of our repositories. */ @@ -56,17 +56,14 @@ function typeScriptCompilerOptions( }; } -function compilerOptionsToArgs( - options: Record -): Array { - const args: Array = []; - for (const [key, value] of Object.entries(options)) { - args.push(`--${key}`, `${value}`); - } - return args; +function compilerOptionsToArgs(options: Record): string[] { + return Object.entries(options).flatMap(([key, value]) => [ + `--${key}`, + `${value}`, + ]); } -function assertTypeScriptBuildResult(result: execa.ExecaReturnValue) { +function assertTypeScriptBuildResult(result: execa.ExecaReturnValue) { if (result.exitCode !== 0) { console.log("TypeScript compiler exited with non-zero exit code."); console.log(result.stdout); @@ -121,8 +118,8 @@ export const buildCommand = createCommand< }, async handler({ incremental }) { const cwd = process.cwd(); - const rootPackageJSON = await getRootPackageJSON(cwd); - const workspaces = getWorkspaces(rootPackageJSON); + const rootPackageJSON = await getRootPackageJSON(); + const workspaces = await getWorkspaces(rootPackageJSON); const isSinglePackage = workspaces === null; if (isSinglePackage) { @@ -151,10 +148,7 @@ export const buildCommand = createCommand< } const limit = pLimit(4); - const workspacePackagePaths = await getWorkspacePackagePaths( - cwd, - workspaces - ); + const workspacePackagePaths = await getWorkspacePackagePaths(workspaces); const packageInfoList: PackageInfo[] = await Promise.all( workspacePackagePaths.map((packagePath) => @@ -392,7 +386,7 @@ function rewritePackageJson(pkg: Record, typesOnly: boolean) { ]; fields.forEach((field) => { - if (typeof pkg[field] !== "undefined") { + if (pkg[field] !== undefined) { newPkg[field] = pkg[field]; } }); @@ -461,7 +455,7 @@ export function validatePackageJson( // If the package has NO binary we need to check the exports map. // a package should either // 1. have a bin property - // 2. have a exports property + // 2. have an exports property // 3. have an exports and bin property if (Object.keys(pkg.bin ?? {}).length > 0) { if (opts.includesCommonJS === true) { @@ -499,7 +493,7 @@ export function validatePackageJson( expect("typings", presetFieldsESM.typings); expect("typescript.definition", presetFieldsESM.typescript.definition); - // For now we enforce a top level exports property + // For now, we enforce a top level exports property expect("exports['.']", presetFieldsESM.exports["."]); } } diff --git a/src/commands/check.ts b/src/commands/check.ts index 3ad2d1e3..3493371a 100644 --- a/src/commands/check.ts +++ b/src/commands/check.ts @@ -40,8 +40,8 @@ export const checkCommand = createCommand<{}, {}>((api) => { }, async handler() { const cwd = process.cwd(); - const rootPackageJSON = await getRootPackageJSON(cwd); - const workspaces = getWorkspaces(rootPackageJSON); + const rootPackageJSON = await getRootPackageJSON(); + const workspaces = await getWorkspaces(rootPackageJSON); const isSinglePackage = workspaces === null; let checkConfigs: Array<{ @@ -55,7 +55,7 @@ export const checkCommand = createCommand<{}, {}>((api) => { packageJSON: rootPackageJSON, }); } else { - const workspacesPaths = await getWorkspacePackagePaths(cwd, workspaces); + const workspacesPaths = await getWorkspacePackagePaths(workspaces); const limit = pLimit(20); await Promise.all( workspacesPaths.map((workspacePath) => diff --git a/src/commands/runify.ts b/src/commands/runify.ts index 248a5dfb..0e3afdf3 100644 --- a/src/commands/runify.ts +++ b/src/commands/runify.ts @@ -287,7 +287,6 @@ async function compile( } : {}, }); - return; } @@ -297,25 +296,15 @@ async function compile( }); await fs.mkdirp(join(cwd, "dist")); - await Promise.all( - [ - fs.writeFile(join(cwd, "dist/index.js"), code, { - encoding: "utf-8", - }), - fs.writeFile(join(cwd, "dist/index.js.map"), map, { - encoding: "utf-8", - }), - ].concat( - Object.keys(assets).map(async (filepath) => { - if (filepath.endsWith("package.json")) { - return Promise.resolve(); - } - await fs.ensureDir(dirname(join(cwd, "dist", filepath)), {}); - await fs.writeFile( - join(cwd, "dist", filepath), - assets[filepath].source - ); - }) - ) - ); + await Promise.all([ + fs.writeFile(join(cwd, "dist/index.js"), code, "utf8"), + fs.writeFile(join(cwd, "dist/index.js.map"), map, "utf8"), + ...Object.keys(assets).map(async (filepath) => { + if (filepath.endsWith("package.json")) { + return; + } + await fs.ensureDir(dirname(join(cwd, "dist", filepath)), {}); + await fs.writeFile(join(cwd, "dist", filepath), assets[filepath].source); + }), + ]); } diff --git a/src/typings.d.ts b/src/typings.d.ts index 35c4e40e..324c5de0 100644 --- a/src/typings.d.ts +++ b/src/typings.d.ts @@ -1,4 +1 @@ -declare module 'rollup-plugin-generate-package-json'; -declare module 'rollup-plugin-auto-external'; -declare module 'builtins'; declare module '@vercel/ncc'; diff --git a/src/utils/get-root-package-json.ts b/src/utils/get-root-package-json.ts index 184ad74b..0eb71450 100644 --- a/src/utils/get-root-package-json.ts +++ b/src/utils/get-root-package-json.ts @@ -1,7 +1,7 @@ import globby from "globby"; import * as fse from "fs-extra"; -export async function getRootPackageJSON(cwd: string) { +export async function getRootPackageJSON(cwd = process.cwd()) { const [rootPackageJSONPath] = await globby("package.json", { cwd, absolute: true, diff --git a/src/utils/get-workspace-package-paths.ts b/src/utils/get-workspace-package-paths.ts index 7267795c..81973825 100644 --- a/src/utils/get-workspace-package-paths.ts +++ b/src/utils/get-workspace-package-paths.ts @@ -4,8 +4,8 @@ import path from "path"; import { buildArtifactDirectories } from "../constants"; export async function getWorkspacePackagePaths( - cwd: string, - workspaces: Array + workspaces: string[], + cwd = process.cwd() ) { const packageJSONPaths = await globby( workspaces diff --git a/src/utils/get-workspaces.ts b/src/utils/get-workspaces.ts index 6cedbd6a..798e2a7d 100644 --- a/src/utils/get-workspaces.ts +++ b/src/utils/get-workspaces.ts @@ -1,4 +1,7 @@ +import path from "node:path"; import zod from "zod"; +import fse from "fs-extra"; +import jsYaml from "js-yaml"; const WorkspaceModel = zod.optional( zod.union([ @@ -10,10 +13,25 @@ const WorkspaceModel = zod.optional( ]) ); -export function getWorkspaces( +export async function getWorkspaces( packageJSON: Record -): Array | null { - const result = WorkspaceModel.parse(packageJSON.workspaces); +): Promise { + let result = WorkspaceModel.parse(packageJSON.workspaces); + + const pnpmWorkspacePath = path.join(process.cwd(), "pnpm-workspace.yaml"); + const isPnpmWorkspace = await fse.pathExists(pnpmWorkspacePath); + + if (isPnpmWorkspace) { + if (result) { + throw new Error( + "Both `pnpm-workspace.yaml` and `package.json#workspaces` are not supported. Remove `package.json#workspaces` field." + ); + } + + result = jsYaml.load(await fse.readFile(pnpmWorkspacePath, "utf8")) as { + packages?: string[]; + }; + } if (result == null) { return null; } diff --git a/src/utils/rewrite-code-imports.ts b/src/utils/rewrite-code-imports.ts index ba35893a..dce333af 100644 --- a/src/utils/rewrite-code-imports.ts +++ b/src/utils/rewrite-code-imports.ts @@ -4,13 +4,13 @@ import * as path from "path"; function isFolderSync(path: string) { try { return fse.statSync(path).isDirectory(); - } catch (e) { + } catch { return false; } } function rewriteSourceValue(sourceValue: string, relativeDirname: string) { - if (sourceValue.startsWith(".") && sourceValue.endsWith(".js") === false) { + if (sourceValue.startsWith(".") && !sourceValue.endsWith(".js")) { const targetPath = path.resolve(relativeDirname, sourceValue); // If the target path is a folder, we need to import from the index.js file if (isFolderSync(targetPath)) { diff --git a/src/utils/rewrite-exports.ts b/src/utils/rewrite-exports.ts index d475f249..a98638f0 100644 --- a/src/utils/rewrite-exports.ts +++ b/src/utils/rewrite-exports.ts @@ -1,55 +1,49 @@ -export function rewriteExports( - exports: Record< - string, - | string - | { - require?: string | { [key: string]: string }; - import?: string | { [key: string]: string }; - default?: string | { [key: string]: string }; - } - >, - distDir: string -) { - const newExports = { ...exports }; - - for (const [key, value] of Object.entries(newExports)) { - if (!value) continue; - - let newValue = value as - | string - | { - require?: string | { [key: string]: string }; - import?: string | { [key: string]: string }; - default?: string | { [key: string]: string }; - }; - - if (typeof newValue === "string") { - newValue = newValue.replace(`${distDir}/`, ""); - } else if (typeof newValue === "object" && newValue != null) { - function transformValue( - value: string | { [key: string]: string } | undefined - ) { - if (value == null) { - return undefined; - } - if (typeof value === "object") { - const newValue: Record = {}; - for (const [key, path] of Object.entries(value)) { - newValue[key] = path.replace(`${distDir}/`, ""); - } - return newValue; - } - return value.replace(`${distDir}/`, ""); - } - - newValue = { - require: transformValue(newValue.require), - import: transformValue(newValue.import), - default: transformValue(newValue.import), - }; - } - newExports[key.replace(`${distDir}/`, "")] = newValue; - } - - return newExports; -} +type Exports = + | string + | { + require?: string | Record; + import?: string | Record; + default?: string | Record; + }; + +export function rewriteExports( + exports: Record, + distDir: string +) { + const newExports = { ...exports }; + + for (const [key, value] of Object.entries(newExports)) { + if (!value) continue; + + let newValue = value as Exports; + + if (typeof newValue === "string") { + newValue = newValue.replace(`${distDir}/`, ""); + } else if (typeof newValue === "object" && newValue != null) { + function transformValue( + value: string | { [key: string]: string } | undefined + ) { + if (value == null) { + return; + } + if (typeof value === "object") { + const newValue: Record = {}; + for (const [key, path] of Object.entries(value)) { + newValue[key] = path.replace(`${distDir}/`, ""); + } + return newValue; + } + return value.replace(`${distDir}/`, ""); + } + + newValue = { + require: transformValue(newValue.require), + import: transformValue(newValue.import), + default: transformValue(newValue.import), + }; + } + newExports[key.replace(`${distDir}/`, "")] = newValue; + } + + return newExports; +} diff --git a/test/__fixtures__/simple-monorepo-pnpm/package.json b/test/__fixtures__/simple-monorepo-pnpm/package.json new file mode 100644 index 00000000..4118e41b --- /dev/null +++ b/test/__fixtures__/simple-monorepo-pnpm/package.json @@ -0,0 +1,4 @@ +{ + "name": "monorepo-pnpm", + "private": true +} diff --git a/test/__fixtures__/simple-monorepo-pnpm/packages/a/package.json b/test/__fixtures__/simple-monorepo-pnpm/packages/a/package.json new file mode 100644 index 00000000..7537937e --- /dev/null +++ b/test/__fixtures__/simple-monorepo-pnpm/packages/a/package.json @@ -0,0 +1,48 @@ +{ + "name": "a", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "typings": "dist/typings/index.d.ts", + "typescript": { + "definition": "dist/typings/index.d.ts" + }, + "exports": { + ".": { + "require": { + "types": "./dist/typings/index.d.cts", + "default": "./dist/cjs/index.js" + }, + "import": { + "types": "./dist/typings/index.d.ts", + "default": "./dist/esm/index.js" + }, + "default": { + "types": "./dist/typings/index.d.ts", + "default": "./dist/esm/index.js" + } + }, + "./*": { + "require": { + "types": "./dist/typings/*.d.cts", + "default": "./dist/cjs/*.js" + }, + "import": { + "types": "./dist/typings/*.d.ts", + "default": "./dist/esm/*.js" + }, + "default": { + "types": "./dist/typings/*.d.ts", + "default": "./dist/esm/*.js" + } + }, + "./package.json": "./package.json" + }, + "buildOptions": { + "input": "./src/index.ts" + }, + "publishConfig": { + "directory": "dist", + "access": "public" + }, + "type": "module" +} diff --git a/test/__fixtures__/simple-monorepo-pnpm/packages/a/src/index.ts b/test/__fixtures__/simple-monorepo-pnpm/packages/a/src/index.ts new file mode 100644 index 00000000..01a0c03e --- /dev/null +++ b/test/__fixtures__/simple-monorepo-pnpm/packages/a/src/index.ts @@ -0,0 +1 @@ +export const a = "WUP"; diff --git a/test/__fixtures__/simple-monorepo-pnpm/packages/b/package.json b/test/__fixtures__/simple-monorepo-pnpm/packages/b/package.json new file mode 100644 index 00000000..bc63f97f --- /dev/null +++ b/test/__fixtures__/simple-monorepo-pnpm/packages/b/package.json @@ -0,0 +1,51 @@ +{ + "name": "b", + "type": "module", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "typings": "dist/typings/index.d.ts", + "typescript": { + "definition": "dist/typings/index.d.ts" + }, + "exports": { + ".": { + "require": { + "types": "./dist/typings/index.d.cts", + "default": "./dist/cjs/index.js" + }, + "import": { + "types": "./dist/typings/index.d.ts", + "default": "./dist/esm/index.js" + }, + "default": { + "types": "./dist/typings/index.d.ts", + "default": "./dist/esm/index.js" + } + }, + "./foo": { + "require": { + "types": "./dist/typings/foo.d.cts", + "default": "./dist/cjs/foo.js" + }, + "import": { + "types": "./dist/typings/foo.d.ts", + "default": "./dist/esm/foo.js" + }, + "default": { + "types": "./dist/typings/foo.d.ts", + "default": "./dist/esm/foo.js" + } + }, + "./package.json": "./package.json" + }, + "bin": { + "bbb": "dist/cjs/log-the-world.js" + }, + "buildOptions": { + "input": "./src/index.ts" + }, + "publishConfig": { + "directory": "dist", + "access": "public" + } +} diff --git a/test/__fixtures__/simple-monorepo-pnpm/packages/b/src/foo.ts b/test/__fixtures__/simple-monorepo-pnpm/packages/b/src/foo.ts new file mode 100644 index 00000000..027a84fd --- /dev/null +++ b/test/__fixtures__/simple-monorepo-pnpm/packages/b/src/foo.ts @@ -0,0 +1 @@ +export const b = "SUP"; diff --git a/test/__fixtures__/simple-monorepo-pnpm/packages/b/src/index.ts b/test/__fixtures__/simple-monorepo-pnpm/packages/b/src/index.ts new file mode 100644 index 00000000..f86d07e8 --- /dev/null +++ b/test/__fixtures__/simple-monorepo-pnpm/packages/b/src/index.ts @@ -0,0 +1,7 @@ +import { b as a } from "./foo.js"; +export * from "./foo.js"; +export const b = "SUP" + a; + +export function foo() { + return import("./foo.js"); +} diff --git a/test/__fixtures__/simple-monorepo-pnpm/packages/b/src/log-the-world.ts b/test/__fixtures__/simple-monorepo-pnpm/packages/b/src/log-the-world.ts new file mode 100755 index 00000000..ffc52aad --- /dev/null +++ b/test/__fixtures__/simple-monorepo-pnpm/packages/b/src/log-the-world.ts @@ -0,0 +1,5 @@ +#!/usr/bin/env node +import * as foo from "./foo.js"; +import * as index from "./index.js"; + +console.log(foo, index); diff --git a/test/__fixtures__/simple-monorepo-pnpm/packages/c/package.json b/test/__fixtures__/simple-monorepo-pnpm/packages/c/package.json new file mode 100644 index 00000000..3a020acc --- /dev/null +++ b/test/__fixtures__/simple-monorepo-pnpm/packages/c/package.json @@ -0,0 +1,15 @@ +{ + "name": "c", + "main": "", + "typings": "dist/typings/index.d.ts", + "typescript": { + "definition": "dist/typings/index.d.ts" + }, + "buildOptions": { + "input": "./src/index.ts" + }, + "publishConfig": { + "directory": "dist", + "access": "public" + } +} diff --git a/test/__fixtures__/simple-monorepo-pnpm/packages/c/src/index.ts b/test/__fixtures__/simple-monorepo-pnpm/packages/c/src/index.ts new file mode 100644 index 00000000..d1d0c0d6 --- /dev/null +++ b/test/__fixtures__/simple-monorepo-pnpm/packages/c/src/index.ts @@ -0,0 +1,3 @@ +export type SomeType = "type"; + +export interface SomeInterface {} diff --git a/test/__fixtures__/simple-monorepo-pnpm/pnpm-workspace.yaml b/test/__fixtures__/simple-monorepo-pnpm/pnpm-workspace.yaml new file mode 100644 index 00000000..924b55f4 --- /dev/null +++ b/test/__fixtures__/simple-monorepo-pnpm/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - packages/* diff --git a/test/__fixtures__/simple-monorepo-pnpm/tsconfig.json b/test/__fixtures__/simple-monorepo-pnpm/tsconfig.json new file mode 100644 index 00000000..0f65e1e6 --- /dev/null +++ b/test/__fixtures__/simple-monorepo-pnpm/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "outDir": "dist", + "target": "esnext", + "module": "esnext", + "lib": ["es6", "esnext", "es2015", "dom", "webworker"], + "declaration": true, + "strict": true, + "skipLibCheck": true, + "paths": {}, + "sourceMap": false + }, + "include": ["packages"], + "exclude": ["**/dist", "**/temp"] +} diff --git a/test/integration.spec.ts b/test/integration.spec.ts index f17621c9..ef88fdda 100644 --- a/test/integration.spec.ts +++ b/test/integration.spec.ts @@ -21,7 +21,7 @@ it("can bundle a simple project", async () => { const readmeFilePath = path.resolve(baseDistPath, "README.md"); const fooFilePath = path.resolve(baseDistPath, "foo.json"); - expect(fse.readFileSync(indexJsFilePath, "utf8")).toMatchInlineSnapshot(` + expect(await fse.readFile(indexJsFilePath, "utf8")).toMatchInlineSnapshot(` "\\"use strict\\"; exports.__esModule = true; exports.someNumber = void 0; @@ -29,26 +29,26 @@ it("can bundle a simple project", async () => { exports[\\"default\\"] = \\"kek\\"; " `); - expect(fse.readFileSync(indexDtsFilePath, "utf8")).toMatchInlineSnapshot(` + expect(await fse.readFile(indexDtsFilePath, "utf8")).toMatchInlineSnapshot(` "export declare const someNumber = 1; declare const _default: \\"kek\\"; export default _default; " `); - expect(fse.readFileSync(indexMjsFilePath, "utf8")).toMatchInlineSnapshot(` + expect(await fse.readFile(indexMjsFilePath, "utf8")).toMatchInlineSnapshot(` "export var someNumber = 1; export default \\"kek\\"; " `); - expect(fse.readFileSync(readmeFilePath, "utf8")).toMatchInlineSnapshot(` + expect(await fse.readFile(readmeFilePath, "utf8")).toMatchInlineSnapshot(` "Hello! " `); - expect(fse.readFileSync(fooFilePath, "utf8")).toMatchInlineSnapshot(` + expect(await fse.readFile(fooFilePath, "utf8")).toMatchInlineSnapshot(` "{ \\"hi\\": 1 } " `); - expect(fse.readFileSync(packageJsonFilePath, "utf8")).toMatchInlineSnapshot(` + expect(await fse.readFile(packageJsonFilePath, "utf8")).toMatchInlineSnapshot(` "{ \\"name\\": \\"simple\\", \\"main\\": \\"cjs/index.js\\", @@ -149,7 +149,7 @@ it("can build a monorepo project", async () => { }, } as const; - expect(fse.readFileSync(files.a["cjs/index.js"], "utf8")) + expect(await fse.readFile(files.a["cjs/index.js"], "utf8")) .toMatchInlineSnapshot(` "\\"use strict\\"; Object.defineProperty(exports, \\"__esModule\\", { value: true }); @@ -157,17 +157,17 @@ it("can build a monorepo project", async () => { exports.a = \\"WUP\\"; " `); - expect(fse.readFileSync(files.a["typings/index.d.ts"], "utf8")) + expect(await fse.readFile(files.a["typings/index.d.ts"], "utf8")) .toMatchInlineSnapshot(` "export declare const a = \\"WUP\\"; " `); - expect(fse.readFileSync(files.a["esm/index.js"], "utf8")) + expect(await fse.readFile(files.a["esm/index.js"], "utf8")) .toMatchInlineSnapshot(` "export const a = \\"WUP\\"; " `); - expect(fse.readFileSync(files.a["package.json"], "utf8")) + expect(await fse.readFile(files.a["package.json"], "utf8")) .toMatchInlineSnapshot(` "{ \\"name\\": \\"a\\", @@ -212,7 +212,7 @@ it("can build a monorepo project", async () => { }" `); - expect(fse.readFileSync(files.b["cjs/index.js"], "utf8")) + expect(await fse.readFile(files.b["cjs/index.js"], "utf8")) .toMatchInlineSnapshot(` "\\"use strict\\"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { @@ -240,14 +240,14 @@ it("can build a monorepo project", async () => { exports.foo = foo; " `); - expect(fse.readFileSync(files.b["typings/index.d.ts"], "utf8")) + expect(await fse.readFile(files.b["typings/index.d.ts"], "utf8")) .toMatchInlineSnapshot(` "export * from \\"./foo.js\\"; export declare const b: string; export declare function foo(): Promise; " `); - expect(fse.readFileSync(files.b["esm/index.js"], "utf8")) + expect(await fse.readFile(files.b["esm/index.js"], "utf8")) .toMatchInlineSnapshot(` "import { b as a } from \\"./foo.js\\"; export * from \\"./foo.js\\"; @@ -257,7 +257,7 @@ it("can build a monorepo project", async () => { } " `); - expect(fse.readFileSync(files.b["package.json"], "utf8")) + expect(await fse.readFile(files.b["package.json"], "utf8")) .toMatchInlineSnapshot(` "{ \\"name\\": \\"b\\", @@ -307,14 +307,14 @@ it("can build a monorepo project", async () => { expect(fse.existsSync(path.resolve(baseDistCPath, "cjs"))).toBeFalsy(); expect(fse.existsSync(path.resolve(baseDistCPath, "esm"))).toBeFalsy(); - expect(fse.readFileSync(files.c["typings/index.d.ts"], "utf8")) + expect(await fse.readFile(files.c["typings/index.d.ts"], "utf8")) .toMatchInlineSnapshot(` "export declare type SomeType = \\"type\\"; export interface SomeInterface { } " `); - expect(fse.readFileSync(files.c["package.json"], "utf8")) + expect(await fse.readFile(files.c["package.json"], "utf8")) .toMatchInlineSnapshot(` "{ \\"name\\": \\"c\\", @@ -342,7 +342,7 @@ it("can build an esm only project", async () => { const packageJsonFilePath = path.resolve(baseDistPath, "package.json"); const indexJsFilePath = path.resolve(baseDistPath, "esm", "index.js"); const indexDtsFilePath = path.resolve(baseDistPath, "typings", "index.d.ts"); - expect(fse.readFileSync(packageJsonFilePath, "utf8")).toMatchInlineSnapshot(` + expect(await fse.readFile(packageJsonFilePath, "utf8")).toMatchInlineSnapshot(` "{ \\"name\\": \\"simple-esm-only\\", \\"main\\": \\"esm/index.js\\", @@ -368,11 +368,11 @@ it("can build an esm only project", async () => { }" `); - expect(fse.readFileSync(indexJsFilePath, "utf8")).toMatchInlineSnapshot(` + expect(await fse.readFile(indexJsFilePath, "utf8")).toMatchInlineSnapshot(` "export var someNumber = 1; " `); - expect(fse.readFileSync(indexDtsFilePath, "utf8")).toMatchInlineSnapshot(` + expect(await fse.readFile(indexDtsFilePath, "utf8")).toMatchInlineSnapshot(` "export declare const someNumber = 1; " `); @@ -393,7 +393,7 @@ it("can build a types only project", async () => { // types-only adjusted package.json const packageJsonFilePath = path.resolve(baseDistPath, "package.json"); - expect(fse.readFileSync(packageJsonFilePath, "utf8")).toMatchInlineSnapshot(` + expect(await fse.readFile(packageJsonFilePath, "utf8")).toMatchInlineSnapshot(` "{ \\"name\\": \\"simple-types-only\\", \\"main\\": \\"\\", @@ -410,10 +410,244 @@ it("can build a types only project", async () => { // only types const indexDtsFilePath = path.resolve(baseDistPath, "typings", "index.d.ts"); - expect(fse.readFileSync(indexDtsFilePath, "utf8")).toMatchInlineSnapshot(` + expect(await fse.readFile(indexDtsFilePath, "utf8")).toMatchInlineSnapshot(` "export declare type SomeType = \\"type\\"; export interface SomeInterface { } " `); }); + +it("can build a monorepo pnpm project", async () => { + await fse.remove( + path.resolve(fixturesFolder, "simple-monorepo-pnpm", "a", "dist") + ); + await fse.remove( + path.resolve(fixturesFolder, "simple-monorepo-pnpm", "b", "dist") + ); + const result = await execa("node", [binaryFolder, "build"], { + cwd: path.resolve(fixturesFolder, "simple-monorepo-pnpm") + }); + expect(result.exitCode).toEqual(0); + const baseDistAPath = path.resolve( + fixturesFolder, + "simple-monorepo-pnpm", + "packages", + "a", + "dist" + ); + const baseDistBPath = path.resolve( + fixturesFolder, + "simple-monorepo-pnpm", + "packages", + "b", + "dist" + ); + const baseDistCPath = path.resolve( + fixturesFolder, + "simple-monorepo-pnpm", + "packages", + "c", + "dist" + ); + // prettier-ignore + const files = { + a: { + "cjs/index.js": path.resolve(baseDistAPath, "cjs", "index.js"), + "typings/index.d.ts": path.resolve(baseDistAPath, "typings", "index.d.ts"), + "esm/index.js": path.resolve(baseDistAPath, "esm", "index.js"), + "package.json": path.resolve(baseDistAPath, "package.json"), + }, + b: { + "cjs/index.js": path.resolve(baseDistBPath, "cjs", "index.js"), + "typings/index.d.ts": path.resolve(baseDistBPath, "typings", "index.d.ts"), + "esm/index.js": path.resolve(baseDistBPath, "esm", "index.js"), + "package.json": path.resolve(baseDistBPath, "package.json"), + }, + c: { + "typings/index.d.ts": path.resolve(baseDistCPath, "typings", "index.d.ts"), + "package.json": path.resolve(baseDistCPath, "package.json"), + }, + } as const; + + expect(await fse.readFile(files.a["cjs/index.js"], "utf8")) + .toMatchInlineSnapshot(` + "\\"use strict\\"; + Object.defineProperty(exports, \\"__esModule\\", { value: true }); + exports.a = void 0; + exports.a = \\"WUP\\"; + " + `); + expect(await fse.readFile(files.a["typings/index.d.ts"], "utf8")) + .toMatchInlineSnapshot(` + "export declare const a = \\"WUP\\"; + " + `); + expect(await fse.readFile(files.a["esm/index.js"], "utf8")) + .toMatchInlineSnapshot(` + "export const a = \\"WUP\\"; + " + `); + expect(await fse.readFile(files.a["package.json"], "utf8")) + .toMatchInlineSnapshot(` + "{ + \\"name\\": \\"a\\", + \\"main\\": \\"cjs/index.js\\", + \\"module\\": \\"esm/index.js\\", + \\"typings\\": \\"typings/index.d.ts\\", + \\"typescript\\": { + \\"definition\\": \\"typings/index.d.ts\\" + }, + \\"type\\": \\"module\\", + \\"exports\\": { + \\".\\": { + \\"require\\": { + \\"types\\": \\"./typings/index.d.cts\\", + \\"default\\": \\"./cjs/index.js\\" + }, + \\"import\\": { + \\"types\\": \\"./typings/index.d.ts\\", + \\"default\\": \\"./esm/index.js\\" + }, + \\"default\\": { + \\"types\\": \\"./typings/index.d.ts\\", + \\"default\\": \\"./esm/index.js\\" + } + }, + \\"./*\\": { + \\"require\\": { + \\"types\\": \\"./typings/*.d.cts\\", + \\"default\\": \\"./cjs/*.js\\" + }, + \\"import\\": { + \\"types\\": \\"./typings/*.d.ts\\", + \\"default\\": \\"./esm/*.js\\" + }, + \\"default\\": { + \\"types\\": \\"./typings/*.d.ts\\", + \\"default\\": \\"./esm/*.js\\" + } + }, + \\"./package.json\\": \\"./package.json\\" + } + }" + `); + + expect(await fse.readFile(files.b["cjs/index.js"], "utf8")) + .toMatchInlineSnapshot(` + "\\"use strict\\"; + var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== \\"default\\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + }; + Object.defineProperty(exports, \\"__esModule\\", { value: true }); + exports.foo = exports.b = void 0; + const foo_js_1 = require(\\"./foo.js\\"); + __exportStar(require(\\"./foo.js\\"), exports); + exports.b = \\"SUP\\" + foo_js_1.b; + function foo() { + return Promise.resolve().then(() => require(\\"./foo.js\\")); + } + exports.foo = foo; + " + `); + expect(await fse.readFile(files.b["typings/index.d.ts"], "utf8")) + .toMatchInlineSnapshot(` + "export * from \\"./foo.js\\"; + export declare const b: string; + export declare function foo(): Promise; + " + `); + expect(await fse.readFile(files.b["esm/index.js"], "utf8")) + .toMatchInlineSnapshot(` + "import { b as a } from \\"./foo.js\\"; + export * from \\"./foo.js\\"; + export const b = \\"SUP\\" + a; + export function foo() { + return import(\\"./foo.js\\"); + } + " + `); + expect(await fse.readFile(files.b["package.json"], "utf8")) + .toMatchInlineSnapshot(` + "{ + \\"name\\": \\"b\\", + \\"main\\": \\"cjs/index.js\\", + \\"module\\": \\"esm/index.js\\", + \\"typings\\": \\"typings/index.d.ts\\", + \\"typescript\\": { + \\"definition\\": \\"typings/index.d.ts\\" + }, + \\"type\\": \\"module\\", + \\"exports\\": { + \\".\\": { + \\"require\\": { + \\"types\\": \\"./typings/index.d.cts\\", + \\"default\\": \\"./cjs/index.js\\" + }, + \\"import\\": { + \\"types\\": \\"./typings/index.d.ts\\", + \\"default\\": \\"./esm/index.js\\" + }, + \\"default\\": { + \\"types\\": \\"./typings/index.d.ts\\", + \\"default\\": \\"./esm/index.js\\" + } + }, + \\"./foo\\": { + \\"require\\": { + \\"types\\": \\"./typings/foo.d.cts\\", + \\"default\\": \\"./cjs/foo.js\\" + }, + \\"import\\": { + \\"types\\": \\"./typings/foo.d.ts\\", + \\"default\\": \\"./esm/foo.js\\" + }, + \\"default\\": { + \\"types\\": \\"./typings/foo.d.ts\\", + \\"default\\": \\"./esm/foo.js\\" + } + }, + \\"./package.json\\": \\"./package.json\\" + }, + \\"bin\\": { + \\"bbb\\": \\"cjs/log-the-world.js\\" + } + }" + `); + + expect(fse.existsSync(path.resolve(baseDistCPath, "cjs"))).toBeFalsy(); + expect(fse.existsSync(path.resolve(baseDistCPath, "esm"))).toBeFalsy(); + expect(await fse.readFile(files.c["typings/index.d.ts"], "utf8")) + .toMatchInlineSnapshot(` + "export declare type SomeType = \\"type\\"; + export interface SomeInterface { + } + " + `); + expect(await fse.readFile(files.c["package.json"], "utf8")) + .toMatchInlineSnapshot(` + "{ + \\"name\\": \\"c\\", + \\"main\\": \\"\\", + \\"typings\\": \\"typings/index.d.ts\\", + \\"typescript\\": { + \\"definition\\": \\"typings/index.d.ts\\" + } + }" + `); + + await execa("node", [binaryFolder, "check"], { + cwd: path.resolve(fixturesFolder, "simple-monorepo-pnpm") + }); +}); diff --git a/yarn.lock b/yarn.lock index 2254a5a6..c9f52d5b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -824,51 +824,6 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@rollup/plugin-json@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-6.0.0.tgz#199fea6670fd4dfb1f4932250569b14719db234a" - integrity sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w== - dependencies: - "@rollup/pluginutils" "^5.0.1" - -"@rollup/plugin-node-resolve@^13.3.0": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" - integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - deepmerge "^4.2.2" - is-builtin-module "^3.1.0" - is-module "^1.0.0" - resolve "^1.19.0" - -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@rollup/pluginutils@^4.1.2": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" - integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== - dependencies: - estree-walker "^2.0.1" - picomatch "^2.2.2" - -"@rollup/pluginutils@^5.0.1": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" - integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^2.0.2" - picomatch "^2.3.1" - "@sinclair/typebox@^0.24.1": version "0.24.19" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.19.tgz#5297278e0d8a1aea084685a3216074910ac6c113" @@ -928,16 +883,6 @@ dependencies: "@types/node" "*" -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/estree@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" - integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== - "@types/fs-extra@9.0.13": version "9.0.13" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" @@ -986,6 +931,11 @@ expect "^28.0.0" pretty-format "^28.0.0" +"@types/js-yaml@^4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" + integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== + "@types/lodash.get@4.4.7": version "4.4.7" resolved "https://registry.yarnpkg.com/@types/lodash.get/-/lodash.get-4.4.7.tgz#1ea63d8b94709f6bc9e231f252b31440abe312cf" @@ -998,11 +948,6 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440" integrity sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ== -"@types/minimatch@3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - "@types/minimist@^1.2.0": version "1.2.2" resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" @@ -1035,13 +980,6 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.2.tgz#fc8c2825e4ed2142473b4a81064e6e081463d1b3" integrity sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog== -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - "@types/semver@^6.0.0": version "6.2.3" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.2.3.tgz#5798ecf1bec94eaa64db39ee52808ec0693315aa" @@ -1132,6 +1070,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -1237,13 +1180,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -1288,18 +1224,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -builtin-modules@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -builtins@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" - integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== - dependencies: - semver "^7.0.0" - bundle-require@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-3.1.2.tgz#1374a7bdcb8b330a7ccc862ccbf7c137cc43ad27" @@ -1463,11 +1387,6 @@ commander@^4.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1583,11 +1502,6 @@ dependency-graph@^0.11.0: resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= - detect-indent@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" @@ -1610,14 +1524,6 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - dotenv@^8.1.0: version "8.6.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" @@ -1845,16 +1751,6 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.1, estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - execa@5.1.1, execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -1937,15 +1833,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-cache-dir@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -1970,7 +1857,7 @@ find-yarn-workspace-root2@1.2.16: micromatch "^4.0.2" pkg-dir "^4.2.0" -fs-extra@^10.0.0, fs-extra@^10.1.0: +fs-extra@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== @@ -2100,7 +1987,7 @@ globby@^11.0.0, globby@^11.0.3: merge2 "^1.4.1" slash "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -2269,13 +2156,6 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-builtin-module@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" - integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== - dependencies: - builtin-modules "^3.0.0" - is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" @@ -2324,11 +2204,6 @@ is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -2346,7 +2221,7 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: +is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= @@ -2827,6 +2702,13 @@ js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.6.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -2937,13 +2819,6 @@ lodash.startcase@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -2959,15 +2834,7 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -3048,13 +2915,6 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimatch@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== - dependencies: - brace-expansion "^2.0.1" - minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -3093,14 +2953,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - node-fetch@^2.5.0: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -3234,14 +3086,6 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -3282,7 +3126,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -3297,7 +3141,7 @@ pirates@^4.0.1, pirates@^4.0.4: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== -pkg-dir@^4.1.0, pkg-dir@^4.2.0: +pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -3451,7 +3295,7 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.10.0, resolve@^1.19.0, resolve@^1.20.0: +resolve@^1.10.0, resolve@^1.20.0: version "1.22.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== @@ -3472,32 +3316,6 @@ rimraf@3.0.2, rimraf@^3.0.0: dependencies: glob "^7.1.3" -rollup-plugin-generate-package-json@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-generate-package-json/-/rollup-plugin-generate-package-json-3.2.0.tgz#e9c1d358f2be6c58b49853af58205292d45a33ff" - integrity sha512-+Kq1kFVr+maxW/mZB+E+XuaieCXVZqjl2tNU9k3TtAMs3NOaeREa5sRHy67qKDmcnFtZZukIQ3dFCcnV+r0xyw== - dependencies: - read-pkg "^5.2.0" - write-pkg "^4.0.0" - -rollup-plugin-typescript2@^0.34.0: - version "0.34.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.34.1.tgz#c457f155a71d133c142689213fce78694e30d0be" - integrity sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw== - dependencies: - "@rollup/pluginutils" "^4.1.2" - find-cache-dir "^3.3.2" - fs-extra "^10.0.0" - semver "^7.3.7" - tslib "^2.4.0" - -rollup@^2.75.6: - version "2.75.6" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.6.tgz#ac4dc8600f95942a0180f61c7c9d6200e374b439" - integrity sha512-OEf0TgpC9vU6WGROJIk1JA3LR5vk/yvqlzxqdrE2CzzXnqKXNzbAwlWUXis8RS3ZPe7LAq+YUxsRa0l3r27MLA== - optionalDependencies: - fsevents "~2.3.2" - rollup@^3.2.5: version "3.7.5" resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.7.5.tgz#db580f8eda50237b0721ddea301fb981cd992933" @@ -3520,12 +3338,12 @@ safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.x, semver@^7.0.0, semver@^7.3.5, semver@^7.3.7: +semver@7.x, semver@^7.3.5: version "7.3.8" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== @@ -3602,13 +3420,6 @@ smartwrap@^2.0.2: wcwidth "^1.0.1" yargs "^15.1.0" -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= - dependencies: - is-plain-obj "^1.0.0" - source-map-support@0.5.13: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -3898,7 +3709,7 @@ ts-jest@28.0.8: semver "7.x" yargs-parser "^21.0.1" -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.4.0: +tslib@^2.0.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== @@ -3956,11 +3767,6 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" - integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== - type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -4125,15 +3931,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.4.2: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" @@ -4142,27 +3939,6 @@ write-file-atomic@^4.0.1: imurmurhash "^0.1.4" signal-exit "^3.0.7" -write-json-file@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" - integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== - dependencies: - detect-indent "^5.0.0" - graceful-fs "^4.1.15" - make-dir "^2.1.0" - pify "^4.0.1" - sort-keys "^2.0.0" - write-file-atomic "^2.4.2" - -write-pkg@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" - integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== - dependencies: - sort-keys "^2.0.0" - type-fest "^0.4.1" - write-json-file "^3.2.0" - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"