@atlaskit/codemod-cli 0.13.4 → 0.15.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 (89) hide show
  1. package/CHANGELOG.md +71 -52
  2. package/dist/cjs/main.js +3 -3
  3. package/dist/cjs/presets/css-to-design-tokens/css-to-design-tokens.js +65 -135
  4. package/dist/cjs/presets/css-to-design-tokens/lib/colors.js +49 -0
  5. package/dist/cjs/presets/css-to-design-tokens/lib/declaration.js +29 -0
  6. package/dist/cjs/presets/css-to-design-tokens/{utils → lib}/legacy-colors.js +13 -17
  7. package/dist/cjs/presets/css-to-design-tokens/lib/logger.js +18 -0
  8. package/dist/cjs/presets/css-to-design-tokens/lib/meta.js +157 -0
  9. package/dist/cjs/presets/css-to-design-tokens/lib/tokens.js +47 -0
  10. package/dist/cjs/presets/css-to-design-tokens/lib/value.js +80 -0
  11. package/dist/cjs/presets/index.js +1 -2
  12. package/dist/cjs/presets/styled-to-emotion/styled-to-emotion.js +1 -2
  13. package/dist/cjs/presets/theme-remove-deprecated-mixins/utils/replacements.js +2 -3
  14. package/dist/cjs/presets/theme-to-design-tokens/theme-to-design-tokens.js +348 -104
  15. package/dist/cjs/presets/theme-to-design-tokens/utils/ast.js +1 -1
  16. package/dist/cjs/presets/theme-to-design-tokens/utils/color.js +17 -17
  17. package/dist/cjs/presets/theme-to-design-tokens/utils/css-utils.js +38 -0
  18. package/dist/cjs/presets/theme-to-design-tokens/utils/fuzzy-search.js +1 -2
  19. package/dist/cjs/presets/theme-to-design-tokens/utils/legacy-colors.js +4 -7
  20. package/dist/cjs/presets/theme-to-design-tokens/utils/named-colors.js +1 -2
  21. package/dist/cjs/presets/theme-to-design-tokens/utils/string-utils.js +25 -0
  22. package/dist/cjs/presets/theme-to-design-tokens/utils/tokens.js +3 -5
  23. package/dist/cjs/sinceRef.js +1 -2
  24. package/dist/cjs/transforms.js +6 -12
  25. package/dist/cjs/types.js +3 -5
  26. package/dist/cjs/utils.js +2 -3
  27. package/dist/es2019/presets/css-to-design-tokens/css-to-design-tokens.js +61 -115
  28. package/dist/es2019/presets/css-to-design-tokens/lib/colors.js +34 -0
  29. package/dist/es2019/presets/css-to-design-tokens/lib/declaration.js +17 -0
  30. package/dist/es2019/presets/css-to-design-tokens/{utils → lib}/legacy-colors.js +9 -10
  31. package/dist/es2019/presets/css-to-design-tokens/lib/logger.js +11 -0
  32. package/dist/es2019/presets/css-to-design-tokens/lib/meta.js +133 -0
  33. package/dist/es2019/presets/css-to-design-tokens/lib/tokens.js +24 -0
  34. package/dist/es2019/presets/css-to-design-tokens/lib/value.js +68 -0
  35. package/dist/es2019/presets/theme-to-design-tokens/theme-to-design-tokens.js +191 -32
  36. package/dist/es2019/presets/theme-to-design-tokens/utils/ast.js +1 -1
  37. package/dist/es2019/presets/theme-to-design-tokens/utils/color.js +12 -10
  38. package/dist/es2019/presets/theme-to-design-tokens/utils/css-utils.js +31 -0
  39. package/dist/es2019/presets/theme-to-design-tokens/utils/string-utils.js +13 -0
  40. package/dist/esm/main.js +3 -3
  41. package/dist/esm/presets/css-to-design-tokens/css-to-design-tokens.js +65 -135
  42. package/dist/esm/presets/css-to-design-tokens/lib/colors.js +38 -0
  43. package/dist/esm/presets/css-to-design-tokens/lib/declaration.js +19 -0
  44. package/dist/esm/presets/css-to-design-tokens/{utils → lib}/legacy-colors.js +9 -10
  45. package/dist/esm/presets/css-to-design-tokens/lib/logger.js +11 -0
  46. package/dist/esm/presets/css-to-design-tokens/lib/meta.js +146 -0
  47. package/dist/esm/presets/css-to-design-tokens/lib/tokens.js +40 -0
  48. package/dist/esm/presets/css-to-design-tokens/lib/value.js +73 -0
  49. package/dist/esm/presets/theme-to-design-tokens/theme-to-design-tokens.js +346 -100
  50. package/dist/esm/presets/theme-to-design-tokens/utils/ast.js +1 -1
  51. package/dist/esm/presets/theme-to-design-tokens/utils/color.js +12 -10
  52. package/dist/esm/presets/theme-to-design-tokens/utils/css-utils.js +31 -0
  53. package/dist/esm/presets/theme-to-design-tokens/utils/string-utils.js +17 -0
  54. package/dist/types/main.d.ts +0 -1
  55. package/dist/types/presets/css-to-design-tokens/css-to-design-tokens.d.ts +1 -1
  56. package/dist/types/presets/css-to-design-tokens/lib/colors.d.ts +6 -0
  57. package/dist/types/presets/css-to-design-tokens/lib/declaration.d.ts +5 -0
  58. package/dist/types/presets/css-to-design-tokens/{utils → lib}/legacy-colors.d.ts +1 -1
  59. package/dist/types/presets/css-to-design-tokens/lib/logger.d.ts +4 -0
  60. package/dist/types/presets/css-to-design-tokens/lib/meta.d.ts +6 -0
  61. package/dist/types/presets/css-to-design-tokens/lib/tokens.d.ts +7 -0
  62. package/dist/types/presets/css-to-design-tokens/lib/value.d.ts +6 -0
  63. package/dist/types/presets/theme-to-design-tokens/theme-to-design-tokens.d.ts +1 -1
  64. package/dist/types/presets/theme-to-design-tokens/utils/ast.d.ts +1 -1
  65. package/dist/types/presets/theme-to-design-tokens/utils/color.d.ts +2 -1
  66. package/dist/types/presets/theme-to-design-tokens/utils/css-utils.d.ts +2 -0
  67. package/dist/types/presets/theme-to-design-tokens/utils/string-utils.d.ts +3 -0
  68. package/dist/types-ts4.5/main.d.ts +0 -1
  69. package/dist/types-ts4.5/presets/css-to-design-tokens/css-to-design-tokens.d.ts +1 -1
  70. package/dist/types-ts4.5/presets/css-to-design-tokens/lib/colors.d.ts +6 -0
  71. package/dist/types-ts4.5/presets/css-to-design-tokens/lib/declaration.d.ts +5 -0
  72. package/dist/types-ts4.5/presets/css-to-design-tokens/{utils → lib}/legacy-colors.d.ts +1 -1
  73. package/dist/types-ts4.5/presets/css-to-design-tokens/lib/logger.d.ts +4 -0
  74. package/dist/types-ts4.5/presets/css-to-design-tokens/lib/meta.d.ts +6 -0
  75. package/dist/types-ts4.5/presets/css-to-design-tokens/lib/tokens.d.ts +7 -0
  76. package/dist/types-ts4.5/presets/css-to-design-tokens/lib/value.d.ts +6 -0
  77. package/dist/types-ts4.5/presets/theme-to-design-tokens/theme-to-design-tokens.d.ts +1 -1
  78. package/dist/types-ts4.5/presets/theme-to-design-tokens/utils/ast.d.ts +1 -1
  79. package/dist/types-ts4.5/presets/theme-to-design-tokens/utils/color.d.ts +2 -1
  80. package/dist/types-ts4.5/presets/theme-to-design-tokens/utils/css-utils.d.ts +2 -0
  81. package/dist/types-ts4.5/presets/theme-to-design-tokens/utils/string-utils.d.ts +6 -0
  82. package/package.json +2 -2
  83. package/report.api.md +0 -2
  84. package/tmp/api-report-tmp.d.ts +0 -2
  85. package/dist/cjs/presets/css-to-design-tokens/utils/meta.js +0 -53
  86. package/dist/es2019/presets/css-to-design-tokens/utils/meta.js +0 -33
  87. package/dist/esm/presets/css-to-design-tokens/utils/meta.js +0 -46
  88. package/dist/types/presets/css-to-design-tokens/utils/meta.d.ts +0 -1
  89. package/dist/types-ts4.5/presets/css-to-design-tokens/utils/meta.d.ts +0 -1
