@atlaskit/codemod-cli 0.27.1 → 0.27.3

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 (119) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/cli.js +3 -3
  3. package/dist/cjs/filepath.js +4 -2
  4. package/dist/cjs/main.js +90 -38
  5. package/dist/cjs/presets/index.js +2 -1
  6. package/dist/cjs/presets/migrate-to-link/codemods/migrate-to-link.js +2 -2
  7. package/dist/cjs/presets/migrate-to-new-buttons/codemods/next-split-imports.js +1 -1
  8. package/dist/cjs/presets/migrate-to-new-buttons/migrate-to-new-buttons.js +2 -2
  9. package/dist/cjs/presets/migrate-to-new-buttons/utils/add-comment-for-custom-theme-buttons.js +1 -1
  10. package/dist/cjs/presets/remove-token-fallbacks/remove-token-fallbacks.js +225 -0
  11. package/dist/cjs/presets/remove-token-fallbacks/types.js +5 -0
  12. package/dist/cjs/presets/remove-token-fallbacks/utils/all-tokens.js +44 -0
  13. package/dist/cjs/presets/remove-token-fallbacks/utils/color-utils.js +93 -0
  14. package/dist/cjs/presets/remove-token-fallbacks/utils/get-team-info.js +51 -0
  15. package/dist/cjs/presets/remove-token-fallbacks/utils/normalize-values.js +113 -0
  16. package/dist/cjs/presets/remove-token-fallbacks/utils/remove-unused-imports.js +61 -0
  17. package/dist/cjs/presets/remove-token-fallbacks/utils/remove-unused-variables.js +37 -0
  18. package/dist/cjs/presets/remove-token-fallbacks/utils/reporter.js +310 -0
  19. package/dist/cjs/presets/remove-token-fallbacks/utils/token-processor.js +632 -0
  20. package/dist/cjs/presets/remove-token-fallbacks/utils/update-comments.js +58 -0
  21. package/dist/cjs/presets/upgrade-pragmatic-drag-and-drop-to-stable/upgrade-pragmatic-drag-and-drop-to-stable.js +3 -3
  22. package/dist/cjs/sinceRef.js +2 -1
  23. package/dist/cjs/transforms.js +3 -1
  24. package/dist/cjs/types.js +2 -1
  25. package/dist/es2019/cli.js +3 -3
  26. package/dist/es2019/filepath.js +4 -2
  27. package/dist/es2019/main.js +30 -6
  28. package/dist/es2019/presets/index.js +2 -1
  29. package/dist/es2019/presets/migrate-to-link/codemods/migrate-to-link.js +2 -3
  30. package/dist/es2019/presets/migrate-to-new-buttons/codemods/next-remove-unsafe-size.js +1 -1
  31. package/dist/es2019/presets/migrate-to-new-buttons/codemods/next-split-imports.js +2 -2
  32. package/dist/es2019/presets/migrate-to-new-buttons/migrate-to-new-buttons.js +2 -2
  33. package/dist/es2019/presets/migrate-to-new-buttons/utils/add-comment-for-custom-theme-buttons.js +1 -1
  34. package/dist/es2019/presets/migrate-to-new-buttons/utils/migrate-fit-container-icon-button.js +1 -1
  35. package/dist/es2019/presets/remove-token-fallbacks/remove-token-fallbacks.js +130 -0
  36. package/dist/es2019/presets/remove-token-fallbacks/types.js +1 -0
  37. package/dist/es2019/presets/remove-token-fallbacks/utils/all-tokens.js +30 -0
  38. package/dist/es2019/presets/remove-token-fallbacks/utils/color-utils.js +84 -0
  39. package/dist/es2019/presets/remove-token-fallbacks/utils/get-team-info.js +22 -0
  40. package/dist/es2019/presets/remove-token-fallbacks/utils/normalize-values.js +104 -0
  41. package/dist/es2019/presets/remove-token-fallbacks/utils/remove-unused-imports.js +51 -0
  42. package/dist/es2019/presets/remove-token-fallbacks/utils/remove-unused-variables.js +31 -0
  43. package/dist/es2019/presets/remove-token-fallbacks/utils/reporter.js +118 -0
  44. package/dist/es2019/presets/remove-token-fallbacks/utils/token-processor.js +377 -0
  45. package/dist/es2019/presets/remove-token-fallbacks/utils/update-comments.js +46 -0
  46. package/dist/es2019/presets/theme-remove-deprecated-mixins/theme-remove-deprecated-mixins.js +1 -1
  47. package/dist/es2019/presets/upgrade-pragmatic-drag-and-drop-to-stable/upgrade-pragmatic-drag-and-drop-to-stable.js +3 -3
  48. package/dist/es2019/sinceRef.js +2 -1
  49. package/dist/es2019/transforms.js +3 -1
  50. package/dist/es2019/types.js +2 -1
  51. package/dist/esm/cli.js +3 -3
  52. package/dist/esm/filepath.js +4 -2
  53. package/dist/esm/main.js +91 -39
  54. package/dist/esm/presets/index.js +2 -1
  55. package/dist/esm/presets/migrate-to-link/codemods/migrate-to-link.js +2 -3
  56. package/dist/esm/presets/migrate-to-new-buttons/codemods/next-remove-unsafe-size.js +1 -1
  57. package/dist/esm/presets/migrate-to-new-buttons/codemods/next-split-imports.js +2 -2
  58. package/dist/esm/presets/migrate-to-new-buttons/migrate-to-new-buttons.js +2 -2
  59. package/dist/esm/presets/migrate-to-new-buttons/utils/add-comment-for-custom-theme-buttons.js +1 -1
  60. package/dist/esm/presets/migrate-to-new-buttons/utils/migrate-fit-container-icon-button.js +1 -1
  61. package/dist/esm/presets/remove-token-fallbacks/remove-token-fallbacks.js +215 -0
  62. package/dist/esm/presets/remove-token-fallbacks/types.js +1 -0
  63. package/dist/esm/presets/remove-token-fallbacks/utils/all-tokens.js +38 -0
  64. package/dist/esm/presets/remove-token-fallbacks/utils/color-utils.js +86 -0
  65. package/dist/esm/presets/remove-token-fallbacks/utils/get-team-info.js +44 -0
  66. package/dist/esm/presets/remove-token-fallbacks/utils/normalize-values.js +107 -0
  67. package/dist/esm/presets/remove-token-fallbacks/utils/remove-unused-imports.js +55 -0
  68. package/dist/esm/presets/remove-token-fallbacks/utils/remove-unused-variables.js +31 -0
  69. package/dist/esm/presets/remove-token-fallbacks/utils/reporter.js +302 -0
  70. package/dist/esm/presets/remove-token-fallbacks/utils/token-processor.js +625 -0
  71. package/dist/esm/presets/remove-token-fallbacks/utils/update-comments.js +51 -0
  72. package/dist/esm/presets/theme-remove-deprecated-mixins/theme-remove-deprecated-mixins.js +1 -1
  73. package/dist/esm/presets/upgrade-pragmatic-drag-and-drop-to-stable/upgrade-pragmatic-drag-and-drop-to-stable.js +3 -3
  74. package/dist/esm/sinceRef.js +2 -1
  75. package/dist/esm/transforms.js +3 -1
  76. package/dist/esm/types.js +2 -1
  77. package/dist/types/filepath.d.ts +3 -1
  78. package/dist/types/main.d.ts +1 -1
  79. package/dist/types/presets/index.d.ts +1 -0
  80. package/dist/types/presets/migrate-to-new-buttons/utils/import-types-from-new-entry-point.d.ts +1 -1
  81. package/dist/types/presets/migrate-to-new-buttons/utils/move-icon-value-from-link-button-to-link-children.d.ts +1 -1
  82. package/dist/types/presets/remove-token-fallbacks/remove-token-fallbacks.d.ts +29 -0
  83. package/dist/types/presets/remove-token-fallbacks/types.d.ts +39 -0
  84. package/dist/types/presets/remove-token-fallbacks/utils/all-tokens.d.ts +1 -0
  85. package/dist/types/presets/remove-token-fallbacks/utils/color-utils.d.ts +3 -0
  86. package/dist/types/presets/remove-token-fallbacks/utils/get-team-info.d.ts +8 -0
  87. package/dist/types/presets/remove-token-fallbacks/utils/normalize-values.d.ts +8 -0
  88. package/dist/types/presets/remove-token-fallbacks/utils/remove-unused-imports.d.ts +2 -0
  89. package/dist/types/presets/remove-token-fallbacks/utils/remove-unused-variables.d.ts +2 -0
  90. package/dist/types/presets/remove-token-fallbacks/utils/reporter.d.ts +4 -0
  91. package/dist/types/presets/remove-token-fallbacks/utils/token-processor.d.ts +30 -0
  92. package/dist/types/presets/remove-token-fallbacks/utils/update-comments.d.ts +2 -0
  93. package/dist/types/presets/styled-to-emotion/styled-to-emotion.d.ts +1 -1
  94. package/dist/types/presets/upgrade-pragmatic-drag-and-drop-to-stable/upgrade-pragmatic-drag-and-drop-to-stable.d.ts +1 -1
  95. package/dist/types/sinceRef.d.ts +2 -1
  96. package/dist/types/transforms.d.ts +3 -1
  97. package/dist/types/types.d.ts +3 -2
  98. package/dist/types-ts4.5/filepath.d.ts +3 -1
  99. package/dist/types-ts4.5/main.d.ts +1 -1
  100. package/dist/types-ts4.5/presets/index.d.ts +1 -0
  101. package/dist/types-ts4.5/presets/migrate-to-new-buttons/utils/import-types-from-new-entry-point.d.ts +1 -1
  102. package/dist/types-ts4.5/presets/migrate-to-new-buttons/utils/move-icon-value-from-link-button-to-link-children.d.ts +1 -1
  103. package/dist/types-ts4.5/presets/remove-token-fallbacks/remove-token-fallbacks.d.ts +29 -0
  104. package/dist/types-ts4.5/presets/remove-token-fallbacks/types.d.ts +39 -0
  105. package/dist/types-ts4.5/presets/remove-token-fallbacks/utils/all-tokens.d.ts +1 -0
  106. package/dist/types-ts4.5/presets/remove-token-fallbacks/utils/color-utils.d.ts +3 -0
  107. package/dist/types-ts4.5/presets/remove-token-fallbacks/utils/get-team-info.d.ts +8 -0
  108. package/dist/types-ts4.5/presets/remove-token-fallbacks/utils/normalize-values.d.ts +8 -0
  109. package/dist/types-ts4.5/presets/remove-token-fallbacks/utils/remove-unused-imports.d.ts +2 -0
  110. package/dist/types-ts4.5/presets/remove-token-fallbacks/utils/remove-unused-variables.d.ts +2 -0
  111. package/dist/types-ts4.5/presets/remove-token-fallbacks/utils/reporter.d.ts +4 -0
  112. package/dist/types-ts4.5/presets/remove-token-fallbacks/utils/token-processor.d.ts +30 -0
  113. package/dist/types-ts4.5/presets/remove-token-fallbacks/utils/update-comments.d.ts +2 -0
  114. package/dist/types-ts4.5/presets/styled-to-emotion/styled-to-emotion.d.ts +1 -1
  115. package/dist/types-ts4.5/presets/upgrade-pragmatic-drag-and-drop-to-stable/upgrade-pragmatic-drag-and-drop-to-stable.d.ts +1 -1
  116. package/dist/types-ts4.5/sinceRef.d.ts +2 -1
  117. package/dist/types-ts4.5/transforms.d.ts +3 -1
  118. package/dist/types-ts4.5/types.d.ts +3 -2
  119. package/package.json +8 -3
