@jesscss/plugin-less-compat 2.0.0-alpha.5 → 2.0.0-alpha.7

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 (114) hide show
  1. package/README.md +3 -2
  2. package/lib/index.cjs +844 -0
  3. package/lib/index.d.ts +2 -0
  4. package/lib/index.js +800 -9
  5. package/lib/less-adapter.cjs +216 -0
  6. package/lib/less-adapter.js +181 -0
  7. package/lib/less-compat-structures.cjs +378 -0
  8. package/lib/less-compat-structures.d.ts +2 -2
  9. package/lib/less-compat-structures.js +367 -512
  10. package/lib/nodes/at-rule.d.ts +2 -6
  11. package/lib/nodes/attribute-selector.d.ts +2 -6
  12. package/lib/nodes/call.d.ts +2 -6
  13. package/lib/nodes/color.d.ts +1 -5
  14. package/lib/nodes/combinator.d.ts +1 -5
  15. package/lib/nodes/comment.d.ts +1 -5
  16. package/lib/nodes/condition.d.ts +2 -6
  17. package/lib/nodes/declaration.d.ts +2 -6
  18. package/lib/nodes/dimension.d.ts +1 -5
  19. package/lib/nodes/expression.d.ts +2 -6
  20. package/lib/nodes/extend.d.ts +1 -5
  21. package/lib/nodes/import.d.ts +2 -6
  22. package/lib/nodes/keyword.d.ts +1 -5
  23. package/lib/nodes/list.d.ts +2 -5
  24. package/lib/nodes/mixin.d.ts +2 -6
  25. package/lib/nodes/negative.d.ts +2 -6
  26. package/lib/nodes/operation.d.ts +2 -6
  27. package/lib/nodes/paren.d.ts +2 -6
  28. package/lib/nodes/quoted.d.ts +1 -5
  29. package/lib/nodes/reference.d.ts +1 -8
  30. package/lib/nodes/ruleset.d.ts +2 -6
  31. package/lib/nodes/selector.d.ts +2 -7
  32. package/lib/nodes/sequence.d.ts +2 -9
  33. package/lib/nodes/url.d.ts +1 -5
  34. package/lib/nodes/var-declaration.d.ts +2 -6
  35. package/lib/plugin.d.ts +44 -16
  36. package/lib/transform/adapter.d.ts +31 -0
  37. package/lib/transform/index.cjs +13 -0
  38. package/lib/transform/index.d.ts +1 -1
  39. package/lib/transform/index.js +3 -8
  40. package/lib/transform/less-adapter.d.ts +29 -0
  41. package/lib/transform.cjs +1045 -0
  42. package/lib/transform.js +1015 -0
  43. package/lib/types.d.ts +153 -28
  44. package/package.json +13 -12
  45. package/lib/index.js.map +0 -1
  46. package/lib/less-compat-structures.js.map +0 -1
  47. package/lib/nodes/at-rule.js +0 -72
  48. package/lib/nodes/at-rule.js.map +0 -1
  49. package/lib/nodes/attribute-selector.js +0 -54
  50. package/lib/nodes/attribute-selector.js.map +0 -1
  51. package/lib/nodes/call.js +0 -83
  52. package/lib/nodes/call.js.map +0 -1
  53. package/lib/nodes/color.js +0 -57
  54. package/lib/nodes/color.js.map +0 -1
  55. package/lib/nodes/combinator.js +0 -34
  56. package/lib/nodes/combinator.js.map +0 -1
  57. package/lib/nodes/comment.js +0 -41
  58. package/lib/nodes/comment.js.map +0 -1
  59. package/lib/nodes/condition.js +0 -60
  60. package/lib/nodes/condition.js.map +0 -1
  61. package/lib/nodes/declaration.js +0 -81
  62. package/lib/nodes/declaration.js.map +0 -1
  63. package/lib/nodes/dimension.js +0 -47
  64. package/lib/nodes/dimension.js.map +0 -1
  65. package/lib/nodes/expression.js +0 -44
  66. package/lib/nodes/expression.js.map +0 -1
  67. package/lib/nodes/extend.js +0 -57
  68. package/lib/nodes/extend.js.map +0 -1
  69. package/lib/nodes/import.js +0 -63
  70. package/lib/nodes/import.js.map +0 -1
  71. package/lib/nodes/index.js +0 -308
  72. package/lib/nodes/index.js.map +0 -1
  73. package/lib/nodes/keyword.js +0 -36
  74. package/lib/nodes/keyword.js.map +0 -1
  75. package/lib/nodes/list.js +0 -150
  76. package/lib/nodes/list.js.map +0 -1
  77. package/lib/nodes/mixin.js +0 -62
  78. package/lib/nodes/mixin.js.map +0 -1
  79. package/lib/nodes/negative.js +0 -42
  80. package/lib/nodes/negative.js.map +0 -1
  81. package/lib/nodes/operation.js +0 -63
  82. package/lib/nodes/operation.js.map +0 -1
  83. package/lib/nodes/paren.js +0 -42
  84. package/lib/nodes/paren.js.map +0 -1
  85. package/lib/nodes/quoted.js +0 -57
  86. package/lib/nodes/quoted.js.map +0 -1
  87. package/lib/nodes/reference.js +0 -80
  88. package/lib/nodes/reference.js.map +0 -1
  89. package/lib/nodes/ruleset.js +0 -108
  90. package/lib/nodes/ruleset.js.map +0 -1
  91. package/lib/nodes/selector.js +0 -226
  92. package/lib/nodes/selector.js.map +0 -1
  93. package/lib/nodes/sequence.js +0 -75
  94. package/lib/nodes/sequence.js.map +0 -1
  95. package/lib/nodes/url.js +0 -42
  96. package/lib/nodes/url.js.map +0 -1
  97. package/lib/nodes/var-declaration.js +0 -60
  98. package/lib/nodes/var-declaration.js.map +0 -1
  99. package/lib/plugin-utils.js +0 -100
  100. package/lib/plugin-utils.js.map +0 -1
  101. package/lib/plugin.js +0 -1027
  102. package/lib/plugin.js.map +0 -1
  103. package/lib/transform/from-less.js +0 -170
  104. package/lib/transform/from-less.js.map +0 -1
  105. package/lib/transform/index.js.map +0 -1
  106. package/lib/transform/proxy.d.ts +0 -32
  107. package/lib/transform/proxy.js +0 -138
  108. package/lib/transform/proxy.js.map +0 -1
  109. package/lib/transform/to-less.js +0 -128
  110. package/lib/transform/to-less.js.map +0 -1
  111. package/lib/transform/type-map.js +0 -105
  112. package/lib/transform/type-map.js.map +0 -1
  113. package/lib/types.js +0 -5
  114. package/lib/types.js.map +0 -1
