UNPKG

@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
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