@-xun/common-dummies
Version:
A collection of dummy projects, packages, and other testable structures
1,332 lines (1,331 loc) • 28.9 kB
JavaScript
"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()
}];
}
}