@atlaskit/codemod-cli 0.8.4 → 0.8.5

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 (34) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cjs/main.js +1 -1
  3. package/dist/cjs/presets/theme-to-design-tokens/theme-to-design-tokens.js +20 -56
  4. package/dist/cjs/presets/theme-to-design-tokens/utils/ast-meta.js +6 -22
  5. package/dist/cjs/presets/theme-to-design-tokens/utils/legacy-colors.js +7 -5
  6. package/dist/cjs/presets/theme-to-design-tokens/utils/tokens.js +38 -0
  7. package/dist/cjs/version.json +1 -1
  8. package/dist/es2019/presets/theme-to-design-tokens/theme-to-design-tokens.js +16 -53
  9. package/dist/es2019/presets/theme-to-design-tokens/utils/ast-meta.js +5 -12
  10. package/dist/es2019/presets/theme-to-design-tokens/utils/legacy-colors.js +7 -5
  11. package/dist/es2019/presets/theme-to-design-tokens/utils/tokens.js +12 -0
  12. package/dist/es2019/version.json +1 -1
  13. package/dist/esm/main.js +1 -1
  14. package/dist/esm/presets/theme-to-design-tokens/theme-to-design-tokens.js +19 -54
  15. package/dist/esm/presets/theme-to-design-tokens/utils/ast-meta.js +5 -18
  16. package/dist/esm/presets/theme-to-design-tokens/utils/legacy-colors.js +7 -5
  17. package/dist/esm/presets/theme-to-design-tokens/utils/tokens.js +24 -0
  18. package/dist/esm/version.json +1 -1
  19. package/dist/types/presets/theme-to-design-tokens/utils/ast-meta.d.ts +0 -1
  20. package/dist/types/presets/theme-to-design-tokens/utils/tokens.d.ts +2 -0
  21. package/package.json +2 -3
  22. package/dist/cjs/presets/theme-to-design-tokens/utils/color-difference.js +0 -174
  23. package/dist/cjs/presets/theme-to-design-tokens/utils/color-palette-tokens-map.js +0 -129
  24. package/dist/cjs/presets/theme-to-design-tokens/utils/color-to-token.js +0 -88
  25. package/dist/es2019/presets/theme-to-design-tokens/utils/color-difference.js +0 -150
  26. package/dist/es2019/presets/theme-to-design-tokens/utils/color-palette-tokens-map.js +0 -122
  27. package/dist/es2019/presets/theme-to-design-tokens/utils/color-to-token.js +0 -75
  28. package/dist/esm/presets/theme-to-design-tokens/utils/color-difference.js +0 -160
  29. package/dist/esm/presets/theme-to-design-tokens/utils/color-palette-tokens-map.js +0 -122
  30. package/dist/esm/presets/theme-to-design-tokens/utils/color-to-token.js +0 -78
  31. package/dist/types/presets/theme-to-design-tokens/types.d.ts +0 -2
  32. package/dist/types/presets/theme-to-design-tokens/utils/color-difference.d.ts +0 -66
  33. package/dist/types/presets/theme-to-design-tokens/utils/color-palette-tokens-map.d.ts +0 -21
  34. package/dist/types/presets/theme-to-design-tokens/utils/color-to-token.d.ts +0 -12
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atlaskit/codemod-cli
2
2
 
3
+ ## 0.8.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [`e4dd80187f5`](https://bitbucket.org/atlassian/atlassian-frontend/commits/e4dd80187f5) - Refactors theme-to-tokens codemod with new token names + simplifies logic
8
+
3
9
  ## 0.8.4
4
10
 
5
11
  ### Patch Changes
