@aneuhold/core-ts-lib 2.1.1 → 2.1.7

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.
Files changed (37) hide show
  1. package/{readme.md → README.md} +7 -26
  2. package/lib/services/ArrayService.d.ts +2 -0
  3. package/lib/services/ArrayService.d.ts.map +1 -1
  4. package/lib/services/ArrayService.js +2 -0
  5. package/lib/services/ArrayService.js.map +1 -1
  6. package/lib/services/ArrayService.ts +2 -0
  7. package/lib/services/DependencyService.d.ts +9 -10
  8. package/lib/services/DependencyService.d.ts.map +1 -1
  9. package/lib/services/DependencyService.js +53 -17
  10. package/lib/services/DependencyService.js.map +1 -1
  11. package/lib/services/DependencyService.ts +77 -40
  12. package/lib/services/PackageService.d.ts +12 -0
  13. package/lib/services/PackageService.d.ts.map +1 -1
  14. package/lib/services/PackageService.js +49 -3
  15. package/lib/services/PackageService.js.map +1 -1
  16. package/lib/services/PackageService.ts +73 -4
  17. package/lib/types/JsonWithVersionProperty.d.ts +4 -0
  18. package/lib/types/JsonWithVersionProperty.d.ts.map +1 -0
  19. package/lib/types/JsonWithVersionProperty.js +2 -0
  20. package/lib/types/JsonWithVersionProperty.js.map +1 -0
  21. package/lib/types/JsonWithVersionProperty.ts +3 -0
  22. package/lib/types/PackageJson.d.ts +9 -0
  23. package/lib/types/PackageJson.d.ts.map +1 -0
  24. package/lib/types/PackageJson.js +2 -0
  25. package/lib/types/PackageJson.js.map +1 -0
  26. package/lib/types/PackageJson.ts +9 -0
  27. package/lib/types/PackageJsonInfo.d.ts +6 -0
  28. package/lib/types/PackageJsonInfo.d.ts.map +1 -0
  29. package/lib/types/PackageJsonInfo.js +2 -0
  30. package/lib/types/PackageJsonInfo.js.map +1 -0
  31. package/lib/types/PackageJsonInfo.ts +6 -0
  32. package/lib/types/PackageJsonMap.d.ts +5 -0
  33. package/lib/types/PackageJsonMap.d.ts.map +1 -0
  34. package/lib/types/PackageJsonMap.js +2 -0
  35. package/lib/types/PackageJsonMap.js.map +1 -0
  36. package/lib/types/PackageJsonMap.ts +5 -0
  37. package/package.json +12 -11
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![JSR](https://jsr.io/badges/@aneuhold/core-ts-lib)](https://jsr.io/@aneuhold/core-ts-lib)
4
4
  [![NPM](https://img.shields.io/npm/v/%40aneuhold%2Fcore-ts-lib)](https://www.npmjs.com/package/@aneuhold/core-ts-lib)
5
- [![License](https://img.shields.io/github/license/aneuhold/core-ts-lib)](https://github.com/aneuhold/core-ts-lib/blob/main/LICENSE)
5
+ [![License](https://img.shields.io/github/license/aneuhold/ts-libs)](https://github.com/aneuhold/ts-libs/blob/main/LICENSE)
6
6
 
7
7
  A library containing TypeScript that I am sharing among most TypeScript-based projects. This package is published using ES Modules only.
8
8
 
@@ -12,19 +12,17 @@ To add to a repo, follow the instructions below for your environment:
12
12
 
13
13
  ### For Node using NPM
14
14
 
15
- Run `yarn add @aneuhold/core-ts-lib`
15
+ Run `pnpm add @aneuhold/core-ts-lib`
16
16
 
17
17
  ### For Node using JSR
18
18
 
19
- The below instructions still allow for things like Renovate to work, and normal commands with yarn such as `yarn up`.
19
+ The below instructions still allow for things like Renovate to work, and normal commands with pnpm such as `pnpm up`.
20
20
 
21
- 1. Add the required JSR configuration to a `.yarnrc.yml` file if not there already:
22
- ```yml
23
- npmScopes:
24
- jsr:
25
- npmRegistryServer: 'https://npm.jsr.io'
21
+ 1. Add the required JSR configuration to a `.npmrc` file if not there already:
26
22
  ```
27
- 1. Add the package with `yarn add @jsr/aneuhold__core-ts-lib`
23
+ @jsr:registry=https://npm.jsr.io
24
+ ```
25
+ 1. Add the package with `pnpm add @jsr/aneuhold__core-ts-lib`
28
26
 
29
27
  ### For Deno
30
28
 
@@ -48,20 +46,3 @@ export default function logSomething() {
48
46
  ```
49
47
 
50
48
  [See full documentation on usage at JSR!](https://jsr.io/@aneuhold/core-ts-lib/doc)
51
-
52
- ## 🛠️ Development
53
-
54
- ### Updating via PR
55
-
56
- 1. Create a new branch locally
57
- 1. Make some changes locally
58
- 1. Run `yarn version patch`
59
- 1. Push the branch up to a PR to make sure it passes checks
60
- 1. Once it passes checks, merge the PR and it will automatically get deployed.
61
-
62
- ### Updating via Push to Main
63
-
64
- 1. Make changes locally
65
- 2. Run `yarn version patch`
66
- 3. Run `yarn checkAll`
67
- 4. Push it up to main. This will get automatically deployed.
@@ -5,6 +5,8 @@ export default class ArrayService {
5
5
  /**
6
6
  * Determines if two arrays have the same primitive values.
7
7
  *
8
+ * @param array1
9
+ * @param array2
8
10
  * @returns true if the arrays have the same primitive values, false otherwise.
9
11
  */
10
12
  static arraysHaveSamePrimitiveValues(array1: Array<unknown>, array2: Array<unknown>): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ArrayService.d.ts","sourceRoot":"./src/","sources":["services/ArrayService.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B;;;;OAIG;IACH,MAAM,CAAC,6BAA6B,CAClC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,EACtB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GACrB,OAAO;CAaX"}
1
+ {"version":3,"file":"ArrayService.d.ts","sourceRoot":"./src/","sources":["services/ArrayService.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B;;;;;;OAMG;IACH,MAAM,CAAC,6BAA6B,CAClC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,EACtB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GACrB,OAAO;CAaX"}
@@ -5,6 +5,8 @@ export default class ArrayService {
5
5
  /**
6
6
  * Determines if two arrays have the same primitive values.
7
7
  *
8
+ * @param array1
9
+ * @param array2
8
10
  * @returns true if the arrays have the same primitive values, false otherwise.
9
11
  */
10
12
  static arraysHaveSamePrimitiveValues(array1, array2) {
@@ -1 +1 @@
1
- {"version":3,"file":"ArrayService.js","sourceRoot":"./src/","sources":["services/ArrayService.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B;;;;OAIG;IACH,MAAM,CAAC,6BAA6B,CAClC,MAAsB,EACtB,MAAsB;QAEtB,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAE/B,UAAU,CAAC,IAAI,EAAE,CAAC;QAClB,UAAU,CAAC,IAAI,EAAE,CAAC;QAElB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;CACF"}
1
+ {"version":3,"file":"ArrayService.js","sourceRoot":"./src/","sources":["services/ArrayService.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B;;;;;;OAMG;IACH,MAAM,CAAC,6BAA6B,CAClC,MAAsB,EACtB,MAAsB;QAEtB,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAE/B,UAAU,CAAC,IAAI,EAAE,CAAC;QAClB,UAAU,CAAC,IAAI,EAAE,CAAC;QAElB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;CACF"}
@@ -5,6 +5,8 @@ export default class ArrayService {
5
5
  /**
6
6
  * Determines if two arrays have the same primitive values.
7
7
  *
8
+ * @param array1
9
+ * @param array2
8
10
  * @returns true if the arrays have the same primitive values, false otherwise.
9
11
  */
10
12
  static arraysHaveSamePrimitiveValues(
@@ -1,13 +1,4 @@
1
- export interface PackageJson extends JsonWithVersionProperty {
2
- name: string;
3
- dependencies?: Record<string, string>;
4
- devDependencies?: Record<string, string>;
5
- peerDependencies?: Record<string, string>;
6
- optionalDependencies?: Record<string, string>;
7
- }
8
- export interface JsonWithVersionProperty {
9
- version: string;
10
- }
1
+ import { PackageJsonMap } from '../types/PackageJsonMap.js';
11
2
  /**
12
3
  * Standard Semantic Versioning bump types.
13
4
  */
@@ -34,5 +25,13 @@ export default class DependencyService {
34
25
  * @param versionType The type of version bump (patch, minor, major).
35
26
  */
36
27
  static bumpVersion(versionType?: VersionType): Promise<void>;
28
+ /**
29
+ * Retrieves all package.json files from subdirectories, excluding specified folders
30
+ * and the root package.json.
31
+ *
32
+ * @param searchDirectory The directory to start searching from. Can be relative
33
+ * (e.g., "../") or absolute. Defaults to current working directory.
34
+ */
35
+ static getChildPackageJsons(searchDirectory?: string): Promise<PackageJsonMap>;
37
36
  }
38
37
  //# sourceMappingURL=DependencyService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DependencyService.d.ts","sourceRoot":"./src/","sources":["services/DependencyService.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAY,SAAQ,uBAAuB;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC;;;;OAIG;WACU,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgErD;;;;;OAKG;WACU,WAAW,CACtB,WAAW,GAAE,WAA+B,GAC3C,OAAO,CAAC,IAAI,CAAC;CA+CjB"}
1
+ {"version":3,"file":"DependencyService.d.ts","sourceRoot":"./src/","sources":["services/DependencyService.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAK5D;;GAEG;AACH,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC;;;;OAIG;WACU,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyDrD;;;;;OAKG;WACU,WAAW,CACtB,WAAW,GAAE,WAA+B,GAC3C,OAAO,CAAC,IAAI,CAAC;IAgDhB;;;;;;OAMG;WACU,oBAAoB,CAC/B,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,cAAc,CAAC;CA2C3B"}
@@ -25,29 +25,25 @@ export default class DependencyService {
25
25
  static async updateChildPackageJsons() {
26
26
  // Read the root package.json file
27
27
  const rootPackageJsonPath = path.join(process.cwd(), 'package.json');
28
+ let rootPackageJsonData;
28
29
  try {
29
30
  await access(rootPackageJsonPath);
31
+ const rootPackageJsonContent = await readFile(rootPackageJsonPath, 'utf-8');
32
+ rootPackageJsonData = JSON.parse(rootPackageJsonContent);
30
33
  }
31
- catch {
32
- throw new Error('No package.json file found in the current directory.');
34
+ catch (error) {
35
+ const originalError = ErrorUtils.getErrorString(error);
36
+ throw new Error(`No package.json file found in the current directory or it's unreadable. Original error: ${originalError}`);
33
37
  }
34
- const rootPackageJsonData = JSON.parse(await readFile(rootPackageJsonPath, 'utf-8'));
35
- // Get all files and in the current directory
36
- const filePaths = await FileSystemService.getAllFilePathsRelative(process.cwd());
37
- const packageJsonPaths = filePaths.filter((filePath) => !filePath.includes('node_modules') &&
38
- !filePath.includes('dist') &&
39
- !filePath.includes('build') &&
40
- filePath !== '/package.json' &&
41
- filePath.endsWith('package.json'));
42
38
  const rootDependencies = {
43
39
  ...rootPackageJsonData.dependencies,
44
40
  ...rootPackageJsonData.devDependencies
45
41
  };
46
- // Iterate over all package.json files
47
- await Promise.all(packageJsonPaths.map(async (packageJsonPath) => {
48
- const fullPackageJsonPath = path.join(process.cwd(), packageJsonPath);
49
- const packageJsonData = JSON.parse(await readFile(fullPackageJsonPath, 'utf-8'));
50
- const dependencies = packageJsonData.dependencies;
42
+ const childPackagesData = await this.getChildPackageJsons();
43
+ // Iterate over all child package.json files
44
+ await Promise.all(Object.values(childPackagesData).map(async (childPackageInfo) => {
45
+ const { packageJsonContents, packageJsonPath } = childPackageInfo;
46
+ const { dependencies, devDependencies } = packageJsonContents;
51
47
  if (dependencies) {
52
48
  Object.keys(dependencies).forEach((dependency) => {
53
49
  if (rootDependencies[dependency]) {
@@ -55,7 +51,6 @@ export default class DependencyService {
55
51
  }
56
52
  });
57
53
  }
58
- const devDependencies = packageJsonData.devDependencies;
59
54
  if (devDependencies) {
60
55
  Object.keys(devDependencies).forEach((dependency) => {
61
56
  if (rootDependencies[dependency]) {
@@ -64,7 +59,7 @@ export default class DependencyService {
64
59
  });
65
60
  }
66
61
  // Write the updated package.json file
67
- await writeFile(fullPackageJsonPath, JSON.stringify(packageJsonData, null, 2));
62
+ await writeFile(packageJsonPath, JSON.stringify(packageJsonContents, null, 2));
68
63
  }));
69
64
  }
70
65
  /**
@@ -111,5 +106,46 @@ export default class DependencyService {
111
106
  await updateVersion(path.join(rootDir, 'package.json'));
112
107
  await updateVersion(path.join(rootDir, 'jsr.json'));
113
108
  }
109
+ /**
110
+ * Retrieves all package.json files from subdirectories, excluding specified folders
111
+ * and the root package.json.
112
+ *
113
+ * @param searchDirectory The directory to start searching from. Can be relative
114
+ * (e.g., "../") or absolute. Defaults to current working directory.
115
+ */
116
+ static async getChildPackageJsons(searchDirectory) {
117
+ const childPackages = {};
118
+ const baseDir = searchDirectory
119
+ ? path.resolve(process.cwd(), searchDirectory)
120
+ : process.cwd();
121
+ const filePaths = await FileSystemService.getAllFilePathsRelative(baseDir);
122
+ // Filter for package.json files in subdirectories
123
+ const packageJsonRelativePaths = filePaths.filter((filePath) => filePath.endsWith('package.json') && // Must be a package.json file
124
+ filePath !== 'package.json' && // Exclude the root package.json
125
+ !filePath.includes('node_modules') &&
126
+ !filePath.includes('dist') &&
127
+ !filePath.includes('build'));
128
+ await Promise.all(packageJsonRelativePaths.map(async (relativePath) => {
129
+ const fullPath = path.join(baseDir, relativePath);
130
+ try {
131
+ const fileContents = await readFile(fullPath, 'utf-8');
132
+ const packageJsonData = JSON.parse(fileContents);
133
+ if (packageJsonData.name) {
134
+ childPackages[packageJsonData.name] = {
135
+ packageJsonContents: packageJsonData,
136
+ packageJsonPath: fullPath
137
+ };
138
+ }
139
+ else {
140
+ DR.logger.info(`Package.json at ${fullPath} is missing the 'name' property. It will not be indexed by name.`);
141
+ }
142
+ }
143
+ catch (error) {
144
+ const errorString = ErrorUtils.getErrorString(error);
145
+ DR.logger.error(`Failed to read or parse package.json at ${fullPath}: ${errorString}`);
146
+ }
147
+ }));
148
+ return childPackages;
149
+ }
114
150
  }
115
151
  //# sourceMappingURL=DependencyService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DependencyService.js","sourceRoot":"./src/","sources":["services/DependencyService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DependencyService.js","sourceRoot":"./src/","sources":["services/DependencyService.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,12 @@
1
1
  import { access, readFile, writeFile } from 'fs/promises';
2
2
  import path from 'path';
3
+ import { JsonWithVersionProperty } from '../types/JsonWithVersionProperty.js';
4
+ import { PackageJson } from '../types/PackageJson.js';
5
+ import { PackageJsonMap } from '../types/PackageJsonMap.js';
3
6
  import ErrorUtils from '../utils/ErrorUtils.js';
4
7
  import { DR } from './DependencyRegistry.js';
5
8
  import FileSystemService from './FileSystemService/FileSystemService.js';
6
9
 
7
- export interface PackageJson extends JsonWithVersionProperty {
8
- name: string;
9
- dependencies?: Record<string, string>;
10
- devDependencies?: Record<string, string>;
11
- peerDependencies?: Record<string, string>;
12
- optionalDependencies?: Record<string, string>;
13
- }
14
-
15
- export interface JsonWithVersionProperty {
16
- version: string;
17
- }
18
-
19
10
  /**
20
11
  * Standard Semantic Versioning bump types.
21
12
  */
@@ -38,42 +29,35 @@ export default class DependencyService {
38
29
  static async updateChildPackageJsons(): Promise<void> {
39
30
  // Read the root package.json file
40
31
  const rootPackageJsonPath = path.join(process.cwd(), 'package.json');
32
+ let rootPackageJsonData: PackageJson;
41
33
  try {
42
34
  await access(rootPackageJsonPath);
43
- } catch {
44
- throw new Error('No package.json file found in the current directory.');
35
+ const rootPackageJsonContent = await readFile(
36
+ rootPackageJsonPath,
37
+ 'utf-8'
38
+ );
39
+ rootPackageJsonData = JSON.parse(rootPackageJsonContent) as PackageJson;
40
+ } catch (error) {
41
+ const originalError = ErrorUtils.getErrorString(error);
42
+ throw new Error(
43
+ `No package.json file found in the current directory or it's unreadable. Original error: ${originalError}`
44
+ );
45
45
  }
46
- const rootPackageJsonData = JSON.parse(
47
- await readFile(rootPackageJsonPath, 'utf-8')
48
- ) as PackageJson;
49
-
50
- // Get all files and in the current directory
51
- const filePaths = await FileSystemService.getAllFilePathsRelative(
52
- process.cwd()
53
- );
54
- const packageJsonPaths = filePaths.filter(
55
- (filePath) =>
56
- !filePath.includes('node_modules') &&
57
- !filePath.includes('dist') &&
58
- !filePath.includes('build') &&
59
- filePath !== '/package.json' &&
60
- filePath.endsWith('package.json')
61
- );
62
46
 
63
47
  const rootDependencies = {
64
48
  ...rootPackageJsonData.dependencies,
65
49
  ...rootPackageJsonData.devDependencies
66
50
  };
67
51
 
68
- // Iterate over all package.json files
52
+ const childPackagesData = await this.getChildPackageJsons();
53
+
54
+ // Iterate over all child package.json files
69
55
  await Promise.all(
70
- packageJsonPaths.map(async (packageJsonPath) => {
71
- const fullPackageJsonPath = path.join(process.cwd(), packageJsonPath);
72
- const packageJsonData = JSON.parse(
73
- await readFile(fullPackageJsonPath, 'utf-8')
74
- ) as PackageJson;
56
+ Object.values(childPackagesData).map(async (childPackageInfo) => {
57
+ const { packageJsonContents, packageJsonPath } = childPackageInfo;
58
+
59
+ const { dependencies, devDependencies } = packageJsonContents;
75
60
 
76
- const dependencies = packageJsonData.dependencies;
77
61
  if (dependencies) {
78
62
  Object.keys(dependencies).forEach((dependency) => {
79
63
  if (rootDependencies[dependency]) {
@@ -81,7 +65,7 @@ export default class DependencyService {
81
65
  }
82
66
  });
83
67
  }
84
- const devDependencies = packageJsonData.devDependencies;
68
+
85
69
  if (devDependencies) {
86
70
  Object.keys(devDependencies).forEach((dependency) => {
87
71
  if (rootDependencies[dependency]) {
@@ -92,8 +76,8 @@ export default class DependencyService {
92
76
 
93
77
  // Write the updated package.json file
94
78
  await writeFile(
95
- fullPackageJsonPath,
96
- JSON.stringify(packageJsonData, null, 2)
79
+ packageJsonPath,
80
+ JSON.stringify(packageJsonContents, null, 2)
97
81
  );
98
82
  })
99
83
  );
@@ -154,4 +138,57 @@ export default class DependencyService {
154
138
  await updateVersion(path.join(rootDir, 'package.json'));
155
139
  await updateVersion(path.join(rootDir, 'jsr.json'));
156
140
  }
141
+
142
+ /**
143
+ * Retrieves all package.json files from subdirectories, excluding specified folders
144
+ * and the root package.json.
145
+ *
146
+ * @param searchDirectory The directory to start searching from. Can be relative
147
+ * (e.g., "../") or absolute. Defaults to current working directory.
148
+ */
149
+ static async getChildPackageJsons(
150
+ searchDirectory?: string
151
+ ): Promise<PackageJsonMap> {
152
+ const childPackages: PackageJsonMap = {};
153
+ const baseDir = searchDirectory
154
+ ? path.resolve(process.cwd(), searchDirectory)
155
+ : process.cwd();
156
+ const filePaths = await FileSystemService.getAllFilePathsRelative(baseDir);
157
+
158
+ // Filter for package.json files in subdirectories
159
+ const packageJsonRelativePaths = filePaths.filter(
160
+ (filePath) =>
161
+ filePath.endsWith('package.json') && // Must be a package.json file
162
+ filePath !== 'package.json' && // Exclude the root package.json
163
+ !filePath.includes('node_modules') &&
164
+ !filePath.includes('dist') &&
165
+ !filePath.includes('build')
166
+ );
167
+
168
+ await Promise.all(
169
+ packageJsonRelativePaths.map(async (relativePath) => {
170
+ const fullPath = path.join(baseDir, relativePath);
171
+ try {
172
+ const fileContents = await readFile(fullPath, 'utf-8');
173
+ const packageJsonData = JSON.parse(fileContents) as PackageJson;
174
+ if (packageJsonData.name) {
175
+ childPackages[packageJsonData.name] = {
176
+ packageJsonContents: packageJsonData,
177
+ packageJsonPath: fullPath
178
+ };
179
+ } else {
180
+ DR.logger.info(
181
+ `Package.json at ${fullPath} is missing the 'name' property. It will not be indexed by name.`
182
+ );
183
+ }
184
+ } catch (error) {
185
+ const errorString = ErrorUtils.getErrorString(error);
186
+ DR.logger.error(
187
+ `Failed to read or parse package.json at ${fullPath}: ${errorString}`
188
+ );
189
+ }
190
+ })
191
+ );
192
+ return childPackages;
193
+ }
157
194
  }
@@ -11,7 +11,19 @@ export default class PackageService {
11
11
  */
12
12
  static validateJsrPublish(): Promise<void>;
13
13
  static publishToJsr(): Promise<void>;
14
+ /**
15
+ * Updates the jsr.json file from the package.json file and resolves wildcard
16
+ * dependencies in package.json for JSR compatibility.
17
+ */
14
18
  static updateJsrFromPackageJson(): Promise<void>;
19
+ /**
20
+ * Resolves wildcard dependencies in package.json by replacing them with actual
21
+ * version constraints (e.g., "*1.2.3") for JSR compatibility.
22
+ *
23
+ * @param packageJsonData The package.json data to modify
24
+ * @param packageJsonPath The path to the package.json file
25
+ */
26
+ private static resolveWildcardDependenciesInPackageJson;
15
27
  /**
16
28
  * Executes a dry run of JSR publishing. Returns true if the dry run was
17
29
  * successful, false otherwise.
@@ -1 +1 @@
1
- {"version":3,"file":"PackageService.d.ts","sourceRoot":"./src/","sources":["services/PackageService.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC;;;;;OAKG;WACU,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;WAenC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;WAe7B,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCtD;;;OAGG;mBACkB,gBAAgB;IAmBrC;;;;OAIG;mBACkB,UAAU;mBAkBV,gBAAgB;CAUtC"}
1
+ {"version":3,"file":"PackageService.d.ts","sourceRoot":"./src/","sources":["services/PackageService.ts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC;;;;;OAKG;WACU,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;WAenC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAe1C;;;OAGG;WACU,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgDtD;;;;;;OAMG;mBACkB,wCAAwC;IA+C7D;;;OAGG;mBACkB,gBAAgB;IAmBrC;;;;OAIG;mBACkB,UAAU;mBAkBV,gBAAgB;CAUtC"}
@@ -4,6 +4,7 @@ import path from 'path';
4
4
  import { promisify } from 'util';
5
5
  import ErrorUtils from '../utils/ErrorUtils.js';
6
6
  import { DR } from './DependencyRegistry.js';
7
+ import DependencyService from './DependencyService.js';
7
8
  import FileSystemService from './FileSystemService/FileSystemService.js';
8
9
  const execAsync = promisify(exec);
9
10
  /**
@@ -47,6 +48,10 @@ export default class PackageService {
47
48
  DR.logger.success('Successfully published to JSR.');
48
49
  }
49
50
  }
51
+ /**
52
+ * Updates the jsr.json file from the package.json file and resolves wildcard
53
+ * dependencies in package.json for JSR compatibility.
54
+ */
50
55
  static async updateJsrFromPackageJson() {
51
56
  const rootDir = process.cwd();
52
57
  const packageJsonPath = path.join(rootDir, 'package.json');
@@ -68,7 +73,10 @@ export default class PackageService {
68
73
  try {
69
74
  const packageJsonData = JSON.parse(await readFile(packageJsonPath, 'utf-8'));
70
75
  const jsrJsonData = JSON.parse(await readFile(jsrJsonPath, 'utf-8'));
76
+ // Update JSR version
71
77
  jsrJsonData.version = packageJsonData.version;
78
+ // Resolve wildcard dependencies in package.json for JSR compatibility
79
+ await this.resolveWildcardDependenciesInPackageJson(packageJsonData, packageJsonPath);
72
80
  await writeFile(jsrJsonPath, JSON.stringify(jsrJsonData, null, 2));
73
81
  DR.logger.info('Updated jsr.json from package.json to version ' + jsrJsonData.version);
74
82
  }
@@ -77,6 +85,44 @@ export default class PackageService {
77
85
  DR.logger.error(`Failed to update jsr.json from package.json: ${errorString}`);
78
86
  }
79
87
  }
88
+ /**
89
+ * Resolves wildcard dependencies in package.json by replacing them with actual
90
+ * version constraints (e.g., "*1.2.3") for JSR compatibility.
91
+ *
92
+ * @param packageJsonData The package.json data to modify
93
+ * @param packageJsonPath The path to the package.json file
94
+ */
95
+ static async resolveWildcardDependenciesInPackageJson(packageJsonData, packageJsonPath) {
96
+ try {
97
+ // Get all packages one directory up to resolve local wildcard dependencies
98
+ const childPackages = await DependencyService.getChildPackageJsons('../');
99
+ // Helper function to resolve dependencies
100
+ const resolveDependencies = (deps) => {
101
+ if (!deps)
102
+ return;
103
+ for (const [depName, depVersion] of Object.entries(deps)) {
104
+ if (depVersion === '*' && depName in childPackages) {
105
+ // Replace wildcard with "*" + actual version from the monorepo
106
+ deps[depName] =
107
+ `*${childPackages[depName].packageJsonContents.version}`;
108
+ }
109
+ }
110
+ };
111
+ // Resolve each dependency type
112
+ resolveDependencies(packageJsonData.dependencies);
113
+ resolveDependencies(packageJsonData.devDependencies);
114
+ resolveDependencies(packageJsonData.peerDependencies);
115
+ resolveDependencies(packageJsonData.optionalDependencies);
116
+ // Write the updated package.json
117
+ await writeFile(packageJsonPath, JSON.stringify(packageJsonData, null, 2));
118
+ DR.logger.info('Resolved wildcard dependencies in package.json for JSR compatibility');
119
+ }
120
+ catch (error) {
121
+ const errorString = ErrorUtils.getErrorString(error);
122
+ DR.logger.error(`Failed to resolve wildcard dependencies: ${errorString}`);
123
+ throw error;
124
+ }
125
+ }
80
126
  /**
81
127
  * Executes a dry run of JSR publishing. Returns true if the dry run was
82
128
  * successful, false otherwise.
@@ -119,12 +165,12 @@ export default class PackageService {
119
165
  });
120
166
  }
121
167
  static async revertGitChanges() {
122
- DR.logger.info('Reverting changes made to jsr.json');
168
+ DR.logger.info('Reverting changes made to jsr.json and package.json');
123
169
  try {
124
- await execAsync('git checkout jsr.json');
170
+ await execAsync('git checkout jsr.json package.json');
125
171
  }
126
172
  catch (error) {
127
- DR.logger.error(`Failed to revert changes made to jsr.json: ${ErrorUtils.getErrorString(error)}`);
173
+ DR.logger.error(`Failed to revert changes made to jsr.json and package.json: ${ErrorUtils.getErrorString(error)}`);
128
174
  }
129
175
  }
130
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PackageService.js","sourceRoot":"./src/","sources":["services/PackageService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PackageService.js","sourceRoot":"./src/","sources":["services/PackageService.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,11 @@ import { exec, spawn } from 'child_process';
2
2
  import { access, readFile, writeFile } from 'fs/promises';
3
3
  import path from 'path';
4
4
  import { promisify } from 'util';
5
+ import { JsonWithVersionProperty } from '../types/JsonWithVersionProperty.js';
6
+ import { PackageJson } from '../types/PackageJson.js';
5
7
  import ErrorUtils from '../utils/ErrorUtils.js';
6
8
  import { DR } from './DependencyRegistry.js';
7
- import { JsonWithVersionProperty, PackageJson } from './DependencyService.js';
9
+ import DependencyService from './DependencyService.js';
8
10
  import FileSystemService from './FileSystemService/FileSystemService.js';
9
11
 
10
12
  const execAsync = promisify(exec);
@@ -50,6 +52,10 @@ export default class PackageService {
50
52
  }
51
53
  }
52
54
 
55
+ /**
56
+ * Updates the jsr.json file from the package.json file and resolves wildcard
57
+ * dependencies in package.json for JSR compatibility.
58
+ */
53
59
  static async updateJsrFromPackageJson(): Promise<void> {
54
60
  const rootDir = process.cwd();
55
61
  const packageJsonPath = path.join(rootDir, 'package.json');
@@ -76,7 +82,16 @@ export default class PackageService {
76
82
  const jsrJsonData = JSON.parse(
77
83
  await readFile(jsrJsonPath, 'utf-8')
78
84
  ) as JsonWithVersionProperty;
85
+
86
+ // Update JSR version
79
87
  jsrJsonData.version = packageJsonData.version;
88
+
89
+ // Resolve wildcard dependencies in package.json for JSR compatibility
90
+ await this.resolveWildcardDependenciesInPackageJson(
91
+ packageJsonData,
92
+ packageJsonPath
93
+ );
94
+
80
95
  await writeFile(jsrJsonPath, JSON.stringify(jsrJsonData, null, 2));
81
96
  DR.logger.info(
82
97
  'Updated jsr.json from package.json to version ' + jsrJsonData.version
@@ -89,6 +104,60 @@ export default class PackageService {
89
104
  }
90
105
  }
91
106
 
107
+ /**
108
+ * Resolves wildcard dependencies in package.json by replacing them with actual
109
+ * version constraints (e.g., "*1.2.3") for JSR compatibility.
110
+ *
111
+ * @param packageJsonData The package.json data to modify
112
+ * @param packageJsonPath The path to the package.json file
113
+ */
114
+ private static async resolveWildcardDependenciesInPackageJson(
115
+ packageJsonData: PackageJson,
116
+ packageJsonPath: string
117
+ ): Promise<void> {
118
+ try {
119
+ // Get all packages one directory up to resolve local wildcard dependencies
120
+ const childPackages = await DependencyService.getChildPackageJsons('../');
121
+
122
+ // Helper function to resolve dependencies
123
+ const resolveDependencies = (
124
+ deps: Record<string, string> | undefined
125
+ ): void => {
126
+ if (!deps) return;
127
+
128
+ for (const [depName, depVersion] of Object.entries(deps)) {
129
+ if (depVersion === '*' && depName in childPackages) {
130
+ // Replace wildcard with "*" + actual version from the monorepo
131
+ deps[depName] =
132
+ `*${childPackages[depName].packageJsonContents.version}`;
133
+ }
134
+ }
135
+ };
136
+
137
+ // Resolve each dependency type
138
+ resolveDependencies(packageJsonData.dependencies);
139
+ resolveDependencies(packageJsonData.devDependencies);
140
+ resolveDependencies(packageJsonData.peerDependencies);
141
+ resolveDependencies(packageJsonData.optionalDependencies);
142
+
143
+ // Write the updated package.json
144
+ await writeFile(
145
+ packageJsonPath,
146
+ JSON.stringify(packageJsonData, null, 2)
147
+ );
148
+
149
+ DR.logger.info(
150
+ 'Resolved wildcard dependencies in package.json for JSR compatibility'
151
+ );
152
+ } catch (error) {
153
+ const errorString = ErrorUtils.getErrorString(error);
154
+ DR.logger.error(
155
+ `Failed to resolve wildcard dependencies: ${errorString}`
156
+ );
157
+ throw error;
158
+ }
159
+ }
160
+
92
161
  /**
93
162
  * Executes a dry run of JSR publishing. Returns true if the dry run was
94
163
  * successful, false otherwise.
@@ -136,12 +205,12 @@ export default class PackageService {
136
205
  }
137
206
 
138
207
  private static async revertGitChanges(): Promise<void> {
139
- DR.logger.info('Reverting changes made to jsr.json');
208
+ DR.logger.info('Reverting changes made to jsr.json and package.json');
140
209
  try {
141
- await execAsync('git checkout jsr.json');
210
+ await execAsync('git checkout jsr.json package.json');
142
211
  } catch (error) {
143
212
  DR.logger.error(
144
- `Failed to revert changes made to jsr.json: ${ErrorUtils.getErrorString(error)}`
213
+ `Failed to revert changes made to jsr.json and package.json: ${ErrorUtils.getErrorString(error)}`
145
214
  );
146
215
  }
147
216
  }
@@ -0,0 +1,4 @@
1
+ export interface JsonWithVersionProperty {
2
+ version: string;
3
+ }
4
+ //# sourceMappingURL=JsonWithVersionProperty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonWithVersionProperty.d.ts","sourceRoot":"./src/","sources":["types/JsonWithVersionProperty.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=JsonWithVersionProperty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonWithVersionProperty.js","sourceRoot":"./src/","sources":["types/JsonWithVersionProperty.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export interface JsonWithVersionProperty {
2
+ version: string;
3
+ }
@@ -0,0 +1,9 @@
1
+ import { JsonWithVersionProperty } from './JsonWithVersionProperty.js';
2
+ export interface PackageJson extends JsonWithVersionProperty {
3
+ name: string;
4
+ dependencies?: Record<string, string>;
5
+ devDependencies?: Record<string, string>;
6
+ peerDependencies?: Record<string, string>;
7
+ optionalDependencies?: Record<string, string>;
8
+ }
9
+ //# sourceMappingURL=PackageJson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackageJson.d.ts","sourceRoot":"./src/","sources":["types/PackageJson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,WAAW,WAAY,SAAQ,uBAAuB;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PackageJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackageJson.js","sourceRoot":"./src/","sources":["types/PackageJson.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { JsonWithVersionProperty } from './JsonWithVersionProperty.js';
2
+
3
+ export interface PackageJson extends JsonWithVersionProperty {
4
+ name: string;
5
+ dependencies?: Record<string, string>;
6
+ devDependencies?: Record<string, string>;
7
+ peerDependencies?: Record<string, string>;
8
+ optionalDependencies?: Record<string, string>;
9
+ }
@@ -0,0 +1,6 @@
1
+ import { PackageJson } from './PackageJson.js';
2
+ export interface PackageJsonInfo {
3
+ packageJsonContents: PackageJson;
4
+ packageJsonPath: string;
5
+ }
6
+ //# sourceMappingURL=PackageJsonInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackageJsonInfo.d.ts","sourceRoot":"./src/","sources":["types/PackageJsonInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,mBAAmB,EAAE,WAAW,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PackageJsonInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackageJsonInfo.js","sourceRoot":"./src/","sources":["types/PackageJsonInfo.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { PackageJson } from './PackageJson.js';
2
+
3
+ export interface PackageJsonInfo {
4
+ packageJsonContents: PackageJson;
5
+ packageJsonPath: string;
6
+ }
@@ -0,0 +1,5 @@
1
+ import { PackageJsonInfo } from './PackageJsonInfo.js';
2
+ export interface PackageJsonMap {
3
+ [packageName: string]: PackageJsonInfo;
4
+ }
5
+ //# sourceMappingURL=PackageJsonMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackageJsonMap.d.ts","sourceRoot":"./src/","sources":["types/PackageJsonMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAAC;CACxC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PackageJsonMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackageJsonMap.js","sourceRoot":"./src/","sources":["types/PackageJsonMap.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { PackageJsonInfo } from './PackageJsonInfo.js';
2
+
3
+ export interface PackageJsonMap {
4
+ [packageName: string]: PackageJsonInfo;
5
+ }
package/package.json CHANGED
@@ -2,18 +2,20 @@
2
2
  "name": "@aneuhold/core-ts-lib",
3
3
  "author": "Anton G. Neuhold Jr.",
4
4
  "license": "MIT",
5
- "version": "2.1.1",
5
+ "version": "2.1.7",
6
6
  "description": "A core library for all of my TypeScript projects",
7
- "packageManager": "yarn@4.6.0",
8
7
  "type": "module",
9
8
  "scripts": {
10
9
  "build": "rimraf lib && tsc --project tsconfig.build.json && tsx ./scripts/copyTsFiles.ts",
10
+ "watch": "tsc -w -p tsconfig.build.json",
11
11
  "lint": "eslint",
12
12
  "test": "jest",
13
13
  "jsr:validate": "tsx ./scripts/validateJsrPublish.ts",
14
- "checkAll": "yarn build && yarn lint && yarn test && yarn jsr:validate",
14
+ "checkAll": "pnpm build && pnpm lint && pnpm test && pnpm jsr:validate",
15
15
  "jsr:publish": "tsx ./scripts/publishJsr.ts",
16
- "upgrade:all": "yarn up"
16
+ "upgrade:all": "pnpm up",
17
+ "publish:local": "pnpm publish --registry http://localhost:4873 --access public --no-git-checks --force",
18
+ "unpublish:local": "npm unpublish --registry http://localhost:4873 --force"
17
19
  },
18
20
  "main": "lib/index.js",
19
21
  "module": "lib/index.js",
@@ -29,27 +31,26 @@
29
31
  },
30
32
  "repository": {
31
33
  "type": "git",
32
- "url": "git+https://github.com/aneuhold/core-ts-lib.git"
34
+ "url": "git+https://github.com/aneuhold/ts-libs.git"
33
35
  },
34
36
  "bugs": {
35
- "url": "https://github.com/aneuhold/core-ts-lib/issues"
37
+ "url": "https://github.com/aneuhold/ts-libs/issues"
36
38
  },
37
- "homepage": "https://github.com/aneuhold/core-ts-lib#readme",
39
+ "homepage": "https://github.com/aneuhold/ts-libs/tree/main/packages/core-ts-lib#readme",
38
40
  "keywords": [
39
41
  "Scripting",
40
42
  "Node.js"
41
43
  ],
42
44
  "devDependencies": {
43
- "@aneuhold/eslint-config": "^1.0.88",
44
45
  "@types/jest": "^29.5.14",
45
- "@types/node": "^22.15.2",
46
- "eslint": "^9.25.1",
46
+ "@types/node": "^22.15.3",
47
+ "eslint": "^9.26.0",
47
48
  "jest": "^29.7.*",
48
49
  "jsr": "*",
49
50
  "prettier": "^3.5.3",
50
51
  "rimraf": "^6.0.1",
51
52
  "ts-jest": "^29.3.2",
52
- "tsx": "^4.19.3",
53
+ "tsx": "^4.19.4",
53
54
  "typescript": "~5.8.3"
54
55
  }
55
56
  }