@terrazzo/parser 0.1.2 → 0.2.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 (118) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/CHANGELOG.md +26 -0
  3. package/CONTRIBUTING.md +0 -12
  4. package/dist/build/index.d.ts +19 -0
  5. package/dist/build/index.js +165 -0
  6. package/dist/build/index.js.map +1 -0
  7. package/dist/config.d.ts +7 -0
  8. package/dist/config.js +269 -0
  9. package/dist/config.js.map +1 -0
  10. package/{index.d.ts → dist/index.d.ts} +1 -5
  11. package/dist/index.js +13 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/lib/code-frame.d.ts +30 -0
  14. package/dist/lib/code-frame.js +108 -0
  15. package/dist/lib/code-frame.js.map +1 -0
  16. package/dist/lint/index.d.ts +11 -0
  17. package/dist/lint/index.js +102 -0
  18. package/dist/lint/index.js.map +1 -0
  19. package/dist/lint/plugin-core/index.d.ts +12 -0
  20. package/dist/lint/plugin-core/index.js +40 -0
  21. package/dist/lint/plugin-core/index.js.map +1 -0
  22. package/dist/lint/plugin-core/lib/docs.d.ts +1 -0
  23. package/dist/lint/plugin-core/lib/docs.js +4 -0
  24. package/dist/lint/plugin-core/lib/docs.js.map +1 -0
  25. package/dist/lint/plugin-core/rules/a11y-min-contrast.d.ts +39 -0
  26. package/dist/lint/plugin-core/rules/a11y-min-contrast.js +58 -0
  27. package/dist/lint/plugin-core/rules/a11y-min-contrast.js.map +1 -0
  28. package/dist/lint/plugin-core/rules/a11y-min-font-size.d.ts +13 -0
  29. package/dist/lint/plugin-core/rules/a11y-min-font-size.js +45 -0
  30. package/dist/lint/plugin-core/rules/a11y-min-font-size.js.map +1 -0
  31. package/dist/lint/plugin-core/rules/colorspace.d.ts +14 -0
  32. package/dist/lint/plugin-core/rules/colorspace.js +85 -0
  33. package/dist/lint/plugin-core/rules/colorspace.js.map +1 -0
  34. package/dist/lint/plugin-core/rules/consistent-naming.d.ts +11 -0
  35. package/dist/lint/plugin-core/rules/consistent-naming.js +49 -0
  36. package/dist/lint/plugin-core/rules/consistent-naming.js.map +1 -0
  37. package/dist/lint/plugin-core/rules/descriptions.d.ts +9 -0
  38. package/dist/lint/plugin-core/rules/descriptions.js +32 -0
  39. package/dist/lint/plugin-core/rules/descriptions.js.map +1 -0
  40. package/dist/lint/plugin-core/rules/duplicate-values.d.ts +9 -0
  41. package/dist/lint/plugin-core/rules/duplicate-values.js +65 -0
  42. package/dist/lint/plugin-core/rules/duplicate-values.js.map +1 -0
  43. package/dist/lint/plugin-core/rules/max-gamut.d.ts +14 -0
  44. package/dist/lint/plugin-core/rules/max-gamut.js +101 -0
  45. package/dist/lint/plugin-core/rules/max-gamut.js.map +1 -0
  46. package/dist/lint/plugin-core/rules/required-children.d.ts +18 -0
  47. package/dist/lint/plugin-core/rules/required-children.js +78 -0
  48. package/dist/lint/plugin-core/rules/required-children.js.map +1 -0
  49. package/dist/lint/plugin-core/rules/required-modes.d.ts +13 -0
  50. package/dist/lint/plugin-core/rules/required-modes.js +52 -0
  51. package/dist/lint/plugin-core/rules/required-modes.js.map +1 -0
  52. package/dist/lint/plugin-core/rules/required-typography-properties.d.ts +10 -0
  53. package/dist/lint/plugin-core/rules/required-typography-properties.js +38 -0
  54. package/dist/lint/plugin-core/rules/required-typography-properties.js.map +1 -0
  55. package/dist/logger.d.ts +76 -0
  56. package/dist/logger.js +123 -0
  57. package/dist/logger.js.map +1 -0
  58. package/dist/parse/alias.d.ts +51 -0
  59. package/dist/parse/alias.js +188 -0
  60. package/dist/parse/alias.js.map +1 -0
  61. package/dist/parse/index.d.ts +27 -0
  62. package/dist/parse/index.js +379 -0
  63. package/dist/parse/index.js.map +1 -0
  64. package/dist/parse/json.d.ts +36 -0
  65. package/dist/parse/json.js +88 -0
  66. package/dist/parse/json.js.map +1 -0
  67. package/dist/parse/normalize.d.ts +23 -0
  68. package/dist/parse/normalize.js +163 -0
  69. package/dist/parse/normalize.js.map +1 -0
  70. package/dist/parse/validate.d.ts +45 -0
  71. package/dist/parse/validate.js +601 -0
  72. package/dist/parse/validate.js.map +1 -0
  73. package/dist/types.d.ts +264 -0
  74. package/dist/types.js +2 -0
  75. package/dist/types.js.map +1 -0
  76. package/package.json +7 -7
  77. package/{build/index.js → src/build/index.ts} +47 -63
  78. package/src/config.ts +280 -0
  79. package/src/index.ts +18 -0
  80. package/{lib/code-frame.js → src/lib/code-frame.ts} +41 -8
  81. package/src/lint/index.ts +135 -0
  82. package/src/lint/plugin-core/index.ts +47 -0
  83. package/src/lint/plugin-core/lib/docs.ts +3 -0
  84. package/src/lint/plugin-core/rules/a11y-min-contrast.ts +91 -0
  85. package/src/lint/plugin-core/rules/a11y-min-font-size.ts +64 -0
  86. package/src/lint/plugin-core/rules/colorspace.ts +101 -0
  87. package/src/lint/plugin-core/rules/consistent-naming.ts +65 -0
  88. package/src/lint/plugin-core/rules/descriptions.ts +41 -0
  89. package/src/lint/plugin-core/rules/duplicate-values.ts +80 -0
  90. package/src/lint/plugin-core/rules/max-gamut.ts +121 -0
  91. package/src/lint/plugin-core/rules/required-children.ts +104 -0
  92. package/src/lint/plugin-core/rules/required-modes.ts +71 -0
  93. package/src/lint/plugin-core/rules/required-typography-properties.ts +53 -0
  94. package/{logger.js → src/logger.ts} +55 -16
  95. package/src/parse/alias.ts +224 -0
  96. package/src/parse/index.ts +457 -0
  97. package/src/parse/json.ts +106 -0
  98. package/{parse/normalize.js → src/parse/normalize.ts} +70 -23
  99. package/{parse/validate.js → src/parse/validate.ts} +159 -227
  100. package/src/types.ts +310 -0
  101. package/build/index.d.ts +0 -113
  102. package/config.d.ts +0 -64
  103. package/config.js +0 -206
  104. package/index.js +0 -35
  105. package/lib/code-frame.d.ts +0 -56
  106. package/lint/index.d.ts +0 -44
  107. package/lint/index.js +0 -59
  108. package/lint/plugin-core/index.d.ts +0 -3
  109. package/lint/plugin-core/index.js +0 -12
  110. package/lint/plugin-core/rules/duplicate-values.d.ts +0 -10
  111. package/lint/plugin-core/rules/duplicate-values.js +0 -68
  112. package/logger.d.ts +0 -71
  113. package/parse/index.d.ts +0 -45
  114. package/parse/index.js +0 -592
  115. package/parse/json.d.ts +0 -30
  116. package/parse/json.js +0 -94
  117. package/parse/normalize.d.ts +0 -3
  118. package/parse/validate.d.ts +0 -43