@@ -1,63 +0,0 @@
1
- import { Node } from '@jesscss/core';
2
- import { createLessProxy } from '../transform/proxy.js';
3
- import { toLessNode } from '../transform/to-less.js';
4
- import { mapJessTypeToLessType } from '../transform/type-map.js';
5
- import { fromLessNode } from '../transform/from-less.js';
6
- /**
7
- * Transform a Jess Operation to a Less-compatible Operation
8
- */
9
- export function transformOperationToLess(jessOperation, cache) {
10
- return createLessProxy(jessOperation, cache, (prop, target) => {
11
- const op = target;
12
- // Map 'type' property
13
- if (prop === 'type') {
14
- return mapJessTypeToLessType(op.type);
15
- }
16
- // Map 'typeIndex'
17
- if (prop === 'typeIndex') {
18
- return undefined;
19
- }
20
- // Map 'op' property (operator)
21
- if (prop === 'op') {
22
- // Jess stores as [left, op, right], extract op
23
- const value = op.value;
24
- if (Array.isArray(value) && value.length >= 2) {
25
- return value[1]; // Operator is in the middle
26
- }
27
- return '';
28
- }
29
- // Map 'operands' property
30
- if (prop === 'operands') {
31
- const value = op.value;
32
- if (Array.isArray(value)) {
33
- // Extract left and right operands, skip operator
34
- const operands = [];
35
- for (let i = 0; i < value.length; i++) {
36
- const item = value[i];
37
- if (item instanceof Node) {
38
- operands.push(item);
39
- }
40
- else if (typeof item === 'string' && i === 1) {
41
- // Skip operator
42
- continue;
43
- }
44
- }
45
- return operands.map(o => toLessNode(o, { cache }));
46
- }
47
- return [];
48
- }
49
- // Map 'accept' method for visitor traversal
50
- if (prop === 'accept') {
51
- return function (visitor) {
52
- const lessOp = transformOperationToLess(op, cache);
53
- const result = visitor.visit(lessOp);
54
- if (result !== lessOp) {
55
- return fromLessNode(result, { cache });
56
- }
57
- return op;
58
- };
59
- }
60
- return undefined;
61
- });
62
- }
63
- //# sourceMappingURL=operation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"operation.js","sourceRoot":"","sources":["../../src/nodes/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,aAAwB,EACxB,KAAyB;IAEzB,OAAO,eAAe,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC5D,MAAM,EAAE,GAAG,MAAmB,CAAC;QAE/B,sBAAsB;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,qBAAqB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,+CAA+C;YAC/C,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;YAC/C,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,iDAAiD;gBACjD,MAAM,QAAQ,GAAW,EAAE,CAAC;gBAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACtB,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;wBACzB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,CAAC;yBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC/C,gBAAgB;wBAChB,SAAS;oBACX,CAAC;gBACH,CAAC;gBACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,UAAS,OAAY;gBAC1B,MAAM,MAAM,GAAG,wBAAwB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACrC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACtB,OAAO,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,42 +0,0 @@
1
- import { Node } from '@jesscss/core';
2
- import { createLessProxy } from '../transform/proxy.js';
3
- import { toLessNode } from '../transform/to-less.js';
4
- import { mapJessTypeToLessType } from '../transform/type-map.js';
5
- import { fromLessNode } from '../transform/from-less.js';
6
- /**
7
- * Transform a Jess Paren to a Less-compatible Paren
8
- */
9
- export function transformParenToLess(jessParen, cache) {
10
- return createLessProxy(jessParen, cache, (prop, target) => {
11
- const paren = target;
12
- // Map 'type' property
13
- if (prop === 'type') {
14
- return mapJessTypeToLessType(paren.type);
15
- }
16
- // Map 'typeIndex'
17
- if (prop === 'typeIndex') {
18
- return undefined;
19
- }
20
- // Map 'value' property
21
- if (prop === 'value') {
22
- const value = paren.value;
23
- if (value instanceof Node) {
24
- return toLessNode(value, { cache });
25
- }
26
- return value;
27
- }
28
- // Map 'accept' method for visitor traversal
29
- if (prop === 'accept') {
30
- return function (visitor) {
31
- const lessParen = transformParenToLess(paren, cache);
32
- const result = visitor.visit(lessParen);
33
- if (result !== lessParen) {
34
- return fromLessNode(result, { cache });
35
- }
36
- return paren;
37
- };
38
- }
39
- return undefined;
40
- });
41
- }
42
- //# sourceMappingURL=paren.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paren.js","sourceRoot":"","sources":["../../src/nodes/paren.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,IAAI,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAgB,EAChB,KAAyB;IAEzB,OAAO,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QACxD,MAAM,KAAK,GAAG,MAAe,CAAC;QAE9B,sBAAsB;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;gBAC1B,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,UAAS,OAAY;gBAC1B,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACrD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,OAAO,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,57 +0,0 @@
1
- import { Any, Interpolated } from '@jesscss/core';
2
- import { createLessProxy } from '../transform/proxy.js';
3
- import { mapJessTypeToLessType } from '../transform/type-map.js';
4
- import { fromLessNode } from '../transform/from-less.js';
5
- /**
6
- * Transform a Jess Quoted to a Less-compatible Quoted
7
- */
8
- export function transformQuotedToLess(jessQuoted, cache) {
9
- return createLessProxy(jessQuoted, cache, (prop, target) => {
10
- const quoted = target;
11
- // Map 'type' property
12
- if (prop === 'type') {
13
- return mapJessTypeToLessType(quoted.type);
14
- }
15
- // Map 'typeIndex'
16
- if (prop === 'typeIndex') {
17
- return undefined;
18
- }
19
- // Map 'value' property
20
- if (prop === 'value') {
21
- const value = quoted.value;
22
- if (typeof value === 'string') {
23
- return value;
24
- }
25
- if (value instanceof Any) {
26
- return value.value;
27
- }
28
- if (value instanceof Interpolated) {
29
- // Convert interpolated to string representation
30
- // Less handles interpolation differently, so we convert to string
31
- return String(value.value);
32
- }
33
- return String(value);
34
- }
35
- // Map 'quote' property
36
- if (prop === 'quote') {
37
- return quoted.options?.quote || '"';
38
- }
39
- // Map 'escaped' property
40
- if (prop === 'escaped') {
41
- return quoted.options?.escaped === true;
42
- }
43
- // Map 'accept' method for visitor traversal
44
- if (prop === 'accept') {
45
- return function (visitor) {
46
- const lessQuoted = transformQuotedToLess(quoted, cache);
47
- const result = visitor.visit(lessQuoted);
48
- if (result !== lessQuoted) {
49
- return fromLessNode(result, { cache });
50
- }
51
- return quoted;
52
- };
53
- }
54
- return undefined;
55
- });
56
- }
57
- //# sourceMappingURL=quoted.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quoted.js","sourceRoot":"","sources":["../../src/nodes/quoted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,GAAG,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,KAAyB;IAEzB,OAAO,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QACzD,MAAM,MAAM,GAAG,MAAgB,CAAC;QAEhC,sBAAsB;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC,KAAK,CAAC;YACrB,CAAC;YACD,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;gBAClC,gDAAgD;gBAChD,kEAAkE;gBAClE,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,CAAC;QACtC,CAAC;QAED,yBAAyB;QACzB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;QAC1C,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,UAAS,OAAY;gBAC1B,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACxD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACzC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;oBAC1B,OAAO,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,80 +0,0 @@
1
- import { createLessProxy } from '../transform/proxy.js';
2
- /**
3
- * Transform a Jess Reference to a Less-compatible Variable, Property, or VariableCall
4
- *
5
- * Jess has unified Reference with options.type
6
- * Less has separate Variable, Property, and VariableCall nodes
7
- */
8
- export function transformReferenceToLess(jessReference, cache) {
9
- const refType = jessReference.options?.type || 'variable';
10
- // Determine Less node type based on Jess reference type
11
- let lessType;
12
- if (refType === 'property') {
13
- lessType = 'Property';
14
- }
15
- else if (refType === 'function' || refType === 'mixin') {
16
- lessType = 'VariableCall';
17
- }
18
- else {
19
- lessType = 'Variable'; // Default to Variable
20
- }
21
- return createLessProxy(jessReference, cache, (prop, target) => {
22
- const ref = target;
23
- // Map 'type' property
24
- if (prop === 'type') {
25
- return lessType;
26
- }
27
- // Map 'typeIndex'
28
- if (prop === 'typeIndex') {
29
- return undefined;
30
- }
31
- // Map 'name' property (for Variable and Property)
32
- if (prop === 'name') {
33
- // Less Variable/Property expects name as string
34
- // Jess Reference has value.key which might be string, number, or Node
35
- const key = ref.value.key;
36
- if (typeof key === 'string') {
37
- // Less variables include the leading "@"
38
- if (lessType === 'Variable' && !key.startsWith('@')) {
39
- return `@${key}`;
40
- }
41
- return key;
42
- }
43
- if (typeof key === 'number') {
44
- return String(key);
45
- }
46
- // For other types, convert to string representation
47
- return String(key);
48
- }
49
- // Map 'value' property (for VariableCall - it's the call expression)
50
- if (prop === 'value' && lessType === 'VariableCall') {
51
- // VariableCall has value as the call expression
52
- // This is complex - for now, return the reference itself
53
- // Less VariableCall structure might need special handling
54
- return ref;
55
- }
56
- // Map 'index' property
57
- if (prop === 'index') {
58
- const loc = ref.location;
59
- if (Array.isArray(loc) || !loc) {
60
- return undefined;
61
- }
62
- return loc.index;
63
- }
64
- // Map 'currentFileInfo' property
65
- if (prop === 'currentFileInfo') {
66
- return ref.location || {};
67
- }
68
- // Map 'accept' method for visitor traversal
69
- // Less's Visitor.visit() calls node.accept(this) to traverse children
70
- // Reference nodes typically don't have children to traverse
71
- if (prop === 'accept') {
72
- return function (visitor) {
73
- // Reference nodes don't have children to traverse
74
- // The visitor.visit() was already called by our plugin wrapper
75
- };
76
- }
77
- return undefined;
78
- });
79
- }
80
- //# sourceMappingURL=reference.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/nodes/reference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAKxD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,aAAwB,EACxB,KAAyB;IAEzB,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,IAAI,UAAU,CAAC;IAE1D,wDAAwD;IACxD,IAAI,QAAgB,CAAC;IACrB,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,QAAQ,GAAG,UAAU,CAAC;IACxB,CAAC;SAAM,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACzD,QAAQ,GAAG,cAAc,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,UAAU,CAAC,CAAC,sBAAsB;IAC/C,CAAC;IAED,OAAO,eAAe,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC5D,MAAM,GAAG,GAAG,MAAmB,CAAC;QAEhC,sBAAsB;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,kDAAkD;QAClD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,gDAAgD;YAChD,sEAAsE;YACtE,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,yCAAyC;gBACzC,IAAI,QAAQ,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpD,OAAO,IAAI,GAAG,EAAE,CAAC;gBACnB,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;YACD,oDAAoD;YACpD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,qEAAqE;QACrE,IAAI,IAAI,KAAK,OAAO,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;YACpD,gDAAgD;YAChD,yDAAyD;YACzD,0DAA0D;YAC1D,OAAO,GAAG,CAAC;QACb,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC;YACzB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC/B,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAQ,GAAW,CAAC,KAAK,CAAC;QAC5B,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC5B,CAAC;QAED,4CAA4C;QAC5C,sEAAsE;QACtE,4DAA4D;QAC5D,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,UAAS,OAAY;gBAC1B,kDAAkD;gBAClD,+DAA+D;YACjE,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,108 +0,0 @@
1
- import { Nil, SelectorList } from '@jesscss/core';
2
- import { createLessProxy } from '../transform/proxy.js';
3
- import { toLessNode } from '../transform/to-less.js';
4
- import { mapJessTypeToLessType } from '../transform/type-map.js';
5
- /**
6
- * Transform a Jess Ruleset to a Less-compatible Ruleset
7
- */
8
- export function transformRulesetToLess(jessRuleset, cache) {
9
- return createLessProxy(jessRuleset, cache, (prop, target) => {
10
- const ruleset = target;
11
- // Map 'type' property
12
- if (prop === 'type') {
13
- return mapJessTypeToLessType(ruleset.type);
14
- }
15
- // typeIndex is handled automatically by the base proxy handler
16
- // Map 'selectors' property (Less expects array, Jess has single Selector | Nil)
17
- if (prop === 'selectors') {
18
- const selector = ruleset.value.selector;
19
- // Handle Nil selector
20
- if (selector instanceof Nil) {
21
- return [];
22
- }
23
- // Handle SelectorList - convert to array
24
- if (selector instanceof SelectorList) {
25
- return selector.value.map((s) => toLessNode(s, { cache }));
26
- }
27
- // Single selector - wrap in array
28
- return [toLessNode(selector, { cache })];
29
- }
30
- // Map 'rules' property (Less expects array, Jess has Rules container)
31
- if (prop === 'rules') {
32
- const rules = ruleset.value.rules;
33
- // Rules has a value array of nodes
34
- return rules.value.map((r) => toLessNode(r, { cache }));
35
- }
36
- // Map 'accept' method for visitor traversal
37
- // Less's Visitor.visit() calls node.accept(this) to traverse children
38
- // The accept method should traverse children, NOT call visitor.visit again
39
- if (prop === 'accept') {
40
- return function (visitor) {
41
- // CRITICAL: The visitor passed here is the Less visitor, not the plugin visitor
42
- // Less's Ruleset.accept() traverses selectors and rules
43
- // Use visitArray which handles the traversal correctly
44
- const selector = ruleset.value.selector;
45
- const rules = ruleset.value.rules;
46
- // Traverse selectors using visitArray (Less's pattern)
47
- if (selector && !(selector instanceof Nil)) {
48
- if (selector instanceof SelectorList) {
49
- // Convert all selectors to Less format BEFORE calling visitArray
50
- // This ensures visitArray receives Less proxies, not Jess nodes
51
- const lessSelectors = selector.value.map((s) => {
52
- const lessSel = toLessNode(s, { cache });
53
- // Ensure we have a Less proxy, not a Jess node
54
- return lessSel;
55
- });
56
- if (visitor.visitArray) {
57
- visitor.visitArray(lessSelectors);
58
- }
59
- else {
60
- // Fallback: call accept on each selector if visitArray not available
61
- for (const lessSel of lessSelectors) {
62
- if (lessSel && lessSel.accept) {
63
- lessSel.accept(visitor);
64
- }
65
- }
66
- }
67
- }
68
- else {
69
- // Single selector - convert to Less format BEFORE calling visitArray
70
- const lessSelector = toLessNode(selector, { cache });
71
- if (lessSelector) {
72
- if (visitor.visitArray) {
73
- visitor.visitArray([lessSelector]);
74
- }
75
- else if (lessSelector.accept) {
76
- lessSelector.accept(visitor);
77
- }
78
- }
79
- }
80
- }
81
- // Traverse rules using visitArray (Less's pattern)
82
- if (rules && rules.value && rules.value.length > 0) {
83
- // Convert all rules to Less format BEFORE calling visitArray
84
- // This ensures visitArray receives Less proxies, not Jess nodes
85
- const lessRules = rules.value.map((r) => {
86
- const lessRule = toLessNode(r, { cache });
87
- // Ensure we have a Less proxy, not a Jess node
88
- return lessRule;
89
- });
90
- if (visitor.visitArray) {
91
- visitor.visitArray(lessRules);
92
- }
93
- else {
94
- // Fallback: call accept on each rule if visitArray not available
95
- for (const lessRule of lessRules) {
96
- if (lessRule && lessRule.accept) {
97
- lessRule.accept(visitor);
98
- }
99
- }
100
- }
101
- }
102
- };
103
- }
104
- // Pass through other properties
105
- return undefined;
106
- });
107
- }
108
- //# sourceMappingURL=ruleset.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ruleset.js","sourceRoot":"","sources":["../../src/nodes/ruleset.ts"],"names":[],"mappings":"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"}
@@ -1,226 +0,0 @@
1
- import { ComplexSelector, CompoundSelector, BasicSelector, SelectorList, Combinator } from '@jesscss/core';
2
- import { createLessProxy } from '../transform/proxy.js';
3
- import { toLessNode } from '../transform/to-less.js';
4
- /**
5
- * Flatten a hierarchical Jess selector into Less's flat Element array
6
- *
7
- * Less expects: Element[] where each Element has { combinator, value }
8
- * Jess has: ComplexSelector → CompoundSelector[] → BasicSelector[]
9
- */
10
- function flattenSelectorToElements(selector, cache) {
11
- const elements = [];
12
- if (selector instanceof SelectorList) {
13
- // SelectorList contains multiple selectors - Less expects a single Selector
14
- // For now, we'll take the first selector, but this might need special handling
15
- if (selector.value.length > 0) {
16
- const first = selector.value[0];
17
- if (first) {
18
- return flattenSelectorToElements(first, cache);
19
- }
20
- }
21
- return [];
22
- }
23
- if (selector instanceof ComplexSelector) {
24
- // ComplexSelector contains CompoundSelector[] with Combinators between them
25
- const compounds = selector.value;
26
- for (let i = 0; i < compounds.length; i++) {
27
- const compound = compounds[i];
28
- // Get combinator (default to ' ' for space)
29
- let combinator;
30
- if (i > 0) {
31
- // Combinator is between compounds
32
- // Less's Element includes the combinator, so we need to find it
33
- // For now, default to space combinator
34
- combinator = new Combinator(' ');
35
- }
36
- else {
37
- // First element has no combinator (or empty combinator)
38
- // Use space as default for Less compatibility
39
- combinator = new Combinator(' ');
40
- }
41
- // Flatten compound selector
42
- if (compound instanceof CompoundSelector) {
43
- const basicSelectors = compound.value;
44
- for (let j = 0; j < basicSelectors.length; j++) {
45
- const basic = basicSelectors[j];
46
- if (!basic) {
47
- continue;
48
- }
49
- // Use combinator only for first element of compound
50
- const elementCombinator = j === 0 ? combinator : new Combinator(' ');
51
- // Create Less Element structure
52
- // Less Element: { combinator, value, isVariable }
53
- const element = createLessProxy(basic, cache, (prop, target) => {
54
- const basicSel = target;
55
- if (prop === 'type') {
56
- return 'Element';
57
- }
58
- if (prop === 'combinator') {
59
- return toLessNode(elementCombinator, { cache });
60
- }
61
- if (prop === 'value') {
62
- return basicSel.value;
63
- }
64
- if (prop === 'isVariable') {
65
- return false; // BasicSelector is not a variable
66
- }
67
- if (prop === 'accept') {
68
- return function (visitor) {
69
- // Less Element's accept() ONLY traverses children (combinator and value)
70
- // It does NOT call visitor.visit() on itself - that's already been done
71
- // Less.js Element.accept() pattern: visitor.visit(this.combinator) and visitor.visit(this.value)
72
- const lessCombinator = toLessNode(elementCombinator, { cache });
73
- if (lessCombinator && visitor.visit) {
74
- visitor.visit(lessCombinator);
75
- }
76
- // Visit value if it's an object/node
77
- const value = basicSel.value;
78
- if (value && typeof value === 'object') {
79
- const lessValue = toLessNode(value, { cache });
80
- if (lessValue && visitor.visit) {
81
- visitor.visit(lessValue);
82
- }
83
- }
84
- return basicSel;
85
- };
86
- }
87
- return undefined;
88
- });
89
- elements.push(element);
90
- }
91
- }
92
- else if (compound instanceof BasicSelector) {
93
- // Single basic selector
94
- const element = createLessProxy(compound, cache, (prop, target) => {
95
- const basicSel = target;
96
- if (prop === 'type') {
97
- return 'Element';
98
- }
99
- if (prop === 'combinator') {
100
- return toLessNode(combinator, { cache });
101
- }
102
- if (prop === 'value') {
103
- return basicSel.value;
104
- }
105
- if (prop === 'isVariable') {
106
- return false;
107
- }
108
- return undefined;
109
- });
110
- elements.push(element);
111
- }
112
- }
113
- }
114
- else if (selector instanceof CompoundSelector) {
115
- // Single compound selector - flatten to elements
116
- const basicSelectors = selector.value;
117
- for (let i = 0; i < basicSelectors.length; i++) {
118
- const basic = basicSelectors[i];
119
- if (!basic) {
120
- continue;
121
- }
122
- const combinator = new Combinator(' ');
123
- const element = createLessProxy(basic, cache, (prop, target) => {
124
- const basicSel = target;
125
- if (prop === 'type') {
126
- return 'Element';
127
- }
128
- if (prop === 'combinator') {
129
- return toLessNode(combinator, { cache });
130
- }
131
- if (prop === 'value') {
132
- return basicSel.value;
133
- }
134
- if (prop === 'isVariable') {
135
- return false;
136
- }
137
- return undefined;
138
- });
139
- elements.push(element);
140
- }
141
- }
142
- else if (selector instanceof BasicSelector) {
143
- // Single basic selector
144
- const element = createLessProxy(selector, cache, (prop, target) => {
145
- const basicSel = target;
146
- if (prop === 'type') {
147
- return 'Element';
148
- }
149
- if (prop === 'combinator') {
150
- // Empty combinator for first element - use space as default
151
- return toLessNode(new Combinator(' '), { cache });
152
- }
153
- if (prop === 'value') {
154
- return basicSel.value;
155
- }
156
- if (prop === 'isVariable') {
157
- return false;
158
- }
159
- return undefined;
160
- });
161
- elements.push(element);
162
- }
163
- return elements;
164
- }
165
- /**
166
- * Transform a Jess Selector to a Less-compatible Selector
167
- *
168
- * Less Selector is an array of Element nodes
169
- */
170
- export function transformSelectorToLess(jessSelector, cache) {
171
- // Less Selector is an array of Elements
172
- const elements = flattenSelectorToElements(jessSelector, cache);
173
- // Create a proxy that represents a Less Selector (array of Elements)
174
- return createLessProxy(jessSelector, cache, (prop, _target) => {
175
- // Map 'type' property
176
- if (prop === 'type') {
177
- return 'Selector';
178
- }
179
- // Map 'typeIndex'
180
- if (prop === 'typeIndex') {
181
- return undefined;
182
- }
183
- // Map 'elements' property (Less Selector has elements array)
184
- if (prop === 'elements') {
185
- return elements;
186
- }
187
- // Map array-like access (Less Selector is array-like)
188
- if (typeof prop === 'string' && /^\d+$/.test(prop)) {
189
- const index = parseInt(prop, 10);
190
- return elements[index];
191
- }
192
- // Map 'length' property
193
- if (prop === 'length') {
194
- return elements.length;
195
- }
196
- // Map 'accept' method for visitor traversal
197
- if (prop === 'accept') {
198
- return function (visitor) {
199
- // Less Selector accepts visitor and visits each element
200
- // CRITICAL: All elements should already be Less proxies from flattenSelectorToElements
201
- // If they're not, we need to convert them to prevent infinite loops
202
- for (const element of elements) {
203
- if (element && element.accept) {
204
- // Element is already a Less proxy - call accept directly
205
- element.accept(visitor);
206
- }
207
- else if (element) {
208
- // Element is not a proxy - this shouldn't happen, but convert it just in case
209
- // This prevents infinite loops if somehow a Jess node got through
210
- const lessElement = toLessNode(element, { cache });
211
- if (lessElement && lessElement.accept) {
212
- lessElement.accept(visitor);
213
- }
214
- else if (lessElement && visitor.visitArray) {
215
- // Fallback: use visitArray if accept doesn't exist
216
- visitor.visitArray([lessElement]);
217
- }
218
- }
219
- }
220
- return jessSelector;
221
- };
222
- }
223
- return undefined;
224
- });
225
- }
226
- //# sourceMappingURL=selector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"selector.js","sourceRoot":"","sources":["../../src/nodes/selector.ts"],"names":[],"mappings":"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"}