@stryke/fs 0.24.2 → 0.25.0

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.
@@ -3,7 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.doesPackageMatch = doesPackageMatch;
6
7
  exports.getPackageInfo = getPackageInfo;
8
+ exports.getPackageListing = getPackageListing;
7
9
  exports.getPackageManager = getPackageManager;
8
10
  exports.isPackageExists = isPackageExists;
9
11
  exports.isPackageListed = isPackageListed;
@@ -17,9 +19,8 @@ var _isString = require("@stryke/type-checks/is-string");
17
19
  var _nodeFs = require("node:fs");
18
20
  var _semver = require("semver");
19
21
  var _json = require("./json.cjs");
20
- var _semverFns = require("./semver-fns.cjs");
21
- function getPackageManager(n = (0, _getWorkspaceRoot.getWorkspaceRoot)()) {
22
- const e = (0, _getParentPath.getParentPath)(["package-lock.json", "yarn.lock", "pnpm-lock.yaml", "bun.lock"], n);
22
+ function getPackageManager(t = (0, _getWorkspaceRoot.getWorkspaceRoot)()) {
23
+ const e = (0, _getParentPath.getParentPath)(["package-lock.json", "yarn.lock", "pnpm-lock.yaml", "bun.lock"], t);
23
24
  if (!e) return "pnpm";
24
25
  switch ((0, _path.findFileName)(e)) {
25
26
  case "yarn.lock":
@@ -32,46 +33,62 @@ function getPackageManager(n = (0, _getWorkspaceRoot.getWorkspaceRoot)()) {
32
33
  return "npm";
33
34
  }
34
35
  }
35
- async function h(n) {
36
+ async function v(t) {
36
37
  let e;
37
38
  for (;;) {
38
- if (!n) return;
39
- const a = (0, _path.findFilePath)(n);
40
- if (a === n) return;
41
- if (n = a, e = (0, _path.joinPaths)(n, "package.json"), await (0, _path.exists)(e)) break;
39
+ if (!t) return;
40
+ const n = (0, _path.findFilePath)(t);
41
+ if (n === t) return;
42
+ if (t = n, e = (0, _path.joinPaths)(t, "package.json"), await (0, _path.exists)(e)) break;
42
43
  }
43
44
  return e;
44
45
  }
45
- async function J(n, e = {}) {
46
- const a = await (0, _resolve.resolvePackage)(n, e);
47
- if (a) return h(a);
46
+ async function x(t, e = {}) {
47
+ const n = await (0, _resolve.resolvePackage)(t, e);
48
+ if (n) return v(n);
48
49
  }
49
- async function getPackageInfo(n, e = {}) {
50
- const a = await J(n, e);
51
- if (!a) return;
52
- const s = await (0, _json.readJsonFile)(a);
50
+ async function getPackageInfo(t, e = {}) {
51
+ const n = await x(t, e);
52
+ if (!n) return;
53
+ const s = await (0, _json.readJsonFile)(n);
53
54
  return {
54
- name: n,
55
+ name: t,
55
56
  version: s.version,
56
- rootPath: (0, _path.findFilePath)(a),
57
- packageJsonPath: a,
57
+ rootPath: (0, _path.findFilePath)(n),
58
+ packageJsonPath: n,
58
59
  packageJson: s
59
60
  };
60
61
  }
61
- async function loadPackageJson(n = (0, _getWorkspaceRoot.getWorkspaceRoot)()) {
62
- const e = (0, _getParentPath.getParentPath)("package.json", n, {
62
+ async function loadPackageJson(t = (0, _getWorkspaceRoot.getWorkspaceRoot)()) {
63
+ const e = (0, _getParentPath.getParentPath)("package.json", t, {
63
64
  skipCwd: !1
64
65
  });
65
66
  return !e || !(0, _nodeFs.existsSync)(e) ? null : (0, _json.readJsonFile)(e);
66
67
  }
67
- async function isPackageListed(n, e) {
68
- const a = (0, _package.getPackageName)(n),
69
- s = (0, _isString.isString)(e) ? e : e?.cwd;
70
- let o = (0, _isString.isString)(e) ? void 0 : e?.version;
71
- (!o || !(0, _semverFns.isValidRange)(o)) && (o = (0, _package.hasPackageVersion)(n) && (0, _semverFns.isValidRange)((0, _package.getPackageVersion)(n)) ? (0, _package.getPackageVersion)(n) : void 0);
72
- const t = await loadPackageJson(s);
73
- return t ? !!((t.dependencies && a in t.dependencies && t.dependencies[a] && (!o || (0, _semver.subset)(t.dependencies[a], o))) ?? (t.devDependencies && a in t.devDependencies && t.devDependencies[a] && (!o || (0, _semver.subset)(t.devDependencies[a], o)))) : !1;
68
+ async function isPackageListed(t, e) {
69
+ const n = (0, _package.getPackageName)(t),
70
+ s = (0, _isString.isString)(e) ? e : e?.cwd,
71
+ a = await loadPackageJson(s);
72
+ return a ? !!(a.dependencies && n in a.dependencies && a.dependencies[n] || a.devDependencies && n in a.devDependencies && a.devDependencies[n]) : !1;
73
+ }
74
+ async function getPackageListing(t, e) {
75
+ const n = (0, _package.getPackageName)(t),
76
+ s = (0, _isString.isString)(e) ? e : e?.cwd,
77
+ a = await loadPackageJson(s);
78
+ if (!a) return;
79
+ const i = a.dependencies && n in a.dependencies ? a.dependencies[n] : a.devDependencies && n in a.devDependencies ? a.devDependencies[n] : void 0,
80
+ o = (a.dependencies && n in a.dependencies ? "dependencies" : a.devDependencies && n in a.devDependencies ? "devDependencies" : void 0) || void 0;
81
+ return i && o ? {
82
+ version: i,
83
+ type: o
84
+ } : void 0;
85
+ }
86
+ async function doesPackageMatch(t, e, n) {
87
+ const s = await getPackageListing(t, {
88
+ cwd: n
89
+ });
90
+ return s ? s.version.startsWith("catalog:") || s.version.startsWith("workspace:") || (0, _semver.subset)(s.version, e) : !1;
74
91
  }
75
- function isPackageExists(n, e = {}) {
76
- return !!(0, _resolve.resolvePackage)(n, e);
92
+ function isPackageExists(t, e = {}) {
93
+ return !!(0, _resolve.resolvePackage)(t, e);
77
94
  }
@@ -34,6 +34,8 @@ export interface PackageExistsOptions {
34
34
  * The current working directory
35
35
  */
36
36
  cwd?: string;
37
+ }
38
+ export interface PackageMatchesOptions extends PackageExistsOptions {
37
39
  /**
38
40
  * The version range of the package to check
39
41
  */
@@ -55,6 +57,27 @@ export declare function isPackageListed(name: string, cwd?: string): Promise<boo
55
57
  * @returns An indicator specifying if the package is listed
56
58
  */
57
59
  export declare function isPackageListed(name: string, options?: PackageExistsOptions): Promise<boolean>;
60
+ export interface GetPackageListingReturn {
61
+ version: string;
62
+ type: "dependencies" | "devDependencies";
63
+ }
64
+ /**
65
+ * Return the package version and dependency type listed in the package.json file
66
+ *
67
+ * @param name - The name of the package
68
+ * @param cwdOrOptions - The current working directory or options to use when checking if the package is listed
69
+ * @returns The version and type of the package if listed, otherwise undefined
70
+ */
71
+ export declare function getPackageListing(name: string, cwdOrOptions?: string | PackageExistsOptions): Promise<GetPackageListingReturn | undefined>;
72
+ /**
73
+ * Check if a package version matches a specific version range
74
+ *
75
+ * @param name - The name of the package
76
+ * @param version - The version to check against
77
+ * @param cwd - The current working directory
78
+ * @returns An indicator specifying if the package version matches the range
79
+ */
80
+ export declare function doesPackageMatch(name: string, version: string, cwd?: string): Promise<boolean>;
58
81
  /**
59
82
  * Check if a package exists
60
83
  *
@@ -1 +1 @@
1
- import{exists as l,findFileName as u,findFilePath as r,joinPaths as d}from"@stryke/path";import{getParentPath as i}from"@stryke/path/get-parent-path";import{getWorkspaceRoot as c}from"@stryke/path/get-workspace-root";import{resolvePackage as g}from"@stryke/path/resolve";import{getPackageName as y,getPackageVersion as p,hasPackageVersion as v}from"@stryke/string-format/package";import{isString as k}from"@stryke/type-checks/is-string";import{existsSync as x}from"node:fs";import{subset as m}from"semver";import{readJsonFile as f}from"./json";import{isValidRange as P}from"./semver-fns";export function getPackageManager(n=c()){const e=i(["package-lock.json","yarn.lock","pnpm-lock.yaml","bun.lock"],n);if(!e)return"pnpm";switch(u(e)){case"yarn.lock":return"yarn";case"pnpm-lock.yaml":return"pnpm";case"bun.lock":return"bun";default:return"npm"}}async function h(n){let e;for(;;){if(!n)return;const a=r(n);if(a===n)return;if(n=a,e=d(n,"package.json"),await l(e))break}return e}async function J(n,e={}){const a=await g(n,e);if(a)return h(a)}export async function getPackageInfo(n,e={}){const a=await J(n,e);if(!a)return;const s=await f(a);return{name:n,version:s.version,rootPath:r(a),packageJsonPath:a,packageJson:s}}export async function loadPackageJson(n=c()){const e=i("package.json",n,{skipCwd:!1});return!e||!x(e)?null:f(e)}export async function isPackageListed(n,e){const a=y(n),s=k(e)?e:e?.cwd;let o=k(e)?void 0:e?.version;(!o||!P(o))&&(o=v(n)&&P(p(n))?p(n):void 0);const t=await loadPackageJson(s);return t?!!((t.dependencies&&a in t.dependencies&&t.dependencies[a]&&(!o||m(t.dependencies[a],o)))??(t.devDependencies&&a in t.devDependencies&&t.devDependencies[a]&&(!o||m(t.devDependencies[a],o)))):!1}export function isPackageExists(n,e={}){return!!g(n,e)}
1
+ import{exists as u,findFileName as m,findFilePath as r,joinPaths as P}from"@stryke/path";import{getParentPath as c}from"@stryke/path/get-parent-path";import{getWorkspaceRoot as p}from"@stryke/path/get-workspace-root";import{resolvePackage as g}from"@stryke/path/resolve";import{getPackageName as d}from"@stryke/string-format/package";import{isString as k}from"@stryke/type-checks/is-string";import{existsSync as l}from"node:fs";import{subset as y}from"semver";import{readJsonFile as f}from"./json";export function getPackageManager(t=p()){const e=c(["package-lock.json","yarn.lock","pnpm-lock.yaml","bun.lock"],t);if(!e)return"pnpm";switch(m(e)){case"yarn.lock":return"yarn";case"pnpm-lock.yaml":return"pnpm";case"bun.lock":return"bun";default:return"npm"}}async function v(t){let e;for(;;){if(!t)return;const n=r(t);if(n===t)return;if(t=n,e=P(t,"package.json"),await u(e))break}return e}async function x(t,e={}){const n=await g(t,e);if(n)return v(n)}export async function getPackageInfo(t,e={}){const n=await x(t,e);if(!n)return;const s=await f(n);return{name:t,version:s.version,rootPath:r(n),packageJsonPath:n,packageJson:s}}export async function loadPackageJson(t=p()){const e=c("package.json",t,{skipCwd:!1});return!e||!l(e)?null:f(e)}export async function isPackageListed(t,e){const n=d(t),s=k(e)?e:e?.cwd,a=await loadPackageJson(s);return a?!!(a.dependencies&&n in a.dependencies&&a.dependencies[n]||a.devDependencies&&n in a.devDependencies&&a.devDependencies[n]):!1}export async function getPackageListing(t,e){const n=d(t),s=k(e)?e:e?.cwd,a=await loadPackageJson(s);if(!a)return;const i=a.dependencies&&n in a.dependencies?a.dependencies[n]:a.devDependencies&&n in a.devDependencies?a.devDependencies[n]:void 0,o=(a.dependencies&&n in a.dependencies?"dependencies":a.devDependencies&&n in a.devDependencies?"devDependencies":void 0)||void 0;return i&&o?{version:i,type:o}:void 0}export async function doesPackageMatch(t,e,n){const s=await getPackageListing(t,{cwd:n});return s?s.version.startsWith("catalog:")||s.version.startsWith("workspace:")||y(s.version,e):!1}export function isPackageExists(t,e={}){return!!g(t,e)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stryke/fs",
3
- "version": "0.24.2",
3
+ "version": "0.25.0",
4
4
  "type": "module",
5
5
  "description": "A package containing various file system utilities that expand the functionality of NodeJs's built-in `fs` module.",
6
6
  "repository": {
@@ -9,7 +9,7 @@
9
9
  "directory": "packages/fs"
10
10
  },
11
11
  "private": false,
12
- "peerDependencies": { "nx": "21.3.10" },
12
+ "peerDependencies": { "nx": "^21.4.1" },
13
13
  "peerDependenciesMeta": { "nx": { "optional": true } },
14
14
  "dependencies": {
15
15
  "@antfu/install-pkg": "^1.0.0",
@@ -31,7 +31,7 @@
31
31
  "devDependencies": {
32
32
  "@types/node": "^22.14.0",
33
33
  "@types/semver": "^7.5.8",
34
- "nx": "21.3.10",
34
+ "nx": "^21.4.1",
35
35
  "tinyexec": "^0.3.2"
36
36
  },
37
37
  "publishConfig": { "access": "public" },
@@ -338,5 +338,5 @@
338
338
  "main": "./dist/index.cjs",
339
339
  "module": "./dist/index.mjs",
340
340
  "types": "./dist/index.d.ts",
341
- "gitHead": "6d49c50f150faf90973f0dce1af515553599f3e1"
341
+ "gitHead": "a4337f9cb38835e8f5b60e857c08235552b7db77"
342
342
  }