@@ -0,0 +1,46 @@
1
+ export function addOrUpdateEslintIgnoreComment(j, tokenValue, fallbackValue, callPath) {
2
+ const commentText = `eslint-disable-next-line @atlaskit/design-system/no-unsafe-design-token-usage -- The token value "${tokenValue}" and fallback "${fallbackValue}" do not match and can't be replaced automatically.`;
3
+ // first see if we can add the comment to the parent object property
4
+ const updatedCommentInObjectExpression = addOrUpdateEslintIgnoreCommentForParentInObjectExpression(j, commentText, callPath);
5
+ // if the comment was not added to the parent object property, add it to the node itself
6
+ if (!updatedCommentInObjectExpression) {
7
+ addOrUpdateEslintIgnoreCommentForNodeItself(j, commentText, callPath);
8
+ }
9
+ }
10
+ function addOrUpdateEslintIgnoreCommentForNodeItself(j, commentText, callPath) {
11
+ const leadingComments = callPath.node.leadingComments || [];
12
+ const existingCommentIndex = leadingComments.findIndex(comment => comment.value.includes('eslint-disable-next-line @atlaskit/design-system/no-unsafe-design-token-usage'));
13
+ const commentLine = j.commentLine(commentText, true);
14
+ if (existingCommentIndex !== -1) {
15
+ // Replace the existing comment
16
+ // Note: in order to modify the comment, it's fine to update it in the `leadingComments` array
17
+ leadingComments[existingCommentIndex] = commentLine;
18
+ } else {
19
+ // Add a new comment if none exists
20
+ // Note: Adding new comment to 'leadingComments' doesn't affect anything, we need to add it to 'comments' property
21
+ callPath.node.comments = [commentLine];
22
+ }
23
+ }
24
+ function addOrUpdateEslintIgnoreCommentForParentInObjectExpression(j, commentText, callPath) {
25
+ const parent = callPath.parentPath;
26
+ // Check if the parent node is an ObjectProperty
27
+ if (parent && parent.node.type === 'ObjectProperty') {
28
+ const grandparent = parent.parentPath;
29
+ // Check if the grandparent is an ObjectExpression
30
+ if (grandparent && grandparent.node.type === 'ObjectExpression') {
31
+ // Check for existing leading comments
32
+ const leadingComments = parent.node.leadingComments || [];
33
+ const existingCommentIndex = leadingComments.findIndex(comment => comment.value.includes('eslint-disable-next-line @atlaskit/design-system/no-unsafe-design-token-usage'));
34
+ const commentLine = j.commentLine(commentText, true);
35
+ if (existingCommentIndex !== -1) {
36
+ // Replace the existing comment
37
+ leadingComments[existingCommentIndex] = commentLine;
38
+ } else {
39
+ // Add a new comment if none exists
40
+ parent.node.comments = [commentLine, ...(parent.node.comments || [])];
41
+ }
42
+ return true;
43
+ }
44
+ }
45
+ return false;
46
+ }
@@ -1,4 +1,4 @@
1
- import { hasImportDeclaration, getImportDeclaration, insertImportSpecifier } from '@codeshift/utils';
1
+ import { getImportDeclaration, hasImportDeclaration, insertImportSpecifier } from '@codeshift/utils';
2
2
  import { colorReplacements } from './utils/replacements';
