@kamaalio/codemod-kit 0.0.40 โ†’ 0.0.42

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.
@@ -1,2 +1,2 @@
1
1
  export { runCodemods, runCodemod, commitEditModifications, findAndReplace, findAndReplaceEdits, findAndReplaceConfig, findAndReplaceConfigModifications, traverseUp, runCodemodsOnProjects, } from './utils.js';
2
- export type { Codemod, Modifications, FindAndReplaceConfig, RunCodemodOkResult, RunCodemodResult, CodemodRunnerCodemod, RepositoryToClone, } from './types.js';
2
+ export type { Codemod, Modifications, FindAndReplaceConfig, RunCodemodOkResult, RunCodemodResult, CodemodRunnerCodemod, RepositoryToClone, CodemodOptions, } from './types.js';
@@ -10,7 +10,7 @@ export type RunCodemodOkResult = {
10
10
  root: string;
11
11
  };
12
12
  export type RunCodemodResult = Result<RunCodemodOkResult, Error>;
13
- type CodemodOptions = {
13
+ export type CodemodOptions = {
14
14
  postTransform?: Record<string, unknown>;
15
15
  };
16
16
  export type Codemod = {
@@ -46,4 +46,3 @@ export type FindAndReplaceConfig = {
46
46
  rule: Rule<TypesMap>;
47
47
  transformer: ((node: SgNode<TypesMap, Kinds<TypesMap>>, rule: Rule<TypesMap>) => types.Optional<Edit | string> | Array<Edit | string>) | string;
48
48
  };
49
- export {};
@@ -2,17 +2,5 @@ import z from 'zod';
2
2
  export declare const DefaultBranchRefSchema: z.ZodObject<{
3
3
  defaultBranchRef: z.ZodObject<{
4
4
  name: z.ZodString;
5
- }, "strip", z.ZodTypeAny, {
6
- name: string;
7
- }, {
8
- name: string;
9
- }>;
10
- }, "strip", z.ZodTypeAny, {
11
- defaultBranchRef: {
12
- name: string;
13
- };
14
- }, {
15
- defaultBranchRef: {
16
- name: string;
17
- };
18
- }>;
5
+ }, z.z.core.$strip>;
6
+ }, z.z.core.$strip>;
package/dist/index.cjs CHANGED
@@ -22,7 +22,7 @@ var __webpack_require__ = {};
22
22
  })();
