@stylexjs/shared 0.2.0-beta.16 → 0.2.0-beta.18

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 (100) hide show
  1. package/lib/convert-to-className.d.ts +1 -1
  2. package/lib/convert-to-className.js +6 -22
  3. package/lib/convert-to-className.js.flow +1 -1
  4. package/lib/generate-css-rule.d.ts +1 -1
  5. package/lib/generate-css-rule.js +3 -14
  6. package/lib/generate-css-rule.js.flow +1 -1
  7. package/lib/hash.d.ts +2 -2
  8. package/lib/hash.js +9 -33
  9. package/lib/hash.js.flow +1 -3
  10. package/lib/index.d.ts +9 -9
  11. package/lib/index.js +0 -14
  12. package/lib/index.js.flow +9 -9
  13. package/lib/messages.d.ts +26 -26
  14. package/lib/messages.js +26 -36
  15. package/lib/messages.js.flow +26 -26
  16. package/lib/physical-rtl/generate-ltr.js +39 -67
  17. package/lib/physical-rtl/generate-ltr.js.flow +1 -1
  18. package/lib/physical-rtl/generate-rtl.d.ts +1 -2
  19. package/lib/physical-rtl/generate-rtl.js +57 -89
  20. package/lib/physical-rtl/generate-rtl.js.flow +1 -2
  21. package/lib/preprocess-rules/PreRule.d.ts +3 -3
  22. package/lib/preprocess-rules/PreRule.js +3 -17
  23. package/lib/preprocess-rules/PreRule.js.flow +3 -3
  24. package/lib/preprocess-rules/application-order.d.ts +8 -5
  25. package/lib/preprocess-rules/application-order.js +121 -160
  26. package/lib/preprocess-rules/application-order.js.flow +6 -5
  27. package/lib/preprocess-rules/basic-validation.d.ts +1 -1
  28. package/lib/preprocess-rules/basic-validation.js +6 -15
  29. package/lib/preprocess-rules/basic-validation.js.flow +1 -1
  30. package/lib/preprocess-rules/flatten-raw-style-obj.d.ts +2 -2
  31. package/lib/preprocess-rules/flatten-raw-style-obj.js +14 -43
  32. package/lib/preprocess-rules/flatten-raw-style-obj.js.flow +2 -2
  33. package/lib/preprocess-rules/index.d.ts +2 -2
  34. package/lib/preprocess-rules/index.js +6 -15
  35. package/lib/preprocess-rules/index.js.flow +2 -2
  36. package/lib/preprocess-rules/legacy-expand-shorthands.d.ts +3 -2
  37. package/lib/preprocess-rules/legacy-expand-shorthands.js +14 -33
  38. package/lib/preprocess-rules/legacy-expand-shorthands.js.flow +2 -2
  39. package/lib/preprocess-rules/property-specificity.d.ts +8 -5
  40. package/lib/preprocess-rules/property-specificity.js +54 -76
  41. package/lib/preprocess-rules/property-specificity.js.flow +6 -5
  42. package/lib/stylex-create-vars.d.ts +17 -8
  43. package/lib/stylex-create-vars.js +30 -17
  44. package/lib/stylex-create-vars.js.flow +10 -4
  45. package/lib/stylex-create.d.ts +2 -2
  46. package/lib/stylex-create.js +1 -20
  47. package/lib/stylex-create.js.flow +1 -1
  48. package/lib/stylex-first-that-works.js +0 -10
  49. package/lib/stylex-include.js +0 -10
  50. package/lib/stylex-keyframes.d.ts +1 -1
  51. package/lib/stylex-keyframes.js +7 -27
  52. package/lib/stylex-keyframes.js.flow +1 -1
  53. package/lib/stylex-override-vars.d.ts +11 -4
  54. package/lib/stylex-override-vars.js +32 -18
  55. package/lib/stylex-override-vars.js.flow +3 -3
  56. package/lib/transform-value.js +11 -29
  57. package/lib/transform-value.js.flow +1 -1
  58. package/lib/utils/Rule.d.ts +2 -2
  59. package/lib/utils/Rule.js +0 -21
  60. package/lib/utils/Rule.js.flow +2 -2
  61. package/lib/utils/dashify.js +1 -9
  62. package/lib/utils/default-options.d.ts +1 -1
  63. package/lib/utils/default-options.js +2 -23
  64. package/lib/utils/default-options.js.flow +1 -1
  65. package/lib/utils/file-based-identifier.js +1 -9
  66. package/lib/utils/genCSSRule.d.ts +1 -1
  67. package/lib/utils/genCSSRule.js +6 -16
  68. package/lib/utils/genCSSRule.js.flow +1 -1
  69. package/lib/utils/normalize-value.js +1 -13
  70. package/lib/utils/normalize-value.js.flow +1 -1
  71. package/lib/utils/normalizers/detect-unclosed-fns.d.ts +1 -1
  72. package/lib/utils/normalizers/detect-unclosed-fns.js +2 -14
  73. package/lib/utils/normalizers/detect-unclosed-fns.js.flow +1 -1
  74. package/lib/utils/normalizers/font-size-px-to-rem.d.ts +1 -1
  75. package/lib/utils/normalizers/font-size-px-to-rem.js +4 -19
  76. package/lib/utils/normalizers/font-size-px-to-rem.js.flow +1 -1
  77. package/lib/utils/normalizers/leading-zero.d.ts +1 -1
  78. package/lib/utils/normalizers/leading-zero.js +3 -15
  79. package/lib/utils/normalizers/leading-zero.js.flow +1 -1
  80. package/lib/utils/normalizers/quotes.d.ts +1 -1
  81. package/lib/utils/normalizers/quotes.js +4 -17
  82. package/lib/utils/normalizers/quotes.js.flow +1 -1
  83. package/lib/utils/normalizers/timings.d.ts +1 -1
  84. package/lib/utils/normalizers/timings.js +4 -18
  85. package/lib/utils/normalizers/timings.js.flow +1 -1
  86. package/lib/utils/normalizers/whitespace.d.ts +1 -1
  87. package/lib/utils/normalizers/whitespace.js +12 -27
  88. package/lib/utils/normalizers/whitespace.js.flow +1 -1
  89. package/lib/utils/normalizers/zero-dimensions.d.ts +1 -1
  90. package/lib/utils/normalizers/zero-dimensions.js +8 -23
  91. package/lib/utils/normalizers/zero-dimensions.js.flow +1 -1
  92. package/lib/utils/object-utils.d.ts +28 -20
  93. package/lib/utils/object-utils.js +2 -15
  94. package/lib/utils/object-utils.js.flow +23 -27
  95. package/lib/utils/property-priorities.js +68 -83
  96. package/lib/utils/split-css-value.d.ts +1 -1
  97. package/lib/utils/split-css-value.js +8 -22
  98. package/lib/utils/split-css-value.js.flow +1 -1
  99. package/lib/validate.js +2 -11
  100. package/package.json +2 -3
