UNPKG

waka-pm

Version:

a pnpm supplement for enforcing consistent versions across all workspaces

117 lines 4.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RootDocument = exports.PackageDocument = exports.defaultWakaRoot = exports.defaultWakaPackage = exports.npmDepTypes = exports.rootSchema = exports.packageSchema = exports.dependencySchema = exports.ROOT_REGISTRY_VERSION = exports.INNER_PACKAGE_REF = void 0; const zod_1 = require("zod"); exports.INNER_PACKAGE_REF = '*'; exports.ROOT_REGISTRY_VERSION = 'root-version'; exports.dependencySchema = zod_1.z.string(); exports.packageSchema = zod_1.z.object({ dependencies: zod_1.z.record(zod_1.z.string(), exports.dependencySchema).optional(), devDependencies: zod_1.z.record(zod_1.z.string(), exports.dependencySchema).optional(), peerDependencies: zod_1.z.record(zod_1.z.string(), exports.dependencySchema).optional(), optionalDependencies: zod_1.z.record(zod_1.z.string(), exports.dependencySchema).optional(), }); exports.rootSchema = exports.packageSchema.extend({ rootDepRegistry: zod_1.z.record(zod_1.z.string(), exports.dependencySchema), }); const rootDepRegistryKey = 'rootDepRegistry'; exports.npmDepTypes = [ 'dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies', ]; exports.defaultWakaPackage = { dependencies: {}, devDependencies: {}, peerDependencies: {}, optionalDependencies: {}, }; exports.defaultWakaRoot = { rootDepRegistry: {}, dependencies: {}, devDependencies: {}, peerDependencies: {}, optionalDependencies: {}, }; class PackageDocument { content; static instanceFromDocument(content) { return new PackageDocument(content); } constructor(content) { this.content = content; } hasDependency(name, type = 'dependencies') { const deps = this.content.get(type); return deps?.has(name) ?? false; } getDependencyVersion(name, type = 'dependencies') { const deps = this.content.get(type); return deps?.get(name); } setDependencyVersion(name, version, type = 'dependencies') { const deps = this.content.get(type); if (!deps) { this.content.set(type, {}); } this.content.setIn([type, name], version); return this; } removeDependency(name, type = 'dependencies') { const deps = this.content.get(type); if (!deps) { return this; } this.content.deleteIn([type, name]); return this; } getDependencyNames(type = 'dependencies') { if (type === 'all') { return exports.npmDepTypes.flatMap((depType) => this.getDependencyNames(depType)); } const deps = this.content.get(type); const items = deps?.items ?? []; return items.map((i) => i?.key?.value).filter((key) => !!key) ?? []; } toString() { return this.content.toString(); } } exports.PackageDocument = PackageDocument; class RootDocument extends PackageDocument { static instanceFromDocument(content) { return new RootDocument(content); } hasRegisteredDep(name) { const deps = this.content.get(rootDepRegistryKey); return deps?.has(name) ?? false; } getRegisteredDepVersion(name) { const deps = this.content.get(rootDepRegistryKey); return deps?.get(name); } setRegisteredDependencyVersion(name, version) { const deps = this.content.get(rootDepRegistryKey); if (!deps) { this.content.set(rootDepRegistryKey, {}); } this.content.setIn([rootDepRegistryKey, name], version); return this; } removeRegisteredDependency(name) { const deps = this.content.get(rootDepRegistryKey); if (!deps) { return this; } this.content.deleteIn([rootDepRegistryKey, name]); return this; } getRegisteredDependencyNames() { const deps = this.content.get(rootDepRegistryKey); const items = deps?.items ?? []; return items.map((i) => i?.key?.value).filter((key) => !!key) ?? []; } } exports.RootDocument = RootDocument; //# sourceMappingURL=schema.js.map