package/parse/json.js DELETED
@@ -1,94 +0,0 @@
1
- /**
2
- * @typedef {import("@humanwhocodes/momoa").AnyNode} AnyNode
3
- * @typedef {import("@humanwhocodes/momoa").ObjectNode} ObjectNode
4
- * @typedef {import("@humanwhocodes/momoa").ValueNode} ValueNode
5
- */
6
-
7
- export const CHILD_KEYS = {
8
- Document: ['body'],
9
- Object: ['members'],
10
- Member: ['name', 'value'],
11
- Element: ['value'],
12
- Array: ['elements'],
13
- String: [],
14
- Number: [],
15
- Boolean: [],
16
- Null: [],
17
- };
18
-
19
- /** Determines if a given value is an AST node. */
20
- export function isNode(value) {
21
- return value && typeof value === 'object' && 'type' in value && typeof value.type === 'string';
22
- }
23
-
24
- /**
25
- * Get ObjectNode members as object
26
- * @param {ObjectNode} node
27
- * @return {Record<string, ValueNode}
28
- */
29
- export function getObjMembers(node) {
30
- const members = {};
31
- if (node.type !== 'Object') {
32
- return members;
33
- }
34
- for (const m of node.members) {
35
- if (m.name.type !== 'String' && m.name.type !== 'Number') {
36
- continue;
37
- }
38
- members[m.name.value] = m.value;
39
- }
40
- return members;
41
- }
42
-
43
- /**
44
- * Inject members to ObjectNode and return a clone
45
- * @param {ObjectNode} node
46
- * @param {MemberNode[]} members
47
- * @return {ObjectNode}
48
- */
49
- export function injectObjMembers(node, members = []) {
50
- if (node.type !== 'Object') {
51
- return node;
52
- }
53
- const newNode = structuredClone(node);
54
- newNode.members.push(...members);
55
- return newNode;
56
- }
57
-
58
- /**
59
- * Variation of Momoa’s traverse(), which keeps track of global path
60
- */
61
- export function traverse(root, visitor) {
62
- /**
63
- * Recursively visits a node.
64
- * @param {AnyNode} node The node to visit.
65
- * @param {AnyNode} [parent] The parent of the node to visit.
66
- * @return {void}
67
- */
68
- function visitNode(node, parent, path = []) {
69
- const nextPath = [...path];
70
- if (node.type === 'Member') {
71
- nextPath.push(node.name.value);
72
- }
73
-
74
- visitor.enter?.(node, parent, nextPath);
75
-
76
- for (const key of CHILD_KEYS[node.type] ?? []) {
77
- const value = node[key];
78
-
79
- if (value && typeof value === 'object') {
80
- if (Array.isArray(value)) {
81
- for (let i = 0; i < value.length; i++) {
82
- visitNode(value[i], node, key === 'elements' ? [...nextPath, String(i)] : nextPath);
83
- }
84
- } else if (isNode(value)) {
85
- visitNode(value, node, nextPath);
86
- }
87
- }
88
- }
89
-
90
- visitor.exit?.(node, parent, nextPath);
91
- }
92
-
93
- visitNode(root, undefined, []);
94
- }
@@ -1,3 +0,0 @@
1
- import type { TokenNormalized } from '@terrazzo/token-tools';
2
-
3
- export default function normalize<T extends TokenNormalized>(token: T): T['$value'];
@@ -1,43 +0,0 @@
1
- import type { AnyNode, MemberNode, ValueNode } from '@humanwhocodes/momoa';
2
- import type Logger from '../logger.js';
3
-
4
- declare const FONT_WEIGHT_VALUES: Set<string>;
5
-
6
- declare const STROKE_STYLE_VALUES: Set<string>;
7
- declare const STROKE_STYLE_LINE_CAP_VALUES: Set<string>;
8
-
9
- export interface ValidateOptions {
10
- filename?: URL;
11
- src: string;
12
- logger: Logger;
13
- }
14
-
15
- export function validateAliasSyntax($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
16
-
17
- export function validateBorder($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
18
-
19
- export function validateColor($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
20
-
21
- export function validateCubicBezier($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
22
-
23
- export function validateDimension($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
24
-
25
- export function validateDuration($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
26
-
27
- export function validateFontFamily($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
28
-
29
- export function validateFontWeight($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
30
-
31
- export function validateGradient($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
32
-
33
- export function validateNumber($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
34
-
35
- export function validateShadowLayer($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
36
-
37
- export function validateStrokeStyle($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
38
-
39
- export function validateTransition($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
40
-
41
- export function validateTypography($value: ValueNode, node: AnyNode, options: ValidateOptions): void;
42
-
43
- export default function validate(node: MemberNode, options: ValidateOptions): void;