@reliverse/dler 2.1.18 → 2.1.20

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.
@@ -19,10 +19,6 @@ export default defineCommand({
19
19
  "dler update",
20
20
  "dler update --install",
21
21
  "dler update --dryRun",
22
- 'dler update --filter "@reliverse/dler-prompt,@reliverse/dler-build"',
23
- 'dler update --filter "@reliverse/dler-*"',
24
- "dler update --filter cli,packages/build",
25
- 'dler update --ignore "@reliverse/*"',
26
22
  "dler update --name @types/* --name react*",
27
23
  'dler update --ignore "eslint-*" --ignore "@babel/*"',
28
24
  "dler update --no-allowMajor",
@@ -30,8 +26,7 @@ export default defineCommand({
30
26
  "dler update --ignoreFields peerDependencies",
31
27
  "dler update --dryRun --install",
32
28
  "dler update --name react --name react-dom --install",
33
- "dler update --ignore @types/* --allowMajor",
34
- 'dler update --filter "@reliverse/dler-*" --name react --install'
29
+ "dler update --ignore @types/* --allowMajor"
35
30
  ]
36
31
  },
37
32
  args: defineArgs({
@@ -45,17 +40,13 @@ export default defineCommand({
45
40
  description: msgs.args.cwd,
46
41
  default: getCurrentWorkingDirectory()
47
42
  },
48
- filter: {
43
+ name: {
49
44
  type: "string",
50
- description: "Package(s) to include (supports wildcards and comma-separated values like '@reliverse/dler-prompt,@reliverse/dler-build'). Takes precedence over --ignore when both are provided."
45
+ description: "Specific dependencies to update, supports glob patterns (e.g. '@types/*', 'react*'). Can be specified multiple times or comma-separated."
51
46
  },
52
47
  ignore: {
53
48
  type: "string",
54
- description: "Package(s) to ignore (supports wildcards like @reliverse/*)"
55
- },
56
- name: {
57
- type: "string",
58
- description: "Specific dependencies to update, supports glob patterns (e.g. '@types/*', 'react*'). Can be specified multiple times or comma-separated."
49
+ description: "Dependencies to exclude from updates, supports glob patterns (e.g. 'eslint-*', '@types/*')"
59
50
  },
60
51
  dryRun: {
61
52
  type: "boolean",
@@ -92,7 +83,7 @@ export default defineCommand({
92
83
  const showDetails = Boolean(details);
93
84
  const fieldsToIgnore = Array.isArray(ignoreFields) ? ignoreFields : [];
94
85
  await validatePackageJson();
95
- const { packageJsonFiles, fileDepsMap } = await prepareAllUpdateCandidates(args.filter, args.ignore, args.cwd);
86
+ const { packageJsonFiles, fileDepsMap } = await prepareAllUpdateCandidates();
96
87
  if (packageJsonFiles.length === 0) {
97
88
  logger.log("No package.json files found");
98
89
  return;
@@ -2,9 +2,8 @@ import { type UpdateResult } from "./utils.js";
2
2
  interface UpdateArgs {
3
3
  ci?: boolean;
4
4
  cwd?: string;
5
- filter?: string | string[];
6
5
  name?: string[];
7
- ignore?: string | string[];
6
+ ignore?: string[];
8
7
  dryRun?: boolean;
9
8
  install?: boolean;
10
9
  allowMajor?: boolean;
@@ -12,7 +11,7 @@ interface UpdateArgs {
12
11
  ignoreFields?: string[];
13
12
  }
14
13
  export declare function validatePackageJson(): Promise<string>;
15
- export declare function prepareAllUpdateCandidates(filter?: string | string[], ignore?: string | string[], cwd?: string): Promise<{
14
+ export declare function prepareAllUpdateCandidates(): Promise<{
16
15
  packageJsonFiles: string[];
17
16
  fileDepsMap: Map<string, Record<string, any>>;
18
17
  }>;
@@ -1,17 +1,8 @@
1
1
  import { logger } from "@reliverse/dler-logger";
2
2
  import pMap from "@reliverse/dler-mapper";
3
- import {
4
- createIncludeFilter,
5
- normalizePatterns
6
- } from "@reliverse/dler-matcher";
7
- import {
8
- getWorkspacePatterns,
9
- hasWorkspaces,
10
- readPackageJSON
11
- } from "@reliverse/dler-pkg-tsc";
12
3
  import { Glob } from "bun";
13
4
  import fs from "fs/promises";
14
- import path, { relative, resolve } from "path";
5
+ import path from "path";
15
6
  import {
16
7
  applyVersionUpdate,
17
8
  checkPackageUpdate,
@@ -29,128 +20,17 @@ export async function validatePackageJson() {
29
20
  }
30
21
  return packageJsonPath;
31
22
  }
32
- const matchesPattern = (pkg, pattern, monorepoRoot) => {
33
- const normalizedPattern = pattern.trim();
34
- const nameFilter = createIncludeFilter(normalizedPattern);
35
- if (nameFilter([pkg]).length > 0) {
36
- return true;
37
- }
38
- let relativePath;
39
- if (monorepoRoot) {
40
- relativePath = relative(monorepoRoot, pkg.path).replace(/\\/g, "/");
41
- } else {
42
- relativePath = relative(resolve(pkg.path, ".."), pkg.path).replace(
43
- /\\/g,
44
- "/"
45
- );
46
- }
47
- if (relativePath === normalizedPattern || relativePath.endsWith(normalizedPattern)) {
48
- return true;
49
- }
50
- const pathFilter = createIncludeFilter(normalizedPattern);
51
- if (pathFilter([{ name: relativePath, path: pkg.path }]).length > 0) {
52
- return true;
53
- }
54
- return false;
55
- };
56
- const filterPackagesByPatterns = (packages, patterns, monorepoRoot) => {
57
- const patternArray = Array.isArray(patterns) ? patterns : [patterns];
58
- const normalizedPatterns = patternArray.flatMap(
59
- (p) => typeof p === "string" ? p.split(",").map((s) => s.trim()) : [p]
60
- );
61
- return packages.filter(
62
- (pkg) => normalizedPatterns.some(
63
- (pattern) => matchesPattern(pkg, pattern, monorepoRoot)
64
- )
65
- );
66
- };
67
- export async function prepareAllUpdateCandidates(filter, ignore, cwd) {
68
- const workingDir = cwd ? path.resolve(cwd) : process.cwd();
69
- let packageJsonFiles = [];
70
- let isMonorepo = false;
71
- let monorepoRoot = null;
72
- try {
73
- const rootPkg = await readPackageJSON(workingDir);
74
- if (rootPkg && hasWorkspaces(rootPkg)) {
75
- isMonorepo = true;
76
- monorepoRoot = workingDir;
77
- const patterns = getWorkspacePatterns(rootPkg);
78
- for (const pattern of patterns) {
79
- const glob = new Glob(path.join(pattern, "package.json"));
80
- for await (const file of glob.scan({
81
- cwd: workingDir,
82
- onlyFiles: true
83
- })) {
84
- packageJsonFiles.push(path.resolve(workingDir, file));
85
- }
86
- }
87
- if (filter || ignore) {
88
- const packageInfos = [];
89
- for (const pkgPath of packageJsonFiles) {
90
- try {
91
- const pkg = await readPackageJSON(path.dirname(pkgPath));
92
- if (pkg?.name) {
93
- packageInfos.push({
94
- name: pkg.name,
95
- path: path.dirname(pkgPath)
96
- });
97
- }
98
- } catch {
99
- }
100
- }
101
- if (filter) {
102
- const filtered = filterPackagesByPatterns(
103
- packageInfos,
104
- filter,
105
- monorepoRoot || void 0
106
- );
107
- packageJsonFiles = filtered.map(
108
- (info) => path.join(info.path, "package.json")
109
- );
110
- if (filtered.length > 0) {
111
- const patterns2 = normalizePatterns(filter);
112
- logger.debug(
113
- ` Filtering to ${filtered.length} packages matching: ${patterns2.join(", ")}`
114
- );
115
- }
116
- } else if (ignore) {
117
- const filtered = packageInfos.filter((pkg) => {
118
- const ignorePatterns = Array.isArray(ignore) ? ignore : [ignore];
119
- const normalizedIgnorePatterns = ignorePatterns.flatMap(
120
- (p) => typeof p === "string" ? p.split(",").map((s) => s.trim()) : [p]
121
- );
122
- return !normalizedIgnorePatterns.some(
123
- (pattern) => matchesPattern(pkg, pattern, monorepoRoot || void 0)
124
- );
125
- });
126
- packageJsonFiles = filtered.map(
127
- (info) => path.join(info.path, "package.json")
128
- );
129
- const ignoredCount = packageInfos.length - filtered.length;
130
- if (ignoredCount > 0) {
131
- const patterns2 = normalizePatterns(ignore);
132
- logger.debug(
133
- ` Ignoring ${ignoredCount} packages matching: ${patterns2.join(", ")}`
134
- );
135
- }
136
- }
137
- }
138
- }
139
- } catch {
140
- }
141
- if (!isMonorepo) {
142
- const glob = new Glob("**/package.json");
143
- const allFiles = [];
144
- for await (const file of glob.scan({
145
- cwd: workingDir,
146
- onlyFiles: true
147
- })) {
148
- const fullPath = path.resolve(workingDir, file);
149
- if (!file.includes("node_modules") && !file.includes("dist") && !file.includes("build") && !file.includes(".git") && !file.includes("coverage") && !file.includes(".next") && !file.includes("out") && !file.includes("target") && !file.includes(".turbo")) {
150
- allFiles.push(fullPath);
151
- }
23
+ export async function prepareAllUpdateCandidates() {
24
+ const glob = new Glob("**/package.json");
25
+ const packageJsonFiles = [];
26
+ for await (const file of glob.scan({
27
+ cwd: process.cwd(),
28
+ onlyFiles: true
29
+ })) {
30
+ const fullPath = path.resolve(process.cwd(), file);
31
+ if (!file.includes("node_modules") && !file.includes("dist") && !file.includes("build") && !file.includes(".git") && !file.includes("coverage") && !file.includes(".next") && !file.includes("out") && !file.includes("target") && !file.includes(".turbo")) {
32
+ packageJsonFiles.push(fullPath);
152
33
  }
153
- packageJsonFiles = allFiles;
154
34
  }
155
35
  if (packageJsonFiles.length === 0) {
156
36
  logger.warn("No package.json files found");
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@reliverse/dler",
3
3
  "description": "@reliverse/dler is a framework which helps TypeScript and JavaScript developers create their libraries and CLI tools. It provides ready-to-use primitives, so you don't have to write them from scratch.",
4
4
  "author": "reliverse",
5
- "version": "2.1.18",
5
+ "version": "2.1.20",
6
6
  "private": false,
7
7
  "type": "module",
8
8
  "bin": {
@@ -13,16 +13,16 @@
13
13
  "semver": "^7.7.3",
14
14
  "lookpath": "^1.2.3",
15
15
  "clipboardy": "^5.0.0",
16
- "@reliverse/dler-publish": "2.1.16",
17
- "@reliverse/dler-bump": "2.1.16",
18
- "@reliverse/dler-build": "2.1.16",
19
- "@reliverse/dler-logger": "2.1.16",
20
- "@reliverse/dler-matcher": "2.1.16",
21
- "@reliverse/dler-launcher": "2.1.16",
22
- "@reliverse/dler-prompt": "2.1.16",
23
- "@reliverse/dler-helpers": "2.1.16",
24
- "@reliverse/dler-pkg-tsc": "2.1.16",
25
- "@reliverse/dler-mapper": "2.1.16"
16
+ "@reliverse/dler-publish": "^2.1.18",
17
+ "@reliverse/dler-bump": "^2.1.18",
18
+ "@reliverse/dler-build": "^2.1.18",
19
+ "@reliverse/dler-logger": "^2.1.18",
20
+ "@reliverse/dler-matcher": "^2.1.18",
21
+ "@reliverse/dler-launcher": "^2.1.18",
22
+ "@reliverse/dler-prompt": "^2.1.18",
23
+ "@reliverse/dler-helpers": "^2.1.18",
24
+ "@reliverse/dler-pkg-tsc": "^2.1.18",
25
+ "@reliverse/dler-mapper": "^2.1.18"
26
26
  },
27
27
  "keywords": [
28
28
  "dler",