@@ -8,83 +8,18 @@ exports.default = transformer;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
11
  var _postcss = _interopRequireDefault(require("postcss"));
13
12
  var _postcssLess = _interopRequireDefault(require("postcss-less"));
14
- var _tokensRaw = require("@atlaskit/tokens/tokens-raw");
15
- var _tokenNames = _interopRequireDefault(require("@atlaskit/tokens/token-names"));
16
- var _fuzzySearch = _interopRequireDefault(require("../theme-to-design-tokens/utils/fuzzy-search"));
17
- var _legacyColors = require("./utils/legacy-colors");
18
- var _meta = require("./utils/meta");
13
+ var _declaration = require("./lib/declaration");
14
+ var _meta = require("./lib/meta");
15
+ var _tokens = _interopRequireDefault(require("./lib/tokens"));
16
+ var _value = _interopRequireDefault(require("./lib/value"));
19
17
  // @ts-ignore
20
18
 
21
- var tokens = _tokensRaw.light.filter(function (t) {
22
- return t.attributes.state === 'active';
23
- }).map(function (t) {
24
- return t.name.replace(/\.\[default\]/g, '');
25
- }).filter(function (t) {
26
- return !t.includes('UNSAFE') && !t.includes('interaction');
27
- });
28
- var search = (0, _fuzzySearch.default)(tokens, false);
29
- function isRule(node) {
30
- return node.type === 'rule';
31
- }
32
- function getParentSelectors(node) {
33
- if (isRule(node)) {
34
- // @ts-expect-error
35
- return getParentSelectors(node.parent) + ' ' + node.selector;
36
- }
37
- if (node.parent) {
38
- return getParentSelectors(node.parent);
39
- }
40
- return '';
41
- }
42
- function stripVar(prop) {
43
- return prop.substring(prop.indexOf('(') + 1).split(/\,|\)/)[0];
44
- }
45
- function stripLessVar(prop) {
46
- return prop.substring(1);
47
- }
48
- function isColorProperty(prop) {
49
- 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';
50
- }
51
- function getDeclarationMeta(decl) {
52
- if (decl.prop === 'color') {
53
- return 'text';
54
- }
55
- if (decl.prop.startsWith('background')) {
56
- return 'background';
57
- }
58
- if (decl.prop.includes('shadow')) {
59
- return 'shadow';
60
- }
61
- if (decl.prop.includes('border')) {
62
- return 'border';
63
- }
64
- return '';
65
- }
66
- function isDesignToken(tokenName) {
67
- return Boolean(Object.entries(_tokenNames.default).find(function (_ref) {
68
- var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
69
- _ = _ref2[0],
70
- value = _ref2[1];
71
- return tokenName === value;
72
- }));
73
- }
74
- function getMetaFromCssVar(tokenName) {
75
- var meta = _legacyColors.knownVariables[tokenName];
76
- if (!meta || meta.length === 0) {
77
- return tokenName.split('-');
78
- }
79
- return meta;
80
- }
81
- function getMetaFromRawColor(rawColor) {
82
- var cleanColor = rawColor.toLowerCase();
83
- if (cleanColor.length === 4) {
84
- cleanColor = cleanColor + cleanColor.substring(cleanColor.indexOf('#') + 1);
85
- }
86
- return _legacyColors.knownRawColors[cleanColor];
87
- }
19
+ var POSTCSS_OPTIONS = {
20
+ syntax: _postcssLess.default,
21
+ from: undefined
22
+ };
88
23
 
