@atlaskit/codemod-cli 0.13.3 → 0.14.0

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 (61) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +117 -3
  3. package/dist/cjs/cli.js +70 -75
  4. package/dist/cjs/filepath.js +65 -29
  5. package/dist/cjs/index.js +3 -3
  6. package/dist/cjs/main.js +329 -167
  7. package/dist/cjs/presets/css-to-design-tokens/css-to-design-tokens.js +86 -34
  8. package/dist/cjs/presets/css-to-design-tokens/utils/legacy-colors.js +3 -3
  9. package/dist/cjs/presets/css-to-design-tokens/utils/meta.js +19 -6
  10. package/dist/cjs/presets/index.js +3 -1
  11. package/dist/cjs/presets/styled-to-emotion/styled-to-emotion.js +19 -12
  12. package/dist/cjs/presets/theme-remove-deprecated-mixins/theme-remove-deprecated-mixins.js +51 -36
  13. package/dist/cjs/presets/theme-remove-deprecated-mixins/utils/replacements.js +25 -25
  14. package/dist/cjs/presets/theme-to-design-tokens/theme-to-design-tokens.js +378 -114
  15. package/dist/cjs/presets/theme-to-design-tokens/utils/ast-meta.js +33 -18
  16. package/dist/cjs/presets/theme-to-design-tokens/utils/ast.js +1 -1
  17. package/dist/cjs/presets/theme-to-design-tokens/utils/color.js +25 -17
  18. package/dist/cjs/presets/theme-to-design-tokens/utils/css-utils.js +38 -0
  19. package/dist/cjs/presets/theme-to-design-tokens/utils/fuzzy-search.js +10 -6
  20. package/dist/cjs/presets/theme-to-design-tokens/utils/legacy-colors.js +3 -3
  21. package/dist/cjs/presets/theme-to-design-tokens/utils/named-colors.js +1 -1
  22. package/dist/cjs/presets/theme-to-design-tokens/utils/string-utils.js +26 -0
  23. package/dist/cjs/presets/theme-to-design-tokens/utils/tokens.js +16 -2
  24. package/dist/cjs/sinceRef.js +69 -35
  25. package/dist/cjs/transforms.js +44 -26
  26. package/dist/cjs/types.js +27 -3
  27. package/dist/cjs/utils.js +6 -6
  28. package/dist/es2019/cli.js +4 -0
  29. package/dist/es2019/main.js +2 -0
  30. package/dist/es2019/presets/css-to-design-tokens/css-to-design-tokens.js +19 -8
  31. package/dist/es2019/presets/theme-to-design-tokens/theme-to-design-tokens.js +191 -32
  32. package/dist/es2019/presets/theme-to-design-tokens/utils/ast.js +1 -1
  33. package/dist/es2019/presets/theme-to-design-tokens/utils/color.js +12 -10
  34. package/dist/es2019/presets/theme-to-design-tokens/utils/css-utils.js +31 -0
  35. package/dist/es2019/presets/theme-to-design-tokens/utils/string-utils.js +13 -0
  36. package/dist/es2019/sinceRef.js +1 -0
  37. package/dist/esm/cli.js +4 -0
  38. package/dist/esm/main.js +3 -1
  39. package/dist/esm/presets/css-to-design-tokens/css-to-design-tokens.js +23 -12
  40. package/dist/esm/presets/theme-to-design-tokens/theme-to-design-tokens.js +346 -100
  41. package/dist/esm/presets/theme-to-design-tokens/utils/ast.js +1 -1
  42. package/dist/esm/presets/theme-to-design-tokens/utils/color.js +12 -10
  43. package/dist/esm/presets/theme-to-design-tokens/utils/css-utils.js +31 -0
  44. package/dist/esm/presets/theme-to-design-tokens/utils/string-utils.js +17 -0
  45. package/dist/esm/sinceRef.js +1 -0
  46. package/dist/types/presets/css-to-design-tokens/css-to-design-tokens.d.ts +2 -1
  47. package/dist/types/presets/theme-to-design-tokens/theme-to-design-tokens.d.ts +1 -1
  48. package/dist/types/presets/theme-to-design-tokens/utils/ast.d.ts +1 -1
  49. package/dist/types/presets/theme-to-design-tokens/utils/color.d.ts +2 -1
  50. package/dist/types/presets/theme-to-design-tokens/utils/css-utils.d.ts +2 -0
  51. package/dist/types/presets/theme-to-design-tokens/utils/string-utils.d.ts +3 -0
  52. package/dist/types-ts4.5/presets/css-to-design-tokens/css-to-design-tokens.d.ts +2 -1
  53. package/dist/types-ts4.5/presets/theme-to-design-tokens/theme-to-design-tokens.d.ts +1 -1
  54. package/dist/types-ts4.5/presets/theme-to-design-tokens/utils/ast.d.ts +1 -1
  55. package/dist/types-ts4.5/presets/theme-to-design-tokens/utils/color.d.ts +2 -1
  56. package/dist/types-ts4.5/presets/theme-to-design-tokens/utils/css-utils.d.ts +2 -0
  57. package/dist/types-ts4.5/presets/theme-to-design-tokens/utils/string-utils.d.ts +6 -0
  58. package/package.json +2 -2
  59. package/dist/cjs/version.json +0 -4
  60. package/dist/es2019/version.json +0 -4
  61. package/dist/esm/version.json +0 -4