23
23
  (()=>{
24
24
  __webpack_require__.r = (exports1)=>{
25
- if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
25
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
26
26
  value: 'Module'
27
27
  });
28
28
  Object.defineProperty(exports1, '__esModule', {
@@ -33,15 +33,15 @@ var __webpack_require__ = {};
33
33
  var __webpack_exports__ = {};
34
34
  __webpack_require__.r(__webpack_exports__);
35
35
  __webpack_require__.d(__webpack_exports__, {
36
- traverseUp: ()=>traverseUp,
37
36
  findAndReplace: ()=>findAndReplace,
38
- findAndReplaceConfig: ()=>findAndReplaceConfig,
39
- commitEditModifications: ()=>commitEditModifications,
40
- runCodemod: ()=>runCodemod,
41
- findAndReplaceConfigModifications: ()=>findAndReplaceConfigModifications,
42
37
  findAndReplaceEdits: ()=>findAndReplaceEdits,
38
+ traverseUp: ()=>traverseUp,
39
+ runCodemodsOnProjects: ()=>runCodemodsOnProjects,
40
+ commitEditModifications: ()=>commitEditModifications,
43
41
  runCodemods: ()=>runCodemods,
44
- runCodemodsOnProjects: ()=>runCodemodsOnProjects
42
+ findAndReplaceConfig: ()=>findAndReplaceConfig,
43
+ runCodemod: ()=>runCodemod,
44
+ findAndReplaceConfigModifications: ()=>findAndReplaceConfigModifications
45
45
  });
46
46
  const external_node_path_namespaceObject = require("node:path");
47
47
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
@@ -468,17 +468,17 @@ async function makePullRequestsForCodemodResults(codemods, codemodResults, repos
468
468
  async function makePullRequestsForCodemodResult(codemod, codemodResult, repositories) {
469
469
  const { success } = groupResults(codemodResult);
470
470
  const hasChanges = success.some((result)=>result.hasChanges);
471
- if (!hasChanges) return void console.log(`\u{1F438} nothing transformed for '${codemod.name}'`);
471
+ if (!hasChanges) return void console.log(`๐Ÿธ nothing transformed for '${codemod.name}'`);
472
472
  await Promise.all(repositories.map(async (repository)=>{
473
473
  await repository.commit(codemod.commitMessage);
474
474
  const pushResult = await repository.push();
475
- if (pushResult.isErr()) return void console.error(`\u{274C} Failed to push changes`, pushResult.error.message);
475
+ if (pushResult.isErr()) return void console.error(`โŒ Failed to push changes`, pushResult.error.message);
476
476
  const pullRequestResult = await makePullRequest({
477
477
  workingDirectory: repository.path,
478
478
  title: codemod.commitMessage
479
479
  });
480
- if (pullRequestResult.isErr()) return void console.error(`\u{2705} already pushed transformation for`, repository.address);
481
- console.log(`\u{2705} pull request created`, pullRequestResult.value.stdout);
480
+ if (pullRequestResult.isErr()) return void console.error(`โœ… already pushed transformation for`, repository.address);
481
+ console.log(`โœ… pull request created`, pullRequestResult.value.stdout);
482
482
  }));
483
483
  }
484
484
  async function makePullRequest(params) {
@@ -488,7 +488,7 @@ async function makePullRequest(params) {
488
488
  }
489
489
  async function runCodemodsOnProjects(repositoriesToClone, codemods, options) {
490
490
  const clonedRepositories = await cloneRepositories(repositoriesToClone, options.workingDirectory);
491
- console.log(`\u{1F5A8}\u{FE0F} cloned ${clonedRepositories.length} ${1 === clonedRepositories.length ? 'repository' : 'repositories'}`);
491
+ console.log(`๐Ÿ–จ๏ธ cloned ${clonedRepositories.length} ${1 === clonedRepositories.length ? 'repository' : 'repositories'}`);
492
492
  const codemodRepositoriesMappedByCodemodName = await prepareRepositoriesForCodemods(clonedRepositories, codemods, options.workingDirectory);
493
493
  const codemodResults = await runCodemodRunner(codemods, codemodRepositoriesMappedByCodemodName, options.workingDirectory);
494
494
  if (options.pushChanges) await makePullRequestsForCodemodResults(codemods, codemodResults, codemodRepositoriesMappedByCodemodName);
@@ -510,7 +510,7 @@ async function codemodPreCodemodRun(repositories, codemod) {
510
510
  const preparationResults = await Promise.all(repositories.map((repo)=>repo.prepareForUpdate(codemod.name)));
511
511
  const { failure: preparationFailures } = groupResults(preparationResults);
512
512
  const failedRepositoryAddresses = preparationFailures.map((failure)=>failure.repository.address);
513
- if (preparationFailures.length > 0) console.error(`\u{274C} failed to prepare [${failedRepositoryAddresses.join(', ')}] for '${codemod.name}'`);
513
+ if (preparationFailures.length > 0) console.error(`โŒ failed to prepare [${failedRepositoryAddresses.join(', ')}] for '${codemod.name}'`);
514
514
  return new Set(failedRepositoryAddresses);
515
515
  }
516
516
  async function codemodPostTransform(transformedContent) {
@@ -534,7 +534,7 @@ async function runCodemodRunner(codemods, repositories, workingDirectory) {
534
534
  }
535
535
  });
536
536
  const end = performance.now();
537
- console.log(`\u{2728} '${codemod.name}' codemod took ${((end - start) / 1000).toFixed(2)} seconds`);
537
+ console.log(`โœจ '${codemod.name}' codemod took ${((end - start) / 1000).toFixed(2)} seconds`);
538
538
  return [
539
539
  codemod.name,
540
540
  result
@@ -556,8 +556,7 @@ async function prepareRepositoriesForCodemods(repositories, codemods, workingDir
556
556
  if (prepareResult.isErr()) throw prepareResult.error;
557
557
  return prepareResult.value;
558
558
  }));
559
- console.log(`\u{1F4CB} prepared the following repos for codemods:
560
- \xb7 ${updatedRepositories.map((repo)=>repo.address).join("\n\xb7 ")}`);
559
+ console.log(`๐Ÿ“‹ prepared the following repos for codemods:\nยท ${updatedRepositories.map((repo)=>repo.address).join('\nยท ')}`);
561
560
  return Object.fromEntries(await Promise.all(codemods.map(copyRepo(workingDirectory, updatedRepositories))));
562
561
  }
563
562
  async function runCodemods(codemods, transformationPath, options) {
@@ -585,7 +584,7 @@ async function runCodemod(codemod, transformationPath, options) {
585
584
  return collectionIsEmpty(extensions) || extensions.has(external_node_path_default().extname(filepath));
586
585
  });
587
586
  if (0 === targets.length) return [];
588
- if (enableLogging) console.log(`\u{1F9C9} '${codemod.name}' targeting ${targets.length} ${1 === targets.length ? 'file' : 'files'} to transform, chill and grab some mat\xe9`);
587
+ if (enableLogging) console.log(`๐Ÿง‰ '${codemod.name}' targeting ${targets.length} ${1 === targets.length ? 'file' : 'files'} to transform, chill and grab some matรฉ`);
589
588
  const results = await Promise.all(targets.map(async (filepath)=>{
590
589
  const fullPath = external_node_path_default().join(transformationPath, filepath);
591
590
  try {
@@ -597,7 +596,7 @@ async function runCodemod(codemod, transformationPath, options) {
597
596
  if (hasChanges) {
598
597
  const transformedContent = await hooks.postTransform(modifiedContent, codemod);
599
598
  if (!runInDryMode) await promises_default().writeFile(fullPath, transformedContent);
600
- if (enableLogging) console.log(`\u{1F680} finished '${codemod.name}'`, {
599
+ if (enableLogging) console.log(`๐Ÿš€ finished '${codemod.name}'`, {
601
600
  filename: filepath
602
601
  });
603
602
  }
@@ -608,7 +607,7 @@ async function runCodemod(codemod, transformationPath, options) {
608
607
  root: external_node_path_default().resolve(transformationPath, filepath.split('/')[0])
609
608
  });
610
609
  } catch (error) {
611
- if (enableLogging) console.error(`\u{274C} '${codemod.name}' failed to parse file`, filepath, error);
610
+ if (enableLogging) console.error(`โŒ '${codemod.name}' failed to parse file`, filepath, error);
612
611
  return (0, external_neverthrow_namespaceObject.err)(error);
613
612
  }
614
613
  }));
@@ -740,7 +739,7 @@ function copyRepo(workingDirectory, repositories) {
740
739
  await (0, external_execa_namespaceObject.$)`mkdir -p ${codemodWorkingDirectory}`;
741
740
  const codeRepositories = await Promise.all(repositories.map((repo)=>{
742
741
  const newPath = external_node_path_default().join(codemodWorkingDirectory, repo.name);
743
- console.log(`\xa9\u{FE0F} copying ${repo.name} -> ${newPath}`);
742
+ console.log(`ยฉ๏ธ copying ${repo.name} -> ${newPath}`);
744
743
  return repo.copy(newPath);
745
744
  }));
746
745
  return [
@@ -792,7 +791,7 @@ exports.runCodemod = __webpack_exports__.runCodemod;
792
791
  exports.runCodemods = __webpack_exports__.runCodemods;
793
792
  exports.runCodemodsOnProjects = __webpack_exports__.runCodemodsOnProjects;
794
793
  exports.traverseUp = __webpack_exports__.traverseUp;
795
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
794
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
796
795
  "commitEditModifications",
797
796
  "findAndReplace",
798
797
  "findAndReplaceConfig",
@@ -802,7 +801,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
802
801
  "runCodemods",
803
802
  "runCodemodsOnProjects",
804
803
  "traverseUp"
805
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
804
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
806
805
  Object.defineProperty(exports, '__esModule', {
807
806
  value: true
808
807
  });
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { runCodemods, runCodemod, commitEditModifications, findAndReplace, findAndReplaceEdits, findAndReplaceConfig, findAndReplaceConfigModifications, traverseUp, runCodemodsOnProjects, type Codemod, type Modifications, type FindAndReplaceConfig, type RunCodemodOkResult, type RunCodemodResult, type CodemodRunnerCodemod, type RepositoryToClone, } from './codemods/index.js';
1
+ export { runCodemods, runCodemod, commitEditModifications, findAndReplace, findAndReplaceEdits, findAndReplaceConfig, findAndReplaceConfigModifications, traverseUp, runCodemodsOnProjects, type Codemod, type Modifications, type FindAndReplaceConfig, type RunCodemodOkResult, type RunCodemodResult, type CodemodRunnerCodemod, type RepositoryToClone, type CodemodOptions, } from './codemods/index.js';
package/dist/index.js CHANGED
@@ -419,17 +419,17 @@ async function makePullRequestsForCodemodResults(codemods, codemodResults, repos
419
419
  async function makePullRequestsForCodemodResult(codemod, codemodResult, repositories) {
420
420
  const { success } = groupResults(codemodResult);
421
421
  const hasChanges = success.some((result)=>result.hasChanges);
422
- if (!hasChanges) return void console.log(`\u{1F438} nothing transformed for '${codemod.name}'`);
422
+ if (!hasChanges) return void console.log(`๐Ÿธ nothing transformed for '${codemod.name}'`);
423
423
  await Promise.all(repositories.map(async (repository)=>{
424
424
  await repository.commit(codemod.commitMessage);
425
425
  const pushResult = await repository.push();
426
- if (pushResult.isErr()) return void console.error(`\u{274C} Failed to push changes`, pushResult.error.message);
426
+ if (pushResult.isErr()) return void console.error(`โŒ Failed to push changes`, pushResult.error.message);
427
427
  const pullRequestResult = await makePullRequest({
428
428
  workingDirectory: repository.path,
429
429
  title: codemod.commitMessage
430
430
  });
431
- if (pullRequestResult.isErr()) return void console.error(`\u{2705} already pushed transformation for`, repository.address);
432
- console.log(`\u{2705} pull request created`, pullRequestResult.value.stdout);
431
+ if (pullRequestResult.isErr()) return void console.error(`โœ… already pushed transformation for`, repository.address);
432
+ console.log(`โœ… pull request created`, pullRequestResult.value.stdout);
433
433
  }));
434
434
  }
435
435
  async function makePullRequest(params) {
@@ -439,7 +439,7 @@ async function makePullRequest(params) {
439
439
  }
440
440
  async function runCodemodsOnProjects(repositoriesToClone, codemods, options) {
441
441
  const clonedRepositories = await cloneRepositories(repositoriesToClone, options.workingDirectory);
442
- console.log(`\u{1F5A8}\u{FE0F} cloned ${clonedRepositories.length} ${1 === clonedRepositories.length ? 'repository' : 'repositories'}`);
442
+ console.log(`๐Ÿ–จ๏ธ cloned ${clonedRepositories.length} ${1 === clonedRepositories.length ? 'repository' : 'repositories'}`);
443
443
  const codemodRepositoriesMappedByCodemodName = await prepareRepositoriesForCodemods(clonedRepositories, codemods, options.workingDirectory);
444
444
  const codemodResults = await runCodemodRunner(codemods, codemodRepositoriesMappedByCodemodName, options.workingDirectory);
445
445
  if (options.pushChanges) await makePullRequestsForCodemodResults(codemods, codemodResults, codemodRepositoriesMappedByCodemodName);
@@ -461,7 +461,7 @@ async function codemodPreCodemodRun(repositories, codemod) {
461
461
  const preparationResults = await Promise.all(repositories.map((repo)=>repo.prepareForUpdate(codemod.name)));
462
462
  const { failure: preparationFailures } = groupResults(preparationResults);
463
463
  const failedRepositoryAddresses = preparationFailures.map((failure)=>failure.repository.address);
464
- if (preparationFailures.length > 0) console.error(`\u{274C} failed to prepare [${failedRepositoryAddresses.join(', ')}] for '${codemod.name}'`);
464
+ if (preparationFailures.length > 0) console.error(`โŒ failed to prepare [${failedRepositoryAddresses.join(', ')}] for '${codemod.name}'`);
465
465
  return new Set(failedRepositoryAddresses);
466
466
  }
467
467
  async function codemodPostTransform(transformedContent) {
@@ -485,7 +485,7 @@ async function runCodemodRunner(codemods, repositories, workingDirectory) {
485
485
  }
486
486
  });
487
487
  const end = performance.now();
488
- console.log(`\u{2728} '${codemod.name}' codemod took ${((end - start) / 1000).toFixed(2)} seconds`);
488
+ console.log(`โœจ '${codemod.name}' codemod took ${((end - start) / 1000).toFixed(2)} seconds`);
489
489
  return [
490
490
  codemod.name,
491
491
  result
@@ -507,8 +507,7 @@ async function prepareRepositoriesForCodemods(repositories, codemods, workingDir
507
507
  if (prepareResult.isErr()) throw prepareResult.error;
508
508
  return prepareResult.value;
509
509
  }));
510
- console.log(`\u{1F4CB} prepared the following repos for codemods:
511
- \xb7 ${updatedRepositories.map((repo)=>repo.address).join("\n\xb7 ")}`);
510
+ console.log(`๐Ÿ“‹ prepared the following repos for codemods:\nยท ${updatedRepositories.map((repo)=>repo.address).join('\nยท ')}`);
512
511
  return Object.fromEntries(await Promise.all(codemods.map(copyRepo(workingDirectory, updatedRepositories))));
513
512
  }
514
513
  async function runCodemods(codemods, transformationPath, options) {
@@ -536,7 +535,7 @@ async function runCodemod(codemod, transformationPath, options) {
536
535
  return collectionIsEmpty(extensions) || extensions.has(node_path.extname(filepath));
537
536
  });
538
537
  if (0 === targets.length) return [];
539
- if (enableLogging) console.log(`\u{1F9C9} '${codemod.name}' targeting ${targets.length} ${1 === targets.length ? 'file' : 'files'} to transform, chill and grab some mat\xe9`);
538
+ if (enableLogging) console.log(`๐Ÿง‰ '${codemod.name}' targeting ${targets.length} ${1 === targets.length ? 'file' : 'files'} to transform, chill and grab some matรฉ`);
540
539
  const results = await Promise.all(targets.map(async (filepath)=>{
541
540
  const fullPath = node_path.join(transformationPath, filepath);
542
541
  try {
@@ -548,7 +547,7 @@ async function runCodemod(codemod, transformationPath, options) {
548
547
  if (hasChanges) {
549
548
  const transformedContent = await hooks.postTransform(modifiedContent, codemod);
550
549
  if (!runInDryMode) await promises.writeFile(fullPath, transformedContent);
551
- if (enableLogging) console.log(`\u{1F680} finished '${codemod.name}'`, {
550
+ if (enableLogging) console.log(`๐Ÿš€ finished '${codemod.name}'`, {
552
551
  filename: filepath
553
552
  });
554
553
  }
@@ -559,7 +558,7 @@ async function runCodemod(codemod, transformationPath, options) {
559
558
  root: node_path.resolve(transformationPath, filepath.split('/')[0])
560
559
  });
561
560
  } catch (error) {
562
- if (enableLogging) console.error(`\u{274C} '${codemod.name}' failed to parse file`, filepath, error);
561
+ if (enableLogging) console.error(`โŒ '${codemod.name}' failed to parse file`, filepath, error);
563
562
  return err(error);
564
563
  }
565
564
  }));
@@ -691,7 +690,7 @@ function copyRepo(workingDirectory, repositories) {
691
690
  await $`mkdir -p ${codemodWorkingDirectory}`;
692
691
  const codeRepositories = await Promise.all(repositories.map((repo)=>{
693
692
  const newPath = node_path.join(codemodWorkingDirectory, repo.name);
694
- console.log(`\xa9\u{FE0F} copying ${repo.name} -> ${newPath}`);
693
+ console.log(`ยฉ๏ธ copying ${repo.name} -> ${newPath}`);
695
694
  return repo.copy(newPath);
696
695
  }));
697
696
  return [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kamaalio/codemod-kit",
3
- "version": "0.0.40",
3
+ "version": "0.0.42",
4
4
  "type": "module",
5
5
  "author": "Kamaal Farah",
6
6
  "license": "MIT",
@@ -19,28 +19,28 @@
19
19
  "dist"
20
20
  ],
21
21
  "dependencies": {
22
- "@ast-grep/napi": "^0.38.5",
23
- "@kamaalio/kamaal": "^0.7.8",
24
- "execa": "^9.6.0",
22
+ "@ast-grep/napi": "^0.40.5",
23
+ "@kamaalio/kamaal": "^0.8.0",
24
+ "execa": "^9.6.1",
25
25
  "fast-glob": "^3.3.3",
26
26
  "neverthrow": "^8.2.0",
27
- "zod": "^3.25.67"
27
+ "zod": "^4.3.5"
28
28
  },
29
29
  "devDependencies": {
30
- "@eslint/js": "^9.29.0",
30
+ "@eslint/js": "^9.39.2",
31
31
  "@kamaalio/prettier-config": "^0.1.2",
32
- "@rslib/core": "^0.10.2",
33
- "@types/node": "^22.15.32",
34
- "@vitest/coverage-v8": "3.2.4",
35
- "eslint": "^9.29.0",
36
- "globals": "^16.2.0",
32
+ "@rslib/core": "^0.19.1",
33
+ "@types/node": "^25.0.6",
34
+ "@vitest/coverage-v8": "^4.0.16",
35
+ "eslint": "^9.39.2",
36
+ "globals": "^17.0.0",
37
37
  "husky": "^9.1.7",
38
- "lint-staged": "^16.1.2",
39
- "prettier": "^3.5.3",
40
- "tsx": "^4.20.3",
41
- "typescript": "^5.8.3",
42
- "typescript-eslint": "^8.34.1",
43
- "vitest": "^3.2.4"
38
+ "lint-staged": "^16.2.7",
39
+ "prettier": "^3.7.4",
40
+ "tsx": "^4.21.0",
41
+ "typescript": "^5.9.3",
42
+ "typescript-eslint": "^8.52.0",
43
+ "vitest": "^4.0.16"
44
44
  },
45
45
  "lint-staged": {
46
46
  "**/*": "prettier --write --ignore-unknown"