89
24
  // https://github.com/postcss/postcss/blob/main/docs/writing-a-plugin.md
90
25
  // https://astexplorer.net/#/2uBU1BLuJ1
@@ -92,70 +27,62 @@ var plugin = function plugin() {
92
27
  var processed = Symbol('processed');
93
28
  return {
94
29
  postcssPlugin: 'UsingTokens',
95
- Declaration: function Declaration(decl) {
30
+ AtRule: function AtRule(atRule, helper) {
96
31
  // @ts-expect-error
97
- if (decl[processed]) {
98
- return;
99
- }
100
- if (!isColorProperty(decl.prop)) {
32
+ if (atRule[processed]) {
101
33
  return;
102
34
  }
103
- var searchTerms = [getDeclarationMeta(decl)].concat((0, _toConsumableArray2.default)(getParentSelectors(decl).split(/\-|\.|\,|\ |\:|\&/).filter(function (el) {
104
- return !!el;
105
- })));
106
- var match;
107
- var cssVarRe = /var\([^\)]+\)/g;
108
- var lessVarRe = /@[a-zA-Z0-9-]+/g;
109
- 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;
110
35
 
111
- // CSS variables
112
- var cssVarMatch = decl.value.match(cssVarRe);
113
- if (cssVarMatch) {
114
- var _getMetaFromCssVar;
115
- match = cssVarMatch[0];
116
- if (isDesignToken(stripVar(match))) {
117
- return;
118
- }
119
- searchTerms.push.apply(searchTerms, (0, _toConsumableArray2.default)((_getMetaFromCssVar = getMetaFromCssVar(stripVar(match))) !== null && _getMetaFromCssVar !== void 0 ? _getMetaFromCssVar : []));
120
- }
121
-
122
- // Less variables
123
- var lassVarMatch = decl.value.match(lessVarRe);
124
- if (lassVarMatch) {
125
- var _getMetaFromCssVar2;
126
- match = lassVarMatch[0];
127
- searchTerms.push.apply(searchTerms, (0, _toConsumableArray2.default)((_getMetaFromCssVar2 = getMetaFromCssVar("--".concat(stripLessVar(match)))) !== null && _getMetaFromCssVar2 !== void 0 ? _getMetaFromCssVar2 : []));
36
+ // @ts-expect-error: The 'variable' property does not exist on 'AtRule' according to the TypeScript definitions.
37
+ // However, the 'postcss-less' library adds a 'variable' property to 'AtRule' when parsing LESS variables.
38
+ // This property indicates whether the 'AtRule' is a LESS variable.
39
+ if (atRule.variable) {
40
+ // TODO https://hello.atlassian.net/browse/DCA11Y-637
128
41
  }
129
42
 
130
- // Raw colors
131
- var rawColorMatch = decl.value.match(rawColorRe);
132
- if (rawColorMatch) {
133
- var _getMetaFromRawColor;
134
- match = rawColorMatch[0];
135
- searchTerms.push.apply(searchTerms, (0, _toConsumableArray2.default)((_getMetaFromRawColor = getMetaFromRawColor(match)) !== null && _getMetaFromRawColor !== void 0 ? _getMetaFromRawColor : []));
136
- }
137
-
138
- // Named colors
139
- if (_legacyColors.knownColors.hasOwnProperty(decl.value)) {
140
- var _knownColors$decl$val;
141
- match = decl.value;
142
- searchTerms.push.apply(searchTerms, (0, _toConsumableArray2.default)((_knownColors$decl$val = _legacyColors.knownColors[decl.value.toLowerCase()]) !== null && _knownColors$decl$val !== void 0 ? _knownColors$decl$val : []));
43
+ // @ts-expect-error
44
+ atRule[processed] = true;
45
+ },
46
+ Declaration: function Declaration(decl) {
47
+ // @ts-expect-error
48
+ if (decl[processed]) {
49
+ return;
143
50
  }
144
- if (!match) {
145
- // eslint-disable-next-line no-console
146
- console.warn("Unable to find match for declaration: ".concat(decl.prop, ": ").concat(decl.value));
51
+ if (decl.value === 'none') {
147
52
  return;
148
53
  }
149
- var cleanSearchTerms = (0, _meta.cleanMeta)(searchTerms).join(' ');
150
- var results = search.get(cleanSearchTerms);
151
- var candidates = results.map(function (result) {
152
- return result[1];
153
- });
154
- var replacement = candidates.length ? _tokenNames.default[candidates[0]] : 'MISSING_TOKEN';
155
- if (decl.prop === 'box-shadow') {
156
- decl.value = "var(".concat(replacement, ", ").concat(decl.value, ")");
157
- } else {
158
- decl.value = decl.value.split(match).join("var(".concat(replacement, ", ").concat(match, ")"));
54
+ var baseMeta = (0, _meta.getBaseDeclarationMeta)(decl);
55
+ if ((0, _declaration.isCssDeclaration)(decl.prop)) {
56
+ // TODO https://hello.atlassian.net/browse/DCA11Y-637
57
+ }
58
+ if ((0, _declaration.isColorRelatedProperty)(decl.prop)) {
59
+ var values = (0, _declaration.splitCssValue)(decl.value);
60
+ if (!values) {
61
+ return;
62
+ }
63
+ switch (decl.prop) {
64
+ case 'box-shadow':
65
+ var meta = values.reduce(function (acc, curr) {
66
+ var parsedValue = (0, _value.default)(curr);
67
+ if (!parsedValue) {
68
+ return acc;
69
+ }
70
+ return [].concat((0, _toConsumableArray2.default)(acc), (0, _toConsumableArray2.default)(parsedValue.getMeta()));
71
+ }, baseMeta);
72
+ var token = (0, _tokens.default)(meta);
73
+ decl.value = "var(".concat(token, ", ").concat(decl.value, ")");
74
+ break;
75
+ default:
76
+ var replacedValues = values.map(function (value) {
77
+ var parsedValue = (0, _value.default)(value);
78
+ if (!parsedValue) {
79
+ return value;
80
+ }
81
+ return parsedValue.getReplacement(baseMeta);
82
+ });
83
+ decl.value = replacedValues.join(' ');
84
+ break;
85
+ }
159
86
  }
160
87
 
161
88
  // @ts-expect-error
@@ -168,16 +95,19 @@ function transformer(_x) {
168
95
  }
169
96
  function _transformer() {
170
97
  _transformer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(file) {
98
+ var processor, src, _yield$processor$proc, css;
171
99
  return _regenerator.default.wrap(function _callee$(_context) {
172
100
  while (1) switch (_context.prev = _context.next) {
173
101
  case 0:
174
- _context.next = 2;
175
- return (0, _postcss.default)([plugin()]).process(file.source, {
176
- syntax: _postcssLess.default
177
- }).css;
178
- case 2:
179
- return _context.abrupt("return", _context.sent);
180
- case 3:
102
+ processor = (0, _postcss.default)([plugin()]);
103
+ src = typeof file === 'string' ? file : file.source;
104
+ _context.next = 4;
105
+ return processor.process(src, POSTCSS_OPTIONS);
106
+ case 4:
107
+ _yield$processor$proc = _context.sent;
108
+ css = _yield$processor$proc.css;
109
+ return _context.abrupt("return", css);
110
+ case 7:
181
111
  case "end":
182
112
  return _context.stop();
183
113
  }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.extractBetweenParentheses = extractBetweenParentheses;
7
+ exports.isGradient = isGradient;
8
+ exports.isKnownCssVariable = isKnownCssVariable;
9
+ exports.isLessFunction = isLessFunction;
10
+ exports.isNamedColor = isNamedColor;
11
+ exports.isRawColor = isRawColor;
12
+ var _legacyColors = require("./legacy-colors");
13
+ var NAMED_COLORS = Object.keys(_legacyColors.knownNamedColors);
14
+ var GRADIENT_TYPES = ['linear', 'radial', 'conic'];
15
+ var LESS_COLOR_FUNCTIONS = ['lighten', 'darken', 'saturate', 'desaturate', 'fadein', 'fadeout', 'fade', 'spin', 'mix', 'greyscale', 'contrast', 'multiply', 'screen', 'overlay', 'softlight', 'hardlight', 'difference', 'exclusion', 'average', 'negation', 'tint', 'shade', 'luma', 'hue', 'saturation', 'lightness', 'alpha', 'red', 'green', 'blue'];
16
+ var REGEXES = {
17
+ // The CSS regular expression matches CSS variable declarations.
18
+ // It looks for the string "var(" followed by any characters except a closing parenthesis, and ending with a closing parenthesis.
19
+ CSS: /var\([^\)]+\)/g,
20
+ // The RAW_COLOR regular expression matches various CSS color formats including hexadecimal, RGB(A), HSL(A), LAB, LCH, and HWB.
21
+ // It allows for optional leading and trailing white spaces.
22
+ // For RGBA and HSLA, it allows any number (including negative numbers and numbers greater than 1) for the alpha channel.
23
+ // For RGB, HSL, LAB, LCH, and HWB, it expects three comma-separated values.
24
+ // It also allows optional white spaces around the commas and the values.
25
+ RAW_COLOR: /^\s*(#([0-9a-f]{3}){1,2}|(rgba|hsla)\(\s*\d{1,3}%?\s*(,\s*\d{1,3}%?\s*){2},\s*-?\d*\.?\d+\s*\)|(rgb|hsl)\(\s*\d{1,3}%?\s*(,\s*\d{1,3}%?\s*){2}\)\s*|(lab|lch)\(\s*\d{1,3}%?\s+\d{1,3}%?\s+\d{1,3}%?\s*\)|hwb\(\s*\d{1,3}\s+\d{1,3}%?\s+\d{1,3}%?\s*\))\s*$/i
26
+ };
27
+ function isKnownCssVariable(value) {
28
+ return value in _legacyColors.knownVariables;
29
+ }
30
+ function isRawColor(value) {
31
+ return REGEXES.RAW_COLOR.test(value);
32
+ }
33
+ function isNamedColor(value) {
34
+ return NAMED_COLORS.includes(value);
35
+ }
36
+ function isGradient(value) {
37
+ return GRADIENT_TYPES.some(function (gradient) {
38
+ return value.startsWith("".concat(gradient, "-gradient("));
39
+ });
40
+ }
41
+ function extractBetweenParentheses(value) {
42
+ var match = value.match(/\((.*?)\)/);
43
+ return match ? match[1] : '';
44
+ }
45
+ function isLessFunction(value) {
46
+ return LESS_COLOR_FUNCTIONS.some(function (func) {
47
+ return value.startsWith("".concat(func, "("));
48
+ });
49
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.extractCssVarName = extractCssVarName;
7
+ exports.extractLessVarName = extractLessVarName;
8
+ exports.isColorRelatedProperty = isColorRelatedProperty;
9
+ exports.isCssDeclaration = isCssDeclaration;
10
+ exports.splitCssValue = splitCssValue;
11
+ var COLOR_PROPERTIES = ['color', 'background', 'background-color', 'box-shadow', 'border', 'border-left', 'border-right', 'border-top', 'border-bottom', 'border-color', 'border-left-color', 'border-right-color', 'border-top-color', 'border-bottom-color', 'outline', 'outline-color', 'accent-color', 'caret-color', 'scrollbar-color', 'text-stroke'];
12
+ function isColorRelatedProperty(prop) {
13
+ return COLOR_PROPERTIES.some(function (property) {
14
+ return property === prop;
15
+ });
16
+ }
17
+ function isCssDeclaration(prop) {
18
+ return prop.startsWith('--');
19
+ }
20
+ function extractCssVarName(prop) {
21
+ return prop.substring(prop.indexOf('(') + 1).split(/\,|\)/)[0];
22
+ }
23
+ function extractLessVarName(prop) {
24
+ return prop.substring(1);
25
+ }
26
+ function splitCssValue(value) {
27
+ var regex = /(?:[^\s()]+|\((?:[^()]+|\([^()]*\))*\))+/g;
28
+ return value.match(regex);
29
+ }
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.knownVariables = exports.knownRawColors = exports.knownColors = void 0;
7
- var knownVariables = {
6
+ exports.knownVariables = exports.knownRawColors = exports.knownNamedColors = void 0;
7
+ var knownVariables = exports.knownVariables = {
8
8
  '--adg3-color-R50': ['danger'],
9
9
  '--adg3-color-R75': ['danger'],
10
10
  '--adg3-color-R100': ['danger'],
@@ -169,8 +169,7 @@ var knownVariables = {
169
169
  '--jpo-border-default-color': ['border'],
170
170
  '--jpo-border-secondary-color': ['border', 'subtle']
171
171
  };
172
- exports.knownVariables = knownVariables;
173
- var knownColors = {
172
+ var knownNamedColors = exports.knownNamedColors = {
174
173
  aliceblue: ['blue'],
175
174
  antiquewhite: [],
176
175
  aqua: ['teal'],
@@ -190,7 +189,7 @@ var knownColors = {
190
189
  coral: [],
191
190
  cornflowerblue: ['blue'],
192
191
  cornsilk: [],
193
- crimson: ['accent', 'red'],
192
+ crimson: ['red'],
194
193
  cyan: ['accent', 'teal', 'subtle'],
195
194
  darkblue: ['accent', 'blue', 'bold'],
196
195
  darkcyan: ['accent', 'teal', 'bold'],
@@ -244,11 +243,11 @@ var knownColors = {
244
243
  lightgoldenrodyellow: [],
245
244
  lightgray: [],
246
245
  lightgrey: [],
247
- lightgreen: ['green'],
246
+ lightgreen: ['green', 'accent'],
248
247
  lightpink: ['magenta'],
249
248
  lightsalmon: ['pink', 'subtler'],
250
249
  lightseagreen: ['green'],
251
- lightskyblue: ['blue'],
250
+ lightskyblue: ['blue', 'accent'],
252
251
  lightslategray: [],
253
252
  lightslategrey: [],
254
253
  lightsteelblue: ['blue'],
@@ -290,7 +289,8 @@ var knownColors = {
290
289
  plum: [],
291
290
  powderblue: ['blue', 'subtle'],
292
291
  purple: ['purple'],
293
- red: ['accent', 'red', 'subtle'],
292
+ rebeccapurple: ['purple', 'accent'],
293
+ red: ['red', 'accent'],
294
294
  rosybrown: [],
295
295
  royalblue: [],
296
296
  saddlebrown: [],
@@ -319,12 +319,10 @@ var knownColors = {
319
319
  yellow: ['yellow'],
320
320
  yellowgreen: ['yellow']
321
321
  };
322
- exports.knownColors = knownColors;
323
- var knownRawColors = {
324
- '#000000': ['text'],
325
- '#cccccc': ['border'],
326
- '#aaaaaa': ['border'],
327
- '#bbbbbb': ['border'],
322
+ var knownRawColors = exports.knownRawColors = {
323
+ '#cccccc': ['gray'],
324
+ '#aaaaaa': ['gray', 'subtlest'],
325
+ '#bbbbbb': ['gray', 'subtle'],
328
326
  '#ffffff': ['elevation', 'surface'],
329
327
  '#f0f0f0': ['elevation', 'surface'],
330
328
  '#eeeeee': ['elevation', 'surface', 'sunken'],
@@ -333,10 +331,8 @@ var knownRawColors = {
333
331
  '#c00c00': ['danger'],
334
332
  '#5243aa': ['discovery'],
335
333
  '#ffc712': ['warning'],
336
- '#292929': ['text'],
337
334
  '#00f00f': ['brand'],
338
335
  '#3b73af': ['brand'],
339
336
  '#326ca6': ['brand'],
340
337
  '#0052cc': ['brand']
341
- };
342
- exports.knownRawColors = knownRawColors;
338
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.logger = void 0;
8
+ var _chalk = _interopRequireDefault(require("chalk"));
9
+ var logger = exports.logger = {
10
+ warn: function warn(message) {
11
+ // eslint-disable-next-line no-console
12
+ console.warn(_chalk.default.yellow('WARNING'), message);
13
+ },
14
+ error: function error(message) {
15
+ // eslint-disable-next-line no-console
16
+ console.error(_chalk.default.red('ERROR'), message);
17
+ }
18
+ };
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.cleanMeta = cleanMeta;
8
+ exports.getBaseDeclarationMeta = getBaseDeclarationMeta;
9
+ exports.getCssVarMeta = getCssVarMeta;
10
+ exports.getNamedColorMeta = getNamedColorMeta;
11
+ exports.getRawColorMeta = getRawColorMeta;
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+ var _tokenNames = _interopRequireDefault(require("@atlaskit/tokens/token-names"));
14
+ var _declaration = require("./declaration");
15
+ var _legacyColors = require("./legacy-colors");
16
+ var getUniqueWordsFromTokens = Object.keys(_tokenNames.default).reduce(function (accum, val) {
17
+ return [].concat((0, _toConsumableArray2.default)(accum), (0, _toConsumableArray2.default)(val.split('.')));
18
+ }, []).reduce(function (accum, val) {
19
+ return [].concat((0, _toConsumableArray2.default)(accum), (0, _toConsumableArray2.default)(val.split(/(?=[A-Z])/g).map(function (e) {
20
+ return e.toLowerCase();
21
+ })));
22
+ }, []).reduce(function (accum, val) {
23
+ if (!accum.includes(val)) {
24
+ accum.push(val);
25
+ }
26
+ return accum;
27
+ }, []);
28
+ function filterDuplciateFoundations(meta) {
29
+ var foundations = ['text', 'background', 'shadow', 'border'];
30
+ var hasFoundation = false;
31
+ return meta.filter(function (val) {
32
+ if (!hasFoundation && foundations.includes(val)) {
33
+ hasFoundation = true;
34
+ return true;
35
+ }
36
+ if (hasFoundation && foundations.includes(val)) {
37
+ return false;
38
+ }
39
+ return true;
40
+ });
41
+ }
42
+ var REPLACEMENTS = {
43
+ ':': '',
44
+ ',': '',
45
+ texts: 'text',
46
+ error: 'danger',
47
+ invalid: 'danger',
48
+ removed: 'danger',
49
+ removal: 'danger',
50
+ remove: 'danger',
51
+ focus: 'focused',
52
+ valid: 'success',
53
+ successful: 'success',
54
+ risk: 'warning',
55
+ caution: 'warning',
56
+ warn: 'warning',
57
+ primary: 'bold',
58
+ info: 'bold',
59
+ secondary: 'subtle',
60
+ hyperlink: 'link',
61
+ anchor: 'link',
62
+ active: 'pressed',
63
+ hover: 'hovered',
64
+ dragged: 'overlay',
65
+ dragging: 'overlay',
66
+ drag: 'overlay',
67
+ 'background-color': 'background',
68
+ color: 'text',
69
+ icons: 'icon',
70
+ arrow: 'icon',
71
+ glyph: 'icon',
72
+ stroke: 'border',
73
+ 'border-left': 'border',
74
+ 'border-right': 'border',
75
+ 'border-top': 'border',
76
+ 'border-bottom': 'border',
77
+ 'box-shadow': 'shadow'
78
+ };
79
+ var ADDITIONAL_META = {
80
+ grey: 'neutral',
81
+ red: 'danger'
82
+ };
83
+ function cleanMeta(meta) {
84
+ var cleanMeta = meta.reduce(function (accum, val) {
85
+ return [].concat((0, _toConsumableArray2.default)(accum), (0, _toConsumableArray2.default)(typeof val === 'string' ? val.split(/(?=[A-Z])/g).map(function (e) {
86
+ return e.toLowerCase();
87
+ }) : []));
88
+ }, []).reduce(function (accum, val) {
89
+ if (val in ADDITIONAL_META) {
90
+ accum.push(val, ADDITIONAL_META[val]);
91
+ } else {
92
+ accum.push(val);
93
+ }
94
+ accum.push(val in REPLACEMENTS ? REPLACEMENTS[val] : val);
95
+ return accum;
96
+ }, []).filter(function (val) {
97
+ return getUniqueWordsFromTokens.includes(val);
98
+ }).reduce(function (accum, val) {
99
+ if (!accum.includes(val)) {
100
+ accum.push(val);
101
+ }
102
+ return accum;
103
+ }, []);
104
+ return filterDuplciateFoundations(cleanMeta);
105
+ }
106
+ function getBaseDeclarationMeta(decl) {
107
+ var parentSelectors = getParentSelectors(decl).split(/\-|\.|\,|\ |\:|\&/).filter(Boolean);
108
+ return [getPropertyMeta(decl.prop)].concat((0, _toConsumableArray2.default)(parentSelectors));
109
+ }
110
+ function getPropertyMeta(prop) {
111
+ if (prop === 'color') {
112
+ return 'text';
113
+ }
114
+ if (prop.startsWith('background')) {
115
+ return 'background';
116
+ }
117
+ if (prop.includes('shadow')) {
118
+ return 'shadow';
119
+ }
120
+ if (prop.includes('border')) {
121
+ return 'border';
122
+ }
123
+ return '';
124
+ }
125
+ function isRule(node) {
126
+ return node.type === 'rule';
127
+ }
128
+ function getParentSelectors(node) {
129
+ if (isRule(node)) {
130
+ // @ts-expect-error
131
+ return getParentSelectors(node.parent) + ' ' + node.selector;
132
+ }
133
+ if (node.parent) {
134
+ return getParentSelectors(node.parent);
135
+ }
136
+ return '';
137
+ }
138
+ function getCssVarMeta(cssVariable) {
139
+ var tokenName = (0, _declaration.extractCssVarName)(cssVariable);
140
+ var meta = _legacyColors.knownVariables[tokenName];
141
+ if (!meta || meta.length === 0) {
142
+ return tokenName.split('-');
143
+ }
144
+ return meta;
145
+ }
146
+ function getRawColorMeta(rawColor) {
147
+ var _knownRawColors$clean;
148
+ var cleanColor = rawColor.toLowerCase();
149
+ if (cleanColor.length === 4) {
150
+ cleanColor = cleanColor + cleanColor.substring(cleanColor.indexOf('#') + 1);
151
+ }
152
+ return (_knownRawColors$clean = _legacyColors.knownRawColors[cleanColor]) !== null && _knownRawColors$clean !== void 0 ? _knownRawColors$clean : [];
153
+ }
154
+ function getNamedColorMeta(namedColor) {
155
+ var _knownNamedColors$nam;
156
+ return (_knownNamedColors$nam = _legacyColors.knownNamedColors[namedColor]) !== null && _knownNamedColors$nam !== void 0 ? _knownNamedColors$nam : [];
157
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = findToken;
8
+ var _tokenNames = _interopRequireDefault(require("@atlaskit/tokens/token-names"));
9
+ var _tokensRaw = require("@atlaskit/tokens/tokens-raw");
10
+ var _fuzzySearch = _interopRequireDefault(require("../../theme-to-design-tokens/utils/fuzzy-search"));
11
+ var _meta = require("./meta");
12
+ var MISSING_TOKEN_NAME = 'MISSING_TOKEN';
13
+ var ACTIVE_TOKENS = _tokensRaw.light.filter(function (token) {
14
+ return token.attributes.state === 'active';
15
+ }).map(function (token) {
16
+ return token.name.replace(/\.\[default\]/g, '');
17
+ }).filter(function (token) {
18
+ return !token.includes('UNSAFE') && !token.includes('interaction');
19
+ });
20
+ var COLOR_TOKEN_SEARCH_TYPES = ['text', 'link', 'icon', 'border', 'background', 'blanket', 'skeleton', 'chart', 'surface', 'shadow'];
21
+ var createFuzzySearch = function createFuzzySearch(tokens) {
22
+ return (0, _fuzzySearch.default)(tokens, false);
23
+ };
24
+ function filterTokens(meta) {
25
+ var commonSearchTypes = COLOR_TOKEN_SEARCH_TYPES.filter(function (type) {
26
+ return meta.includes(type);
27
+ });
28
+ return commonSearchTypes.length !== 0 ? ACTIVE_TOKENS.filter(function (token) {
29
+ return commonSearchTypes.some(function (type) {
30
+ return token.startsWith("color.".concat(type)) || token.startsWith("elevation.".concat(type));
31
+ });
32
+ }) : ACTIVE_TOKENS;
33
+ }
34
+ function findToken(meta) {
35
+ var filteredTokens = filterTokens(meta);
36
+ var tokenFuzzySearch = createFuzzySearch(filteredTokens);
37
+ var cleanSearchTerms = (0, _meta.cleanMeta)(meta).join(' ');
38
+ var results = tokenFuzzySearch.get(cleanSearchTerms);
39
+ if (!results) {
40
+ return MISSING_TOKEN_NAME;
41
+ }
42
+ var candidates = results.map(function (result) {
43
+ return result[1];
44
+ });
45
+ var bestCandidate = _tokenNames.default[candidates[0]];
46
+ return bestCandidate;
47
+ }