@@ -5,6 +5,11 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = transformer;
8
+ exports.isColorProperty = isColorProperty;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
8
13
  var _postcss = _interopRequireDefault(require("postcss"));
9
14
  var _postcssLess = _interopRequireDefault(require("postcss-less"));
10
15
  var _tokensRaw = require("@atlaskit/tokens/tokens-raw");
@@ -14,8 +19,18 @@ var _legacyColors = require("./utils/legacy-colors");
14
19
  var _meta = require("./utils/meta");
15
20
  // @ts-ignore
16
21
 
17
- const tokens = _tokensRaw.light.filter(t => t.attributes.state === 'active').map(t => t.name.replace(/\.\[default\]/g, '')).filter(t => !t.includes('UNSAFE') && !t.includes('interaction'));
18
- const search = (0, _fuzzySearch.default)(tokens, false);
22
+ var options = {
23
+ syntax: _postcssLess.default,
24
+ from: undefined
25
+ };
26
+ var tokens = _tokensRaw.light.filter(function (t) {
27
+ return t.attributes.state === 'active';
28
+ }).map(function (t) {
29
+ return t.name.replace(/\.\[default\]/g, '');
30
+ }).filter(function (t) {
31
+ return !t.includes('UNSAFE') && !t.includes('interaction');
32
+ });
33
+ var search = (0, _fuzzySearch.default)(tokens, false);
19
34
  function isRule(node) {
20
35
  return node.type === 'rule';
21
36
  }
@@ -36,7 +51,7 @@ function stripLessVar(prop) {
36
51
  return prop.substring(1);
37
52
  }
38
53
  function isColorProperty(prop) {
39
- return prop === 'color' || prop === 'background' || prop === 'background-color' || prop === 'box-shadow' || prop === 'border' || prop === 'border-left' || prop === 'border-right' || prop === 'border-top' || prop === 'border-bottom' || prop === 'border-color';
54
+ return prop === 'color' || prop === 'background' || prop === 'background-color' || prop === 'box-shadow' || prop === 'border' || prop === 'border-left' || prop === 'border-right' || prop === 'border-top' || prop === 'border-bottom' || prop === 'border-color' || prop === 'outline';
40
55
  }
