@jesscss/plugin-less-compat 2.0.0-alpha.1
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.
- package/LICENSE +21 -0
- package/README.md +139 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +10 -0
- package/lib/index.js.map +1 -0
- package/lib/less-compat-structures.d.ts +108 -0
- package/lib/less-compat-structures.js +519 -0
- package/lib/less-compat-structures.js.map +1 -0
- package/lib/nodes/at-rule.d.ts +6 -0
- package/lib/nodes/at-rule.js +72 -0
- package/lib/nodes/at-rule.js.map +1 -0
- package/lib/nodes/attribute-selector.d.ts +6 -0
- package/lib/nodes/attribute-selector.js +54 -0
- package/lib/nodes/attribute-selector.js.map +1 -0
- package/lib/nodes/call.d.ts +6 -0
- package/lib/nodes/call.js +83 -0
- package/lib/nodes/call.js.map +1 -0
- package/lib/nodes/color.d.ts +6 -0
- package/lib/nodes/color.js +57 -0
- package/lib/nodes/color.js.map +1 -0
- package/lib/nodes/combinator.d.ts +6 -0
- package/lib/nodes/combinator.js +34 -0
- package/lib/nodes/combinator.js.map +1 -0
- package/lib/nodes/comment.d.ts +6 -0
- package/lib/nodes/comment.js +41 -0
- package/lib/nodes/comment.js.map +1 -0
- package/lib/nodes/condition.d.ts +6 -0
- package/lib/nodes/condition.js +60 -0
- package/lib/nodes/condition.js.map +1 -0
- package/lib/nodes/declaration.d.ts +6 -0
- package/lib/nodes/declaration.js +81 -0
- package/lib/nodes/declaration.js.map +1 -0
- package/lib/nodes/dimension.d.ts +6 -0
- package/lib/nodes/dimension.js +47 -0
- package/lib/nodes/dimension.js.map +1 -0
- package/lib/nodes/expression.d.ts +6 -0
- package/lib/nodes/expression.js +44 -0
- package/lib/nodes/expression.js.map +1 -0
- package/lib/nodes/extend.d.ts +6 -0
- package/lib/nodes/extend.js +57 -0
- package/lib/nodes/extend.js.map +1 -0
- package/lib/nodes/import.d.ts +6 -0
- package/lib/nodes/import.js +63 -0
- package/lib/nodes/import.js.map +1 -0
- package/lib/nodes/index.d.ts +45 -0
- package/lib/nodes/index.js +308 -0
- package/lib/nodes/index.js.map +1 -0
- package/lib/nodes/keyword.d.ts +6 -0
- package/lib/nodes/keyword.js +36 -0
- package/lib/nodes/keyword.js.map +1 -0
- package/lib/nodes/list.d.ts +6 -0
- package/lib/nodes/list.js +150 -0
- package/lib/nodes/list.js.map +1 -0
- package/lib/nodes/mixin.d.ts +6 -0
- package/lib/nodes/mixin.js +62 -0
- package/lib/nodes/mixin.js.map +1 -0
- package/lib/nodes/negative.d.ts +6 -0
- package/lib/nodes/negative.js +42 -0
- package/lib/nodes/negative.js.map +1 -0
- package/lib/nodes/operation.d.ts +6 -0
- package/lib/nodes/operation.js +63 -0
- package/lib/nodes/operation.js.map +1 -0
- package/lib/nodes/paren.d.ts +6 -0
- package/lib/nodes/paren.js +42 -0
- package/lib/nodes/paren.js.map +1 -0
- package/lib/nodes/quoted.d.ts +6 -0
- package/lib/nodes/quoted.js +57 -0
- package/lib/nodes/quoted.js.map +1 -0
- package/lib/nodes/reference.d.ts +9 -0
- package/lib/nodes/reference.js +80 -0
- package/lib/nodes/reference.js.map +1 -0
- package/lib/nodes/ruleset.d.ts +6 -0
- package/lib/nodes/ruleset.js +108 -0
- package/lib/nodes/ruleset.js.map +1 -0
- package/lib/nodes/selector.d.ts +8 -0
- package/lib/nodes/selector.js +226 -0
- package/lib/nodes/selector.js.map +1 -0
- package/lib/nodes/sequence.d.ts +9 -0
- package/lib/nodes/sequence.js +75 -0
- package/lib/nodes/sequence.js.map +1 -0
- package/lib/nodes/url.d.ts +6 -0
- package/lib/nodes/url.js +42 -0
- package/lib/nodes/url.js.map +1 -0
- package/lib/nodes/var-declaration.d.ts +6 -0
- package/lib/nodes/var-declaration.js +60 -0
- package/lib/nodes/var-declaration.js.map +1 -0
- package/lib/plugin-utils.d.ts +20 -0
- package/lib/plugin-utils.js +100 -0
- package/lib/plugin-utils.js.map +1 -0
- package/lib/plugin.d.ts +92 -0
- package/lib/plugin.js +1027 -0
- package/lib/plugin.js.map +1 -0
- package/lib/transform/from-less.d.ts +30 -0
- package/lib/transform/from-less.js +170 -0
- package/lib/transform/from-less.js.map +1 -0
- package/lib/transform/index.d.ts +7 -0
- package/lib/transform/index.js +8 -0
- package/lib/transform/index.js.map +1 -0
- package/lib/transform/proxy.d.ts +32 -0
- package/lib/transform/proxy.js +138 -0
- package/lib/transform/proxy.js.map +1 -0
- package/lib/transform/to-less.d.ts +17 -0
- package/lib/transform/to-less.js +128 -0
- package/lib/transform/to-less.js.map +1 -0
- package/lib/transform/type-map.d.ts +27 -0
- package/lib/transform/type-map.js +105 -0
- package/lib/transform/type-map.js.map +1 -0
- package/lib/types.d.ts +33 -0
- package/lib/types.js +5 -0
- package/lib/types.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Node, Rules } from '@jesscss/core';
|
|
2
|
+
export type LessNode = any;
|
|
3
|
+
export interface FromLessOptions {
|
|
4
|
+
/** Cache conversions to avoid repeated work */
|
|
5
|
+
cache?: WeakMap<any, Node>;
|
|
6
|
+
/** When true, boolean return values are treated as "no output" (Less statement context) */
|
|
7
|
+
statementContext?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Convert a Less node back to a Jess node
|
|
11
|
+
*
|
|
12
|
+
* @param lessNode - The Less node to convert
|
|
13
|
+
* @param options - Conversion options
|
|
14
|
+
* @returns A Jess node
|
|
15
|
+
*/
|
|
16
|
+
export declare function fromLessNode(lessNode: LessNode, options?: FromLessOptions): Node;
|
|
17
|
+
/**
|
|
18
|
+
* Convert a Less plugin function return value to a Jess node.
|
|
19
|
+
* Handles primitives (number, boolean), Less nodes (via fromLessNode), and toCSS() objects.
|
|
20
|
+
* Use this for @plugin-loaded function results so conversion is centralized here.
|
|
21
|
+
*/
|
|
22
|
+
export declare function fromLessPluginReturnValue(value: unknown, options?: FromLessOptions): Node | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Convert an entire Less tree back to Jess Rules
|
|
25
|
+
*
|
|
26
|
+
* @param lessTree - The Less tree to convert
|
|
27
|
+
* @param options - Conversion options
|
|
28
|
+
* @returns A Jess Rules tree
|
|
29
|
+
*/
|
|
30
|
+
export declare function fromLessTree(lessTree: LessNode, _options?: FromLessOptions): Rules;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { Any, Collection, Declaration, Dimension, Quoted, Rules } from '@jesscss/core';
|
|
2
|
+
import { getJessNodeFromProxy, isLessProxy } from './proxy.js';
|
|
3
|
+
/**
|
|
4
|
+
* Convert a Less node back to a Jess node
|
|
5
|
+
*
|
|
6
|
+
* @param lessNode - The Less node to convert
|
|
7
|
+
* @param options - Conversion options
|
|
8
|
+
* @returns A Jess node
|
|
9
|
+
*/
|
|
10
|
+
export function fromLessNode(lessNode, options) {
|
|
11
|
+
if (!lessNode) {
|
|
12
|
+
return lessNode;
|
|
13
|
+
}
|
|
14
|
+
const cache = options?.cache || new WeakMap();
|
|
15
|
+
// Check cache first
|
|
16
|
+
if (cache.has(lessNode)) {
|
|
17
|
+
const cached = cache.get(lessNode);
|
|
18
|
+
if (cached) {
|
|
19
|
+
return cached;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// If it's already a Jess node wrapped in a proxy, extract it
|
|
23
|
+
if (isLessProxy(lessNode)) {
|
|
24
|
+
const jessNode = getJessNodeFromProxy(lessNode);
|
|
25
|
+
if (jessNode) {
|
|
26
|
+
cache.set(lessNode, jessNode);
|
|
27
|
+
return jessNode;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// If it's a Less node that was created by a visitor, we need to reconstruct
|
|
31
|
+
// For now, if we can't convert it back, return the original proxy target
|
|
32
|
+
// TODO: Implement full reverse conversion for all node types
|
|
33
|
+
// Check if it has a __jessNode property (we might store this during conversion)
|
|
34
|
+
if (lessNode && typeof lessNode === 'object' && '__jessNode' in lessNode) {
|
|
35
|
+
return lessNode.__jessNode;
|
|
36
|
+
}
|
|
37
|
+
// Minimal reverse conversions for Less-created nodes used in Less.js plugins
|
|
38
|
+
if (lessNode && typeof lessNode === 'object' && typeof lessNode.type === 'string') {
|
|
39
|
+
if (lessNode.type === 'Quoted') {
|
|
40
|
+
const quote = (lessNode.quote === '\'' || lessNode.quote === '"') ? lessNode.quote : '"';
|
|
41
|
+
const value = typeof lessNode.value === 'string' ? lessNode.value : String(lessNode.value);
|
|
42
|
+
const escaped = !!lessNode.escaped;
|
|
43
|
+
const out = new Quoted(value, { quote, escaped });
|
|
44
|
+
cache.set(lessNode, out);
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
47
|
+
if (lessNode.type === 'Anonymous') {
|
|
48
|
+
const value = typeof lessNode.value === 'string' ? lessNode.value : String(lessNode.value);
|
|
49
|
+
const out = new Any(value);
|
|
50
|
+
cache.set(lessNode, out);
|
|
51
|
+
return out;
|
|
52
|
+
}
|
|
53
|
+
if (lessNode.type === 'Dimension' || lessNode.type === 'Num') {
|
|
54
|
+
const n = typeof lessNode.value === 'number' ? lessNode.value : Number(lessNode.value);
|
|
55
|
+
const u = typeof lessNode.unit === 'string' ? lessNode.unit : '';
|
|
56
|
+
const out = new Dimension({ number: n, unit: u || undefined });
|
|
57
|
+
cache.set(lessNode, out);
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
60
|
+
if (lessNode.type === 'Declaration' || lessNode.type === 'Rule') {
|
|
61
|
+
const prop = String(lessNode.name ?? '');
|
|
62
|
+
const val = lessNode.value;
|
|
63
|
+
const valueStr = val && typeof val === 'object' && typeof val.value === 'string'
|
|
64
|
+
? val.value
|
|
65
|
+
: String(val ?? '');
|
|
66
|
+
const out = new Declaration({
|
|
67
|
+
name: new Any(prop, { role: 'property' }),
|
|
68
|
+
value: new Any(valueStr)
|
|
69
|
+
});
|
|
70
|
+
out.pre = 0;
|
|
71
|
+
out.post = 0;
|
|
72
|
+
cache.set(lessNode, out);
|
|
73
|
+
return out;
|
|
74
|
+
}
|
|
75
|
+
if (lessNode.type === 'DetachedRuleset') {
|
|
76
|
+
const ruleset = lessNode.ruleset;
|
|
77
|
+
const rules = (ruleset && Array.isArray(ruleset.rules)) ? ruleset.rules : [];
|
|
78
|
+
const nodes = [];
|
|
79
|
+
for (const rr of rules) {
|
|
80
|
+
if (rr && typeof rr === 'object' && (rr.type === 'Declaration' || rr.type === 'Rule')) {
|
|
81
|
+
const prop = String(rr.name ?? '');
|
|
82
|
+
const val = rr.value;
|
|
83
|
+
const valueStr = val && typeof val === 'object' && typeof val.value === 'string'
|
|
84
|
+
? val.value
|
|
85
|
+
: String(val ?? '');
|
|
86
|
+
const decl = new Declaration({
|
|
87
|
+
name: new Any(prop, { role: 'property' }),
|
|
88
|
+
value: new Any(valueStr)
|
|
89
|
+
});
|
|
90
|
+
decl.pre = 0;
|
|
91
|
+
decl.post = 0;
|
|
92
|
+
nodes.push(decl);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const out = new Collection(nodes);
|
|
96
|
+
cache.set(lessNode, out);
|
|
97
|
+
return out;
|
|
98
|
+
}
|
|
99
|
+
if (lessNode.type === 'AtRule') {
|
|
100
|
+
const n = String(lessNode.name ?? '');
|
|
101
|
+
const v = String(lessNode.value ?? '');
|
|
102
|
+
const line = `${n} ${v};`;
|
|
103
|
+
const out = n === '@charset'
|
|
104
|
+
? new Any(line, { role: 'charset' })
|
|
105
|
+
: new Any(line);
|
|
106
|
+
cache.set(lessNode, out);
|
|
107
|
+
return out;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// If we can't convert it, try to return the original node
|
|
111
|
+
// This is a fallback - in practice, visitors shouldn't create new nodes
|
|
112
|
+
// that we can't track back to their originals
|
|
113
|
+
throw new Error(`Cannot convert Less node back to Jess: ${lessNode?.type || 'unknown type'}. `
|
|
114
|
+
+ `Less visitors should not create new nodes, only modify existing ones.`);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Convert a Less plugin function return value to a Jess node.
|
|
118
|
+
* Handles primitives (number, boolean), Less nodes (via fromLessNode), and toCSS() objects.
|
|
119
|
+
* Use this for @plugin-loaded function results so conversion is centralized here.
|
|
120
|
+
*/
|
|
121
|
+
export function fromLessPluginReturnValue(value, options) {
|
|
122
|
+
if (value === null || value === undefined) {
|
|
123
|
+
return value;
|
|
124
|
+
}
|
|
125
|
+
if (typeof value === 'number') {
|
|
126
|
+
return new Any(String(value));
|
|
127
|
+
}
|
|
128
|
+
if (value === true || value === false) {
|
|
129
|
+
if (options?.statementContext) {
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
return new Any(String(value));
|
|
133
|
+
}
|
|
134
|
+
if (typeof value === 'object' && value !== null) {
|
|
135
|
+
const obj = value;
|
|
136
|
+
if (typeof obj.type === 'string') {
|
|
137
|
+
return fromLessNode(value, options);
|
|
138
|
+
}
|
|
139
|
+
if (typeof obj.toCSS === 'function') {
|
|
140
|
+
try {
|
|
141
|
+
const css = obj.toCSS();
|
|
142
|
+
return new Any(typeof css === 'string' ? css : String(css));
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// ignore
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return value;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Convert an entire Less tree back to Jess Rules
|
|
153
|
+
*
|
|
154
|
+
* @param lessTree - The Less tree to convert
|
|
155
|
+
* @param options - Conversion options
|
|
156
|
+
* @returns A Jess Rules tree
|
|
157
|
+
*/
|
|
158
|
+
export function fromLessTree(lessTree, _options) {
|
|
159
|
+
// TODO: Implement tree conversion
|
|
160
|
+
// This will recursively convert all nodes back to Jess format
|
|
161
|
+
// For now, if it's a proxy, extract the original
|
|
162
|
+
if (isLessProxy(lessTree)) {
|
|
163
|
+
const jessNode = getJessNodeFromProxy(lessTree);
|
|
164
|
+
if (jessNode instanceof Rules) {
|
|
165
|
+
return jessNode;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
throw new Error('Cannot convert Less tree back to Jess Rules');
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=from-less.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-less.js","sourceRoot":"","sources":["../../src/transform/from-less.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformation utilities for converting between Jess and Less AST nodes
|
|
3
|
+
*/
|
|
4
|
+
export { toLessNode, toLessTree, type ToLessOptions } from './to-less.js';
|
|
5
|
+
export { fromLessNode, fromLessPluginReturnValue, fromLessTree, type FromLessOptions } from './from-less.js';
|
|
6
|
+
export { createLessProxy, isLessProxy, getJessNodeFromProxy } from './proxy.js';
|
|
7
|
+
export { mapJessTypeToLessType, mapLessTypeToJessType, getLessTypeIndex } from './type-map.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformation utilities for converting between Jess and Less AST nodes
|
|
3
|
+
*/
|
|
4
|
+
export { toLessNode, toLessTree } from './to-less.js';
|
|
5
|
+
export { fromLessNode, fromLessPluginReturnValue, fromLessTree } from './from-less.js';
|
|
6
|
+
export { createLessProxy, isLessProxy, getJessNodeFromProxy } from './proxy.js';
|
|
7
|
+
export { mapJessTypeToLessType, mapLessTypeToJessType, getLessTypeIndex } from './type-map.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transform/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAsB,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Node } from '@jesscss/core';
|
|
2
|
+
/**
|
|
3
|
+
* Symbol to mark nodes that are already being proxied (to prevent recursion)
|
|
4
|
+
* Exported so toLessNode can check it
|
|
5
|
+
*/
|
|
6
|
+
export declare const IS_PROXYING_SYMBOL: unique symbol;
|
|
7
|
+
/**
|
|
8
|
+
* Create a Less-compatible proxy wrapper around a Jess node
|
|
9
|
+
*
|
|
10
|
+
* This proxy intercepts property access and method calls to provide
|
|
11
|
+
* a Less.js-compatible interface while maintaining the underlying Jess node.
|
|
12
|
+
*
|
|
13
|
+
* @param jessNode - The Jess node to wrap
|
|
14
|
+
* @param cache - Optional cache for converted nodes
|
|
15
|
+
* @param propertyMap - Function to map property names and values
|
|
16
|
+
* @returns A proxy object that appears as a Less node
|
|
17
|
+
*/
|
|
18
|
+
export declare function createLessProxy(jessNode: Node, cache?: WeakMap<Node, any>, propertyMap?: (prop: string | symbol, target: Node) => any): any;
|
|
19
|
+
/**
|
|
20
|
+
* Check if an object is a Less proxy wrapper
|
|
21
|
+
*
|
|
22
|
+
* @param obj - The object to check
|
|
23
|
+
* @returns True if the object is a Less proxy
|
|
24
|
+
*/
|
|
25
|
+
export declare function isLessProxy(obj: any): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Get the underlying Jess node from a Less proxy
|
|
28
|
+
*
|
|
29
|
+
* @param proxy - The proxy object
|
|
30
|
+
* @returns The underlying Jess node, or undefined if not a proxy
|
|
31
|
+
*/
|
|
32
|
+
export declare function getJessNodeFromProxy(proxy: any): Node | undefined;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { mapJessTypeToLessType } from './type-map.js';
|
|
2
|
+
/**
|
|
3
|
+
* Symbol to mark Less proxy objects
|
|
4
|
+
*/
|
|
5
|
+
const LESS_PROXY_SYMBOL = Symbol('less-proxy');
|
|
6
|
+
/**
|
|
7
|
+
* Symbol to store reference to underlying Jess node in proxy
|
|
8
|
+
*/
|
|
9
|
+
const JESS_NODE_SYMBOL = Symbol('jess-node');
|
|
10
|
+
/**
|
|
11
|
+
* Symbol to mark nodes that are already being proxied (to prevent recursion)
|
|
12
|
+
* Exported so toLessNode can check it
|
|
13
|
+
*/
|
|
14
|
+
export const IS_PROXYING_SYMBOL = Symbol('is-proxying');
|
|
15
|
+
/**
|
|
16
|
+
* Get typeIndex for a Less node type
|
|
17
|
+
* Since we're not using the actual Less.js library, we return undefined
|
|
18
|
+
* Plugins typically don't need typeIndex - it's only used internally by Less's Visitor
|
|
19
|
+
* for dispatch optimization. Our proxy-based approach doesn't require it.
|
|
20
|
+
*/
|
|
21
|
+
function getLessTypeIndex(_lessType) {
|
|
22
|
+
// Return undefined - plugins don't need typeIndex for our compatibility layer
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a Less-compatible proxy wrapper around a Jess node
|
|
27
|
+
*
|
|
28
|
+
* This proxy intercepts property access and method calls to provide
|
|
29
|
+
* a Less.js-compatible interface while maintaining the underlying Jess node.
|
|
30
|
+
*
|
|
31
|
+
* @param jessNode - The Jess node to wrap
|
|
32
|
+
* @param cache - Optional cache for converted nodes
|
|
33
|
+
* @param propertyMap - Function to map property names and values
|
|
34
|
+
* @returns A proxy object that appears as a Less node
|
|
35
|
+
*/
|
|
36
|
+
export function createLessProxy(jessNode, cache, propertyMap) {
|
|
37
|
+
// Check if already proxied (prevent recursion)
|
|
38
|
+
if (jessNode[IS_PROXYING_SYMBOL]) {
|
|
39
|
+
// Return the cached proxy if available
|
|
40
|
+
if (cache && cache.has(jessNode)) {
|
|
41
|
+
return cache.get(jessNode);
|
|
42
|
+
}
|
|
43
|
+
// If no cache, return the node as-is to prevent recursion
|
|
44
|
+
return jessNode;
|
|
45
|
+
}
|
|
46
|
+
// Check cache first
|
|
47
|
+
if (cache && cache.has(jessNode)) {
|
|
48
|
+
return cache.get(jessNode);
|
|
49
|
+
}
|
|
50
|
+
// Mark as being proxied to prevent recursion
|
|
51
|
+
jessNode[IS_PROXYING_SYMBOL] = true;
|
|
52
|
+
// Create proxy handler
|
|
53
|
+
const handler = {
|
|
54
|
+
get(target, prop) {
|
|
55
|
+
// Handle special symbols
|
|
56
|
+
if (prop === LESS_PROXY_SYMBOL) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
// Handle typeIndex - Less's Visitor needs this for dispatch
|
|
60
|
+
// Set it automatically based on the node's type
|
|
61
|
+
// Use direct property access to avoid proxy recursion
|
|
62
|
+
if (prop === 'typeIndex') {
|
|
63
|
+
// Access type directly from the target (not through proxy)
|
|
64
|
+
const nodeType = target.type;
|
|
65
|
+
if (nodeType && typeof nodeType === 'string') {
|
|
66
|
+
const lessType = mapJessTypeToLessType(nodeType);
|
|
67
|
+
return getLessTypeIndex(lessType);
|
|
68
|
+
}
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
// Allow custom property mapping
|
|
72
|
+
if (propertyMap) {
|
|
73
|
+
const mapped = propertyMap(prop, target);
|
|
74
|
+
if (mapped !== undefined) {
|
|
75
|
+
return mapped;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Default: pass through to target
|
|
79
|
+
const value = Reflect.get(target, prop);
|
|
80
|
+
// If it's a method, bind it to the target
|
|
81
|
+
if (typeof value === 'function') {
|
|
82
|
+
return value.bind(target);
|
|
83
|
+
}
|
|
84
|
+
return value;
|
|
85
|
+
},
|
|
86
|
+
set(target, prop, value) {
|
|
87
|
+
// Allow setting properties
|
|
88
|
+
return Reflect.set(target, prop, value);
|
|
89
|
+
},
|
|
90
|
+
has(target, prop) {
|
|
91
|
+
// Check if property exists
|
|
92
|
+
return Reflect.has(target, prop);
|
|
93
|
+
},
|
|
94
|
+
ownKeys(target) {
|
|
95
|
+
// Return own property keys
|
|
96
|
+
return Reflect.ownKeys(target);
|
|
97
|
+
},
|
|
98
|
+
getOwnPropertyDescriptor(target, prop) {
|
|
99
|
+
// Return property descriptor
|
|
100
|
+
return Reflect.getOwnPropertyDescriptor(target, prop);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const proxy = new Proxy(jessNode, handler);
|
|
104
|
+
// Mark as proxy
|
|
105
|
+
proxy[LESS_PROXY_SYMBOL] = true;
|
|
106
|
+
// Store reference to underlying Jess node for reverse lookup
|
|
107
|
+
proxy[JESS_NODE_SYMBOL] = jessNode;
|
|
108
|
+
// Cache if provided
|
|
109
|
+
if (cache) {
|
|
110
|
+
cache.set(jessNode, proxy);
|
|
111
|
+
}
|
|
112
|
+
// Unmark proxying flag after proxy is created
|
|
113
|
+
delete jessNode[IS_PROXYING_SYMBOL];
|
|
114
|
+
return proxy;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Check if an object is a Less proxy wrapper
|
|
118
|
+
*
|
|
119
|
+
* @param obj - The object to check
|
|
120
|
+
* @returns True if the object is a Less proxy
|
|
121
|
+
*/
|
|
122
|
+
export function isLessProxy(obj) {
|
|
123
|
+
return obj && typeof obj === 'object' && LESS_PROXY_SYMBOL in obj;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get the underlying Jess node from a Less proxy
|
|
127
|
+
*
|
|
128
|
+
* @param proxy - The proxy object
|
|
129
|
+
* @returns The underlying Jess node, or undefined if not a proxy
|
|
130
|
+
*/
|
|
131
|
+
export function getJessNodeFromProxy(proxy) {
|
|
132
|
+
if (isLessProxy(proxy)) {
|
|
133
|
+
// Get the stored reference to the underlying Jess node
|
|
134
|
+
return proxy[JESS_NODE_SYMBOL];
|
|
135
|
+
}
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/transform/proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Node, Rules } from '@jesscss/core';
|
|
2
|
+
export type LessNode = any;
|
|
3
|
+
export interface ToLessOptions {
|
|
4
|
+
/** Cache conversions to avoid repeated work */
|
|
5
|
+
cache?: WeakMap<Node, any>;
|
|
6
|
+
/** Preserve original Jess node reference */
|
|
7
|
+
preserveOriginal?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function toLessNode(jessNode: Node, options?: ToLessOptions): LessNode;
|
|
10
|
+
/**
|
|
11
|
+
* Convert an entire Jess Rules tree to Less-compatible format
|
|
12
|
+
*
|
|
13
|
+
* @param jessRules - The Jess Rules tree to convert
|
|
14
|
+
* @param options - Conversion options
|
|
15
|
+
* @returns A Less-compatible tree
|
|
16
|
+
*/
|
|
17
|
+
export declare function toLessTree(jessRules: Rules | Node, options?: ToLessOptions): LessNode;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Node, Rules } from '@jesscss/core';
|
|
2
|
+
import { createLessProxy } from './proxy.js';
|
|
3
|
+
import { getTransformer } from '../nodes/index.js';
|
|
4
|
+
import { mapJessTypeToLessType } from './type-map.js';
|
|
5
|
+
// typeIndex handling is now in proxy.ts - plugins don't need to know about it
|
|
6
|
+
/**
|
|
7
|
+
* Convert a Jess node to a Less-compatible proxy
|
|
8
|
+
*
|
|
9
|
+
* @param jessNode - The Jess node to convert
|
|
10
|
+
* @param options - Conversion options
|
|
11
|
+
* @returns A Less-compatible proxy node
|
|
12
|
+
*/
|
|
13
|
+
import { IS_PROXYING_SYMBOL } from './proxy.js';
|
|
14
|
+
export function toLessNode(jessNode, options) {
|
|
15
|
+
if (!jessNode) {
|
|
16
|
+
return jessNode;
|
|
17
|
+
}
|
|
18
|
+
const cache = options?.cache || new WeakMap();
|
|
19
|
+
// Check cache first - if we have a cached proxy, return it even if IS_PROXYING_SYMBOL is set
|
|
20
|
+
if (cache.has(jessNode)) {
|
|
21
|
+
return cache.get(jessNode);
|
|
22
|
+
}
|
|
23
|
+
// Check if already being proxied (prevent recursion)
|
|
24
|
+
// Only return node as-is if there's no cached proxy
|
|
25
|
+
if (jessNode[IS_PROXYING_SYMBOL]) {
|
|
26
|
+
// Return the node as-is to prevent recursion
|
|
27
|
+
// This should only happen if cache doesn't have it (checked above)
|
|
28
|
+
return jessNode;
|
|
29
|
+
}
|
|
30
|
+
// Get transformer for this node type
|
|
31
|
+
const transformer = getTransformer(jessNode.type);
|
|
32
|
+
if (transformer) {
|
|
33
|
+
// Use specific transformer
|
|
34
|
+
return transformer(jessNode, cache);
|
|
35
|
+
}
|
|
36
|
+
// Fallback: create a basic proxy with type mapping
|
|
37
|
+
return createLessProxy(jessNode, cache, (prop, target) => {
|
|
38
|
+
// Map 'type' property
|
|
39
|
+
if (prop === 'type') {
|
|
40
|
+
return mapJessTypeToLessType(target.type);
|
|
41
|
+
}
|
|
42
|
+
// typeIndex is handled automatically by the base proxy handler
|
|
43
|
+
// For child nodes, convert them lazily
|
|
44
|
+
if (prop === 'value' && target.value) {
|
|
45
|
+
// If value is a Node, convert it
|
|
46
|
+
if (target.value instanceof Node) {
|
|
47
|
+
return toLessNode(target.value, options);
|
|
48
|
+
}
|
|
49
|
+
// If value is an array, convert each element
|
|
50
|
+
if (Array.isArray(target.value)) {
|
|
51
|
+
return target.value.map((item) => {
|
|
52
|
+
if (item instanceof Node) {
|
|
53
|
+
return toLessNode(item, options);
|
|
54
|
+
}
|
|
55
|
+
return item;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// If value is an object, convert nested nodes
|
|
59
|
+
if (typeof target.value === 'object' && target.value !== null) {
|
|
60
|
+
const converted = {};
|
|
61
|
+
for (const [key, val] of Object.entries(target.value)) {
|
|
62
|
+
if (val instanceof Node) {
|
|
63
|
+
converted[key] = toLessNode(val, options);
|
|
64
|
+
}
|
|
65
|
+
else if (Array.isArray(val)) {
|
|
66
|
+
converted[key] = val.map((item) => {
|
|
67
|
+
if (item instanceof Node) {
|
|
68
|
+
return toLessNode(item, options);
|
|
69
|
+
}
|
|
70
|
+
return item;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
converted[key] = val;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return converted;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Map 'accept' method for visitor traversal
|
|
81
|
+
// This is called by Less visitors when they want to traverse the tree
|
|
82
|
+
// Note: Less visitors should NOT call node.accept() in their visit() methods
|
|
83
|
+
// as this causes infinite recursion. The less-compat plugin handles traversal.
|
|
84
|
+
if (prop === 'accept') {
|
|
85
|
+
return function (visitor) {
|
|
86
|
+
// Check if the visitor is a Less visitor (has visitRuleset, visitDeclaration, etc.)
|
|
87
|
+
// vs the less-compat visitor (has a visit method that converts to Less)
|
|
88
|
+
const isLessVisitor = visitor && (typeof visitor.visitRuleset === 'function' ||
|
|
89
|
+
typeof visitor.visitDeclaration === 'function' ||
|
|
90
|
+
typeof visitor.visitVariable === 'function' ||
|
|
91
|
+
typeof visitor.visitAtRule === 'function' ||
|
|
92
|
+
(typeof visitor.visit === 'function' && !visitor.atRule && !visitor.ruleset && !visitor.visit));
|
|
93
|
+
if (!isLessVisitor) {
|
|
94
|
+
// This is likely the less-compat visitor or a Jess visitor
|
|
95
|
+
// Just return the node without processing to avoid recursion
|
|
96
|
+
return target;
|
|
97
|
+
}
|
|
98
|
+
// This is a Less visitor - but we should NOT call visitor.visit here
|
|
99
|
+
// because the Less visitor's visit() method might call node.accept() again,
|
|
100
|
+
// causing infinite recursion. Instead, we just return the node.
|
|
101
|
+
// The less-compat plugin's visit() method handles calling Less visitors.
|
|
102
|
+
// If a Less visitor needs to traverse children, it should do so through
|
|
103
|
+
// the less-compat plugin's traversal, not by calling node.accept().
|
|
104
|
+
return target;
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
return undefined;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Convert an entire Jess Rules tree to Less-compatible format
|
|
112
|
+
*
|
|
113
|
+
* @param jessRules - The Jess Rules tree to convert
|
|
114
|
+
* @param options - Conversion options
|
|
115
|
+
* @returns A Less-compatible tree
|
|
116
|
+
*/
|
|
117
|
+
export function toLessTree(jessRules, options) {
|
|
118
|
+
// If it's a Rules container, convert the root node
|
|
119
|
+
if (jessRules instanceof Rules) {
|
|
120
|
+
// Rules is a container - we need to find the root ruleset
|
|
121
|
+
// For now, create a synthetic root ruleset
|
|
122
|
+
// TODO: Handle this properly based on how Less structures its root
|
|
123
|
+
return toLessNode(jessRules, options);
|
|
124
|
+
}
|
|
125
|
+
// Otherwise, convert the node directly
|
|
126
|
+
return toLessNode(jessRules, options);
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=to-less.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-less.js","sourceRoot":"","sources":["../../src/transform/to-less.ts"],"names":[],"mappings":"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"}
|