style-dictionary 4.2.0 → 4.3.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 (144) hide show
  1. package/README.md +8 -5
  2. package/bin/style-dictionary.js +4 -4
  3. package/examples/advanced/assets-base64-embed/package.json +1 -1
  4. package/examples/advanced/create-react-app/package.json +1 -1
  5. package/examples/advanced/create-react-native-app/package.json +1 -1
  6. package/examples/advanced/create-react-native-app/src/App.js +0 -1
  7. package/examples/advanced/custom-parser/package.json +1 -1
  8. package/examples/advanced/custom-parser/sd.config.js +3 -2
  9. package/examples/advanced/custom-transforms/README.md +1 -1
  10. package/examples/advanced/custom-transforms/build.js +11 -8
  11. package/examples/advanced/custom-transforms/package.json +1 -1
  12. package/examples/advanced/font-face-rules/package.json +1 -1
  13. package/examples/advanced/font-face-rules/sd.config.js +2 -1
  14. package/examples/advanced/format-helpers/package.json +1 -1
  15. package/examples/advanced/format-helpers/sd.config.js +3 -2
  16. package/examples/advanced/matching-build-files/config.js +15 -10
  17. package/examples/advanced/matching-build-files/package.json +1 -1
  18. package/examples/advanced/multi-brand-multi-platform/build.js +10 -7
  19. package/examples/advanced/multi-brand-multi-platform/package.json +1 -1
  20. package/examples/advanced/node-modules-as-config-and-properties/config.js +17 -12
  21. package/examples/advanced/node-modules-as-config-and-properties/package.json +1 -1
  22. package/examples/advanced/npm-module/package.json +1 -1
  23. package/examples/advanced/referencing_aliasing/package.json +1 -1
  24. package/examples/advanced/s3/package.json +1 -1
  25. package/examples/advanced/tailwind-preset/README.md +94 -0
  26. package/examples/advanced/tailwind-preset/config/filter.js +3 -0
  27. package/examples/advanced/tailwind-preset/config/filter.test.js +12 -0
  28. package/examples/advanced/tailwind-preset/config/format.js +60 -0
  29. package/examples/advanced/tailwind-preset/config/transform.js +21 -0
  30. package/examples/advanced/tailwind-preset/config/transform.test.js +37 -0
  31. package/examples/advanced/tailwind-preset/config.js +55 -0
  32. package/examples/advanced/tailwind-preset/demo/index.html +27 -0
  33. package/examples/advanced/tailwind-preset/demo/input.css +3 -0
  34. package/examples/advanced/tailwind-preset/package.json +18 -0
  35. package/examples/advanced/tailwind-preset/tailwind.config.js +11 -0
  36. package/examples/advanced/tailwind-preset/tokens/tokens.json +49 -0
  37. package/examples/advanced/tokens-deprecation/build.js +2 -1
  38. package/examples/advanced/tokens-deprecation/package.json +1 -1
  39. package/examples/advanced/transitive-transforms/package.json +1 -1
  40. package/examples/advanced/transitive-transforms/sd.config.js +12 -9
  41. package/examples/advanced/variables-in-outputs/package.json +1 -1
  42. package/examples/advanced/variables-in-outputs/sd.config.js +10 -5
  43. package/examples/advanced/yaml-tokens/package.json +1 -1
  44. package/examples/advanced/yaml-tokens/sd.config.js +3 -2
  45. package/lib/Register.d.ts +2 -2
  46. package/lib/Register.js +6 -3
  47. package/lib/StyleDictionary.d.ts +20 -18
  48. package/lib/StyleDictionary.js +89 -71
  49. package/lib/cleanActions.d.ts +1 -1
  50. package/lib/cleanDir.d.ts +1 -1
  51. package/lib/cleanDir.js +2 -1
  52. package/lib/cleanDirs.d.ts +1 -1
  53. package/lib/cleanFile.d.ts +1 -6
  54. package/lib/cleanFile.js +5 -2
  55. package/lib/cleanFiles.d.ts +1 -1
  56. package/lib/common/actions.d.ts +20 -1
  57. package/lib/common/actions.js +8 -4
  58. package/lib/common/filters.d.ts +7 -1
  59. package/lib/common/formatHelpers/createPropertyFormatter.d.ts +3 -1
  60. package/lib/common/formatHelpers/createPropertyFormatter.js +26 -19
  61. package/lib/common/formatHelpers/fileHeader.d.ts +1 -1
  62. package/lib/common/formatHelpers/fileHeader.js +4 -2
  63. package/lib/common/formatHelpers/formattedVariables.d.ts +3 -1
  64. package/lib/common/formatHelpers/formattedVariables.js +3 -1
  65. package/lib/common/formatHelpers/getTypeScriptType.d.ts +2 -2
  66. package/lib/common/formatHelpers/minifyDictionary.d.ts +1 -1
  67. package/lib/common/formatHelpers/setComposeObjectProperties.d.ts +1 -1
  68. package/lib/common/formatHelpers/setSwiftFileProperties.d.ts +1 -1
  69. package/lib/common/formatHelpers/sortByReference.d.ts +1 -1
  70. package/lib/common/formats.js +234 -162
  71. package/lib/common/templates/compose/object.kt.template.js +8 -4
  72. package/lib/common/templates/css/fonts.css.template.js +2 -2
  73. package/lib/common/templates/scss/map-flat.template.js +4 -3
  74. package/lib/common/transformGroups.d.ts +209 -1
  75. package/lib/common/transformGroups.js +139 -93
  76. package/lib/common/transforms.d.ts +961 -1
  77. package/lib/common/transforms.js +112 -110
  78. package/lib/enums/actions.d.ts +4 -0
  79. package/lib/enums/actions.js +4 -0
  80. package/lib/enums/commentPositions.d.ts +4 -0
  81. package/lib/enums/commentPositions.js +4 -0
  82. package/lib/enums/commentStyles.d.ts +5 -0
  83. package/lib/enums/commentStyles.js +5 -0
  84. package/lib/enums/fileHeaderCommentStyles.d.ts +5 -0
  85. package/lib/enums/fileHeaderCommentStyles.js +5 -0
  86. package/lib/enums/formats.d.ts +46 -0
  87. package/lib/enums/formats.js +50 -0
  88. package/lib/enums/index.d.ts +12 -0
  89. package/lib/enums/index.js +12 -0
  90. package/lib/enums/logBrokenReferenceLevels.d.ts +5 -0
  91. package/lib/enums/logBrokenReferenceLevels.js +4 -0
  92. package/lib/enums/logVerbosityLevels.d.ts +6 -0
  93. package/lib/enums/logVerbosityLevels.js +5 -0
  94. package/lib/enums/logWarningLevels.d.ts +5 -0
  95. package/lib/enums/logWarningLevels.js +5 -0
  96. package/lib/enums/propertyFormatNames.d.ts +6 -0
  97. package/lib/enums/propertyFormatNames.js +6 -0
  98. package/lib/enums/transformGroups.d.ts +17 -0
  99. package/lib/enums/transformGroups.js +17 -0
  100. package/lib/enums/transformTypes.d.ts +5 -0
  101. package/lib/enums/transformTypes.js +5 -0
  102. package/lib/enums/transforms.d.ts +57 -0
  103. package/lib/enums/transforms.js +57 -0
  104. package/lib/filterTokens.d.ts +1 -1
  105. package/lib/filterTokens.js +5 -0
  106. package/lib/fs.d.ts +1 -1
  107. package/lib/fs.js +1 -1
  108. package/lib/performActions.d.ts +1 -1
  109. package/lib/resolve.d.ts +1 -1
  110. package/lib/resolve.js +4 -3
  111. package/lib/transform/config.js +3 -2
  112. package/lib/transform/object.d.ts +1 -1
  113. package/lib/transform/token.d.ts +1 -9
  114. package/lib/transform/token.js +10 -3
  115. package/lib/utils/cleanActions.d.ts +1 -1
  116. package/lib/utils/combineJSON.d.ts +1 -1
  117. package/lib/utils/combineJSON.js +12 -32
  118. package/lib/utils/convertToBase64.d.ts +1 -1
  119. package/lib/utils/convertToDTCG.d.ts +3 -3
  120. package/lib/utils/convertTokenData.d.ts +30 -0
  121. package/lib/utils/convertTokenData.js +123 -0
  122. package/lib/utils/deepExtend.d.ts +1 -1
  123. package/lib/utils/deepmerge.d.ts +1 -1
  124. package/lib/utils/expandObjectTokens.d.ts +2 -2
  125. package/lib/utils/expandObjectTokens.js +1 -1
  126. package/lib/utils/flattenTokens.d.ts +9 -5
  127. package/lib/utils/flattenTokens.js +28 -16
  128. package/lib/utils/index.d.ts +2 -1
  129. package/lib/utils/index.js +3 -0
  130. package/lib/utils/loadFile.d.ts +13 -0
  131. package/lib/utils/loadFile.js +89 -0
  132. package/lib/utils/preprocess.d.ts +1 -1
  133. package/lib/utils/references/defaults.d.ts +5 -1
  134. package/lib/utils/references/getName.d.ts +1 -1
  135. package/lib/utils/references/getReferences.d.ts +1 -1
  136. package/lib/utils/references/outputReferencesTransformed.js +1 -1
  137. package/lib/utils/references/resolveReferences.d.ts +2 -2
  138. package/lib/utils/references/usesReferences.d.ts +1 -1
  139. package/package.json +26 -15
  140. package/types/Config.d.ts +9 -3
  141. package/types/DesignToken.d.ts +6 -0
  142. package/types/File.d.ts +6 -2
  143. package/types/Format.d.ts +4 -1
  144. package/types/Transform.d.ts +4 -3