41
56
  function getDeclarationMeta(decl) {
42
57
  if (decl.prop === 'color') {
@@ -54,17 +69,22 @@ function getDeclarationMeta(decl) {
54
69
  return '';
55
70
  }
56
71
  function isDesignToken(tokenName) {
57
- return Boolean(Object.entries(_tokenNames.default).find(([_, value]) => tokenName === value));
72
+ return Boolean(Object.entries(_tokenNames.default).find(function (_ref) {
73
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
74
+ _ = _ref2[0],
75
+ value = _ref2[1];
76
+ return tokenName === value;
77
+ }));
58
78
  }
59
79
  function getMetaFromCssVar(tokenName) {
60
- const meta = _legacyColors.knownVariables[tokenName];
80
+ var meta = _legacyColors.knownVariables[tokenName];
61
81
  if (!meta || meta.length === 0) {
62
82
  return tokenName.split('-');
63
83
  }
64
84
  return meta;
65
85
  }
66
86
  function getMetaFromRawColor(rawColor) {
67
- let cleanColor = rawColor.toLowerCase();
87
+ var cleanColor = rawColor.toLowerCase();
68
88
  if (cleanColor.length === 4) {
69
89
  cleanColor = cleanColor + cleanColor.substring(cleanColor.indexOf('#') + 1);
70
90
  }
@@ -73,11 +93,11 @@ function getMetaFromRawColor(rawColor) {
73
93
 
74
94
  // https://github.com/postcss/postcss/blob/main/docs/writing-a-plugin.md
75
95
  // https://astexplorer.net/#/2uBU1BLuJ1
76
- const plugin = () => {
77
- const processed = Symbol('processed');
96
+ var plugin = function plugin() {
97
+ var processed = Symbol('processed');
78
98
  return {
79
99
  postcssPlugin: 'UsingTokens',
80
- Declaration: decl => {
100
+ Declaration: function Declaration(decl) {
81
101
  // @ts-expect-error
82
102
  if (decl[processed]) {
83
103
  return;
@@ -85,53 +105,65 @@ const plugin = () => {
85
105
  if (!isColorProperty(decl.prop)) {
86
106
  return;
87
107
  }
88
- const searchTerms = [getDeclarationMeta(decl), ...getParentSelectors(decl).split(/\-|\.|\,|\ |\:|\&/).filter(el => !!el)];
89
- let match;
90
- const cssVarRe = /var\([^\)]+\)/g;
91
- const lessVarRe = /@[a-zA-Z0-9-]+/g;
92
- const rawColorRe = /(#([0-9a-f]{3}){1,2}|(rgba|hsla)\(\d{1,3}%?(,\s?\d{1,3}%?){2},\s?(1|0|0?\.\d+)\)|(rgb|hsl)\(\d{1,3}%?(,\s?\d{1,3}%?){2}\))/i;
108
+ if (decl.value === 'none') {
109
+ return;
110
+ }
111
+ var searchTerms = [getDeclarationMeta(decl)].concat((0, _toConsumableArray2.default)(getParentSelectors(decl).split(/\-|\.|\,|\ |\:|\&/).filter(function (el) {
112
+ return !!el;
113
+ })));
114
+ var match;
115
+ var cssVarRe = /var\([^\)]+\)/g;
116
+ var lessVarRe = /@[a-zA-Z0-9-]+/g;
117
+ var rawColorRe = /(#([0-9a-f]{3}){1,2}|(rgba|hsla)\(\d{1,3}%?(,\s?\d{1,3}%?){2},\s?(1|0|0?\.\d+)\)|(rgb|hsl)\(\d{1,3}%?(,\s?\d{1,3}%?){2}\))/i;
93
118
 
94
119
  // CSS variables
95
- const cssVarMatch = decl.value.match(cssVarRe);
120
+ var cssVarMatch = decl.value.match(cssVarRe);
96
121
  if (cssVarMatch) {
122
+ var _getMetaFromCssVar;
97
123
  match = cssVarMatch[0];
98
124
  if (isDesignToken(stripVar(match))) {
99
125
  return;
100
126
  }
101
- searchTerms.push(...(getMetaFromCssVar(stripVar(match)) ?? []));
127
+ searchTerms.push.apply(searchTerms, (0, _toConsumableArray2.default)((_getMetaFromCssVar = getMetaFromCssVar(stripVar(match))) !== null && _getMetaFromCssVar !== void 0 ? _getMetaFromCssVar : []));
102
128
  }
103
129
 
104
130
  // Less variables
105
- const lassVarMatch = decl.value.match(lessVarRe);
106
- if (lassVarMatch) {
107
- match = lassVarMatch[0];
108
- searchTerms.push(...(getMetaFromCssVar(`--${stripLessVar(match)}`) ?? []));
131
+ var lessVarMatch = decl.value.match(lessVarRe);
132
+ if (lessVarMatch) {
133
+ var _getMetaFromCssVar2;
134
+ match = lessVarMatch[0];
135
+ searchTerms.push.apply(searchTerms, (0, _toConsumableArray2.default)((_getMetaFromCssVar2 = getMetaFromCssVar("--".concat(stripLessVar(match)))) !== null && _getMetaFromCssVar2 !== void 0 ? _getMetaFromCssVar2 : []));
109
136
  }
110
137
 
111
138
  // Raw colors
112
- const rawColorMatch = decl.value.match(rawColorRe);
139
+ var rawColorMatch = decl.value.match(rawColorRe);
113
140
  if (rawColorMatch) {
141
+ var _getMetaFromRawColor;
114
142
  match = rawColorMatch[0];
115
- searchTerms.push(...(getMetaFromRawColor(match) ?? []));
143
+ searchTerms.push.apply(searchTerms, (0, _toConsumableArray2.default)((_getMetaFromRawColor = getMetaFromRawColor(match)) !== null && _getMetaFromRawColor !== void 0 ? _getMetaFromRawColor : []));
116
144
  }
117
145
 
118
146
  // Named colors
119
147
  if (_legacyColors.knownColors.hasOwnProperty(decl.value)) {
148
+ var _knownColors$decl$val;
120
149
  match = decl.value;
121
- searchTerms.push(...(_legacyColors.knownColors[decl.value.toLowerCase()] ?? []));
150
+ searchTerms.push.apply(searchTerms, (0, _toConsumableArray2.default)((_knownColors$decl$val = _legacyColors.knownColors[decl.value.toLowerCase()]) !== null && _knownColors$decl$val !== void 0 ? _knownColors$decl$val : []));
122
151
  }
123
152
  if (!match) {
124
- console.warn(`Unable to find match for declaration: ${decl.prop}: ${decl.value}`);
153
+ // eslint-disable-next-line no-console
154
+ console.warn("Unable to find match for declaration: ".concat(decl.prop, ": ").concat(decl.value));
125
155
  return;
126
156
  }
127
- const cleanSearchTerms = (0, _meta.cleanMeta)(searchTerms).join(' ');
128
- const results = search.get(cleanSearchTerms);
129
- const candidates = results.map(result => result[1]);
130
- const replacement = candidates.length ? _tokenNames.default[candidates[0]] : 'MISSING_TOKEN';
157
+ var cleanSearchTerms = (0, _meta.cleanMeta)(searchTerms).join(' ');
158
+ var results = search.get(cleanSearchTerms);
159
+ var candidates = results.map(function (result) {
160
+ return result[1];
161
+ });
162
+ var replacement = candidates.length ? _tokenNames.default[candidates[0]] : 'MISSING_TOKEN';
131
163
  if (decl.prop === 'box-shadow') {
132
- decl.value = `var(${replacement}, ${decl.value})`;
164
+ decl.value = "var(".concat(replacement, ", ").concat(decl.value, ")");
133
165
  } else {
134
- decl.value = decl.value.split(match).join(`var(${replacement}, ${match})`);
166
+ decl.value = decl.value.split(match).join("var(".concat(replacement, ", ").concat(match, ")"));
135
167
  }
136
168
 
137
169
  // @ts-expect-error
@@ -139,8 +171,28 @@ const plugin = () => {
139
171
  }
140
172
  };
141
173
  };
142
- async function transformer(file) {
143
- return await (0, _postcss.default)([plugin()]).process(file.source, {
144
- syntax: _postcssLess.default
145
- }).css;
174
+ function transformer(_x) {
175
+ return _transformer.apply(this, arguments);
176
+ }
177
+ function _transformer() {
178
+ _transformer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(file) {
179
+ var processor, src, _yield$processor$proc, css;
180
+ return _regenerator.default.wrap(function _callee$(_context) {
181
+ while (1) switch (_context.prev = _context.next) {
182
+ case 0:
183
+ processor = (0, _postcss.default)([plugin()]);
184
+ src = typeof file === 'string' ? file : file.source;
185
+ _context.next = 4;
186
+ return processor.process(src, options);
187
+ case 4:
188
+ _yield$processor$proc = _context.sent;
189
+ css = _yield$processor$proc.css;
190
+ return _context.abrupt("return", css);
191
+ case 7:
192
+ case "end":
193
+ return _context.stop();
194
+ }
195
+ }, _callee);
196
+ }));
197
+ return _transformer.apply(this, arguments);
146
198
  }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.knownVariables = exports.knownRawColors = exports.knownColors = void 0;
7
- const knownVariables = {
7
+ var knownVariables = {
8
8
  '--adg3-color-R50': ['danger'],
9
9
  '--adg3-color-R75': ['danger'],
10
10
  '--adg3-color-R100': ['danger'],
@@ -170,7 +170,7 @@ const knownVariables = {
170
170
  '--jpo-border-secondary-color': ['border', 'subtle']
171
171
  };
172
172
  exports.knownVariables = knownVariables;
173
- const knownColors = {
173
+ var knownColors = {
174
174
  aliceblue: ['blue'],
175
175
  antiquewhite: [],
176
176
  aqua: ['teal'],
@@ -320,7 +320,7 @@ const knownColors = {
320
320
  yellowgreen: ['yellow']
321
321
  };
322
322
  exports.knownColors = knownColors;
323
- const knownRawColors = {
323
+ var knownRawColors = {
324
324
  '#000000': ['text'],
325
325
  '#cccccc': ['border'],
326
326
  '#aaaaaa': ['border'],
@@ -5,17 +5,24 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.cleanMeta = cleanMeta;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
8
9
  var _tokenNames = _interopRequireDefault(require("@atlaskit/tokens/token-names"));
9
- const getUniqueWordsFromTokens = Object.keys(_tokenNames.default).reduce((accum, val) => [...accum, ...val.split('.')], []).reduce((accum, val) => [...accum, ...val.split(/(?=[A-Z])/g).map(e => e.toLowerCase())], []).reduce((accum, val) => {
10
+ var getUniqueWordsFromTokens = Object.keys(_tokenNames.default).reduce(function (accum, val) {
11
+ return [].concat((0, _toConsumableArray2.default)(accum), (0, _toConsumableArray2.default)(val.split('.')));
12
+ }, []).reduce(function (accum, val) {
13
+ return [].concat((0, _toConsumableArray2.default)(accum), (0, _toConsumableArray2.default)(val.split(/(?=[A-Z])/g).map(function (e) {
14
+ return e.toLowerCase();
15
+ })));
16
+ }, []).reduce(function (accum, val) {
10
17
  if (!accum.includes(val)) {
11
18
  accum.push(val);
12
19
  }
13
20
  return accum;
14
21
  }, []);
15
22
  function filterDuplciateFoundations(meta) {
16
- const foundations = ['text', 'background', 'shadow', 'border'];
17
- let hasFoundation = false;
18
- return meta.filter(val => {
23
+ var foundations = ['text', 'background', 'shadow', 'border'];
24
+ var hasFoundation = false;
25
+ return meta.filter(function (val) {
19
26
  if (!hasFoundation && foundations.includes(val)) {
20
27
  hasFoundation = true;
21
28
  return true;
@@ -27,10 +34,16 @@ function filterDuplciateFoundations(meta) {
27
34
  });
28
35
  }
29
36
  function cleanMeta(meta) {
30
- const cleanMeta = meta.reduce((accum, val) => [...accum, ...(typeof val === 'string' ? val.split(/(?=[A-Z])/g).map(e => e.toLowerCase()) : [])], []).reduce((accum, val) => {
37
+ var cleanMeta = meta.reduce(function (accum, val) {
38
+ return [].concat((0, _toConsumableArray2.default)(accum), (0, _toConsumableArray2.default)(typeof val === 'string' ? val.split(/(?=[A-Z])/g).map(function (e) {
39
+ return e.toLowerCase();
40
+ }) : []));
41
+ }, []).reduce(function (accum, val) {
31
42
  accum.push(val.replace(/:/g, '').replace(/,/g, '').replace('grey', '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('arrow', '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'));
32
43
  return accum;
33
- }, []).filter(val => getUniqueWordsFromTokens.includes(val)).reduce((accum, val) => {
44
+ }, []).filter(function (val) {
45
+ return getUniqueWordsFromTokens.includes(val);
46
+ }).reduce(function (accum, val) {
34
47
  if (!accum.includes(val)) {
35
48
  accum.push(val);
36
49
  }
@@ -15,6 +15,8 @@ require("./css-to-design-tokens/css-to-design-tokens");
15
15
  * in the final bundle
16
16
  */
17
17
 
18
- const presets = ['styled-to-emotion', 'theme-to-design-tokens', 'theme-remove-deprecated-mixins', 'css-to-design-tokens'].map(preset => _path.default.join(__dirname, preset, `${preset}.@(ts|js|tsx)`));
18
+ var presets = ['styled-to-emotion', 'theme-to-design-tokens', 'theme-remove-deprecated-mixins', 'css-to-design-tokens'].map(function (preset) {
19
+ return _path.default.join(__dirname, preset, "".concat(preset, ".@(ts|js|tsx)"));
20
+ });
19
21
  var _default = presets;
20
22
  exports.default = _default;
@@ -6,21 +6,27 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = transformer;
7
7
  exports.parser = void 0;
8
8
  function buildCoreImportDeclaration(j, path) {
9
- const coreExports = ['css', 'keyframes'];
10
- const specifiers = [];
11
- j(path).find(j.ImportSpecifier).filter(specifier => coreExports.includes(specifier.value.imported.name)).forEach(specifier => {
9
+ var coreExports = ['css', 'keyframes'];
10
+ var specifiers = [];
11
+ j(path).find(j.ImportSpecifier).filter(function (specifier) {
12
+ return coreExports.includes(specifier.value.imported.name);
13
+ }).forEach(function (specifier) {
12
14
  specifiers.push(j.importSpecifier(j.identifier(specifier.value.imported.name)));
13
15
  });
14
16
  return specifiers.length ? j.importDeclaration(specifiers, j.literal('@emotion/core')) : null;
15
17
  }
16
18
  function buildStyledImportDeclaration(j, path) {
17
- const specifier = j(path).find(j.ImportDefaultSpecifier).filter(specifier => specifier.value.local.name === 'styled');
19
+ var specifier = j(path).find(j.ImportDefaultSpecifier).filter(function (specifier) {
20
+ return specifier.value.local.name === 'styled';
21
+ });
18
22
  return specifier && specifier.length ? j.importDeclaration([j.importDefaultSpecifier(j.identifier(specifier.get(0).node.local.name))], j.literal('@emotion/styled')) : null;
19
23
  }
20
24
  function buildThemingImportDeclaration(j, path) {
21
- const themingExports = ['ThemeProvider', 'withTheme'];
22
- const specifiers = [];
23
- j(path).find(j.ImportSpecifier).filter(specifier => themingExports.includes(specifier.value.imported.name)).forEach(specifier => {
25
+ var themingExports = ['ThemeProvider', 'withTheme'];
26
+ var specifiers = [];
27
+ j(path).find(j.ImportSpecifier).filter(function (specifier) {
28
+ return themingExports.includes(specifier.value.imported.name);
29
+ }).forEach(function (specifier) {
24
30
  specifiers.push(j.importSpecifier(j.identifier(specifier.value.imported.name)));
25
31
  });
26
32
  return specifiers && specifiers.length ? j.importDeclaration(specifiers, j.literal('emotion-theming')) : null;
@@ -29,15 +35,16 @@ function buildThemingImportDeclaration(j, path) {
29
35
  /**
30
36
  * Converts all imports of `styled-components` to `@emotion/styled`
31
37
  */
32
- function transformer(fileInfo, {
33
- jscodeshift: j
34
- }, options) {
35
- const source = j(fileInfo.source).find(j.ImportDeclaration).filter(path => path.node.source.value === 'styled-components').forEach(path => {
38
+ function transformer(fileInfo, _ref, options) {
39
+ var j = _ref.jscodeshift;
40
+ var source = j(fileInfo.source).find(j.ImportDeclaration).filter(function (path) {
41
+ return path.node.source.value === 'styled-components';
42
+ }).forEach(function (path) {
36
43
  j(path).replaceWith([buildCoreImportDeclaration(j, path), buildStyledImportDeclaration(j, path), buildThemingImportDeclaration(j, path)]);
37
44
  }).toSource(options.printOptions || {
38
45
  quote: 'single'
39
46
  });
40
47
  return source;
41
48
  }
42
- const parser = 'tsx';
49
+ var parser = 'tsx';
43
50
  exports.parser = parser;
@@ -13,18 +13,18 @@ function insertTokenImport(j, source) {
13
13
  if ((0, _utils.hasImportDeclaration)(j, source, '@atlaskit/tokens')) {
14
14
  return;
15
15
  }
16
- const newImport = j.importDeclaration([j.importSpecifier(j.identifier('token'))], j.stringLiteral('@atlaskit/tokens'));
16
+ var newImport = j.importDeclaration([j.importSpecifier(j.identifier('token'))], j.stringLiteral('@atlaskit/tokens'));
17
17
  source.get().node.program.body.unshift(newImport);
18
18
  }
19
19
  function insertThemedImport(j, source) {
20
20
  if ((0, _utils.hasImportSpecifier)(j, source, 'themed', '@atlaskit/theme/components')) {
21
21
  return;
22
22
  }
23
- const newImport = j.importDeclaration([j.importSpecifier(j.identifier('themed'))], j.stringLiteral('@atlaskit/theme/components'));
23
+ var newImport = j.importDeclaration([j.importSpecifier(j.identifier('themed'))], j.stringLiteral('@atlaskit/theme/components'));
24
24
  source.get().node.program.body.unshift(newImport);
25
25
  }
26
26
  function buildToken(j, tokenId, node) {
27
- const callExpr = j.callExpression(j.identifier('token'), [j.stringLiteral(tokenId), node].filter(Boolean));
27
+ var callExpr = j.callExpression(j.identifier('token'), [j.stringLiteral(tokenId), node].filter(Boolean));
28
28
  return callExpr;
29
29
  }
30
30
  function isDecendantOfTokenMethod(j, path) {
@@ -34,36 +34,47 @@ function isDecendantOfTokenMethod(j, path) {
34
34
  }
35
35
  }).length > 0;
36
36
  }
37
- const isDeprecatedApi = identifierName => Object.keys(_replacements.colorReplacements).includes(identifierName);
38
- function buildThemedNode(j, tokenId = '', fallbackLight, fallbackDark) {
37
+ var isDeprecatedApi = function isDeprecatedApi(identifierName) {
38
+ return Object.keys(_replacements.colorReplacements).includes(identifierName);
39
+ };
40
+ function buildThemedNode(j) {
41
+ var tokenId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
42
+ var fallbackLight = arguments.length > 2 ? arguments[2] : undefined;
43
+ var fallbackDark = arguments.length > 3 ? arguments[3] : undefined;
39
44
  return j.callExpression(j.identifier('themed'), [j.objectExpression([j.objectProperty(j.identifier('light'), tokenId ? buildToken(j, tokenId, fallbackLight) : fallbackLight), j.objectProperty(j.identifier('dark'), tokenId ? buildToken(j, tokenId, fallbackDark) : fallbackDark)])]);
40
45
  }
41
46
  function replaceIdentifiers(j, source, specifier) {
42
- const importSpecifierLocal = specifier.value.local.name;
43
- const importSpecifierImported = specifier.value.imported.name;
47
+ var importSpecifierLocal = specifier.value.local.name;
48
+ var importSpecifierImported = specifier.value.imported.name;
44
49
  source.find(j.Identifier, {
45
50
  name: importSpecifierLocal
46
- }).filter(identifier => !isDecendantOfType(j, identifier, j.ImportDeclaration)).filter(identifier => identifier.parent.value.type !== 'MemberExpression').filter(identifier => !['ArrowFunctionExpression', 'FunctionDeclaration', 'JSXAttribute', 'JSXOpeningElement', 'LogicalExpression', 'ObjectProperty', 'TSFunctionType', 'TSPropertySignature', 'VariableDeclarator'].includes(identifier.parent.value.type)).forEach(identifier => {
47
- const replacement = _replacements.colorReplacements[importSpecifierImported];
48
- const isDecendantOfToken = isDecendantOfTokenMethod(j, identifier);
49
- const isDecendantOfCallExpression = identifier.parent.value.type === 'CallExpression';
50
- const isDynamicReplacement = !isDecendantOfCallExpression || isDecendantOfCallExpression && identifier.parent.value.arguments.length > 0;
51
- const tokenParentNode = isDecendantOfToken && j(identifier).closest(j.CallExpression, {
51
+ }).filter(function (identifier) {
52
+ return !isDecendantOfType(j, identifier, j.ImportDeclaration);
53
+ }).filter(function (identifier) {
54
+ return identifier.parent.value.type !== 'MemberExpression';
55
+ }).filter(function (identifier) {
56
+ return !['ArrowFunctionExpression', 'FunctionDeclaration', 'JSXAttribute', 'JSXOpeningElement', 'LogicalExpression', 'ObjectProperty', 'TSFunctionType', 'TSPropertySignature', 'VariableDeclarator'].includes(identifier.parent.value.type);
57
+ }).forEach(function (identifier) {
58
+ var replacement = _replacements.colorReplacements[importSpecifierImported];
59
+ var isDecendantOfToken = isDecendantOfTokenMethod(j, identifier);
60
+ var isDecendantOfCallExpression = identifier.parent.value.type === 'CallExpression';
61
+ var isDynamicReplacement = !isDecendantOfCallExpression || isDecendantOfCallExpression && identifier.parent.value.arguments.length > 0;
62
+ var tokenParentNode = isDecendantOfToken && j(identifier).closest(j.CallExpression, {
52
63
  callee: {
53
64
  name: 'token'
54
65
  }
55
66
  }).get();
56
- const tokenId = isDecendantOfToken ? tokenParentNode.value.arguments[0].value : replacement.tokenId;
67
+ var tokenId = isDecendantOfToken ? tokenParentNode.value.arguments[0].value : replacement.tokenId;
57
68
  insertTokenImport(j, source);
58
69
  (0, _utils.insertImportSpecifier)(j, source, j.importSpecifier(j.identifier(replacement.importSpecifiers[0])), '@atlaskit/theme/colors');
59
70
 
60
71
  // Requires themed function
61
72
  if (isDynamicReplacement) {
62
- const themedNode = buildThemedNode(j, tokenId, j.identifier(replacement.importSpecifiers[0]), j.identifier(replacement.importSpecifiers[1]));
73
+ var themedNode = buildThemedNode(j, tokenId, j.identifier(replacement.importSpecifiers[0]), j.identifier(replacement.importSpecifiers[1]));
63
74
  insertThemedImport(j, source);
64
75
  (0, _utils.insertImportSpecifier)(j, source, j.importSpecifier(j.identifier(replacement.importSpecifiers[1])), '@atlaskit/theme/colors');
65
76
  if (isDecendantOfToken && isDecendantOfCallExpression) {
66
- const callExpression = identifier.parent;
77
+ var callExpression = identifier.parent;
67
78
  tokenParentNode.replace(j.callExpression(themedNode, callExpression.value.arguments));
68
79
  return;
69
80
  }
@@ -89,26 +100,28 @@ function replaceMemberExpressions(j, source, specifier) {
89
100
  object: {
90
101
  name: specifier.value.local.name
91
102
  }
92
- }).find(j.Identifier).filter(identifier => isDeprecatedApi(identifier.value.name)).forEach(identifier => {
93
- const memberExpression = identifier.parent;
94
- const replacement = _replacements.colorReplacements[identifier.value.name];
95
- const isDecendantOfToken = isDecendantOfTokenMethod(j, identifier);
96
- const isDecendantOfCallExpression = identifier.parent.parent.value.type === 'CallExpression';
97
- const isDynamicReplacement = !isDecendantOfCallExpression || isDecendantOfCallExpression && identifier.parent.parent.value.arguments.length > 0;
98
- const tokenParentNode = isDecendantOfToken && j(identifier).closest(j.CallExpression, {
103
+ }).find(j.Identifier).filter(function (identifier) {
104
+ return isDeprecatedApi(identifier.value.name);
105
+ }).forEach(function (identifier) {
106
+ var memberExpression = identifier.parent;
107
+ var replacement = _replacements.colorReplacements[identifier.value.name];
108
+ var isDecendantOfToken = isDecendantOfTokenMethod(j, identifier);
109
+ var isDecendantOfCallExpression = identifier.parent.parent.value.type === 'CallExpression';
110
+ var isDynamicReplacement = !isDecendantOfCallExpression || isDecendantOfCallExpression && identifier.parent.parent.value.arguments.length > 0;
111
+ var tokenParentNode = isDecendantOfToken && j(identifier).closest(j.CallExpression, {
99
112
  callee: {
100
113
  name: 'token'
101
114
  }
102
115
  }).get();
103
- const tokenId = isDecendantOfToken ? tokenParentNode.value.arguments[0].value : replacement.tokenId;
116
+ var tokenId = isDecendantOfToken ? tokenParentNode.value.arguments[0].value : replacement.tokenId;
104
117
  insertTokenImport(j, source);
105
118
 
106
119
  // Requires themed function
107
120
  if (isDynamicReplacement) {
108
- const themedNode = buildThemedNode(j, tokenId, j.memberExpression(j.identifier(memberExpression.value.object.name), j.identifier(replacement.importSpecifiers[0])), j.memberExpression(j.identifier(memberExpression.value.object.name), j.identifier(replacement.importSpecifiers[1])));
121
+ var themedNode = buildThemedNode(j, tokenId, j.memberExpression(j.identifier(memberExpression.value.object.name), j.identifier(replacement.importSpecifiers[0])), j.memberExpression(j.identifier(memberExpression.value.object.name), j.identifier(replacement.importSpecifiers[1])));
109
122
  insertThemedImport(j, source);
110
123
  if (isDecendantOfToken && isDecendantOfCallExpression) {
111
- const callExpression = identifier.parent.parent;
124
+ var callExpression = identifier.parent.parent;
112
125
  tokenParentNode.replace(j.callExpression(themedNode, callExpression.value.arguments));
113
126
  return;
114
127
  }
@@ -130,32 +143,34 @@ function replaceMemberExpressions(j, source, specifier) {
130
143
  });
131
144
  }
132
145
  function transformer(file, api) {
133
- const j = api.jscodeshift;
134
- const source = j(file.source);
135
- const hasThemeImport = (0, _utils.hasImportDeclaration)(j, source, '@atlaskit/theme');
136
- const hasThemeColorsImport = (0, _utils.hasImportDeclaration)(j, source, '@atlaskit/theme/colors');
146
+ var j = api.jscodeshift;
147
+ var source = j(file.source);
148
+ var hasThemeImport = (0, _utils.hasImportDeclaration)(j, source, '@atlaskit/theme');
149
+ var hasThemeColorsImport = (0, _utils.hasImportDeclaration)(j, source, '@atlaskit/theme/colors');
137
150
  if (!hasThemeImport && !hasThemeColorsImport) {
138
151
  return file.source;
139
152
  }
140
- (0, _utils.getImportDeclaration)(j, source, '@atlaskit/theme').find(j.ImportNamespaceSpecifier).forEach(specifier => {
153
+ (0, _utils.getImportDeclaration)(j, source, '@atlaskit/theme').find(j.ImportNamespaceSpecifier).forEach(function (specifier) {
141
154
  replaceMemberExpressions(j, source, specifier);
142
155
  });
143
- (0, _utils.getImportDeclaration)(j, source, '@atlaskit/theme').find(j.ImportSpecifier).forEach(specifier => {
156
+ (0, _utils.getImportDeclaration)(j, source, '@atlaskit/theme').find(j.ImportSpecifier).forEach(function (specifier) {
144
157
  replaceMemberExpressions(j, source, specifier);
145
158
  });
146
- (0, _utils.getImportDeclaration)(j, source, '@atlaskit/theme/colors').find(j.ImportNamespaceSpecifier).forEach(specifier => {
159
+ (0, _utils.getImportDeclaration)(j, source, '@atlaskit/theme/colors').find(j.ImportNamespaceSpecifier).forEach(function (specifier) {
147
160
  replaceMemberExpressions(j, source, specifier);
148
161
  });
149
- (0, _utils.getImportDeclaration)(j, source, '@atlaskit/theme/colors').find(j.ImportSpecifier).filter(specifier => isDeprecatedApi(specifier.value.imported.name)).forEach(specifier => {
162
+ (0, _utils.getImportDeclaration)(j, source, '@atlaskit/theme/colors').find(j.ImportSpecifier).filter(function (specifier) {
163
+ return isDeprecatedApi(specifier.value.imported.name);
164
+ }).forEach(function (specifier) {
150
165
  replaceIdentifiers(j, source, specifier);
151
166
  }).remove();
152
167
 
153
168
  // Clean-up empty imports
154
- (0, _utils.getImportDeclaration)(j, source, '@atlaskit/theme/colors').filter(importDec => {
169
+ (0, _utils.getImportDeclaration)(j, source, '@atlaskit/theme/colors').filter(function (importDec) {
155
170
  var _importDec$value$spec;
156
171
  return !((_importDec$value$spec = importDec.value.specifiers) !== null && _importDec$value$spec !== void 0 && _importDec$value$spec.length);
157
172
  }).remove();
158
- (0, _utils.getImportDeclaration)(j, source, '@atlaskit/theme').filter(importDec => {
173
+ (0, _utils.getImportDeclaration)(j, source, '@atlaskit/theme').filter(function (importDec) {
159
174
  var _importDec$value$spec2;
160
175
  return !((_importDec$value$spec2 = importDec.value.specifiers) !== null && _importDec$value$spec2 !== void 0 && _importDec$value$spec2.length);
161
176
  }).remove();