@neodx/vfs
Version:
Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover
43 lines (42 loc) • 1.25 kB
JavaScript
import {
addPackageJsonDependencies as e,
removePackageJsonDependencies as n
} from '@neodx/pkg-misc';
import { fromKeys as a, toArray as i, identity as t } from '@neodx/std';
import { P as r, match as s } from 'ts-pattern';
import { c as o } from '../_internal/create-vfs-plugin-CTZbwgZU.mjs';
import { createJsonFileApi as p } from './json.mjs';
function c() {
return o('packageJson', e => ((e.packageJson = (n = 'package.json') => d(e, n)), e));
}
function d(o, c) {
let d = p(o, c),
g = async e => (e && (await d.write(e)), !!e);
return {
...d,
addDependencies: async n =>
g(
e(
await d.read(),
s(n)
.with(m, e => ({ dependencies: a(i(e), () => '*') }))
.with(r._, t)
.exhaustive()
)
),
removeDependencies: async e =>
g(
n(
await d.read(),
s(e)
.with(m, e => a(f, () => i(e)))
.with(r._, t)
.exhaustive()
)
)
};
}
let m = r.string.or(r.array(r.string)),
f = ['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'];
export { d as createVfsPackageJsonFileApi, c as packageJson };
//# sourceMappingURL=package-json.mjs.map