@visulima/package 5.0.0-alpha.28 → 5.0.0-alpha.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/dist/lockfile.js +1 -1
- package/dist/monorepo.js +1 -1
- package/dist/package-json.js +3 -3
- package/dist/package-manager.d.ts +1 -1
- package/dist/package-manager.js +5 -5
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
## @visulima/package [5.0.0-alpha.29](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.28...@visulima/package@5.0.0-alpha.29) (2026-06-04)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* **lint:** clear pre-existing eslint rot across packages ([#674](https://github.com/visulima/visulima/issues/674)) ([5354253](https://github.com/visulima/visulima/commit/5354253b163bd50bcefaf8a3fddf831bdb5df32b))
|
|
6
|
+
* **package:** 4 bug fixes ([1e2fba6](https://github.com/visulima/visulima/commit/1e2fba6b0d048f3b90f4e0b428fd984d66f1431e))
|
|
7
|
+
|
|
8
|
+
### Tests
|
|
9
|
+
|
|
10
|
+
* fix cross-platform flakes in package + cerebro ([#676](https://github.com/visulima/visulima/issues/676)) ([d1afb4b](https://github.com/visulima/visulima/commit/d1afb4ba743cf18bdf9f02081539d70bdcda91e9))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Dependencies
|
|
14
|
+
|
|
15
|
+
* **@visulima/fs:** upgraded to 5.0.0-alpha.30
|
|
16
|
+
* **@visulima/path:** upgraded to 3.0.0-alpha.12
|
|
17
|
+
|
|
1
18
|
## @visulima/package [5.0.0-alpha.28](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.27...@visulima/package@5.0.0-alpha.28) (2026-06-02)
|
|
2
19
|
|
|
3
20
|
### Miscellaneous Chores
|
package/dist/lockfile.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var M=Object.defineProperty;var b=(n,e)=>M(n,"name",{value:e,configurable:!0});import{createRequire as P}from"node:module";import{findUp as N,findUpSync as R}from"@visulima/fs";const A=P(import.meta.url),k=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,F=b(n=>{if(typeof k<"u"&&k.versions&&k.versions.node){const[e,t]=k.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return k.getBuiltinModule(n)}return A(n)},"__cjs_getBuiltinModule"),{readFileSync:B}=F("node:fs"),{readFile:C}=F("node:fs/promises");var T=Object.defineProperty,l=b((n,e)=>T(n,"name",{value:e,configurable:!0}),"g");const U={sha256:"sha256",sha384:"sha384",sha512:"sha512"},I=1024,q=/^[A-Z0-9+/]+={0,2}$/i,Y=/.*node_modules\/((?:@[^/]+\/)?[^/]+)$/,h=/^['"]/,y=/['"]$/,z=/^[a-z][a-zA-Z0-9]*:\s*$/m,J=/resolution:\s*\{[^}]*integrity:\s*([^,}\s]+)/,Z=/^["']?((?:@[^/@"']+\/)?[^@"'\n]+)@[^\n]+\n((?:[\t ][^\n]*(?:\n|$))+)/gm,K=/^\s+version:?\s+"?([^"\n]+)"?/m,G=/^\s+integrity[\s:]+"?([^"\s]+)"?/m,x=l(n=>{if(n.length>I)return;const e=n.indexOf("-");if(e<=0)return;const t=U[n.slice(0,e).toLowerCase()];if(!t)return;const s=n.slice(e+1);if(q.test(s))try{const r=Buffer.from(s,"base64");return r.length===0?void 0:{algorithm:t,hex:r.toString("hex")}}catch{return}},"decodeSriIntegrity"),w=l((n,e,t)=>{const s=`${t.name}@${t.version}`;e.has(s)||(e.add(s),n.push(t))},"pushUniqueEntry"),m=l((n,e,t)=>{t&&Object.keys(t).length>0&&(n[e]={...t})},"copyDepMap"),g=l(n=>{if(!n)return;const e={};for(const[t,s]of Object.entries(n))e[t]=[s];return Object.keys(e).length>0?e:void 0},"liftDepMap"),H=l(n=>{const e=[],t=new Set;let s;try{s=JSON.parse(n)}catch{return e}if(!s.packages)return e;for(const[r,o]of Object.entries(s.packages)){if(!r||!o.version)continue;const p=Y.exec(r);if(!p?.[1])continue;const i=o.name??p[1];if(i.startsWith("."))continue;const c={name:i,version:o.version};if(o.integrity){const a=x(o.integrity);a&&(c.integrity=a)}m(c,"dependencies",g(o.dependencies)),m(c,"peerDependencies",g(o.peerDependencies)),m(c,"optionalDependencies",g(o.optionalDependencies)),w(e,t,c)}return e},"parseNpmLockFile"),L=l(n=>{let e=n.trim();e.startsWith("/")&&(e=e.slice(1)),e=e.replace(h,"").replace(y,"");const t=e.indexOf("(");t>0&&(e=e.slice(0,t));const s=e.lastIndexOf("@");if(s<=0)return;const r=e.slice(0,s),o=e.slice(s+1);if(!(!r||!o||o.startsWith("link:")||o.startsWith("workspace:")||o.startsWith("file:")))return{name:r,version:o}},"splitPnpmPackageKey"),$=l((n,e)=>{const t=new RegExp(String.raw`^${e}:\s*$`,"m").exec(n);if(!t)return;const s=t.index+t[0].length,r=z.exec(n.slice(s));return n.slice(s,r?s+r.index:n.length)},"sliceTopLevelSection"),Q=l(n=>{const e=new Map,t=$(n,"snapshots");if(!t)return e;const s=/^ {2}(['"]?[^\s:][^:\n]*?['"]?):\s*\n((?: {4}[^\n]*\n?)+)/gm;let r;for(;(r=s.exec(t)??void 0)!==void 0;){const o=L(r[1]);if(!o)continue;const p=`${o.name}@${o.version}`,i=r[2],c=e.get(p)??{};for(const a of["dependencies","peerDependencies","optionalDependencies"]){const d=v(i,a);if(!d)continue;const f=c[a]??{};for(const[u,E]of Object.entries(d)){const D=f[u]??[];for(const S of E)D.includes(S)||D.push(S);f[u]=D}c[a]=f}e.set(p,c)}return e},"parsePnpmSnapshotEdges"),V=l(n=>{const e=[],t=new Set,s=$(n,"packages");if(!s)return e;const r=Q(n),o=/^ {2}(['"]?[^\s:][^:\n]*?['"]?):\s*\n((?: {4}[^\n]*\n?)+)/gm;let p;for(;(p=o.exec(s)??void 0)!==void 0;){const i=L(p[1]);if(!i)continue;const c=p[2],a=J.exec(c),d={name:i.name,version:i.version};if(a?.[1]){const u=x(a[1]);u&&(d.integrity=u)}const f=r.get(`${i.name}@${i.version}`);m(d,"dependencies",f?.dependencies??v(c,"dependencies")),m(d,"peerDependencies",f?.peerDependencies??v(c,"peerDependencies")),m(d,"optionalDependencies",f?.optionalDependencies??v(c,"optionalDependencies")),w(e,t,d)}return e},"parsePnpmLockFile"),v=l((n,e)=>{const t=new RegExp(String.raw`^ {4}${e}:\s*\n((?: {6,}[^\n]*\n?)+)`,"m").exec(n);if(!t?.[1])return;const s={},r=/^ {6}([^\s:]+):\s*([^\n]+)/gm;let o;for(;(o=r.exec(t[1])??void 0)!==void 0;){const p=o[1].replace(h,"").replace(y,"");let i=o[2].trim();i=i.replace(h,"").replace(y,"");const c=i.indexOf("(");if(c>0&&(i=i.slice(0,c).trim()),!p||!i)continue;const a=s[p]??[];a.includes(i)||a.push(i),s[p]=a}return Object.keys(s).length>0?s:void 0},"extractPnpmDependencyMap"),X=l(n=>{const e=[],t=new Set,s=Z;s.lastIndex=0;let r;for(;(r=s.exec(n)??void 0)!==void 0;){const o=r[1].replace(h,"").replace(y,"");if(!o)continue;const p=r[2],i=K.exec(p);if(!i?.[1])continue;const c={name:o,version:i[1].trim()},a=G.exec(p);if(a?.[1]){const d=x(a[1]);d&&(c.integrity=d)}m(c,"dependencies",j(p,"dependencies")),m(c,"peerDependencies",j(p,"peerDependencies")),m(c,"optionalDependencies",j(p,"optionalDependencies")),w(e,t,c)}return e},"parseYarnLockFile"),j=l((n,e)=>{const t=new RegExp(String.raw`^ {2}${e}:\s*\n((?: {4,}[^\n]*\n?)+)`,"m").exec(n);if(!t?.[1])return;const s={},r=/^ {4}(['"]?[^\s:'"]+['"]?)\s*(?::\s*)?['"]([^'"\n]+)['"]/gm;let o;for(;(o=r.exec(t[1])??void 0)!==void 0;){const p=o[1].replace(h,"").replace(y,""),i=o[2];if(p&&i){const c=s[p]??[];c.includes(i)||c.push(i),s[p]=c}}return Object.keys(s).length>0?s:void 0},"extractYarnDependencyMap"),ee=/,(?=\s*[}\]])/g,ne=l(n=>{const e=[],t=new Set;let s;try{s=JSON.parse(n.replaceAll(ee,""))}catch{return e}if(!s.packages)return e;for(const r of Object.values(s.packages)){const o=r[0];if(typeof o!="string")continue;const p=o.indexOf("@",1);if(p<=0)continue;const i=o.slice(0,p),c=o.slice(p+1);if(!i||!c||c.startsWith("workspace:")||c.startsWith("link:")||c.startsWith("file:"))continue;const a={name:i,version:c},d=r[3];if(typeof d=="string"&&d.length>0){const u=x(d);u&&(a.integrity=u)}const f=r[2];if(f&&typeof f=="object"&&!Array.isArray(f)){const u=f;m(a,"dependencies",g(u.dependencies)),m(a,"peerDependencies",g(u.peerDependencies)),m(a,"optionalDependencies",g(u.optionalDependencies))}w(e,t,a)}return e},"parseBunLockFile"),O=l(n=>{if(n.endsWith("pnpm-lock.yaml"))return"pnpm";if(n.endsWith("package-lock.json"))return"npm";if(n.endsWith("yarn.lock"))return"yarn";if(n.endsWith("bun.lock"))return"bun"},"inferLockFileType"),_=l((n,e)=>{switch(e){case"bun":return ne(n);case"npm":return H(n);case"pnpm":return V(n);case"yarn":return X(n);default:return[]}},"parseLockFileContent"),W=["pnpm-lock.yaml","package-lock.json","yarn.lock","bun.lock"],ce=l(async n=>{const e=await N(W,{type:"file",...n&&{cwd:n}});if(!e)throw new Error("Could not find a supported lock file (pnpm-lock.yaml, package-lock.json, yarn.lock, bun.lock)");const t=O(e);if(!t)throw new Error(`Unsupported lock file: ${e}`);const s=await C(e,"utf8");return{entries:_(s,t),path:e,type:t}},"parseLockFile"),re=l(n=>{const e=R(W,{type:"file",...n&&{cwd:n}});if(!e)throw new Error("Could not find a supported lock file (pnpm-lock.yaml, package-lock.json, yarn.lock, bun.lock)");const t=O(e);if(!t)throw new Error(`Unsupported lock file: ${e}`);return{entries:_(B(e,"utf8"),t),path:e,type:t}},"parseLockFileSync");export{x as decodeSriIntegrity,ne as parseBunLockFile,ce as parseLockFile,_ as parseLockFileContent,re as parseLockFileSync,H as parseNpmLockFile,V as parsePnpmLockFile,X as parseYarnLockFile};
|
package/dist/monorepo.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var l=Object.defineProperty;var p=(e,n)=>l(e,"name",{value:n,configurable:!0});import{createRequire as y}from"node:module";import{findUp as j,readJson as
|
|
1
|
+
var l=Object.defineProperty;var p=(e,n)=>l(e,"name",{value:n,configurable:!0});import{createRequire as y}from"node:module";import{findUp as j,readJson as w,findUpSync as b,readJsonSync as k}from"@visulima/fs";import{NotFoundError as u}from"@visulima/fs/error";import{dirname as d,join as a}from"@visulima/path";import{findPackageManager as _,findPackageManagerSync as M}from"./package-manager.js";const g=y(import.meta.url),i=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,h=p(e=>{if(typeof i<"u"&&i.versions&&i.versions.node){const[n,t]=i.versions.node.split(".").map(Number);if(n>22||n===22&&t>=3||n===20&&t>=16)return i.getBuiltinModule(e)}return g(e)},"__cjs_getBuiltinModule"),{existsSync:c,readFileSync:f}=h("node:fs");var S=Object.defineProperty,m=p((e,n)=>S(e,"name",{value:n,configurable:!0}),"i");const E=m(async e=>{const n=await j(["lerna.json","turbo.json"],{type:"file",...e&&{cwd:e}});if(n?.endsWith("lerna.json")){const o=await w(n);if(o&&typeof o=="object"&&!Array.isArray(o)){const r=o;if(r.useWorkspaces||r.packages)return{path:d(n),strategy:"lerna"}}}const t=n?.endsWith("turbo.json");try{const{packageManager:o,path:r}=await _(e);if(["npm","yarn"].includes(o)){const s=a(r,"package.json");if(c(s)&&f(a(r,"package.json"),"utf8").includes("workspaces"))return{path:r,strategy:t?"turbo":o}}else if(o==="pnpm"){const s=a(r,"pnpm-workspace.yaml");if(c(s))return{path:r,strategy:t?"turbo":"pnpm"}}}catch(o){if(!(o instanceof u))throw o}throw new Error(`No monorepo root could be found upwards from the directory ${e??process.cwd()} using lerna, yarn, pnpm, or npm as indicators.`)},"findMonorepoRoot"),T=m(e=>{const n=b(["lerna.json","turbo.json"],{type:"file",...e&&{cwd:e}});if(n?.endsWith("lerna.json")){const o=k(n);if(o.useWorkspaces||o.packages)return{path:d(n),strategy:"lerna"}}const t=n?.endsWith("turbo.json");try{const{packageManager:o,path:r}=M(e);if(["npm","yarn"].includes(o)){const s=a(r,"package.json");if(c(s)&&f(a(r,"package.json"),"utf8").includes("workspaces"))return{path:r,strategy:t?"turbo":o}}else if(o==="pnpm"){const s=a(r,"pnpm-workspace.yaml");if(c(s))return{path:r,strategy:t?"turbo":"pnpm"}}}catch(o){if(!(o instanceof u))throw o}throw new Error(`No monorepo root could be found upwards from the directory ${e??process.cwd()} using lerna, yarn, pnpm, or npm as indicators.`)},"findMonorepoRootSync");export{E as findMonorepoRoot,T as findMonorepoRootSync};
|
package/dist/package-json.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
2
|
-
${g(["gray"],"→")} ${s(r)}`),a(r)})})},"confirm"),
|
|
1
|
+
var X=Object.defineProperty;var p=(e,r)=>X(e,"name",{value:r,configurable:!0});import{createRequire as U}from"node:module";import{installPackage as H}from"@antfu/install-pkg";import{readJsonSync as Q,readFileSync as Z,findUp as ee,findUpSync as re,writeJson as ne,writeJsonSync as te,readJson as oe,readFile as se}from"@visulima/fs";import{NotFoundError as T}from"@visulima/fs/error";import{parseJson as _,toPath as S}from"@visulima/fs/utils";import{readYamlSync as ae,readYaml as ie}from"@visulima/fs/yaml";import{join as C}from"@visulima/path";import D from"json5";import ce from"normalize-package-data";import{readPnpmCatalogsSync as F,resolveCatalogReferences as v,readPnpmCatalogs as O}from"./pnpm.js";const L=U(import.meta.url),b=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,A=p(e=>{if(typeof b<"u"&&b.versions&&b.versions.node){const[r,t]=b.versions.node.split(".").map(Number);if(r>22||r===22&&t>=3||r===20&&t>=16)return b.getBuiltinModule(e)}return L(e)},"__cjs_getBuiltinModule"),{existsSync:N}=A("node:fs"),{createInterface:fe}=A("node:readline"),{styleText:g}=A("node:util");var pe=Object.defineProperty,u=p((e,r)=>pe(e,"name",{value:r,configurable:!0}),"f");const d=u(e=>{const r=typeof e;return e!==null&&(r==="object"||r==="function")},"isObject"),le=u(e=>{if(!d(e))return!1;for(const r in e)if(Object.hasOwn(e,r))return!1;return!0},"isEmptyObject"),W=new Set(["__proto__","prototype","constructor"]),B=1e6,ue=u(e=>e>="0"&&e<="9","isDigit");function $(e){if(e==="0")return!0;if(/^[1-9]\d*$/.test(e)){const r=Number.parseInt(e,10);return r<=Number.MAX_SAFE_INTEGER&&r<=B}return!1}p($,"p$1");u($,"shouldCoerceToNumber");function P(e,r){return W.has(e)?!1:(e&&$(e)?r.push(Number.parseInt(e,10)):r.push(e),!0)}p(P,"y$1");u(P,"processSegment");function R(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);const r=[];let t="",n="start",o=!1,s=0;for(const a of e){if(s++,o){t+=a,o=!1;continue}if(a==="\\"){if(n==="index")throw new Error(`Invalid character '${a}' in an index at position ${s}`);if(n==="indexEnd")throw new Error(`Invalid character '${a}' after an index at position ${s}`);o=!0,n=n==="start"?"property":n;continue}switch(a){case".":{if(n==="index")throw new Error(`Invalid character '${a}' in an index at position ${s}`);if(n==="indexEnd"){n="property";break}if(!P(t,r))return[];t="",n="property";break}case"[":{if(n==="index")throw new Error(`Invalid character '${a}' in an index at position ${s}`);if(n==="indexEnd"){n="index";break}if(n==="property"||n==="start"){if((t||n==="property")&&!P(t,r))return[];t=""}n="index";break}case"]":{if(n==="index"){if(t==="")t=(r.pop()||"")+"[]",n="property";else{const i=Number.parseInt(t,10);!Number.isNaN(i)&&Number.isFinite(i)&&i>=0&&i<=Number.MAX_SAFE_INTEGER&&i<=B&&t===String(i)?r.push(i):r.push(t),t="",n="indexEnd"}break}if(n==="indexEnd")throw new Error(`Invalid character '${a}' after an index at position ${s}`);t+=a;break}default:{if(n==="index"&&!ue(a))throw new Error(`Invalid character '${a}' in an index at position ${s}`);if(n==="indexEnd")throw new Error(`Invalid character '${a}' after an index at position ${s}`);n==="start"&&(n="property"),t+=a}}}switch(o&&(t+="\\"),n){case"property":{if(!P(t,r))return[];break}case"index":throw new Error("Index was not closed");case"start":{r.push("");break}}return r}p(R,"parsePath");u(R,"parsePath");function k(e){if(typeof e=="string")return R(e);if(Array.isArray(e)){const r=[];for(const[t,n]of e.entries()){if(typeof n!="string"&&typeof n!="number")throw new TypeError(`Expected a string or number for path segment at index ${t}, got ${typeof n}`);if(typeof n=="number"&&!Number.isFinite(n))throw new TypeError(`Path segment at index ${t} must be a finite number, got ${n}`);if(W.has(n))return[];typeof n=="string"&&$(n)?r.push(Number.parseInt(n,10)):r.push(n)}return r}return[]}p(k,"d");u(k,"normalizePath");function y(e,r,t){if(!d(e)||typeof r!="string"&&!Array.isArray(r))return t===void 0?e:t;const n=k(r);if(n.length===0)return t;for(let o=0;o<n.length;o++){const s=n[o];if(e=e[s],e==null){if(o!==n.length-1)return t;break}}return e===void 0?t:e}p(y,"getProperty");u(y,"getProperty");function Y(e,r,t){if(!d(e)||typeof r!="string"&&!Array.isArray(r))return e;const n=e,o=k(r);if(o.length===0)return e;for(let s=0;s<o.length;s++){const a=o[s];if(s===o.length-1)e[a]=t;else if(!d(e[a])){const i=typeof o[s+1]=="number";e[a]=i?[]:{}}e=e[a]}return n}p(Y,"setProperty");u(Y,"setProperty");function ge(e,r){if(!d(e)||typeof r!="string"&&!Array.isArray(r))return!1;const t=k(r);if(t.length===0)return!1;for(let n=0;n<t.length;n++){const o=t[n];if(n===t.length-1)return Object.hasOwn(e,o)?(delete e[o],!0):!1;if(e=e[o],!d(e))return!1}}p(ge,"deleteProperty");u(ge,"deleteProperty");function h(e,r){if(!d(e)||typeof r!="string"&&!Array.isArray(r))return!1;const t=k(r);if(t.length===0)return!1;for(const n of t){if(!d(e)||!(n in e))return!1;e=e[n]}return!0}p(h,"hasProperty");u(h,"hasProperty");function J(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return e.replaceAll(/[\\.[]/g,String.raw`\$&`)}p(J,"escapePath");u(J,"escapePath");function M(e){const r=Object.entries(e);return Array.isArray(e)?r.map(([t,n])=>[$(t)?Number.parseInt(t,10):t,n]):r}p(M,"m$2");u(M,"normalizeEntries");function q(e,r={}){if(!Array.isArray(e))throw new TypeError(`Expected an array, got ${typeof e}`);const{preferDotForIndices:t=!1}=r,n=[];for(const[o,s]of e.entries()){if(typeof s!="string"&&typeof s!="number")throw new TypeError(`Expected a string or number for path segment at index ${o}, got ${typeof s}`);if(typeof s=="number")if(!Number.isInteger(s)||s<0){const a=J(String(s));n.push(o===0?a:`.${a}`)}else t&&o>0?n.push(`.${s}`):n.push(`[${s}]`);else if(typeof s=="string")if(s==="")o===0||n.push(".");else if($(s)){const a=Number.parseInt(s,10);t&&o>0?n.push(`.${a}`):n.push(`[${a}]`)}else{const a=J(s);n.push(o===0?a:`.${a}`)}}return n.join("")}p(q,"stringifyPath");u(q,"stringifyPath");function*I(e,r=[],t=new Set){if(!d(e)||le(e)){r.length>0&&(yield q(r));return}if(!t.has(e)){t.add(e);for(const[n,o]of M(e))r.push(n),yield*I(o,r,t),r.pop();t.delete(e)}}p(I,"x");u(I,"deepKeysIterator");function de(e){return[...I(e)]}p(de,"deepKeys");u(de,"deepKeys");function ye(e){const r={};if(!d(e))return r;for(const[t,n]of Object.entries(e))Y(r,t,n);return r}p(ye,"unflatten");u(ye,"unflatten");var he=Object.defineProperty,x=p((e,r)=>he(e,"name",{value:r,configurable:!0}),"i");const me=x(async e=>{const{default:r=!1,message:t,transformer:n}=e,o=x(a=>{const i=g(["cyan","bold"],"?"),c=g(["bold"],a),f=r?`${g(["greenBright"],"Y")}${g(["gray"],"/n")}`:`y/${g(["yellowBright"],"N")}`;return`${i} ${c} ${g(["gray"],`(${f})`)}`},"formatMessage"),s=x(a=>n?n(a):a?g(["greenBright"],"Yes"):g(["yellowBright"],"No"),"formatAnswer");return new Promise(a=>{const i=fe({input:process.stdin,output:process.stdout}),c=o(t);i.question(c,f=>{i.close();const w=f.trim().toLowerCase();if(w===""){a(r);return}if(w==="y"||w==="yes"){console.log(`${g(["greenBright"],"✓")} ${s(!0)}`),a(!0);return}if(w==="n"||w==="no"){console.log(`${g(["yellowBright"],"✗")} ${s(!1)}`),a(!1);return}console.log(`${g(["gray"],"→")} ${s(r)}`),a(r)}),i.on("SIGINT",()=>{i.close(),console.log(`
|
|
2
|
+
${g(["gray"],"→")} ${s(r)}`),a(r)})})},"confirm"),we=typeof process.stdout<"u"&&!process.versions.deno&&!globalThis.window;var be=Object.defineProperty,l=p((e,r)=>be(e,"name",{value:r,configurable:!0}),"l");const z=/, ([^,]*)$/,E=new Map,G=new Map,m=l((e,r={})=>`${e}|s${r.strict?1:0}|c${r.resolveCatalogs?1:0}|j${r.json5!==!1?1:0}|y${r.yaml!==!1?1:0}|w${r.ignoreWarnings?1:0}`,"buildReadCacheKey");class $e extends Error{static{p(this,"V")}static{l(this,"PackageJsonValidationError")}constructor(r){super(`The following warnings were encountered while normalizing package data:
|
|
3
3
|
- ${r.join(`
|
|
4
|
-
- `)}`),this.name="PackageJsonValidationError"}}const
|
|
4
|
+
- `)}`),this.name="PackageJsonValidationError"}}const j=l((e,r,t=[])=>{const n=[];if(ce(e,o=>{n.push(o)},r),r&&n.length>0){const o=n.filter(s=>!t.some(a=>a instanceof RegExp?a.test(s):a===s));if(o.length>0)throw new $e(o)}return e},"normalizeInput"),ke=l(async e=>await ie(e),"parseYamlFile"),Pe=l(e=>ae(e),"parseYamlFileSync"),Ee=l(async e=>{const r=await se(e);return D.parse(r)},"parseJson5File"),ve=l(e=>{const r=Z(e);return D.parse(r)},"parseJson5FileSync"),K=l(async(e,r)=>r?.yaml!==!1&&(e.endsWith(".yaml")||e.endsWith(".yml"))?ke(e):r?.json5!==!1&&e.endsWith(".json5")?Ee(e):oe(e),"parsePackageFile"),V=l((e,r)=>r?.yaml!==!1&&(e.endsWith(".yaml")||e.endsWith(".yml"))?Pe(e):r?.json5!==!1&&e.endsWith(".json5")?ve(e):Q(e),"parsePackageFileSync"),Fe=l(async(e,r={})=>{const t={type:"file"};e&&(t.cwd=e);const n=["package.json"];r.yaml!==!1&&n.push("package.yaml","package.yml"),r.json5!==!1&&n.push("package.json5");let o;for(const f of n)if(o=await ee(f,t),o)break;if(!o)throw new T(`No such file or directory, for ${n.join(", ").replace(z," or $1")} found.`);const s=r.cache&&typeof r.cache!="boolean"?r.cache:G,a=m(o,r);if(r.cache&&s.has(a))return s.get(a);const i=await K(o,r);if(r.resolveCatalogs){const f=await O(o);f&&v(i,f)}j(i,r.strict??!1,r.ignoreWarnings);const c={packageJson:i,path:o};return r.cache&&s.set(a,c),c},"findPackageJson"),Oe=l((e,r={})=>{const t={type:"file"};e&&(t.cwd=e);const n=["package.json"];r.yaml!==!1&&n.push("package.yaml","package.yml"),r.json5!==!1&&n.push("package.json5");let o;for(const f of n)if(o=re(f,t),o)break;if(!o)throw new T(`No such file or directory, for ${n.join(", ").replace(z," or $1")} found.`);const s=r.cache&&typeof r.cache!="boolean"?r.cache:G,a=m(o,r);if(r.cache&&s.has(a))return s.get(a);const i=V(o,r);if(r.resolveCatalogs){const f=F(o);f&&v(i,f)}j(i,r.strict??!1,r.ignoreWarnings);const c={packageJson:i,path:o};return r.cache&&s.set(a,c),c},"findPackageJsonSync"),We=l(async(e,r={})=>{const{cwd:t,...n}=r,o=S(t??process.cwd());await ne(C(o,"package.json"),e,n)},"writePackageJson"),Be=l((e,r={})=>{const{cwd:t,...n}=r,o=S(t??process.cwd());te(C(o,"package.json"),e,n)},"writePackageJsonSync"),Re=l((e,r)=>{const t=typeof e=="object"&&!Array.isArray(e);if(!t&&typeof e!="string")throw new TypeError("`packageFile` should be either an `object` or a `string`.");let n,o=!1,s;if(t)n=structuredClone(e);else if(N(e)){s=e;const i=r?.cache&&typeof r.cache!="boolean"?r.cache:E,c=m(s,r);if(r?.cache&&i.has(c))return i.get(c);n=V(s,r),o=!0}else n=_(e);if(r?.resolveCatalogs)if(o){const i=F(e);i&&v(n,i)}else throw new Error("The 'resolveCatalogs' option can only be used on a file path.");j(n,r?.strict??!1,r?.ignoreWarnings);const a=n;return o&&r?.cache&&(typeof r.cache=="boolean"?E:r.cache).set(m(s,r),a),a},"parsePackageJsonSync"),Ye=l(async(e,r)=>{const t=typeof e=="object"&&!Array.isArray(e);if(!t&&typeof e!="string")throw new TypeError("`packageFile` should be either an `object` or a `string`.");let n,o=!1,s;if(t)n=structuredClone(e);else if(N(e)){s=e;const i=r?.cache&&typeof r.cache!="boolean"?r.cache:E,c=m(s,r);if(r?.cache&&i.has(c))return i.get(c);n=await K(s,r),o=!0}else n=_(e);if(r?.resolveCatalogs)if(o){const i=await O(e);i&&v(n,i)}else throw new Error("The 'resolveCatalogs' option can only be used on a file path.");j(n,r?.strict??!1,r?.ignoreWarnings);const a=n;return o&&r?.cache&&(typeof r.cache=="boolean"?E:r.cache).set(m(s,r),a),a},"parsePackageJson"),Me=l((e,r,t)=>y(e,r,t),"getPackageJsonProperty"),qe=l((e,r)=>h(e,r),"hasPackageJsonProperty"),ze=l((e,r,t)=>{const n=y(e,"dependencies",{}),o=y(e,"devDependencies",{}),s=y(e,"peerDependencies",{}),a={...n,...o,...t?.peerDeps===!1?{}:s};for(const i of r)if(h(a,i))return!0;return!1},"hasPackageJsonAnyDependency"),Ge=l(async(e,r,t="dependencies",n={})=>{const o=y(e,"dependencies",{}),s=y(e,"devDependencies",{}),a=y(e,"peerDependencies",{}),i=[],c={deps:!0,devDeps:!0,peerDeps:!1,...n};for(const f of r)c.deps&&h(o,f)||c.devDeps&&h(s,f)||c.peerDeps&&h(a,f)||i.push(f);if(i.length!==0){if(process.env.CI||we&&!process.stdout.isTTY){const f=`Skipping package installation for [${r.join(", ")}] because the process is not interactive.`;if(n.throwOnWarn)throw new Error(f);n.logger?.warn?n.logger.warn(f):console.warn(f);return}if(typeof c.confirm?.message=="function"&&(c.confirm.message=c.confirm.message(i)),c.confirm?.message===void 0){const f=`${i.length===1?"Package is":"Packages are"} required for this config: ${i.join(", ")}. Do you want to install them?`;c.confirm===void 0?c.confirm={message:f}:c.confirm.message=f}await me(c.confirm)&&await H(i,{...c.installPackage,cwd:c.cwd?S(c.cwd):void 0,dev:t==="devDependencies"})}},"ensurePackages");export{Ge as ensurePackages,Fe as findPackageJson,Oe as findPackageJsonSync,Me as getPackageJsonProperty,ze as hasPackageJsonAnyDependency,qe as hasPackageJsonProperty,Ye as parsePackageJson,Re as parsePackageJsonSync,We as writePackageJson,Be as writePackageJsonSync};
|
|
@@ -49,7 +49,7 @@ declare const getPackageManagerVersion: (name: string) => string;
|
|
|
49
49
|
* or undefined if the package manager information cannot be determined.
|
|
50
50
|
*/
|
|
51
51
|
declare const identifyInitiatingPackageManager: () => {
|
|
52
|
-
name: PackageManager | "cnpm";
|
|
52
|
+
name: PackageManager | "cnpm" | (string & {});
|
|
53
53
|
version: string;
|
|
54
54
|
} | undefined;
|
|
55
55
|
/**
|
package/dist/package-manager.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
var
|
|
2
|
-
${
|
|
1
|
+
var P=Object.defineProperty;var g=(e,n)=>P(e,"name",{value:n,configurable:!0});import{createRequire as b}from"node:module";import{findUpSync as u,findUp as h}from"@visulima/fs";import{NotFoundError as k}from"@visulima/fs/error";import{join as l,dirname as i}from"@visulima/path";import{parsePackageJsonSync as M}from"./package-json.js";const F=b(import.meta.url),s=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,m=g(e=>{if(typeof s<"u"&&s.versions&&s.versions.node){const[n,a]=s.versions.node.split(".").map(Number);if(n>22||n===22&&a>=3||n===20&&a>=16)return s.getBuiltinModule(e)}return F(e)},"__cjs_getBuiltinModule"),{execFileSync:S}=m("node:child_process"),{existsSync:f,readFileSync:$}=m("node:fs");var x=Object.defineProperty,r=g((e,n)=>x(e,"name",{value:n,configurable:!0}),"t");const d=["yarn.lock","package-lock.json","pnpm-lock.yaml","npm-shrinkwrap.json","bun.lockb"],y=r(e=>{let n;if(d.forEach(t=>{!n&&f(l(e,t))&&(n=l(e,t))}),n)return n;const a=l(e,"package.json");if(f(a)&&M($(a,"utf8")).packageManager!==void 0)return a},"packageMangerFindUpMatcher"),w=r(e=>{if(!e)throw new k("Could not find a package manager");if(e.endsWith("package.json")){const n=M(e);if(n.packageManager){const a=["npm","yarn","pnpm","bun"].find(t=>n.packageManager.startsWith(t));if(a)return{packageManager:a,path:i(e)}}}if(e.endsWith("yarn.lock"))return{packageManager:"yarn",path:i(e)};if(e.endsWith("package-lock.json")||e.endsWith("npm-shrinkwrap.json"))return{packageManager:"npm",path:i(e)};if(e.endsWith("pnpm-lock.yaml"))return{packageManager:"pnpm",path:i(e)};if(e.endsWith("bun.lockb"))return{packageManager:"bun",path:i(e)};throw new k("Could not find a package manager")},"resolvePackageManagerFromFile"),T=r(async e=>{const n=await h(d,{type:"file",...e&&{cwd:e}});if(!n)throw new Error("Could not find lock file");return n},"findLockFile"),U=r(e=>{const n=u(d,{type:"file",...e&&{cwd:e}});if(!n)throw new Error("Could not find lock file");return n},"findLockFileSync"),q=r(async e=>{const n=await h(y,{...e&&{cwd:e}});return w(n)},"findPackageManager"),O=r(e=>{const n=u(y,{...e&&{cwd:e}});return w(n)},"findPackageManagerSync"),B=r(e=>S(e,["--version"]).toString("utf8").trim(),"getPackageManagerVersion"),D=r(()=>{if(!process.env.npm_config_user_agent)return;const e=process.env.npm_config_user_agent.split(" ")[0],n=e.lastIndexOf("/"),a=e.slice(0,Math.max(0,n));return{name:a==="npminstall"?"cnpm":a,version:e.slice(Math.max(0,n+1))}},"identifyInitiatingPackageManager"),R=r((e,n,a)=>{const t=n.length===1?"":"s";if(a.packageManagers??=["npm","pnpm","yarn"],a.packageManagers.length===0)throw new Error("No package managers provided, please provide at least one package manager");if(n.length===0)throw new Error("No missing packages provided, please provide at least one missing package");let p=`
|
|
2
|
+
${a.preMessage??""}
|
|
3
3
|
${e} could not find the following package${t}
|
|
4
4
|
|
|
5
|
-
${
|
|
5
|
+
${n.join(`
|
|
6
6
|
`)}
|
|
7
7
|
|
|
8
8
|
To install the missing package${t}, please run the following command:
|
|
9
|
-
`;const v=r(o=>o.
|
|
9
|
+
`;const v=r(o=>o.lastIndexOf("@")>0?o:`${o}@latest`,"atLatest"),_=a.packageManagers.map(o=>{const c=n.map(j=>v(j)).join(" ");switch(o){case"bun":return` bun add ${c} -D`;case"npm":return` npm install ${c} --save-dev`;case"pnpm":return` pnpm add ${c} -D`;case"yarn":return` yarn add ${c} --dev`;default:throw new Error("Unknown package manager")}});return p+=_.join(`
|
|
10
10
|
|
|
11
11
|
or
|
|
12
12
|
|
|
13
|
-
`),
|
|
13
|
+
`),a.postMessage&&(p+=a.postMessage),p},"generateMissingPackagesInstallMessage");export{T as findLockFile,U as findLockFileSync,q as findPackageManager,O as findPackageManagerSync,R as generateMissingPackagesInstallMessage,B as getPackageManagerVersion,D as identifyInitiatingPackageManager};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/package",
|
|
3
|
-
"version": "5.0.0-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.29",
|
|
4
4
|
"description": "A comprehensive package management utility that helps you find root directories, monorepos, package managers, and parse package.json, package.yaml, and package.json5 files with advanced features like catalog resolution.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"anolilab",
|
|
@@ -99,8 +99,8 @@
|
|
|
99
99
|
],
|
|
100
100
|
"dependencies": {
|
|
101
101
|
"@antfu/install-pkg": "^1.1.0",
|
|
102
|
-
"@visulima/fs": "5.0.0-alpha.
|
|
103
|
-
"@visulima/path": "3.0.0-alpha.
|
|
102
|
+
"@visulima/fs": "5.0.0-alpha.30",
|
|
103
|
+
"@visulima/path": "3.0.0-alpha.12",
|
|
104
104
|
"json5": "^2.2.3",
|
|
105
105
|
"normalize-package-data": "^9.0.0",
|
|
106
106
|
"yaml": "2.9.0"
|