package/types/Config.d.ts CHANGED
@@ -6,6 +6,10 @@ import type { Preprocessor } from './Preprocessor.js';
6
6
  import type { Transform } from './Transform.js';
7
7
  import type { Format, OutputReferences } from './Format.js';
8
8
  import type { Action } from './Action.js';
9
+ import { logBrokenReferenceLevels, logWarningLevels, logVerbosityLevels } from '../lib/enums/index.js';
10
+ type logWarningLevels = typeof logWarningLevels;
11
+ type logVerbosityLevels = typeof logVerbosityLevels;
12
+ type logBrokenReferenceLevels = typeof logBrokenReferenceLevels;
9
13
  export interface Hooks {
10
14
  parsers?: Record<string, Omit<Parser, 'name'>>;
11
15
  preprocessors?: Record<string, Preprocessor['preprocessor']>;
@@ -47,10 +51,10 @@ export interface ResolveReferencesOptionsInternal extends ResolveReferencesOptio
47
51
  firstIteration?: boolean;
48
52
  }
49
53
  export interface LogConfig {
50
- warnings?: 'warn' | 'error' | 'disabled';
51
- verbosity?: 'default' | 'silent' | 'verbose';
54
+ warnings?: logWarningLevels[keyof logWarningLevels];
55
+ verbosity?: logVerbosityLevels[keyof logVerbosityLevels];
52
56
  errors?: {
53
- brokenReferences?: 'throw' | 'console';
57
+ brokenReferences?: logBrokenReferenceLevels[keyof logBrokenReferenceLevels];
54
58
  };
55
59
  }