@@ -13,51 +13,47 @@ import type { CompiledStyles } from '../common-types';
13
13
 
14
14
  import { IncludedStyles } from '../stylex-include';
15
15
 
16
- declare export function isPlainObject(
17
- obj: mixed
18
- ): boolean %checks(typeof obj === 'object' &&
19
- obj != null &&
20
- !Array.isArray(obj) &&
21
- obj?.constructor === Object);
16
+ declare export function isPlainObject(obj: mixed): void;
22
17
 
23
18
  declare export function flattenObject(obj: CompiledStyles): {
24
19
  +[string]: null | string | IncludedStyles,
25
20
  };
26
21
 
27
- declare export function objEntries<Obj: { ... }>(
28
- obj: Obj
29
- ): $ReadOnlyArray<[$Keys<Obj>, Obj[$Keys<Obj>]]>;
22
+ type _ObjectEntries<Obj: { +[string]: mixed }> = {
23
+ [Key in keyof Obj]: [Key, Obj[Key]],
24
+ };
25
+ type ObjectEntries<Obj: { +[string]: mixed }> = $Values<_ObjectEntries<Obj>>;
26
+
27
+ declare export function objEntries<Obj: { +[string]: mixed }>(
28
+ obj: Obj,
29
+ ): $ReadOnlyArray<ObjectEntries<Obj>>;
30
30
 