3
3
  function isDecendantOfType(j, path, type) {
4
4
  return j(path).closest(type).length > 0;
@@ -1,10 +1,10 @@
1
- import { updateSafeImports } from './transformers/update-safe-imports';
1
+ import { updateAutoScroll } from './transformers/auto-scroll';
2
+ import { shiftCanMonitorArgType } from './transformers/element-adapter-types';
2
3
  import { moveFromFileAdapterToExternalAdapter } from './transformers/external-adapter';
3
4
  import { moveToReactDropIndicator } from './transformers/move-to-react-drop-indicator';
4
- import { updateAutoScroll } from './transformers/auto-scroll';
5
5
  import { shiftToPointerOutsideOfPreview } from './transformers/pointer-outside-of-preview';
6
6
  import { shiftToPreventUnhandled } from './transformers/prevent-unhandled';
7
- import { shiftCanMonitorArgType } from './transformers/element-adapter-types';
7
+ import { updateSafeImports } from './transformers/update-safe-imports';
8
8
  const transformers = [updateSafeImports, moveFromFileAdapterToExternalAdapter, moveToReactDropIndicator, updateAutoScroll, shiftToPointerOutsideOfPreview, shiftToPreventUnhandled, shiftCanMonitorArgType];
9
9
  export default function transformer(file, api) {
10
10
  let source = file.source;
@@ -14,7 +14,8 @@ const parseDiffLine = line => {
14
14
  };
15
15
  };
16
16
 
17
- /** Returns packages that have been upgraded in package.json since ref. The version refers to their previous
17
+ /**
18
+ * Returns packages that have been upgraded in package.json since ref. The version refers to their previous
18
19
  * version
19
20
  */
20
21
  export const getPackagesSinceRef = async ref => {
@@ -8,7 +8,9 @@ const basePath = packages => {
8
8
  };
9
9
  export const hasTransform = transformPath => globSync(transformPath).length > 0;
10
10
 
11
- /** Retrieves transforms for `packages` if provided, otherwise all transforms including presets */
11
+ /**
12
+ * Retrieves transforms for `packages` if provided, otherwise all transforms including presets
13
+ */
12
14
  export const getTransforms = packages => {
13
15
  const transforms = [path.join(basePath(packages), '*.@(ts|tsx|js)'), path.join(basePath(packages), '*', 'index.@(ts|tsx|js)')];
14
16
  if (!packages) {
@@ -1,4 +1,5 @@
1
- /** Converts required args to optional if they have a default
1
+ /**
2
+ * Converts required args to optional if they have a default
2
3
  * Example: export type UserFlags = Default<Flags, keyof typeof defaultFlags>;
3
4
  */
4
5
 
package/dist/esm/cli.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
+ import chalk from 'chalk';
3
4
  import meow from 'meow';
4
- import { ValidationError, NoTransformsExistError } from './types';
5
5
  import main from './main';
6
- import chalk from 'chalk';
6
+ import { NoTransformsExistError, ValidationError } from './types';
7
7
  export function run() {
8
8
  return _run.apply(this, arguments);
9
9
  }
@@ -13,7 +13,7 @@ function _run() {
13
13
  return _regeneratorRuntime.wrap(function _callee$(_context) {
14
14
  while (1) switch (_context.prev = _context.next) {
15
15
  case 0:
16
- cli = meow("\nUsage\n $ npx @atlaskit/codemod-cli [options] <file-paths>...\n\nOptions\n --preset, -n select transform by preset name, avoid user interaction\n --transform, -t the transform to run, will prompt for a transform if not provided and no module is passed\n --since-ref, runs transforms for all packages that have been upgraded since the specified git ref\n --packages, runs transforms for the specified comma separated list of packages, optionally include a version for each package to run all transforms since that version\n --parser, -p babel|babylon|flow|ts|tsx parser to use for parsing the source files (default: babel)\n --extensions, -e transform files with these file extensions (comma separated list) (default: js)\n --ignore-pattern, ignore files that match a provided glob expression\n --fail-on-error, return a 1 exit code when errors were found during execution of codemods\n --version, -v version number\n --no-filter-paths disables dependant package file path filtering logic \n --help Help me \uD83D\uDE31\n\nExamples\n # Run a codemod over the /project/src directory, will be prompted for which codemod to run\n $ npx @atlaskit/codemod-cli /project/src\n\n # Run the \"4.0.0-remove-appearance-prop\" transform of the \"button\" package\n $ npx @atlaskit/codemod-cli -t button@4.0.0-remove-appearance-prop /project/src\n\n # Run all transforms for \"@atlaskit/button\" greater than version 3.0.0 and @atlaskit/range greater than 4.0.0\n $ npx @atlaskit/codemod-cli --packages @atlaskit/button@3.0.0,@atlaskit/range@4.0.0 /project/src\n", {
16
+ cli = meow("\nUsage\n $ npx @atlaskit/codemod-cli [options] <file-paths>...\n\nOptions\n --preset, -n select transform by preset name, avoid user interaction\n --transform, -t the transform to run, will prompt for a transform if not provided and no module is passed\n --since-ref, runs transforms for all packages that have been upgraded since the specified git ref\n --packages, runs transforms for the specified comma separated list of packages, optionally include a version for each package to run all transforms since that version\n --parser, -p babel|babylon|flow|ts|tsx parser to use for parsing the source files (default: babel)\n --extensions, -e transform files with these file extensions (comma separated list) (default: js)\n --ignore-pattern, ignore files that match a provided glob expression\n --fail-on-error, return a 1 exit code when errors were found during execution of codemods\n --version, -v version number\n --no-filter-paths disables dependant package file path filtering logic\n --help Help me \uD83D\uDE31\n\nExamples\n # Run a codemod over the /project/src directory, will be prompted for which codemod to run\n $ npx @atlaskit/codemod-cli /project/src\n\n # Run the \"4.0.0-remove-appearance-prop\" transform of the \"button\" package\n $ npx @atlaskit/codemod-cli -t button@4.0.0-remove-appearance-prop /project/src\n\n # Run all transforms for \"@atlaskit/button\" greater than version 3.0.0 and @atlaskit/range greater than 4.0.0\n $ npx @atlaskit/codemod-cli --packages @atlaskit/button@3.0.0,@atlaskit/range@4.0.0 /project/src\n", {
17
17
  flags: {
18
18
  transform: {
19
19
  type: 'string',
@@ -1,10 +1,12 @@
1
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
- import { globSync } from 'glob';
4
3
  import { promises } from 'fs';
4
+ import { globSync } from 'glob';
5
5
  var readFile = promises.readFile;
6
6
 
7
- /** Return products packages filePaths for running codemods from specified dependent package */
7
+ /**
8
+ * Return products packages filePaths for running codemods from specified dependent package
9
+ */
8
10
  export function findDependentPackagePaths(_x, _x2) {
9
11
  return _findDependentPackagePaths.apply(this, arguments);
10
12
  }
package/dist/esm/main.js CHANGED
@@ -7,17 +7,17 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length)
7
7
  import _regeneratorRuntime from "@babel/runtime/regenerator";
8
8
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9
9
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10
- import chalk from 'chalk';
11
10
  import fs from 'fs';
12
- import spawn from 'projector-spawn';
11
+ import chalk from 'chalk';
13
12
  import { AutoComplete } from 'enquirer';
13
+ import spawn from 'projector-spawn';
14
14
  import semver from 'semver';
15
15
  var jscodeshift = require.resolve('.bin/jscodeshift');
16
- import { fixLineEnding } from './utils';
17
- import { getTransforms, getTransformPath, hasTransform, parseTransformPath, getTransformModule } from './transforms';
18
- import { ValidationError, NoTransformsExistError } from './types';
19
- import { getPackagesSinceRef } from './sinceRef';
20
16
  import { findDependentPackagePaths } from './filepath';
17
+ import { getPackagesSinceRef } from './sinceRef';
18
+ import { getTransformModule, getTransformPath, getTransforms, hasTransform, parseTransformPath } from './transforms';
19
+ import { NoTransformsExistError, ValidationError } from './types';
20
+ import { fixLineEnding } from './utils';
21
21
  var applyTransformMeta = function applyTransformMeta(transforms) {
22
22
  return transforms.map(function (transform) {
23
23
  var moduleMatch = transform.dir.match(/\/@atlaskit\/[^\/]+\//);
@@ -128,7 +128,7 @@ var resolveTransform = /*#__PURE__*/function () {
128
128
  }();
129
129
  var runTransform = /*#__PURE__*/function () {
130
130
  var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(filePaths, transform, flags) {
131
- var logger, codemodDirs, transformPath, args, jscodeshiftContent, jscodeshiftContentNew;
131
+ var logger, codemodDirs, transformPath, args, jscodeshiftContent, jscodeshiftContentNew, transformModule;
132
132
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
133
133
  while (1) switch (_context3.prev = _context3.next) {
134
134
  case 0:
@@ -172,11 +172,31 @@ var runTransform = /*#__PURE__*/function () {
172
172
  jscodeshiftContent = fs.readFileSync(jscodeshift, 'utf8');
173
173
  jscodeshiftContentNew = fixLineEnding(jscodeshiftContent, 'LF');
174
174
  fs.writeFileSync(jscodeshift, jscodeshiftContentNew);
175
- _context3.next = 18;
175
+ try {
176
+ transformModule = require(transformPath);
177
+ } catch (error) {
178
+ // eslint-disable-next-line no-console
179
+ console.warn("Error loading transform module: ".concat(transformPath, ". Skipping lifecycle hooks."));
180
+ }
181
+ if (!transformModule) {
182
+ _context3.next = 20;
183
+ break;
184
+ }
185
+ _context3.next = 20;
186
+ return processLifecycleHook('beforeAll', transformModule, logger, transform, flags);
187
+ case 20:
188
+ _context3.next = 22;
176
189
  return spawn(jscodeshift, args, {
177
190
  stdio: 'inherit'
178
191
  });
179
- case 18:
192
+ case 22:
193
+ if (!transformModule) {
194
+ _context3.next = 25;
195
+ break;
196
+ }
197
+ _context3.next = 25;
198
+ return processLifecycleHook('afterAll', transformModule, logger, transform, flags);
199
+ case 25:
180
200
  case "end":
181
201
  return _context3.stop();
182
202
  }
@@ -282,23 +302,55 @@ var defaultFlags = {
282
302
  ignorePattern: 'node_modules',
283
303
  logger: console
284
304
  };
285
- export default function main(_x9, _x10) {
305
+ function processLifecycleHook(_x9, _x10, _x11, _x12, _x13) {
306
+ return _processLifecycleHook.apply(this, arguments);
307
+ }
308
+ function _processLifecycleHook() {
309
+ _processLifecycleHook = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(hookName, transformModule, logger, transform, flags) {
310
+ return _regeneratorRuntime.wrap(function _callee5$(_context5) {
311
+ while (1) switch (_context5.prev = _context5.next) {
312
+ case 0:
313
+ if (!(typeof transformModule[hookName] === 'function')) {
314
+ _context5.next = 11;
315
+ break;
316
+ }
317
+ _context5.prev = 1;
318
+ logger.log(chalk.green("Executing ".concat(hookName, " for transform '").concat(transform.name, "'...")));
319
+ _context5.next = 5;
320
+ return transformModule[hookName](flags);
321
+ case 5:
322
+ _context5.next = 11;
323
+ break;
324
+ case 7:
325
+ _context5.prev = 7;
326
+ _context5.t0 = _context5["catch"](1);
327
+ logger.log(chalk.red("Error in ".concat(hookName, " for transform '").concat(transform.name, "': ").concat(_context5.t0)));
328
+ throw _context5.t0;
329
+ case 11:
330
+ case "end":
331
+ return _context5.stop();
332
+ }
333
+ }, _callee5, null, [[1, 7]]);
334
+ }));
335
+ return _processLifecycleHook.apply(this, arguments);
336
+ }
337
+ export default function main(_x14, _x15) {
286
338
  return _main.apply(this, arguments);
287
339
  }
288
340
  function _main() {
289
- _main = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(input, userFlags) {
341
+ _main = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(input, userFlags) {
290
342
  var flags, logger, _yield$parseArgs, packages, _process$env$_PACKAGE, _PACKAGE_VERSION_, shouldHavePackages, availableTransforms, transforms, transformsWithModule, _iterator, _step, transform;
291
- return _regeneratorRuntime.wrap(function _callee5$(_context5) {
292
- while (1) switch (_context5.prev = _context5.next) {
343
+ return _regeneratorRuntime.wrap(function _callee6$(_context6) {
344
+ while (1) switch (_context6.prev = _context6.next) {
293
345
  case 0:
294
346
  flags = _objectSpread(_objectSpread({}, defaultFlags), userFlags);
295
347
  logger = flags.logger;
296
- _context5.next = 4;
348
+ _context6.next = 4;
297
349
  return parseArgs(input, flags);
298
350
  case 4:
299
- _yield$parseArgs = _context5.sent;
351
+ _yield$parseArgs = _context6.sent;
300
352
  packages = _yield$parseArgs.packages;
301
- _process$env$_PACKAGE = "0.27.1", _PACKAGE_VERSION_ = _process$env$_PACKAGE === void 0 ? '0.0.0-dev' : _process$env$_PACKAGE;
353
+ _process$env$_PACKAGE = "0.27.3", _PACKAGE_VERSION_ = _process$env$_PACKAGE === void 0 ? '0.0.0-dev' : _process$env$_PACKAGE;
302
354
  logger.log(chalk.bgBlue(chalk.black("\uD83D\uDCDA Atlassian-Frontend codemod library @ ".concat(_PACKAGE_VERSION_, " \uD83D\uDCDA"))));
303
355
  if (packages && packages.length > 0) {
304
356
  logger.log(chalk.gray("Searching for codemods for newer versions of the following packages: ".concat(packages.map(function (pkg) {
@@ -307,36 +359,36 @@ function _main() {
307
359
  }
308
360
  shouldHavePackages = flags.sinceRef || flags.packages && flags.packages.length > 0;
309
361
  if (!(shouldHavePackages && (packages === null || packages === void 0 ? void 0 : packages.length) === 0)) {
310
- _context5.next = 13;
362
+ _context6.next = 13;
311
363
  break;
312
364
  }
313
365
  logger.log(chalk.gray("Did not find updated packages, exiting"));
314
- return _context5.abrupt("return", {
366
+ return _context6.abrupt("return", {
315
367
  transforms: []
316
368
  });
317
369
  case 13:
318
370
  availableTransforms = getTransforms(packages);
319
371
  if (!(availableTransforms.length === 0)) {
320
- _context5.next = 16;
372
+ _context6.next = 16;
321
373
  break;
322
374
  }
323
375
  throw new NoTransformsExistError('No codemods available. Please make sure you have the latest version of the packages you are trying to upgrade before running the codemod');
324
376
  case 16:
325
377
  if (!packages) {
326
- _context5.next = 20;
378
+ _context6.next = 20;
327
379
  break;
328
380
  }
329
- _context5.t0 = availableTransforms;
330
- _context5.next = 24;
381
+ _context6.t0 = availableTransforms;
382
+ _context6.next = 24;
331
383
  break;
332
384
  case 20:
333
- _context5.next = 22;
385
+ _context6.next = 22;
334
386
  return resolveTransform(flags, availableTransforms);
335
387
  case 22:
336
- _context5.t1 = _context5.sent;
337
- _context5.t0 = [_context5.t1];
388
+ _context6.t1 = _context6.sent;
389
+ _context6.t0 = [_context6.t1];
338
390
  case 24:
339
- transforms = _context5.t0;
391
+ transforms = _context6.t0;
340
392
  transformsWithModule = transforms.map(function (transform) {
341
393
  return _objectSpread(_objectSpread({}, transform), {}, {
342
394
  module: getTransformModule(transform)
@@ -346,39 +398,39 @@ function _main() {
346
398
  return "".concat(transform.module, ": ").concat(transform.name);
347
399
  }).join('\n')))));
348
400
  _iterator = _createForOfIteratorHelper(transformsWithModule);
349
- _context5.prev = 28;
401
+ _context6.prev = 28;
350
402
  _iterator.s();
351
403
  case 30:
352
404
  if ((_step = _iterator.n()).done) {
353
- _context5.next = 36;
405
+ _context6.next = 36;
354
406
  break;
355
407
  }
356
408
  transform = _step.value;
357
- _context5.next = 34;
409
+ _context6.next = 34;
358
410
  return runTransform(input, transform, flags);
359
411
  case 34:
360
- _context5.next = 30;
412
+ _context6.next = 30;
361
413
  break;
362
414
  case 36:
363
- _context5.next = 41;
415
+ _context6.next = 41;
364
416
  break;
365
417
  case 38:
366
- _context5.prev = 38;
367
- _context5.t2 = _context5["catch"](28);
368
- _iterator.e(_context5.t2);
418
+ _context6.prev = 38;
419
+ _context6.t2 = _context6["catch"](28);
420
+ _iterator.e(_context6.t2);
369
421
  case 41:
370
- _context5.prev = 41;
422
+ _context6.prev = 41;
371
423
  _iterator.f();
372
- return _context5.finish(41);
424
+ return _context6.finish(41);
373
425
  case 44:
374
- return _context5.abrupt("return", {
426
+ return _context6.abrupt("return", {
375
427
  transforms: transformsWithModule
376
428
  });
377
429
  case 45:
378
430
  case "end":
379
- return _context5.stop();
431
+ return _context6.stop();
380
432
  }
381
- }, _callee5, null, [[28, 38, 41, 44]]);
433
+ }, _callee6, null, [[28, 38, 41, 44]]);
382
434
  }));
383
435
  return _main.apply(this, arguments);
384
436
  }
@@ -10,7 +10,8 @@ import './migrate-to-link/migrate-to-link';
10
10
  import './migrate-to-new-buttons/migrate-to-new-buttons';
11
11
  import './upgrade-pragmatic-drag-and-drop-to-stable/upgrade-pragmatic-drag-and-drop-to-stable';
12
12
  import './remove-dark-theme-vr-options/remove-dark-theme-vr-options';
13
- var presets = ['styled-to-emotion', 'theme-remove-deprecated-mixins', 'migrate-to-link', 'migrate-to-new-buttons', 'upgrade-pragmatic-drag-and-drop-to-stable', 'remove-dark-theme-vr-options'].map(function (preset) {
13
+ import './remove-token-fallbacks/remove-token-fallbacks';
14
+ var presets = ['styled-to-emotion', 'theme-remove-deprecated-mixins', 'migrate-to-link', 'migrate-to-new-buttons', 'upgrade-pragmatic-drag-and-drop-to-stable', 'remove-dark-theme-vr-options', 'remove-token-fallbacks'].map(function (preset) {
14
15
  return path.join(__dirname, preset, "".concat(preset, ".@(ts|js|tsx)"));
15
16
  });
16
17
  export default presets;
@@ -1,9 +1,8 @@
1
1
  /* eslint-disable @repo/internal/fs/filename-pattern-match */
2
-
3
- import { addCommentBefore } from '@atlaskit/codemod-utils';
4
2
  import { getImportDeclaration } from '@hypermod/utils';
5
- import { LINK_ENTRY_POINT, LINK_EXPORT_NAME, PRINT_SETTINGS, UNSUPPORTED_STYLE_PROPS } from '../utils/constants';
3
+ import { addCommentBefore } from '@atlaskit/codemod-utils';
6
4
  import { genericUnsupportedMigrationComment, spreadPropsComment, stylePropComment } from '../utils/comments';
5
+ import { LINK_ENTRY_POINT, LINK_EXPORT_NAME, PRINT_SETTINGS, UNSUPPORTED_STYLE_PROPS } from '../utils/constants';
7
6
  import { findJSXAttributeWithValue } from '../utils/find-attribute-with-value';
8
7
  export default function transformer(file, api) {
9
8
  var j = api.jscodeshift;
@@ -1,5 +1,5 @@
1
1
  import { getImportDeclaration, hasJSXAttributes } from '@hypermod/utils';
2
- import { PRINT_SETTINGS, NEW_BUTTON_ENTRY_POINT, UNSAFE_SIZE_PROPS_MAP } from '../utils/constants';
2
+ import { NEW_BUTTON_ENTRY_POINT, PRINT_SETTINGS, UNSAFE_SIZE_PROPS_MAP } from '../utils/constants';
3
3
  function transformer(file, api) {
4
4
  var j = api.jscodeshift;
5
5
  var source = j(file.source);
@@ -1,7 +1,7 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import { PRINT_SETTINGS, entryPointsMapping, BUTTON_TYPES, NEW_BUTTON_ENTRY_POINT } from '../utils/constants';
3
- import renameElements from '../utils/rename-elements';
4
2
  import { getDefaultImportSpecifierName } from '@hypermod/utils';
3
+ import { BUTTON_TYPES, entryPointsMapping, NEW_BUTTON_ENTRY_POINT, PRINT_SETTINGS } from '../utils/constants';
4
+ import renameElements from '../utils/rename-elements';
5
5
  var transformer = function transformer(file, api) {
6
6
  var j = api.jscodeshift;
7
7
  var fileSource = j(file.source);
@@ -3,10 +3,10 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
3
  import _regeneratorRuntime from "@babel/runtime/regenerator";
4
4
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
5
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
- import splitImportsTransformer from './codemods/next-split-imports';
6
+ import migrateLinkButtonToLinkTransformer from './codemods/next-migrate-link-button-to-link';
7
7
  import migrateToNewButtonVariantsTransformer from './codemods/next-migrate-to-new-button-variants';
8
8
  import removeUnsafeSizeTransformer from './codemods/next-remove-unsafe-size';
9
- import migrateLinkButtonToLinkTransformer from './codemods/next-migrate-link-button-to-link';
9
+ import splitImportsTransformer from './codemods/next-split-imports';
10
10
  export default function transformer(_x, _x2) {
11
11
  return _transformer.apply(this, arguments);
12
12
  }
@@ -1,6 +1,6 @@
1
1
  import { addCommentBefore } from '@atlaskit/codemod-utils';
2
- import { entryPointsMapping, customThemeButtonComment } from './constants';
3
2
  import { addCommentForOverlayProp } from './add-comment-for-overlay-prop';
3
+ import { customThemeButtonComment, entryPointsMapping } from './constants';
4
4
  export var addCommentForCustomThemeButtons = function addCommentForCustomThemeButtons(fileSource, j) {
5
5
  var _fileSource$find$filt;
6
6
  var customThemeButtonImportName;
@@ -1,6 +1,6 @@
1
1
  import { addCommentBefore } from '@atlaskit/codemod-utils';
2
2
  import { getIconAttributes, getIconElement } from '../utils/generate-new-button-element';
3
- import { NEW_BUTTON_VARIANTS, migrateFitContainerButtonToDefaultButtonComment, migrateFitContainerButtonToIconButtonComment } from './constants';
3
+ import { migrateFitContainerButtonToDefaultButtonComment, migrateFitContainerButtonToIconButtonComment, NEW_BUTTON_VARIANTS } from './constants';
4
4
  export var migrateFitContainerIconButton = function migrateFitContainerIconButton(element, j) {
5
5
  var _iconElement$openingE, _labelAttribute$value;
6
6
  var attributes = element.value.openingElement.attributes;