56
60
  export type ExpandFilter = (token: DesignToken, options: Config, platform?: PlatformConfig) => boolean;
@@ -65,6 +69,7 @@ export interface PlatformConfig extends RegexOptions {
65
69
  transformGroup?: string;
66
70
  transforms?: string[] | Omit<Transform, 'name'>[];
67
71
  expand?: ExpandConfig;
72
+ preprocessors?: string[];
68
73
  prefix?: string;
69
74
  buildPath?: string;
70
75
  files?: File[];
@@ -84,3 +89,4 @@ export interface Config {
84
89
  preprocessors?: string[];
85
90
  usesDtcg?: boolean;
86
91
  }
92
+ export {};
@@ -12,6 +12,10 @@ export interface DesignToken {
12
12
  comment?: string;
13
13
  themeable?: boolean;
14
14
  attributes?: Record<string, unknown>;
15
+ /**
16
+ * When flattening tokens, DesignToken is given a key that matches the original ancestor tree e.g. `{colors.red.500}`
17
+ */
18
+ key?: string;
15
19
  [key: string]: any;
16
20
  }
17
21
  export interface DesignTokens {
@@ -51,6 +55,8 @@ export interface TransformedTokens {
51
55
  export interface Dictionary {
52
56
  tokens: TransformedTokens;
53
57
  allTokens: TransformedToken[];
58
+ tokenMap: Map<string, TransformedToken>;
54
59
  unfilteredTokens?: TransformedTokens;
55
60
  unfilteredAllTokens?: TransformedToken[];
61
+ unfilteredTokenMap?: Map<string, TransformedToken>;
56
62
  }
package/types/File.d.ts CHANGED
@@ -2,6 +2,9 @@ import type { TransformedToken } from './DesignToken.js';
2
2
  import type { FormatFn } from './Format.js';
3
3
  import type { LocalOptions, Config } from './Config.js';
4
4
  import type { Filter } from './Filter.js';
5
+ import { commentPositions, commentStyles } from '../lib/enums/index.js';
6
+ type commentStyles = typeof commentStyles;
7
+ type commentPositions = typeof commentPositions;
5
8
  export interface FormattingOptions extends FormattingOverrides {
6
9
  prefix?: string;
7
10
  suffix?: string;
@@ -9,8 +12,8 @@ export interface FormattingOptions extends FormattingOverrides {
9
12
  separator?: string;
10
13
  }
11
14
  export interface FormattingOverrides {
12
- commentStyle?: 'short' | 'long' | 'none';
13
- commentPosition?: 'above' | 'inline';
15
+ commentStyle?: commentStyles[keyof commentStyles];
16
+ commentPosition?: commentPositions[keyof commentPositions];
14
17
  indentation?: string;
15
18
  header?: string;
16
19
  footer?: string;
@@ -23,3 +26,4 @@ export interface File {
23
26
  filter?: string | Partial<TransformedToken> | Filter['filter'];
24
27
  options?: LocalOptions;
25
28
  }
29
+ export {};
package/types/Format.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import type { Dictionary, TransformedToken } from './DesignToken.js';
2
2
  import type { File } from './File.js';
3
3
  import type { LocalOptions, Config, PlatformConfig } from './Config.js';
4
+ import { formats } from '../lib/enums/index.js';
5
+ type formats = typeof formats;
4
6
  export interface FormatFnArguments {
5
7
  /**
6
8
  * The transformed and resolved dictionary object
@@ -27,10 +29,11 @@ export type FormatFn = ((args: FormatFnArguments) => unknown | Promise<unknown>)
27
29
  nested?: boolean;
28
30
  };
29
31
  export interface Format {
30
- name: string;
32
+ name: string | formats[keyof formats];
31
33
  format: FormatFn;
32
34
  }
33
35
  export type OutputReferences = ((token: TransformedToken, options: {
34
36
  dictionary: Dictionary;
35
37
  usesDtcg?: boolean;
36
38
  }) => boolean) | boolean;
39
+ export {};
@@ -2,6 +2,7 @@ import type { Filter } from './Filter.js';
2
2
  import type { TransformedToken } from './DesignToken.js';
3
3
  import type { PlatformConfig, Config } from './Config.js';
4
4
  import type { Volume } from './Volume.js';
5
+ import { transformTypes } from '../lib/enums/index.js';
5
6
  interface BaseTransform<Type, Value> {
6
7
  name: string;
7
8
  type: Type;
@@ -9,8 +10,8 @@ interface BaseTransform<Type, Value> {
9
10
  transitive?: boolean;
10
11
  transform: (token: TransformedToken, config: PlatformConfig, options: Config, vol?: Volume) => Promise<Value> | Value;
11
12
  }
12
- export type NameTransform = BaseTransform<'name', string>;
13
- export type AttributeTransform = BaseTransform<'attribute', Record<string, unknown>>;
14
- export type ValueTransform = BaseTransform<'value', unknown | undefined>;
13
+ export type NameTransform = BaseTransform<typeof transformTypes.name, string>;
14
+ export type AttributeTransform = BaseTransform<typeof transformTypes.attribute, Record<string, unknown>>;
15
+ export type ValueTransform = BaseTransform<typeof transformTypes.value, unknown | undefined>;
15
16
  export type Transform = NameTransform | AttributeTransform | ValueTransform;
16
17
  export {};