@neodx/pkg-misc
Version:
Collection of utilities for common cases in package development - smart dependencies updates, simple formatting with auto-detection of prettier config, etc.
87 lines (86 loc) • 2.97 kB
JavaScript
var e = require('@neodx/std'),
n = require('semver'),
t = require('@neodx/fs'),
r = require('pathe');
const i = { '*': 2, next: 1, latest: 0, previous: -1, legacy: -2 };
function s(t, r) {
let s = e.hasOwn(i, t),
l = e.hasOwn(i, r);
return s && l ? i[t] > i[r] : !!s || !!l || n.gt(n.coerce(t), n.coerce(r));
}
function l(n, t) {
let r = e.entries(n).filter(([n, r]) => e.hasOwn(t, n) && s(r, t[n]));
return r.length > 0 ? Object.fromEntries(r) : null;
}
function o(n) {
let t = { ...n };
for (let n of a)
e.hasOwn(t, n) && (0 === e.keys(t[n]).length ? delete t[n] : (t[n] = e.sortObjectByKeys(t[n])));
return e.sortObjectByKeys(t);
}
const c = {
dependencies: ['dependencies', 'devDependencies'],
devDependencies: ['devDependencies', 'dependencies'],
peerDependencies: ['peerDependencies', 'dependencies'],
optionalDependencies: ['optionalDependencies', 'dependencies', 'peerDependencies']
},
a = e.keys(c);
async function u(e, n, i = p) {
let s = await d();
if (!s) return null;
let l = await s.resolveConfigFile(e),
o = l && r.resolve(l, '../.prettierignore'),
c = await s.resolveConfig(e, { editorconfig: !0 });
if (!c) return null;
let a = { filepath: e, ...c };
Object.assign(a, i(e, a));
let u = await s.getFileInfo(e, { ignorePath: o && (await t.isFile(o)) ? o : void 0 });
if (u.ignored || !u.inferredParser) return null;
try {
return s.format(n, a);
} catch (n) {
if (!(n instanceof Error)) throw n;
return console.warn(`Could not format ${e} with prettier. Error: "${n.message}"`), null;
}
}
const d = () => import('prettier').then(e => e.default ?? e).catch(() => null),
p = e => (e.endsWith('.swcrc') ? { parser: 'json' } : {});
(exports.addPackageJsonDependencies = function (n, t) {
let r = e
.entries(t)
.map(([t, r]) => {
var i;
let s = (function (n, t, r) {
let i = c[n];
return t.filter(n => i.every(t => !e.hasOwn(r[t] ?? {}, n)));
})(t, e.keys(r), n),
o = (i = n[t] ?? null) ? l(r, i) : null;
return s.length > 0 || o ? [t, e.filterObject(r, (e, n) => s.includes(n) || !!o?.[n])] : null;
})
.filter(e.isTruthy);
return r.length > 0
? o({ ...n, ...Object.fromEntries(r.map(([e, t]) => [e, { ...n[e], ...t }])) })
: null;
}),
(exports.getUpgradedDependenciesVersions = l),
(exports.isGreaterVersion = s),
(exports.removePackageJsonDependencies = function (n, t) {
let r = e
.entries(t)
.map(([t, r]) => {
let i = r.filter(r => e.hasOwn(n[t] ?? {}, r));
return i.length > 0 ? [t, i] : null;
})
.filter(e.isTruthy);
return r.length > 0
? o({
...n,
...Object.fromEntries(
r.map(([t, r]) => [t, e.filterObject(n[t], (e, n) => !r.includes(n))])
)
})
: null;
}),
(exports.sortPackageJson = o),
(exports.tryFormatPrettier = u);
//# sourceMappingURL=index.cjs.map