waka-pm
Version:
a pnpm supplement for enforcing consistent versions across all workspaces
117 lines • 4.16 kB
JavaScript
"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