31
- declare export function objValues<Obj: { ... }>(
32
- obj: Obj
31
+ declare export function objValues<Obj: { +[string]: mixed }>(
32
+ obj: Obj,
33
33
  ): $ReadOnlyArray<Obj[$Keys<Obj>]>;
34
34
 
35
35
  declare export function objFromEntries<K: string | number, V>(
36
- entries: $ReadOnlyArray<$ReadOnly<[K, V]>>
36
+ entries: $ReadOnlyArray<$ReadOnly<[K, V]>>,
37
37
  ): { [K]: V };
38
38
 
39
- declare export function objMapKeys<
40
- V,
41
- K1: string | number = string,
42
- K2: string | number = string
43
- >(
39
+ declare export function objMapKeys<V, K1: string = string, K2: string = string>(
44
40
  obj: { +[K1]: V },
45
- mapper: (K1) => K2
41
+ mapper: (K1) => K2,
46
42
  ): { +[K2]: V };
47
43
 
48
44
  declare export function objMapEntry<
49
45
  V,
50
46
  V2,
51
- K1: string | number = string,
52
- K2: string | number = string
47
+ K1: string = string,
48
+ K2: string = string,
53
49
  >(
54
50
  obj: { +[K1]: V },
55
- mapper: ([K1, V]) => [K2, V2]
51
+ mapper: ([K1, V]) => [K2, V2],
56
52
  ): { +[K2]: V2 };
57
53
 
58
- declare export function objMap<V, V2, K: string | number = string>(
54
+ declare export function objMap<V, V2, K: string = string>(
59
55
  obj: { +[K]: V },
60
- mapper: (V, K) => V2
56
+ mapper: (V, K) => V2,
61
57
  ): { +[K]: V2 };
62
58
 
63
59
  declare export class Pipe<T> {
@@ -69,13 +65,13 @@ declare export class Pipe<T> {
69
65
  }
70
66
 
71
67
  // Function that sorts an array without mutating it and returns a new array
72
- declare export var arraySort: <T>(
68
+ declare export const arraySort: <T>(
73
69
  arr: $ReadOnlyArray<T>,
74
- fn?: (T, T) => number
70
+ fn?: (T, T) => number,
75
71
  ) => $ReadOnlyArray<T>;
76
72
 
77
- declare export var arrayEquals: <T>(
73
+ declare export const arrayEquals: <T>(
78
74
  arr1: $ReadOnlyArray<T>,
79
75
  arr2: $ReadOnlyArray<T>,
80
- equals: (T, T) => boolean
76
+ equals: (T, T) => boolean,
81
77
  ) => boolean;
@@ -4,112 +4,97 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = getPriority;
7
- /**
8
- * Copyright (c) Meta Platforms, Inc. and affiliates.
9
- *
10
- * This source code is licensed under the MIT license found in the
11
- * LICENSE file in the root directory of this source tree.
12
- *
13
- *
14
- */
15
-
16
7
  const PRIORITIES = {
17
- // These should never exist at runtime:
18
8
  border: 1,
19
- 'border-block-end': 2,
20
- 'border-block-start': 2,
21
- 'border-top': 2.1,
22
- 'border-bottom': 2.1,
23
- 'border-inline-end': 2,
24
- 'border-inline-start': 2,
25
- 'border-left': 2,
26
- 'border-right': 2,
27
- // End of never-exist-at-runtime properties.
28
-
29
- // These are shorthands of shorthands:
9
+ "border-block-end": 2,
10
+ "border-block-start": 2,
11
+ "border-top": 2.1,
12
+ "border-bottom": 2.1,
13
+ "border-inline-end": 2,
14
+ "border-inline-start": 2,
15
+ "border-left": 2,
16
+ "border-right": 2,
30
17
  grid: 2,
31
- 'grid-area': 2,
32
- // These are shorthands of final properties:
33
- 'border-color': 3,
34
- 'border-style': 3,
35
- 'border-width': 3,
36
- 'border-image': 3,
37
- 'border-radius': 3,
18
+ "grid-area": 2,
19
+ "border-color": 3,
20
+ "border-style": 3,
21
+ "border-width": 3,
22
+ "border-image": 3,
23
+ "border-radius": 3,
38
24
  animation: 3,
39
25
  background: 3,
40
- 'column-rule': 3,
26
+ "column-rule": 3,
41
27
  columns: 3,
42
28
  flex: 3,
43
- 'flex-flow': 3,
29
+ "flex-flow": 3,
44
30
  font: 3,
45
31
  gap: 3,
46
- 'grid-column': 3,
47
- 'grid-row': 3,
48
- 'grid-template': 3,
49
- 'list-style': 3,
32
+ "grid-column": 3,
33
+ "grid-row": 3,
34
+ "grid-template": 3,
35
+ "list-style": 3,
50
36
  margin: 3,
51
37
  mask: 3,
52
38
  offset: 3,
53
39
  outline: 3,
54
40
  overflow: 3,
55
41
  padding: 3,
56
- 'place-content': 3,
57
- 'place-items': 3,
58
- 'place-self': 3,
59
- 'scroll-margin': 3,
60
- 'scroll-padding': 3,
61
- 'text-decoration': 3,
62
- 'text-emphasis': 3,
42
+ "place-content": 3,
43
+ "place-items": 3,
44
+ "place-self": 3,
45
+ "scroll-margin": 3,
46
+ "scroll-padding": 3,
47
+ "text-decoration": 3,
48
+ "text-emphasis": 3,
63
49
  transition: 3,
64
- ':has': 4.5,
65
- ':dir': 5,
66
- ':lang': 5.1,
67
- ':first-child': 5.2,
68
- ':last-child': 5.3,
69
- ':only-child': 5.4,
70
- ':nth-child': 6,
71
- ':nth-of-type': 6.1,
72
- ':only-of-type': 6.2,
73
- ':empty': 7,
74
- ':link': 8,
75
- ':any-link': 8.1,
76
- ':target': 8.2,
77
- ':visited': 8.3,
78
- ':enabled': 9.1,
79
- ':disabled': 9.2,
80
- ':required': 9.3,
81
- ':optional': 9.4,
82
- ':read-only': 9.5,
83
- ':read-write': 9.6,
84
- ':placeholder-shown': 9.7,
85
- ':default': 10,
86
- ':checked': 10.1,
87
- ':indeterminate': 10.1,
88
- ':blank': 10.2,
89
- ':valid': 10.3,
90
- ':invalid': 10.4,
91
- ':autofill': 11,
92
- ':picture-in-picture': 12,
93
- ':fullscreen': 12.1,
94
- ':paused': 12.2,
95
- ':playing': 12.3,
96
- ':hover': 13,
97
- ':focusWithin': 14,
98
- ':focusVisible': 15,
99
- ':focus': 16,
100
- ':active': 17
50
+ ":has": 4.5,
51
+ ":dir": 5,
52
+ ":lang": 5.1,
53
+ ":first-child": 5.2,
54
+ ":last-child": 5.3,
55
+ ":only-child": 5.4,
56
+ ":nth-child": 6,
57
+ ":nth-of-type": 6.1,
58
+ ":only-of-type": 6.2,
59
+ ":empty": 7,
60
+ ":link": 8,
61
+ ":any-link": 8.1,
62
+ ":target": 8.2,
63
+ ":visited": 8.3,
64
+ ":enabled": 9.1,
65
+ ":disabled": 9.2,
66
+ ":required": 9.3,
67
+ ":optional": 9.4,
68
+ ":read-only": 9.5,
69
+ ":read-write": 9.6,
70
+ ":placeholder-shown": 9.7,
71
+ ":default": 10,
72
+ ":checked": 10.1,
73
+ ":indeterminate": 10.1,
74
+ ":blank": 10.2,
75
+ ":valid": 10.3,
76
+ ":invalid": 10.4,
77
+ ":autofill": 11,
78
+ ":picture-in-picture": 12,
79
+ ":fullscreen": 12.1,
80
+ ":paused": 12.2,
81
+ ":playing": 12.3,
82
+ ":hover": 13,
83
+ ":focusWithin": 14,
84
+ ":focusVisible": 15,
85
+ ":focus": 16,
86
+ ":active": 17
101
87
  };
102
88
  function getPriority(key) {
103
- if (key.startsWith('@supports')) {
89
+ if (key.startsWith("@supports")) {
104
90
  return 20;
105
91
  }
106
- if (key.startsWith('@media')) {
92
+ if (key.startsWith("@media")) {
107
93
  return 21;
108
94
  }
109
- const prop = key.startsWith(':') && key.includes('(') ? key.slice(0, key.indexOf('(')) : key;
95
+ const prop = key.startsWith(":") && key.includes("(") ? key.slice(0, key.indexOf("(")) : key;
110
96
  let priority = PRIORITIES[prop] ?? 4;
111
- if (key.toLowerCase().includes('left') || key.toLowerCase().includes('right')) {
112
- // Bump priority for physical left/right values.
97
+ if (key.toLowerCase().includes("left") || key.toLowerCase().includes("right")) {
113
98
  priority += 0.1;
114
99
  }
115
100
  return priority;
@@ -10,6 +10,6 @@
10
10
 
11
11
  import type { TStyleValue } from '../common-types';
12
12
  declare function splitValue(
13
- str: TStyleValue
13
+ str: TStyleValue,
14
14
  ): ReadonlyArray<number | string | null>;
15
15
  export default splitValue;
@@ -6,42 +6,28 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = splitValue;
7
7
  var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- /**
10
- * Copyright (c) Meta Platforms, Inc. and affiliates.
11
- *
12
- * This source code is licensed under the MIT license found in the
13
- * LICENSE file in the root directory of this source tree.
14
- *
15
- *
16
- *
17
- */
18
-
19
9
  function printNode(node) {
20
10
  switch (node.type) {
21
- case 'word':
22
- case 'string':
11
+ case "word":
12
+ case "string":
23
13
  return `${node.value}`;
24
- case 'function':
25
- return `${node.value}(${node.nodes.map(printNode).join('')})`;
14
+ case "function":
15
+ return `${node.value}(${node.nodes.map(printNode).join("")})`;
26
16
  default:
27
17
  return node.value;
28
18
  }
29
19
  }
30
-
31
- // Using split(' ') Isn't enough bcause of values like calc.
32
20
  function splitValue(str) {
33
- if (str == null || typeof str === 'number') {
21
+ if (str == null || typeof str === "number") {
34
22
  return [str];
35
23
  }
36
-
37
- // This will never happen, but keeping here for Flow.
38
24
  if (Array.isArray(str)) {
39
25
  return str;
40
26
  }
41
27
  const parsed = (0, _postcssValueParser.default)(str.trim());
42
- const nodes = parsed.nodes.filter(node => node.type !== 'space' && node.type !== 'div').map(printNode);
43
- if (nodes.length > 1 && nodes[nodes.length - 1].toLowerCase() === '!important') {
44
- return nodes.slice(0, nodes.length - 1).map(node => node + ' !important');
28
+ const nodes = parsed.nodes.filter(node => node.type !== "space" && node.type !== "div").map(printNode);
29
+ if (nodes.length > 1 && nodes[nodes.length - 1].toLowerCase() === "!important") {
30
+ return nodes.slice(0, nodes.length - 1).map(node => node + " !important");
45
31
  }
46
32
  return nodes;
47
33
  }
@@ -12,5 +12,5 @@ import type { TStyleValue } from '../common-types';
12
12
 
13
13
  // Using split(' ') Isn't enough bcause of values like calc.
14
14
  declare export default function splitValue(
15
- str: TStyleValue
15
+ str: TStyleValue,
16
16
  ): $ReadOnlyArray<number | string | null>;
package/lib/validate.js CHANGED
@@ -4,15 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = validateEntry;
7
- /**
8
- * Copyright (c) Meta Platforms, Inc. and affiliates.
9
- *
10
- * This source code is licensed under the MIT license found in the
11
- * LICENSE file in the root directory of this source tree.
12
- *
13
- *
14
- */
15
-
16
7
  function validateEntry(_ref) {
17
8
  let [key, value] = _ref;
18
9
  if (Array.isArray(value)) {
@@ -24,7 +15,7 @@ function validateEntry(_ref) {
24
15
  function validateSimplyEntry(_ref2) {
25
16
  let [key, _value] = _ref2;
26
17
  if (BANNED_KEYS.has(key)) {
27
- throw new Error('Banned key: ' + key);
18
+ throw new Error("Banned key: " + key);
28
19
  }
29
20
  }
30
- const BANNED_KEYS = new Set(['background', 'transition', 'grid']);
21
+ const BANNED_KEYS = new Set(["background", "transition", "grid"]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stylexjs/shared",
3
- "version": "0.2.0-beta.16",
3
+ "version": "0.2.0-beta.18",
4
4
  "main": "lib/index.js",
5
5
  "repository": "https://www.github.com/facebook/stylex",
6
6
  "license": "MIT",
@@ -13,8 +13,7 @@
13
13
  "postcss-value-parser": "^4.1.0"
14
14
  },
15
15
  "devDependencies": {
16
- "@stylexjs/scripts": "0.2.0-beta.16",
17
- "typescript": "^4.7.4"
16
+ "@stylexjs/scripts": "0.2.0-beta.18"
18
17
  },
19
18
  "jest": {
20
19
  "snapshotFormat": {