UNPKG

@-xun/common-dummies

Version:

A collection of dummy projects, packages, and other testable structures

1,332 lines (1,331 loc) 28.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.dummyToProjectMetadata = dummyToProjectMetadata; exports.patchJsonObjectReaders = patchJsonObjectReaders; exports.repositories = void 0; require("core-js/modules/es.iterator.constructor.js"); require("core-js/modules/es.iterator.find.js"); require("core-js/modules/es.iterator.map.js"); var _nodePath = require("node:path"); var _fs = require("@-xun/fs"); var fs = _interopRequireWildcard(require("@-xun/project-fs")); var _projectTypes = require("@-xun/project-types"); var _error = require("./error.js"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } const DUMMY_REPO_DIR = (0, _fs.toAbsolutePath)(__dirname, '..', 'dummies', 'repositories'); const actualReadXPackageJsonAtRoot = fs.readXPackageJsonAtRoot; const actualReadJson = fs.readJson; const actualReadJsonc = fs.readJsonc; function dummyToProjectMetadata(repositoryName, cwdPackageName) { const rootPackage = { root: repositories[repositoryName].root, json: repositories[repositoryName].json, attributes: repositories[repositoryName].attributes }; const cwdPackage = (() => { if (cwdPackageName && cwdPackageName !== 'self') { const foundPackage = repositories[repositoryName].namedPackageMapData.find(([, entry]) => entry.json.name === cwdPackageName)?.[1]; if (foundPackage) { return foundPackage; } throw new Error(_error.ErrorMessage.PackageInvalid(cwdPackageName, repositoryName)); } return rootPackage; })(); const mockProjectMetadata = { type: repositories[repositoryName].attributes[_projectTypes.ProjectAttribute.Polyrepo] ? _projectTypes.ProjectAttribute.Polyrepo : _projectTypes.ProjectAttribute.Monorepo, rootPackage, cwdPackage, subRootPackages: repositories[repositoryName].namedPackageMapData.length || repositories[repositoryName].unnamedPackageMapData.length ? new Map() : undefined }; rootPackage.projectMetadata = cwdPackage.projectMetadata = mockProjectMetadata; if (mockProjectMetadata.subRootPackages) { mockProjectMetadata.subRootPackages = new Map(repositories[repositoryName].namedPackageMapData.map(([key, package_]) => { return [key, { ...package_, projectMetadata: mockProjectMetadata }]; })); mockProjectMetadata.subRootPackages.broken = repositories[repositoryName].brokenPackageRoots; mockProjectMetadata.subRootPackages.unnamed = new Map(repositories[repositoryName].unnamedPackageMapData.map(([key, package_]) => { return [key, { ...package_, projectMetadata: mockProjectMetadata }]; })); mockProjectMetadata.subRootPackages.all = Array.from(mockProjectMetadata.subRootPackages.values()).concat(Array.from(mockProjectMetadata.subRootPackages.unnamed.values())); } return mockProjectMetadata; } function patchJsonObjectReaders(spec, options) { jest.spyOn(fs, 'readXPackageJsonAtRoot').mockImplementation(async (root, options) => { const json = await actualReadXPackageJsonAtRoot(root, options); return finalize((0, _fs.toPath)(root, 'package.json'), json); }); fs.readXPackageJsonAtRoot.sync = jest.fn((root, options) => { const json = actualReadXPackageJsonAtRoot.sync(root, options); return finalize((0, _fs.toPath)(root, 'package.json'), json); }); jest.spyOn(fs, 'readJson').mockImplementation(async (path, options) => { const json = await actualReadJson(path, options); return finalize(path, json); }); fs.readJson.sync = jest.fn((path, options) => { const json = actualReadJson.sync(path, options); return finalize(path, json); }); jest.spyOn(fs, 'readJsonc').mockImplementation(async (path, options) => { const json = await actualReadJsonc(path, options); return finalize(path, json); }); fs.readJsonc.sync = jest.fn((path, options) => { const json = actualReadJsonc.sync(path, options); return finalize(path, json); }); return spec; function finalize(filePath, json) { const result = options?.replace === false ? { ...spec['*'], ...spec[filePath], ...json } : { ...(options?.replace ? {} : json), ...spec['*'], ...spec[filePath] }; return result; } } const repositories = exports.repositories = {}; repositories.repoThatDoesNotExist = { root: '/does/not/exist', json: { name: 'does-not-exist' }, attributes: {}, namedPackageMapData: [], unnamedPackageMapData: [], brokenPackageRoots: [] }; createDummyRepository({ repositoryName: 'goodHybridrepoSelfRef', prototypeRoot: 'good-hybridrepo-self-ref', attributes: { cjs: true, monorepo: true, hybridrepo: true, cli: true, private: true, vercel: true, webpack: true }, namedPackageMapData: [{ name: 'package-one', root: 'packages/pkg-1', attributes: { cjs: true, cli: true } }], unnamedPackageMapData: [] }); createDummyRepository({ repositoryName: 'badHybridrepoBadSpecifiers', prototypeRoot: 'bad-hybridrepo-bad-specifiers', attributes: { cjs: true, monorepo: true, hybridrepo: true, cli: true, private: true, vercel: true, webpack: true }, namedPackageMapData: [{ name: 'package-one', root: 'packages/pkg-1', attributes: { cjs: true, cli: true } }], unnamedPackageMapData: [] }); createDummyRepository({ repositoryName: 'badMonorepo', prototypeRoot: 'bad-monorepo', attributes: {}, unnamedPackageMapData: [{ name: 'empty', root: 'packages/0-empty', attributes: { cjs: true } }, { name: 'tsbuildinfo', root: 'packages/1-tsbuildinfo', attributes: { cjs: true } }, { name: 'bad-importer', root: 'packages/2-bad-importer', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'badMonorepoDuplicateName', prototypeRoot: 'bad-monorepo-duplicate-name', attributes: {} }); createDummyRepository({ repositoryName: 'badMonorepoDuplicateIdNamed', prototypeRoot: 'bad-monorepo-duplicate-id-named', attributes: {}, namedPackageMapData: [{ name: 'pkg-1', root: 'packages-1/pkg-1', attributes: { cjs: true } }, { name: 'pkg-2', root: 'packages-2/pkg-1', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'badMonorepoDuplicateIdUnnamed', prototypeRoot: 'bad-monorepo-duplicate-id-unnamed', attributes: {} }); createDummyRepository({ repositoryName: 'badMonorepoEmptyMdFiles', prototypeRoot: 'bad-monorepo-empty-md-files', attributes: { cjs: true, polyrepo: true }, unnamedPackageMapData: [{ name: 'md-empty', root: 'packages/md-empty', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'badMonorepoNextjsProject', prototypeRoot: 'bad-monorepo-nextjs-project', attributes: { cjs: true, monorepo: true, nextjs: true }, unnamedPackageMapData: [{ name: 'empty', root: 'packages/empty', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'badMonorepoNonPackageDir', prototypeRoot: 'bad-monorepo-non-package-dir', attributes: { cjs: true, polyrepo: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'pkgs/pkg-1', attributes: { cjs: true } }], brokenPackageRoots: ['pkgs/pkg-10', 'pkgs/pkg-100'] }); createDummyRepository({ repositoryName: 'badPolyrepo', prototypeRoot: 'bad-polyrepo', attributes: { cjs: true, polyrepo: true } }); createDummyRepository({ repositoryName: 'badPolyrepoBadType', prototypeRoot: 'bad-polyrepo-bad-type', attributes: {} }); createDummyRepository({ repositoryName: 'badPolyrepoConflictingAttributes', prototypeRoot: 'bad-polyrepo-conflicting-attributes', attributes: {} }); createDummyRepository({ repositoryName: 'badPolyrepoEmptyMdFiles', prototypeRoot: 'bad-polyrepo-empty-md-files', attributes: { cjs: true, polyrepo: true } }); createDummyRepository({ repositoryName: 'badPolyrepoEmptyPackageJson', prototypeRoot: 'bad-polyrepo-empty-package-json', attributes: { cjs: true, polyrepo: true } }); createDummyRepository({ repositoryName: 'badPolyrepoImporter', prototypeRoot: 'bad-polyrepo-importer', attributes: { cjs: true, polyrepo: true } }); createDummyRepository({ repositoryName: 'badPolyrepoNextjsProject', prototypeRoot: 'bad-polyrepo-nextjs-project', attributes: { cjs: true, polyrepo: true, nextjs: true } }); createDummyRepository({ repositoryName: 'badPolyrepoNonPackageDir', prototypeRoot: 'bad-polyrepo-non-package-dir', attributes: { cjs: true, polyrepo: true } }); createDummyRepository({ repositoryName: 'badPolyrepoTsbuildinfo', prototypeRoot: 'bad-polyrepo-tsbuildinfo', attributes: { cjs: true, polyrepo: true } }); createDummyRepository({ repositoryName: 'goodHybridrepo', prototypeRoot: 'good-hybridrepo', attributes: { cjs: true, monorepo: true, hybridrepo: true, cli: true, private: true, vercel: true, webpack: true }, namedPackageMapData: [{ name: 'cli', root: 'packages/cli', attributes: { cjs: true, cli: true } }, { name: 'private', root: 'packages/private', attributes: { cjs: true, private: true } }, { name: 'webpack', root: 'packages/webpack', attributes: { cjs: true, webpack: true } }], unnamedPackageMapData: [{ name: 'unnamed-cjs', root: 'packages/unnamed-cjs', attributes: { cjs: true, private: true } }, { name: 'unnamed-esm', root: 'packages/unnamed-esm', attributes: { esm: true } }] }); createDummyRepository({ repositoryName: 'goodHybridrepoComplexIgnore', prototypeRoot: 'good-hybridrepo-complex-ignore', attributes: { cjs: true, monorepo: true, hybridrepo: true, cli: true }, namedPackageMapData: [{ name: 'cli', root: 'packages/cli', attributes: { cjs: true, cli: true } }, { name: 'private', root: 'packages/private', attributes: { cjs: true, private: true } }, { name: 'webpack', root: 'packages/webpack', attributes: { cjs: true } }], unnamedPackageMapData: [{ name: 'unnamed-cjs', root: 'packages/unnamed-cjs', attributes: { cjs: true, private: true } }, { name: 'unnamed-esm', root: 'packages/unnamed-esm', attributes: { esm: true } }] }); createDummyRepository({ repositoryName: 'goodHybridrepoNotPrivate', prototypeRoot: 'good-hybridrepo-not-private', attributes: { cjs: true, monorepo: true, hybridrepo: true, cli: true, vercel: true, webpack: true }, namedPackageMapData: [{ name: 'cli', root: 'packages/cli', attributes: { cjs: true, cli: true } }, { name: 'private', root: 'packages/private', attributes: { cjs: true, private: true } }, { name: 'webpack', root: 'packages/webpack', attributes: { cjs: true, webpack: true } }], unnamedPackageMapData: [{ name: 'unnamed-cjs', root: 'packages/unnamed-cjs', attributes: { cjs: true, private: true } }, { name: 'unnamed-esm', root: 'packages/unnamed-esm', attributes: { esm: true } }] }); createDummyRepository({ repositoryName: 'goodHybridrepoMultiversal', prototypeRoot: 'good-hybridrepo-multiversal', attributes: { cjs: true, monorepo: true, hybridrepo: true, cli: true, private: true, vercel: true, webpack: true, multiversal: true }, namedPackageMapData: [{ name: 'cli', root: 'packages/cli', attributes: { cjs: true, cli: true, multiversal: true } }, { name: '@namespaced/webpack-common-config', root: 'packages/webpack', attributes: { cjs: true, webpack: true } }], unnamedPackageMapData: [{ name: 'private', root: 'packages/private', attributes: { cjs: true, private: true } }] }); createDummyRepository({ repositoryName: 'goodMonorepo', prototypeRoot: 'good-monorepo', attributes: { cjs: true, monorepo: true, private: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'packages/pkg-1', attributes: { cjs: true, cli: true } }, { name: '@namespaced/pkg', root: 'packages/pkg-2', attributes: { cjs: true, cli: true } }, { name: '@namespaced/importer', root: 'packages/pkg-import', attributes: { cjs: true } }], unnamedPackageMapData: [{ name: 'unnamed-pkg-1', root: 'packages/unnamed-pkg-1', attributes: { cjs: true } }, { name: 'unnamed-pkg-2', root: 'packages/unnamed-pkg-2', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'goodMonorepoSimilarIds', prototypeRoot: 'good-monorepo-similar-ids', attributes: { cjs: true, monorepo: true, private: true }, namedPackageMapData: [{ name: 'a', root: 'packages/a', attributes: { cjs: true, cli: true } }, { name: 'aaa', root: 'packages/aaa', attributes: { cjs: true, cli: true } }], unnamedPackageMapData: [{ name: 'a-unnamed', root: 'packages/a-unnamed', attributes: { cjs: true } }, { name: 'aaa-unnamed', root: 'packages/aaa-unnamed', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'goodMonorepoNoSrc', prototypeRoot: 'good-monorepo-no-src', attributes: { cjs: true, monorepo: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'packages/pkg-1', attributes: { cjs: true, cli: true } }, { name: '@namespaced/pkg', root: 'packages/pkg-2', attributes: { cjs: true, cli: true } }, { name: '@namespaced/importer', root: 'packages/pkg-import', attributes: { cjs: true } }], unnamedPackageMapData: [{ name: 'unnamed-pkg-1', root: 'packages/unnamed-pkg-1', attributes: { cjs: true } }, { name: 'unnamed-pkg-2', root: 'packages/unnamed-pkg-2', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'goodMonorepoNegatedPaths', prototypeRoot: 'good-monorepo-negated-paths', attributes: { cjs: true, monorepo: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'packages/pkg-1', attributes: { cjs: true } }, { name: '@namespace/pkg-3', root: 'packages/pkg-3-x', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'goodMonorepoNextjsProject', prototypeRoot: 'good-monorepo-nextjs-project', attributes: { cjs: true, monorepo: true, nextjs: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'packages/pkg-1', attributes: { cjs: true } }, { name: '@namespaced/pkg', root: 'packages/pkg-2', attributes: { cjs: true } }, { name: '@namespaced/importer', root: 'packages/pkg-import', attributes: { cjs: true } }], unnamedPackageMapData: [{ name: 'unnamed-pkg-1', root: 'packages/unnamed-pkg-1', attributes: { cjs: true } }, { name: 'unnamed-pkg-2', root: 'packages/unnamed-pkg-2', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'goodMonorepoSimplePaths', prototypeRoot: 'good-monorepo-simple-paths', attributes: { cjs: true, monorepo: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'pkgs/pkg-1', attributes: { cjs: true } }, { name: 'pkg-10', root: 'pkgs/pkg-10', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'goodMonorepoWeirdAbsolute', prototypeRoot: 'good-monorepo-weird-absolute', attributes: { cjs: true, monorepo: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'packages/pkg-1', attributes: { cjs: true } }, { name: 'pkg-2', root: 'packages/pkg-2', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'goodMonorepoWeirdBoneless', prototypeRoot: 'good-monorepo-weird-boneless', attributes: { cjs: true, monorepo: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'pkg-1', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'goodMonorepoWeirdOverlap', prototypeRoot: 'good-monorepo-weird-overlap', attributes: { cjs: true, monorepo: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'pkgs/pkg-1', attributes: { cjs: true } }, { name: 'pkg-2', root: 'pkgs/pkg-20', attributes: { cjs: true } }], brokenPackageRoots: ['pkgs', 'pkgs/pkg-1/dist', 'pkgs/pkg-1/src', 'pkgs/pkg-20/dist', 'pkgs/pkg-20/src'] }); createDummyRepository({ repositoryName: 'goodMonorepoWeirdSameNames', prototypeRoot: 'good-monorepo-weird-same-names', attributes: { cjs: true, monorepo: true }, namedPackageMapData: [{ name: 'good-monorepo-weird-same-names', root: 'packages/pkg-1', attributes: { cjs: true } }, { name: 'pkg-2', root: 'packages/pkg-2', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'goodMonorepoWeirdYarn', prototypeRoot: 'good-monorepo-weird-yarn', attributes: { cjs: true, monorepo: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'packages/pkg-1', attributes: { cjs: true } }, { name: 'pkg-2', root: 'packages/pkg-2', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'goodMonorepoWindows', prototypeRoot: 'good-monorepo-windows', attributes: { cjs: true, monorepo: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'packages/deep/pkg', attributes: { cjs: true } }, { name: 'pkg-2', root: 'packages/deep/wkg', attributes: { cjs: true } }] }); createDummyRepository({ repositoryName: 'goodPolyrepo', prototypeRoot: 'good-polyrepo', attributes: { cjs: true, polyrepo: true, vercel: true } }); createDummyRepository({ repositoryName: 'goodPolyrepoNoEnv', prototypeRoot: 'good-polyrepo-no-env', attributes: { cjs: true, polyrepo: true, vercel: true } }); createDummyRepository({ repositoryName: 'goodPolyrepoNoSrcYesDefaultEnv', prototypeRoot: 'good-polyrepo-no-src-yes-default-env', attributes: { cjs: true, polyrepo: true, vercel: true } }); createDummyRepository({ repositoryName: 'goodPolyrepoOnlyDefaultEnv', prototypeRoot: 'good-polyrepo-only-default-env', attributes: { cjs: true, polyrepo: true, vercel: true } }); createDummyRepository({ repositoryName: 'goodPolyrepoNextjsProject', prototypeRoot: 'good-polyrepo-nextjs-project', attributes: { esm: true, polyrepo: true, nextjs: true } }); createDummyRepository({ repositoryName: 'badHybridrepoTopologicalCycle', prototypeRoot: 'bad-hybridrepo-topological-cycle', attributes: { cjs: true, monorepo: true, hybridrepo: true }, namedPackageMapData: [{ name: 'cli', root: 'packages/cli', attributes: { cjs: true, cli: true } }, { name: 'public', root: 'packages/public', attributes: { cjs: true } }, { name: 'webpack', root: 'packages/webpack', attributes: { cjs: true } }], unnamedPackageMapData: [] }); createDummyRepository({ repositoryName: 'badHybridrepoTopologicalPrivate', prototypeRoot: 'bad-hybridrepo-topological-private', attributes: { cjs: true, monorepo: true, hybridrepo: true }, namedPackageMapData: [{ name: 'cli', root: 'packages/cli', attributes: { cjs: true, cli: true } }, { name: 'private', root: 'packages/private', attributes: { cjs: true, private: true } }, { name: 'webpack', root: 'packages/webpack', attributes: { cjs: true } }], unnamedPackageMapData: [] }); createDummyRepository({ repositoryName: 'goodHybridrepoTopological', prototypeRoot: 'good-hybridrepo-topological', attributes: { cjs: true, monorepo: true, hybridrepo: true }, namedPackageMapData: [{ name: 'cli', root: 'packages/cli', attributes: { cjs: true, cli: true } }, { name: 'public', root: 'packages/public', attributes: { cjs: true } }, { name: 'webpack', root: 'packages/webpack', attributes: { cjs: true } }], unnamedPackageMapData: [] }); createDummyRepository({ repositoryName: 'goodHybridrepoTopologicalPrivate', prototypeRoot: 'good-hybridrepo-topological-private', attributes: { cjs: true, monorepo: true, hybridrepo: true, private: true }, namedPackageMapData: [{ name: 'cli', root: 'packages/cli', attributes: { cjs: true, cli: true, private: true } }, { name: 'private', root: 'packages/private', attributes: { cjs: true, private: true } }, { name: 'random', root: 'packages/random', attributes: { cjs: true, private: true } }, { name: 'webpack', root: 'packages/webpack', attributes: { cjs: true } }], unnamedPackageMapData: [] }); createDummyRepository({ repositoryName: 'goodHybridrepoTopologicalSelfRef', prototypeRoot: 'good-hybridrepo-topological-self-ref', attributes: { cjs: true, monorepo: true, hybridrepo: true }, namedPackageMapData: [{ name: 'cli', root: 'packages/cli', attributes: { cjs: true, cli: true } }, { name: 'public', root: 'packages/public', attributes: { cjs: true } }, { name: 'webpack', root: 'packages/webpack', attributes: { cjs: true } }], unnamedPackageMapData: [] }); createDummyRepository({ repositoryName: 'badMonorepoTopologicalCycle', prototypeRoot: 'bad-monorepo-topological-cycle', attributes: { cjs: true, monorepo: true, private: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'packages/pkg-1', attributes: { cjs: true } }, { name: 'pkg-3', root: 'packages/pkg-3', attributes: { cjs: true } }, { name: 'pkg-4', root: 'packages/pkg-4', attributes: { cjs: true } }, { name: 'pkg-5', root: 'packages/pkg-5', attributes: { cjs: true } }, { name: '@namespaced/pkg', root: 'packages/pkg-2', attributes: { cjs: true } }, { name: '@namespaced/importer', root: 'packages/pkg-import', attributes: { cjs: true } }], unnamedPackageMapData: [] }); createDummyRepository({ repositoryName: 'badMonorepoTopologicalPrivate', prototypeRoot: 'bad-monorepo-topological-private', attributes: { cjs: true, monorepo: true, private: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'packages/pkg-1', attributes: { cjs: true } }, { name: 'pkg-3', root: 'packages/pkg-3', attributes: { cjs: true } }, { name: 'pkg-4', root: 'packages/pkg-4', attributes: { cjs: true, private: true } }, { name: 'pkg-5', root: 'packages/pkg-5', attributes: { cjs: true } }, { name: '@namespaced/pkg', root: 'packages/pkg-2', attributes: { cjs: true, private: true } }, { name: '@namespaced/importer', root: 'packages/pkg-import', attributes: { cjs: true, private: true } }], unnamedPackageMapData: [] }); createDummyRepository({ repositoryName: 'goodMonorepoTopological', prototypeRoot: 'good-monorepo-topological', attributes: { cjs: true, monorepo: true, private: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'packages/pkg-1', attributes: { cjs: true } }, { name: 'pkg-3', root: 'packages/pkg-3', attributes: { cjs: true } }, { name: 'pkg-4', root: 'packages/pkg-4', attributes: { cjs: true } }, { name: 'pkg-5', root: 'packages/pkg-5', attributes: { cjs: true } }, { name: '@namespaced/pkg', root: 'packages/pkg-2', attributes: { cjs: true } }, { name: '@namespaced/importer', root: 'packages/pkg-import', attributes: { cjs: true } }], unnamedPackageMapData: [] }); createDummyRepository({ repositoryName: 'goodMonorepoTopologicalPrivate', prototypeRoot: 'good-monorepo-topological-private', attributes: { cjs: true, monorepo: true, private: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'packages/pkg-1', attributes: { cjs: true, private: true } }, { name: 'pkg-3', root: 'packages/pkg-3', attributes: { cjs: true, private: true } }, { name: 'pkg-4', root: 'packages/pkg-4', attributes: { cjs: true, private: true } }, { name: 'pkg-5', root: 'packages/pkg-5', attributes: { cjs: true, private: true } }, { name: '@namespaced/pkg', root: 'packages/pkg-2', attributes: { cjs: true, private: true } }, { name: '@namespaced/importer', root: 'packages/pkg-import', attributes: { cjs: true, private: true } }], unnamedPackageMapData: [] }); createDummyRepository({ repositoryName: 'goodMonorepoTopologicalSelfRef', prototypeRoot: 'good-monorepo-topological-self-ref', attributes: { cjs: true, monorepo: true, private: true }, namedPackageMapData: [{ name: 'pkg-1', root: 'packages/pkg-1', attributes: { cjs: true } }, { name: 'pkg-3', root: 'packages/pkg-3', attributes: { cjs: true } }, { name: 'pkg-4', root: 'packages/pkg-4', attributes: { cjs: true } }, { name: 'pkg-5', root: 'packages/pkg-5', attributes: { cjs: true } }, { name: '@namespaced/pkg', root: 'packages/pkg-2', attributes: { cjs: true } }, { name: '@namespaced/importer', root: 'packages/pkg-import', attributes: { cjs: true } }], unnamedPackageMapData: [] }); createDummyRepository({ repositoryName: 'goodPolyrepoTopologicalPrivate', prototypeRoot: 'good-polyrepo-topological-private', attributes: { cjs: true, polyrepo: true, private: true } }); createDummyRepository({ repositoryName: 'goodPolyrepoTopologicalSelfRef', prototypeRoot: 'good-polyrepo-topological-self-ref', attributes: { cjs: true, polyrepo: true } }); function createDummyRepository({ repositoryName, prototypeRoot: prototypeRoot_, attributes, namedPackageMapData = [], unnamedPackageMapData = [], brokenPackageRoots = [] }) { const prototypeRoot = (0, _fs.toAbsolutePath)(DUMMY_REPO_DIR, prototypeRoot_); repositories[repositoryName] = { root: prototypeRoot, json: (() => { try { return require((0, _fs.toPath)(prototypeRoot, 'package.json')); } catch {} })() || {}, attributes, namedPackageMapData: namedPackageMapData.map(datum => expandDatumToEntry(datum)), unnamedPackageMapData: unnamedPackageMapData.map(datum => expandDatumToEntry(datum)), brokenPackageRoots: brokenPackageRoots.map(path => (0, _fs.toPath)(prototypeRoot, path)) }; function expandDatumToEntry({ name, root: subRoot, attributes }) { const root = (0, _fs.toPath)(prototypeRoot, subRoot); return [name, { id: (0, _nodePath.basename)(subRoot), root, relativeRoot: subRoot, json: require((0, _fs.toPath)(root, 'package.json')), attributes, projectMetadata: expect.anything() }]; } }