package/dist/cjs/main.js CHANGED
@@ -363,7 +363,7 @@ function _main() {
363
363
  case 4:
364
364
  _yield$parseArgs = _context5.sent;
365
365
  packages = _yield$parseArgs.packages;
366
- _process$env$_PACKAGE = "0.8.4", _PACKAGE_VERSION_ = _process$env$_PACKAGE === void 0 ? '0.0.0-dev' : _process$env$_PACKAGE;
366
+ _process$env$_PACKAGE = "0.8.5", _PACKAGE_VERSION_ = _process$env$_PACKAGE === void 0 ? '0.0.0-dev' : _process$env$_PACKAGE;
367
367
  logger.log(_chalk.default.bgBlue(_chalk.default.black("\uD83D\uDCDA Atlassian-Frontend codemod library @ ".concat(_PACKAGE_VERSION_, " \uD83D\uDCDA"))));
368
368
 
369
369
  if (packages && packages.length > 0) {
@@ -9,8 +9,6 @@ exports.default = transformer;
9
9
 
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
11
 
12
- var _colorToToken = _interopRequireDefault(require("./utils/color-to-token"));
13
-
14
12
  var _ast = require("./utils/ast");
15
13
 
16
14
  var _astMeta = require("./utils/ast-meta");
@@ -21,11 +19,10 @@ var _fuzzySearch = _interopRequireDefault(require("./utils/fuzzy-search"));
21
19
 
22
20
  var _legacyColors = require("./utils/legacy-colors");
23
21
 
24
- var _tokenNames = _interopRequireDefault(require("@atlaskit/tokens/token-names"));
22
+ var _tokens = require("./utils/tokens");
25
23
 
26
24
  /* eslint-disable no-console */
27
- var tokens = Object.keys(_tokenNames.default);
28
- var search = (0, _fuzzySearch.default)(tokens, false);
25
+ var search = (0, _fuzzySearch.default)(_tokens.tokens, false);
29
26
 
30
27
  function hasImportDeclaration(j, source, sourcePath) {
31
28
  return !!source.find(j.ImportDeclaration).filter(function (path) {
@@ -52,58 +49,25 @@ function insertTokenImport(j, source) {
52
49
  source.get().node.program.body.unshift(newImport);
53
50
  }
54
51
 
55
- function buildToken(j, tokenResult, node) {
56
- var callExpr = j.callExpression(j.identifier('token'), [j.stringLiteral(tokenResult.suggestion[0] || 'util.UNSAFE_MISSING_TOKEN'), tokenResult.fallbackNeeded && node].filter(Boolean));
57
- callExpr.comments = [j.commentBlock(" [token-confidence: ".concat(tokenResult.confidence, "] "))];
52
+ function buildToken(j, tokenId, node) {
53
+ var callExpr = j.callExpression(j.identifier('token'), [j.stringLiteral(tokenId), node].filter(Boolean));
58
54
  return callExpr;
59
55
  }
60
56
 
61
- function getTokenFromNode(j, path, debug, paletteColor) {
62
- var baseMeta = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
57
+ function getTokenFromNode(j, path) {
58
+ var baseMeta = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
63
59
  var foundMeta = (0, _astMeta.getMetaFromAncestors)(j, path);
64
- var propertyName = foundMeta.find(function (name) {
65
- if (!name) {
66
- return false;
67
- }
68
-
69
- return name.toLowerCase().match(/(.*color|image|fill|stroke|shadow|border(?!-)|background(?!-)|outline(?!-)|column-rule-color)/);
70
- });
71
- var state = 'resting';
72
- foundMeta.find(function (name) {
73
- if (!name) {
74
- return false;
75
- }
76
-
77
- var result = /(hover|active|disabled)/.exec(name.toLowerCase());
78
-
79
- if (result) {
80
- if (result[0] === 'active') {
81
- state = 'pressed';
82
- } else {
83
- state = result[0];
84
- }
85
-
86
- return true;
87
- }
88
-
89
- return false;
90
- });
91
- var tokenResult = (0, _colorToToken.default)(paletteColor || '', {
92
- state: state,
93
- propertyName: propertyName
94
- }, function () {
95
- var searchTerm = (0, _astMeta.cleanMeta)([].concat((0, _toConsumableArray2.default)(foundMeta), (0, _toConsumableArray2.default)(baseMeta))).join(' ');
96
- var results = search.get(searchTerm);
97
-
98
- if (results) {
99
- return results.map(function (result) {
100
- return result[1];
101
- });
102
- }
60
+ var meta = (0, _astMeta.cleanMeta)([].concat((0, _toConsumableArray2.default)(foundMeta), (0, _toConsumableArray2.default)(baseMeta)));
61
+ var results = search.get(meta.join(' '));
62
+ var tokenId = ['utility.UNSAFE_util.MISSING_TOKEN'];
63
+
64
+ if (results) {
65
+ tokenId = results.map(function (result) {
66
+ return result[1];
67
+ });
68
+ }
103
69
 
104
- return [];
105
- });
106
- return tokenResult;
70
+ return tokenId[0];
107
71
  }
108
72
 
109
73
  function transformer(file, api) {
@@ -121,7 +85,7 @@ function transformer(file, api) {
121
85
  insertTokenImport(j, source);
122
86
  var key = path.value.property.type === 'Identifier' ? path.value.property.name : undefined;
123
87
  var colorMeta = _legacyColors.legacyColorMetaMap[key] || [];
124
- var tokenId = getTokenFromNode(j, path, debug, key, colorMeta);
88
+ var tokenId = getTokenFromNode(j, path, colorMeta);
125
89
  j(path).replaceWith(buildToken(j, tokenId, path.value));
126
90
  transformed = true;
127
91
  });
@@ -136,7 +100,7 @@ function transformer(file, api) {
136
100
  debug && console.log('file:', file.path);
137
101
  insertTokenImport(j, source);
138
102
  var colorMeta = _legacyColors.legacyColorMetaMap[valuePath.name] || [];
139
- var tokenId = getTokenFromNode(j, valuePath, debug, valuePath.name, colorMeta);
103
+ var tokenId = getTokenFromNode(j, valuePath, colorMeta);
140
104
  j(path).replaceWith(j.objectProperty(path.value.key, buildToken(j, tokenId, valuePath.value)));
141
105
  transformed = true;
142
106
  });
@@ -152,7 +116,7 @@ function transformer(file, api) {
152
116
  debug && console.log('file:', file.path);
153
117
  insertTokenImport(j, source);
154
118
  var colorMeta = _legacyColors.legacyColorMetaMap[path.value.name] || [];
155
- var tokenId = getTokenFromNode(j, path, debug, path.value.name, colorMeta);
119
+ var tokenId = getTokenFromNode(j, path, colorMeta);
156
120
  j(path).replaceWith(buildToken(j, tokenId, path.value));
157
121
  transformed = true;
158
122
  });
@@ -167,7 +131,7 @@ function transformer(file, api) {
167
131
  insertTokenImport(j, source);
168
132
  var value = path === null || path === void 0 ? void 0 : (_path$value = path.value) === null || _path$value === void 0 ? void 0 : (_path$value$value = _path$value.value) === null || _path$value$value === void 0 ? void 0 : _path$value$value.toString();
169
133
  var colorMeta = _legacyColors.legacyColorMetaMap[value] || [];
170
- var tokenId = getTokenFromNode(j, path, debug, value, colorMeta);
134
+ var tokenId = getTokenFromNode(j, path, colorMeta);
171
135
  var tokenNode = buildToken(j, tokenId, path.value);
172
136
  j(path).replaceWith((0, _ast.isDecendantOfType)(j, path, j.JSXAttribute) ? j.jsxExpressionContainer(tokenNode) : tokenNode);
173
137
  transformed = true;
@@ -7,27 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.cleanMeta = cleanMeta;
9
9
  exports.getMetaFromAncestors = getMetaFromAncestors;
10
- exports.getUniqueWordsFromTokens = void 0;
11
10
 
12
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
12
 
14
- var _tokenNames = _interopRequireDefault(require("@atlaskit/tokens/token-names"));
15
-
16
- var tokens = Object.keys(_tokenNames.default);
17
- var getUniqueWordsFromTokens = tokens.reduce(function (accum, val) {
18
- return [].concat((0, _toConsumableArray2.default)(accum), (0, _toConsumableArray2.default)(val.split('.')));
19
- }, []).reduce(function (accum, val) {
20
- return [].concat((0, _toConsumableArray2.default)(accum), (0, _toConsumableArray2.default)(val.split(/(?=[A-Z])/g).map(function (e) {
21
- return e.toLowerCase();
22
- })));
23
- }, []).reduce(function (accum, val) {
24
- if (!accum.includes(val)) {
25
- accum.push(val);
26
- }
27
-
28
- return accum;
29
- }, []);
30
- exports.getUniqueWordsFromTokens = getUniqueWordsFromTokens;
13
+ var _tokens = require("./tokens");
31
14
 
32
15
  function getMetaFromAncestors(j, path) {
33
16
  var meta = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
@@ -53,15 +36,16 @@ function getMetaFromAncestors(j, path) {
53
36
  var quasi = grandParent.value.quasis[expressionIndex];
54
37
  var propertyName = (quasi.value.cooked || quasi.value.raw || '').replace(/\n/g, '').split(/;|{|}/).filter(function (el) {
55
38
  return !el.match(/\.|\@|\(|\)/);
56
- }).pop().replace(/:/g, '').trim();
39
+ }).pop().split(/:/g)[0].trim();
57
40
  grandParent.value.quasis.slice(0, expressionIndex + 1).map(function (q) {
58
41
  return q.value.cooked;
59
42
  }) // We reverse so the most nested one is first which we're more likely than not interested in
60
- .reverse().forEach(function (str) {
43
+ .reverse().some(function (str) {
61
44
  var result = /(hover|active|disabled|focus)/.exec(str.toLowerCase());
62
45
 
63
46
  if (result) {
64
47
  meta.push(result[0]);
48
+ return true;
65
49
  }
66
50
  });
67
51
  meta.push(propertyName);
@@ -90,10 +74,10 @@ function cleanMeta(meta) {
90
74
  return e.toLowerCase();
91
75
  }) : []));
92
76
  }, []).reduce(function (accum, val) {
93
- accum.push(val.replace(/:/g, '').replace(/,/g, '').replace('grey', 'neutral').replace('texts', 'text').replace('error', 'danger').replace('invalid', 'danger').replace('removed', 'danger').replace('removal', 'danger').replace('remove', 'danger').replace('valid', 'success').replace('successful', 'success').replace('risk', 'warning').replace('primary', 'bold').replace('info', 'bold').replace('secondary', 'subtle').replace('hyperlink', 'link').replace('focused', 'focus').replace('active', 'pressed').replace('hovered', 'hover').replace('background-color', 'background').replace('color', 'text').replace('stroke', 'border').replace('border-left', 'border').replace('border-right', 'border').replace('box-shadow', 'shadow'));
77
+ accum.push(val.replace(/:/g, '').replace(/,/g, '').replace('grey', 'neutral').replace('skeleton', 'neutral').replace('texts', 'text').replace('red', 'danger').replace('error', 'danger').replace('invalid', 'danger').replace('removed', 'danger').replace('removal', 'danger').replace('remove', 'danger').replace('focus', 'focused').replace('valid', 'success').replace('successful', 'success').replace('risk', 'warning').replace('caution', 'warning').replace('warn', 'warning').replace('primary', 'bold').replace('info', 'bold').replace('secondary', 'subtle').replace('hyperlink', 'link').replace('anchor', 'link').replace('active', 'pressed').replace('hover', 'hovered').replace('dragged', 'overlay').replace('dragging', 'overlay').replace('drag', 'overlay').replace('background-color', 'background').replace('color', 'text').replace('icons', 'icon').replace('glyph', 'icon').replace('stroke', 'border').replace('border-left', 'border').replace('border-right', 'border').replace('border-top', 'border').replace('border-bottom', 'border').replace('box-shadow', 'shadow'));
94
78
  return accum;
95
79
  }, []).filter(function (val) {
96
- return getUniqueWordsFromTokens.includes(val);
80
+ return _tokens.getUniqueWordsFromTokens.includes(val);
97
81
  }).reduce(function (accum, val) {
98
82
  if (!accum.includes(val)) {
99
83
  accum.push(val);
@@ -51,10 +51,12 @@ var legacyColorMetaMap = {
51
51
  T300: ['accent', 'teal'],
52
52
  T400: ['accent', 'teal'],
53
53
  T500: ['accent', 'teal'],
54
- N0: ['onBold'],
54
+ N0: ['inverse'],
55
+ N700: ['text'],
55
56
  N800: ['text'],
57
+ N900: ['text'],
56
58
  background: ['background', 'default'],
57
- backgroundActive: ['background', 'selected'],
59
+ backgroundActive: ['background', 'pressed'],
58
60
  backgroundHover: ['background', 'hovered'],
59
61
  backgroundOnLayer: ['background', 'blanket'],
60
62
  text: ['text'],
@@ -64,9 +66,9 @@ var legacyColorMetaMap = {
64
66
  placeholderText: ['text', 'subtlest'],
65
67
  heading: ['text'],
66
68
  subtleHeading: ['text', 'subtle'],
67
- link: ['text', 'link'],
68
- linkHover: ['text', 'link', 'hovered'],
69
- linkActive: ['text', 'link', 'pressed'],
69
+ link: ['link'],
70
+ linkHover: ['link', 'hovered'],
71
+ linkActive: ['link', 'pressed'],
70
72
  linkOutline: ['border', 'selected'],
71
73
  primary: ['brand'],
72
74
  blue: ['accent', 'blue'],
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.tokens = exports.getUniqueWordsFromTokens = void 0;
9
+
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _tokenNames = _interopRequireDefault(require("@atlaskit/tokens/token-names"));
13
+
14
+ var _renameMapping = _interopRequireDefault(require("@atlaskit/tokens/rename-mapping"));
15
+
16
+ var tokens = Object.keys(_tokenNames.default).filter(function (t) {
17
+ return !t.includes('UNSAFE') && !t.includes('interaction');
18
+ }).filter(function (t) {
19
+ return !_renameMapping.default.find(function (_ref) {
20
+ var path = _ref.path;
21
+ return t === path.replace(/\.[default]\g/, '');
22
+ });
23
+ });
24
+ exports.tokens = tokens;
25
+ var getUniqueWordsFromTokens = Object.keys(_tokenNames.default).reduce(function (accum, val) {
26
+ return [].concat((0, _toConsumableArray2.default)(accum), (0, _toConsumableArray2.default)(val.split('.')));
27
+ }, []).reduce(function (accum, val) {
28
+ return [].concat((0, _toConsumableArray2.default)(accum), (0, _toConsumableArray2.default)(val.split(/(?=[A-Z])/g).map(function (e) {
29
+ return e.toLowerCase();
30
+ })));
31
+ }, []).reduce(function (accum, val) {
32
+ if (!accum.includes(val)) {
33
+ accum.push(val);
34
+ }
35
+
36
+ return accum;
37
+ }, []);
38
+ exports.getUniqueWordsFromTokens = getUniqueWordsFromTokens;
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "@atlaskit/codemod-cli",
3
- "version": "0.8.4"
3
+ "version": "0.8.5"
4
4
  }
@@ -1,12 +1,10 @@
1
1
  /* eslint-disable no-console */
2
- import colorToToken from './utils/color-to-token';
3
2
  import { isDecendantOfToken, isDecendantOfType } from './utils/ast';
4
3
  import { cleanMeta, getMetaFromAncestors } from './utils/ast-meta';
5
4
  import { includesHardCodedColor, isHardCodedColor, isLegacyColor, isLegacyNamedColor } from './utils/color';
6
5
  import Search from './utils/fuzzy-search';
7
6
  import { legacyColorMetaMap } from './utils/legacy-colors';
8
- import designTokens from '@atlaskit/tokens/token-names';
9
- const tokens = Object.keys(designTokens);
7
+ import { tokens } from './utils/tokens';
10
8
  const search = Search(tokens, false);
11
9
 
12
10
  function hasImportDeclaration(j, source, sourcePath) {
@@ -30,55 +28,22 @@ function insertTokenImport(j, source) {
30
28
  source.get().node.program.body.unshift(newImport);
31
29
  }
32
30
 
33
- function buildToken(j, tokenResult, node) {
34
- const callExpr = j.callExpression(j.identifier('token'), [j.stringLiteral(tokenResult.suggestion[0] || 'util.UNSAFE_MISSING_TOKEN'), tokenResult.fallbackNeeded && node].filter(Boolean));
35
- callExpr.comments = [j.commentBlock(` [token-confidence: ${tokenResult.confidence}] `)];
31
+ function buildToken(j, tokenId, node) {
32
+ const callExpr = j.callExpression(j.identifier('token'), [j.stringLiteral(tokenId), node].filter(Boolean));
36
33
  return callExpr;
37
34
  }
38
35
 
39
- function getTokenFromNode(j, path, debug, paletteColor, baseMeta = []) {
36
+ function getTokenFromNode(j, path, baseMeta = []) {
40
37
  const foundMeta = getMetaFromAncestors(j, path);
41
- const propertyName = foundMeta.find(name => {
42
- if (!name) {
43
- return false;
44
- }
45
-
46
- return name.toLowerCase().match(/(.*color|image|fill|stroke|shadow|border(?!-)|background(?!-)|outline(?!-)|column-rule-color)/);
47
- });
48
- let state = 'resting';
49
- foundMeta.find(name => {
50
- if (!name) {
51
- return false;
52
- }
38
+ const meta = cleanMeta([...foundMeta, ...baseMeta]);
39
+ const results = search.get(meta.join(' '));
40
+ let tokenId = ['utility.UNSAFE_util.MISSING_TOKEN'];
53
41
 
54
- const result = /(hover|active|disabled)/.exec(name.toLowerCase());
55
-
56
- if (result) {
57
- if (result[0] === 'active') {
58
- state = 'pressed';
59
- } else {
60
- state = result[0];
61
- }
62
-
63
- return true;
64
- }
65
-
66
- return false;
67
- });
68
- const tokenResult = colorToToken(paletteColor || '', {
69
- state,
70
- propertyName
71
- }, () => {
72
- const searchTerm = cleanMeta([...foundMeta, ...baseMeta]).join(' ');
73
- const results = search.get(searchTerm);
74
-
75
- if (results) {
76
- return results.map(result => result[1]);
77
- }
42
+ if (results) {
43
+ tokenId = results.map(result => result[1]);
44
+ }
78
45
 
79
- return [];
80
- });
81
- return tokenResult;
46
+ return tokenId[0];
82
47
  }
83
48
 
84
49
  export default function transformer(file, api, debug = false) {
@@ -93,18 +58,16 @@ export default function transformer(file, api, debug = false) {
93
58
  insertTokenImport(j, source);
94
59
  const key = path.value.property.type === 'Identifier' ? path.value.property.name : undefined;
95
60
  const colorMeta = legacyColorMetaMap[key] || [];
96
- const tokenId = getTokenFromNode(j, path, debug, key, colorMeta);
61
+ const tokenId = getTokenFromNode(j, path, colorMeta);
97
62
  j(path).replaceWith(buildToken(j, tokenId, path.value));
98
63
  transformed = true;
99
64
  });
100
- source.find(j.ObjectProperty).filter(path => {
101
- return path.value.value.type === 'Identifier' && (isLegacyColor(path.value.value.name) || isLegacyNamedColor(path.value.value.name));
102
- }).filter(path => hasImportSpecifier(j, source, path.value.value.type === 'Identifier' ? path.value.value.name : '', '@atlaskit/theme') || hasImportSpecifier(j, source, path.value.value.type === 'Identifier' ? path.value.value.name : '', '@atlaskit/theme/colors')).filter(path => !isDecendantOfToken(j, path.value.value)).forEach(path => {
65
+ source.find(j.ObjectProperty).filter(path => path.value.value.type === 'Identifier' && (isLegacyColor(path.value.value.name) || isLegacyNamedColor(path.value.value.name))).filter(path => hasImportSpecifier(j, source, path.value.value.type === 'Identifier' ? path.value.value.name : '', '@atlaskit/theme') || hasImportSpecifier(j, source, path.value.value.type === 'Identifier' ? path.value.value.name : '', '@atlaskit/theme/colors')).filter(path => !isDecendantOfToken(j, path.value.value)).forEach(path => {
103
66
  const valuePath = path.get('value');
104
67
  debug && console.log('file:', file.path);
105
68
  insertTokenImport(j, source);
106
69
  const colorMeta = legacyColorMetaMap[valuePath.name] || [];
107
- const tokenId = getTokenFromNode(j, valuePath, debug, valuePath.name, colorMeta);
70
+ const tokenId = getTokenFromNode(j, valuePath, colorMeta);
108
71
  j(path).replaceWith(j.objectProperty(path.value.key, buildToken(j, tokenId, valuePath.value)));
109
72
  transformed = true;
110
73
  });
@@ -112,7 +75,7 @@ export default function transformer(file, api, debug = false) {
112
75
  debug && console.log('file:', file.path);
113
76
  insertTokenImport(j, source);
114
77
  const colorMeta = legacyColorMetaMap[path.value.name] || [];
115
- const tokenId = getTokenFromNode(j, path, debug, path.value.name, colorMeta);
78
+ const tokenId = getTokenFromNode(j, path, colorMeta);
116
79
  j(path).replaceWith(buildToken(j, tokenId, path.value));
117
80
  transformed = true;
118
81
  });
@@ -123,7 +86,7 @@ export default function transformer(file, api, debug = false) {
123
86
  insertTokenImport(j, source);
124
87
  const value = path === null || path === void 0 ? void 0 : (_path$value = path.value) === null || _path$value === void 0 ? void 0 : (_path$value$value = _path$value.value) === null || _path$value$value === void 0 ? void 0 : _path$value$value.toString();
125
88
  const colorMeta = legacyColorMetaMap[value] || [];
126
- const tokenId = getTokenFromNode(j, path, debug, value, colorMeta);
89
+ const tokenId = getTokenFromNode(j, path, colorMeta);
127
90
  const tokenNode = buildToken(j, tokenId, path.value);
128
91
  j(path).replaceWith(isDecendantOfType(j, path, j.JSXAttribute) ? j.jsxExpressionContainer(tokenNode) : tokenNode);
129
92
  transformed = true;
@@ -1,12 +1,4 @@
1
- import designTokens from '@atlaskit/tokens/token-names';
2
- const tokens = Object.keys(designTokens);
3
- export const getUniqueWordsFromTokens = tokens.reduce((accum, val) => [...accum, ...val.split('.')], []).reduce((accum, val) => [...accum, ...val.split(/(?=[A-Z])/g).map(e => e.toLowerCase())], []).reduce((accum, val) => {
4
- if (!accum.includes(val)) {
5
- accum.push(val);
6
- }
7
-
8
- return accum;
9
- }, []);
1
+ import { getUniqueWordsFromTokens } from './tokens';
10
2
  export function getMetaFromAncestors(j, path, meta = []) {
11
3
  const parent = path.parentPath;
12
4
  const grandParent = parent && parent.parentPath;
@@ -26,13 +18,14 @@ export function getMetaFromAncestors(j, path, meta = []) {
26
18
  if (parent && grandParent && grandParent.value.type === 'TemplateLiteral') {
27
19
  const expressionIndex = grandParent.value.expressions.findIndex(exp => exp.name === path.value.name);
28
20
  const quasi = grandParent.value.quasis[expressionIndex];
29
- const propertyName = (quasi.value.cooked || quasi.value.raw || '').replace(/\n/g, '').split(/;|{|}/).filter(el => !el.match(/\.|\@|\(|\)/)).pop().replace(/:/g, '').trim();
21
+ const propertyName = (quasi.value.cooked || quasi.value.raw || '').replace(/\n/g, '').split(/;|{|}/).filter(el => !el.match(/\.|\@|\(|\)/)).pop().split(/:/g)[0].trim();
30
22
  grandParent.value.quasis.slice(0, expressionIndex + 1).map(q => q.value.cooked) // We reverse so the most nested one is first which we're more likely than not interested in
31
- .reverse().forEach(str => {
23
+ .reverse().some(str => {
32
24
  const result = /(hover|active|disabled|focus)/.exec(str.toLowerCase());
33
25
 
34
26
  if (result) {
35
27
  meta.push(result[0]);
28
+ return true;
36
29
  }
37
30
  });
38
31
  meta.push(propertyName);
@@ -56,7 +49,7 @@ export function getMetaFromAncestors(j, path, meta = []) {
56
49
  }
57
50
  export function cleanMeta(meta) {
58
51
  return meta.reduce((accum, val) => [...accum, ...(typeof val === 'string' ? val.split(/(?=[A-Z])/g).map(e => e.toLowerCase()) : [])], []).reduce((accum, val) => {
59
- accum.push(val.replace(/:/g, '').replace(/,/g, '').replace('grey', 'neutral').replace('texts', 'text').replace('error', 'danger').replace('invalid', 'danger').replace('removed', 'danger').replace('removal', 'danger').replace('remove', 'danger').replace('valid', 'success').replace('successful', 'success').replace('risk', 'warning').replace('primary', 'bold').replace('info', 'bold').replace('secondary', 'subtle').replace('hyperlink', 'link').replace('focused', 'focus').replace('active', 'pressed').replace('hovered', 'hover').replace('background-color', 'background').replace('color', 'text').replace('stroke', 'border').replace('border-left', 'border').replace('border-right', 'border').replace('box-shadow', 'shadow'));
52
+ accum.push(val.replace(/:/g, '').replace(/,/g, '').replace('grey', 'neutral').replace('skeleton', 'neutral').replace('texts', 'text').replace('red', 'danger').replace('error', 'danger').replace('invalid', 'danger').replace('removed', 'danger').replace('removal', 'danger').replace('remove', 'danger').replace('focus', 'focused').replace('valid', 'success').replace('successful', 'success').replace('risk', 'warning').replace('caution', 'warning').replace('warn', 'warning').replace('primary', 'bold').replace('info', 'bold').replace('secondary', 'subtle').replace('hyperlink', 'link').replace('anchor', 'link').replace('active', 'pressed').replace('hover', 'hovered').replace('dragged', 'overlay').replace('dragging', 'overlay').replace('drag', 'overlay').replace('background-color', 'background').replace('color', 'text').replace('icons', 'icon').replace('glyph', 'icon').replace('stroke', 'border').replace('border-left', 'border').replace('border-right', 'border').replace('border-top', 'border').replace('border-bottom', 'border').replace('box-shadow', 'shadow'));
60
53
  return accum;
61
54
  }, []).filter(val => {
62
55
  return getUniqueWordsFromTokens.includes(val);
@@ -43,10 +43,12 @@ export const legacyColorMetaMap = {
43
43
  T300: ['accent', 'teal'],
44
44
  T400: ['accent', 'teal'],
45
45
  T500: ['accent', 'teal'],
46
- N0: ['onBold'],
46
+ N0: ['inverse'],
47
+ N700: ['text'],
47
48
  N800: ['text'],
49
+ N900: ['text'],
48
50
  background: ['background', 'default'],
49
- backgroundActive: ['background', 'selected'],
51
+ backgroundActive: ['background', 'pressed'],
50
52
  backgroundHover: ['background', 'hovered'],
51
53
  backgroundOnLayer: ['background', 'blanket'],
52
54
  text: ['text'],
@@ -56,9 +58,9 @@ export const legacyColorMetaMap = {
56
58
  placeholderText: ['text', 'subtlest'],
57
59
  heading: ['text'],
58
60
  subtleHeading: ['text', 'subtle'],
59
- link: ['text', 'link'],
60
- linkHover: ['text', 'link', 'hovered'],
61
- linkActive: ['text', 'link', 'pressed'],
61
+ link: ['link'],
62
+ linkHover: ['link', 'hovered'],
63
+ linkActive: ['link', 'pressed'],
62
64
  linkOutline: ['border', 'selected'],
63
65
  primary: ['brand'],
64
66
  blue: ['accent', 'blue'],
@@ -0,0 +1,12 @@
1
+ import designTokens from '@atlaskit/tokens/token-names';
2
+ import renameMapping from '@atlaskit/tokens/rename-mapping';
3
+ export const tokens = Object.keys(designTokens).filter(t => !t.includes('UNSAFE') && !t.includes('interaction')).filter(t => !renameMapping.find(({
4
+ path
5
+ }) => t === path.replace(/\.[default]\g/, '')));
6
+ export const getUniqueWordsFromTokens = Object.keys(designTokens).reduce((accum, val) => [...accum, ...val.split('.')], []).reduce((accum, val) => [...accum, ...val.split(/(?=[A-Z])/g).map(e => e.toLowerCase())], []).reduce((accum, val) => {
7
+ if (!accum.includes(val)) {
8
+ accum.push(val);
9
+ }
10
+
11
+ return accum;
12
+ }, []);
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "@atlaskit/codemod-cli",
3
- "version": "0.8.4"
3
+ "version": "0.8.5"
4
4
  }
package/dist/esm/main.js CHANGED
@@ -340,7 +340,7 @@ function _main() {
340
340
  case 4:
341
341
  _yield$parseArgs = _context5.sent;
342
342
  packages = _yield$parseArgs.packages;
343
- _process$env$_PACKAGE = "0.8.4", _PACKAGE_VERSION_ = _process$env$_PACKAGE === void 0 ? '0.0.0-dev' : _process$env$_PACKAGE;
343
+ _process$env$_PACKAGE = "0.8.5", _PACKAGE_VERSION_ = _process$env$_PACKAGE === void 0 ? '0.0.0-dev' : _process$env$_PACKAGE;
344
344
  logger.log(chalk.bgBlue(chalk.black("\uD83D\uDCDA Atlassian-Frontend codemod library @ ".concat(_PACKAGE_VERSION_, " \uD83D\uDCDA"))));
345
345
 
346
346
  if (packages && packages.length > 0) {
@@ -1,14 +1,12 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
 
3
3
  /* eslint-disable no-console */
4
- import colorToToken from './utils/color-to-token';
5
4
  import { isDecendantOfToken, isDecendantOfType } from './utils/ast';
6
5
  import { cleanMeta, getMetaFromAncestors } from './utils/ast-meta';
7
6
  import { includesHardCodedColor, isHardCodedColor, isLegacyColor, isLegacyNamedColor } from './utils/color';
8
7
  import Search from './utils/fuzzy-search';
9
8
  import { legacyColorMetaMap } from './utils/legacy-colors';
10
- import designTokens from '@atlaskit/tokens/token-names';
11
- var tokens = Object.keys(designTokens);
9
+ import { tokens } from './utils/tokens';
12
10
  var search = Search(tokens, false);
13
11
 
14
12
  function hasImportDeclaration(j, source, sourcePath) {
@@ -36,58 +34,25 @@ function insertTokenImport(j, source) {
36
34
  source.get().node.program.body.unshift(newImport);
37
35
  }
38
36
 
39
- function buildToken(j, tokenResult, node) {
40
- var callExpr = j.callExpression(j.identifier('token'), [j.stringLiteral(tokenResult.suggestion[0] || 'util.UNSAFE_MISSING_TOKEN'), tokenResult.fallbackNeeded && node].filter(Boolean));
41
- callExpr.comments = [j.commentBlock(" [token-confidence: ".concat(tokenResult.confidence, "] "))];
37
+ function buildToken(j, tokenId, node) {
38
+ var callExpr = j.callExpression(j.identifier('token'), [j.stringLiteral(tokenId), node].filter(Boolean));
42
39
  return callExpr;
43
40
  }
44
41
 
45
- function getTokenFromNode(j, path, debug, paletteColor) {
46
- var baseMeta = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
42
+ function getTokenFromNode(j, path) {
43
+ var baseMeta = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
47
44
  var foundMeta = getMetaFromAncestors(j, path);
48
- var propertyName = foundMeta.find(function (name) {
49
- if (!name) {
50
- return false;
51
- }
52
-
53
- return name.toLowerCase().match(/(.*color|image|fill|stroke|shadow|border(?!-)|background(?!-)|outline(?!-)|column-rule-color)/);
54
- });
55
- var state = 'resting';
56
- foundMeta.find(function (name) {
57
- if (!name) {
58
- return false;
59
- }
60
-
61
- var result = /(hover|active|disabled)/.exec(name.toLowerCase());
62
-
63
- if (result) {
64
- if (result[0] === 'active') {
65
- state = 'pressed';
66
- } else {
67
- state = result[0];
68
- }
69
-
70
- return true;
71
- }
72
-
73
- return false;
74
- });
75
- var tokenResult = colorToToken(paletteColor || '', {
76
- state: state,
77
- propertyName: propertyName
78
- }, function () {
79
- var searchTerm = cleanMeta([].concat(_toConsumableArray(foundMeta), _toConsumableArray(baseMeta))).join(' ');
80
- var results = search.get(searchTerm);
81
-
82
- if (results) {
83
- return results.map(function (result) {
84
- return result[1];
85
- });
86
- }
45
+ var meta = cleanMeta([].concat(_toConsumableArray(foundMeta), _toConsumableArray(baseMeta)));
46
+ var results = search.get(meta.join(' '));
47
+ var tokenId = ['utility.UNSAFE_util.MISSING_TOKEN'];
48
+
49
+ if (results) {
50
+ tokenId = results.map(function (result) {
51
+ return result[1];
52
+ });
53
+ }
87
54
 
88
- return [];
89
- });
90
- return tokenResult;
55
+ return tokenId[0];
91
56
  }
92
57
 
93
58
  export default function transformer(file, api) {
@@ -105,7 +70,7 @@ export default function transformer(file, api) {
105
70
  insertTokenImport(j, source);
106
71
  var key = path.value.property.type === 'Identifier' ? path.value.property.name : undefined;
107
72
  var colorMeta = legacyColorMetaMap[key] || [];
108
- var tokenId = getTokenFromNode(j, path, debug, key, colorMeta);
73
+ var tokenId = getTokenFromNode(j, path, colorMeta);
109
74
  j(path).replaceWith(buildToken(j, tokenId, path.value));
110
75
  transformed = true;
111
76
  });
@@ -120,7 +85,7 @@ export default function transformer(file, api) {
120
85
  debug && console.log('file:', file.path);
121
86
  insertTokenImport(j, source);
122
87
  var colorMeta = legacyColorMetaMap[valuePath.name] || [];
123
- var tokenId = getTokenFromNode(j, valuePath, debug, valuePath.name, colorMeta);
88
+ var tokenId = getTokenFromNode(j, valuePath, colorMeta);
124
89
  j(path).replaceWith(j.objectProperty(path.value.key, buildToken(j, tokenId, valuePath.value)));
125
90
  transformed = true;
126
91
  });
@@ -136,7 +101,7 @@ export default function transformer(file, api) {
136
101
  debug && console.log('file:', file.path);
137
102
  insertTokenImport(j, source);
138
103
  var colorMeta = legacyColorMetaMap[path.value.name] || [];
139
- var tokenId = getTokenFromNode(j, path, debug, path.value.name, colorMeta);
104
+ var tokenId = getTokenFromNode(j, path, colorMeta);
140
105
  j(path).replaceWith(buildToken(j, tokenId, path.value));
141
106
  transformed = true;
142
107
  });
@@ -151,7 +116,7 @@ export default function transformer(file, api) {
151
116
  insertTokenImport(j, source);
152
117
  var value = path === null || path === void 0 ? void 0 : (_path$value = path.value) === null || _path$value === void 0 ? void 0 : (_path$value$value = _path$value.value) === null || _path$value$value === void 0 ? void 0 : _path$value$value.toString();
153
118
  var colorMeta = legacyColorMetaMap[value] || [];
154
- var tokenId = getTokenFromNode(j, path, debug, value, colorMeta);
119
+ var tokenId = getTokenFromNode(j, path, colorMeta);
155
120
  var tokenNode = buildToken(j, tokenId, path.value);
156
121
  j(path).replaceWith(isDecendantOfType(j, path, j.JSXAttribute) ? j.jsxExpressionContainer(tokenNode) : tokenNode);
157
122
  transformed = true;