@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.
- package/README.md +3 -2
- package/lib/index.cjs +844 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +800 -9
- package/lib/less-adapter.cjs +216 -0
- package/lib/less-adapter.js +181 -0
- package/lib/less-compat-structures.cjs +378 -0
- package/lib/less-compat-structures.d.ts +2 -2
- package/lib/less-compat-structures.js +367 -512
- package/lib/nodes/at-rule.d.ts +2 -6
- package/lib/nodes/attribute-selector.d.ts +2 -6
- package/lib/nodes/call.d.ts +2 -6
- package/lib/nodes/color.d.ts +1 -5
- package/lib/nodes/combinator.d.ts +1 -5
- package/lib/nodes/comment.d.ts +1 -5
- package/lib/nodes/condition.d.ts +2 -6
- package/lib/nodes/declaration.d.ts +2 -6
- package/lib/nodes/dimension.d.ts +1 -5
- package/lib/nodes/expression.d.ts +2 -6
- package/lib/nodes/extend.d.ts +1 -5
- package/lib/nodes/import.d.ts +2 -6
- package/lib/nodes/keyword.d.ts +1 -5
- package/lib/nodes/list.d.ts +2 -5
- package/lib/nodes/mixin.d.ts +2 -6
- package/lib/nodes/negative.d.ts +2 -6
- package/lib/nodes/operation.d.ts +2 -6
- package/lib/nodes/paren.d.ts +2 -6
- package/lib/nodes/quoted.d.ts +1 -5
- package/lib/nodes/reference.d.ts +1 -8
- package/lib/nodes/ruleset.d.ts +2 -6
- package/lib/nodes/selector.d.ts +2 -7
- package/lib/nodes/sequence.d.ts +2 -9
- package/lib/nodes/url.d.ts +1 -5
- package/lib/nodes/var-declaration.d.ts +2 -6
- package/lib/plugin.d.ts +44 -16
- package/lib/transform/adapter.d.ts +31 -0
- package/lib/transform/index.cjs +13 -0
- package/lib/transform/index.d.ts +1 -1
- package/lib/transform/index.js +3 -8
- package/lib/transform/less-adapter.d.ts +29 -0
- package/lib/transform.cjs +1045 -0
- package/lib/transform.js +1015 -0
- package/lib/types.d.ts +153 -28
- package/package.json +13 -12
- package/lib/index.js.map +0 -1
- package/lib/less-compat-structures.js.map +0 -1
- package/lib/nodes/at-rule.js +0 -72
- package/lib/nodes/at-rule.js.map +0 -1
- package/lib/nodes/attribute-selector.js +0 -54
- package/lib/nodes/attribute-selector.js.map +0 -1
- package/lib/nodes/call.js +0 -83
- package/lib/nodes/call.js.map +0 -1
- package/lib/nodes/color.js +0 -57
- package/lib/nodes/color.js.map +0 -1
- package/lib/nodes/combinator.js +0 -34
- package/lib/nodes/combinator.js.map +0 -1
- package/lib/nodes/comment.js +0 -41
- package/lib/nodes/comment.js.map +0 -1
- package/lib/nodes/condition.js +0 -60
- package/lib/nodes/condition.js.map +0 -1
- package/lib/nodes/declaration.js +0 -81
- package/lib/nodes/declaration.js.map +0 -1
- package/lib/nodes/dimension.js +0 -47
- package/lib/nodes/dimension.js.map +0 -1
- package/lib/nodes/expression.js +0 -44
- package/lib/nodes/expression.js.map +0 -1
- package/lib/nodes/extend.js +0 -57
- package/lib/nodes/extend.js.map +0 -1
- package/lib/nodes/import.js +0 -63
- package/lib/nodes/import.js.map +0 -1
- package/lib/nodes/index.js +0 -308
- package/lib/nodes/index.js.map +0 -1
- package/lib/nodes/keyword.js +0 -36
- package/lib/nodes/keyword.js.map +0 -1
- package/lib/nodes/list.js +0 -150
- package/lib/nodes/list.js.map +0 -1
- package/lib/nodes/mixin.js +0 -62
- package/lib/nodes/mixin.js.map +0 -1
- package/lib/nodes/negative.js +0 -42
- package/lib/nodes/negative.js.map +0 -1
- package/lib/nodes/operation.js +0 -63
- package/lib/nodes/operation.js.map +0 -1
- package/lib/nodes/paren.js +0 -42
- package/lib/nodes/paren.js.map +0 -1
- package/lib/nodes/quoted.js +0 -57
- package/lib/nodes/quoted.js.map +0 -1
- package/lib/nodes/reference.js +0 -80
- package/lib/nodes/reference.js.map +0 -1
- package/lib/nodes/ruleset.js +0 -108
- package/lib/nodes/ruleset.js.map +0 -1
- package/lib/nodes/selector.js +0 -226
- package/lib/nodes/selector.js.map +0 -1
- package/lib/nodes/sequence.js +0 -75
- package/lib/nodes/sequence.js.map +0 -1
- package/lib/nodes/url.js +0 -42
- package/lib/nodes/url.js.map +0 -1
- package/lib/nodes/var-declaration.js +0 -60
- package/lib/nodes/var-declaration.js.map +0 -1
- package/lib/plugin-utils.js +0 -100
- package/lib/plugin-utils.js.map +0 -1
- package/lib/plugin.js +0 -1027
- package/lib/plugin.js.map +0 -1
- package/lib/transform/from-less.js +0 -170
- package/lib/transform/from-less.js.map +0 -1
- package/lib/transform/index.js.map +0 -1
- package/lib/transform/proxy.d.ts +0 -32
- package/lib/transform/proxy.js +0 -138
- package/lib/transform/proxy.js.map +0 -1
- package/lib/transform/to-less.js +0 -128
- package/lib/transform/to-less.js.map +0 -1
- package/lib/transform/type-map.js +0 -105
- package/lib/transform/type-map.js.map +0 -1
- package/lib/types.js +0 -5
- package/lib/types.js.map +0 -1
package/lib/nodes/sequence.js
DELETED
|
@@ -1,75 +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 { fromLessNode } from '../transform/from-less.js';
|
|
5
|
-
import { mapJessTypeToLessType } from '../transform/type-map.js';
|
|
6
|
-
/**
|
|
7
|
-
* Transform a Jess Sequence (space-separated value list) to a Less-compatible Expression.
|
|
8
|
-
*
|
|
9
|
-
* This is critical for Less plugins that traverse into declaration values (e.g. preEval visitors
|
|
10
|
-
* that rewrite variables inside custom properties).
|
|
11
|
-
*/
|
|
12
|
-
export function transformSequenceToLess(jessSequence, cache) {
|
|
13
|
-
return createLessProxy(jessSequence, cache, (prop, target) => {
|
|
14
|
-
const seq = target;
|
|
15
|
-
if (prop === 'type') {
|
|
16
|
-
return mapJessTypeToLessType(seq.type);
|
|
17
|
-
}
|
|
18
|
-
// Less Expression nodes expose their members via `.value` as an array.
|
|
19
|
-
if (prop === 'value') {
|
|
20
|
-
return (seq.value ?? [])
|
|
21
|
-
.map((item) => item instanceof Node ? toLessNode(item, { cache }) : item)
|
|
22
|
-
.filter((item) => item !== undefined && item !== null);
|
|
23
|
-
}
|
|
24
|
-
// Allow array-like access patterns some Less visitors use.
|
|
25
|
-
if (prop === 'length') {
|
|
26
|
-
return (seq.value ?? []).filter((v) => v !== undefined && v !== null).length;
|
|
27
|
-
}
|
|
28
|
-
if (typeof prop === 'string' && /^\d+$/.test(prop)) {
|
|
29
|
-
const idx = Number(prop);
|
|
30
|
-
const arr = (seq.value ?? []).filter((v) => v !== undefined && v !== null);
|
|
31
|
-
const item = arr[idx];
|
|
32
|
-
return item instanceof Node ? toLessNode(item, { cache }) : item;
|
|
33
|
-
}
|
|
34
|
-
// Traverse children (sequence members) without re-entering Jess visitor recursion.
|
|
35
|
-
if (prop === 'accept') {
|
|
36
|
-
return function (visitor) {
|
|
37
|
-
const raw = seq.value ?? [];
|
|
38
|
-
if (!Array.isArray(raw) || raw.length === 0) {
|
|
39
|
-
return seq;
|
|
40
|
-
}
|
|
41
|
-
for (let i = 0; i < raw.length; i++) {
|
|
42
|
-
const item = raw[i];
|
|
43
|
-
if (item === undefined || item === null) {
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
const lessItem = item instanceof Node ? toLessNode(item, { cache }) : item;
|
|
47
|
-
if (!lessItem || typeof visitor?.visit !== 'function') {
|
|
48
|
-
continue;
|
|
49
|
-
}
|
|
50
|
-
const visited = visitor.visit(lessItem);
|
|
51
|
-
// If a replacing visitor returned a new Less node, write it back into the Jess Sequence.
|
|
52
|
-
if (visited && visited !== lessItem && typeof visited === 'object' && visited.type) {
|
|
53
|
-
try {
|
|
54
|
-
const jessReplacement = fromLessNode(visited, { cache: new WeakMap() });
|
|
55
|
-
// Preserve whitespace semantics from the original node inside the Sequence.
|
|
56
|
-
// This is especially important for custom property values where spacing is significant.
|
|
57
|
-
if (item instanceof Node) {
|
|
58
|
-
jessReplacement.pre = item.pre;
|
|
59
|
-
jessReplacement.post = item.post;
|
|
60
|
-
}
|
|
61
|
-
seq.adopt(jessReplacement);
|
|
62
|
-
seq.value[i] = jessReplacement;
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
// If we can't convert it back, ignore (visitor may be creating unsupported nodes)
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return seq;
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
return undefined;
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=sequence.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sequence.js","sourceRoot":"","sources":["../../src/nodes/sequence.ts"],"names":[],"mappings":"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"}
|
package/lib/nodes/url.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Quoted } 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 Url to a Less-compatible URL
|
|
8
|
-
*/
|
|
9
|
-
export function transformUrlToLess(jessUrl, cache) {
|
|
10
|
-
return createLessProxy(jessUrl, cache, (prop, target) => {
|
|
11
|
-
const url = target;
|
|
12
|
-
// Map 'type' property
|
|
13
|
-
if (prop === 'type') {
|
|
14
|
-
return mapJessTypeToLessType(url.type);
|
|
15
|
-
}
|
|
16
|
-
// Map 'typeIndex'
|
|
17
|
-
if (prop === 'typeIndex') {
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
// Map 'value' property
|
|
21
|
-
if (prop === 'value') {
|
|
22
|
-
const value = url.value;
|
|
23
|
-
if (value instanceof Quoted) {
|
|
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 lessUrl = transformUrlToLess(url, cache);
|
|
32
|
-
const result = visitor.visit(lessUrl);
|
|
33
|
-
if (result !== lessUrl) {
|
|
34
|
-
return fromLessNode(result, { cache });
|
|
35
|
-
}
|
|
36
|
-
return url;
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
return undefined;
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=url.js.map
|
package/lib/nodes/url.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/nodes/url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,MAAM,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,kBAAkB,CAChC,OAAY,EACZ,KAAyB;IAEzB,OAAO,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QACtD,MAAM,GAAG,GAAG,MAAa,CAAC;QAE1B,sBAAsB;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,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,GAAG,CAAC,KAAK,CAAC;YACxB,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;gBAC5B,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,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACtC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;oBACvB,OAAO,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,60 +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
|
-
/**
|
|
6
|
-
* Transform a Jess VarDeclaration to a Less-compatible Assignment
|
|
7
|
-
*/
|
|
8
|
-
export function transformVarDeclarationToLess(jessVarDecl, cache) {
|
|
9
|
-
return createLessProxy(jessVarDecl, cache, (prop, target) => {
|
|
10
|
-
const varDecl = target;
|
|
11
|
-
// Map 'type' property
|
|
12
|
-
if (prop === 'type') {
|
|
13
|
-
return mapJessTypeToLessType(varDecl.type);
|
|
14
|
-
}
|
|
15
|
-
// Map 'typeIndex'
|
|
16
|
-
if (prop === 'typeIndex') {
|
|
17
|
-
return undefined;
|
|
18
|
-
}
|
|
19
|
-
// Map 'name' property
|
|
20
|
-
if (prop === 'name') {
|
|
21
|
-
return varDecl.value.name;
|
|
22
|
-
}
|
|
23
|
-
// Map 'value' property
|
|
24
|
-
if (prop === 'value') {
|
|
25
|
-
const value = varDecl.value.value;
|
|
26
|
-
if (value instanceof Node) {
|
|
27
|
-
return toLessNode(value, { cache });
|
|
28
|
-
}
|
|
29
|
-
return value;
|
|
30
|
-
}
|
|
31
|
-
// Map 'index' property
|
|
32
|
-
if (prop === 'index') {
|
|
33
|
-
const loc = varDecl.location;
|
|
34
|
-
if (Array.isArray(loc) || !loc) {
|
|
35
|
-
return undefined;
|
|
36
|
-
}
|
|
37
|
-
return loc.index;
|
|
38
|
-
}
|
|
39
|
-
// Map 'accept' method for visitor traversal
|
|
40
|
-
// Less's Visitor.visit() calls node.accept(this) to traverse children
|
|
41
|
-
// VarDeclaration's accept should traverse its value
|
|
42
|
-
if (prop === 'accept') {
|
|
43
|
-
return function (visitor) {
|
|
44
|
-
// VarDeclaration's accept traverses its value
|
|
45
|
-
const value = varDecl.value.value;
|
|
46
|
-
if (value instanceof Node) {
|
|
47
|
-
const lessValue = toLessNode(value, { cache });
|
|
48
|
-
if (lessValue && lessValue.accept) {
|
|
49
|
-
lessValue.accept(visitor);
|
|
50
|
-
}
|
|
51
|
-
else if (lessValue && visitor.visitArray) {
|
|
52
|
-
visitor.visitArray([lessValue]);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
return undefined;
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=var-declaration.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"var-declaration.js","sourceRoot":"","sources":["../../src/nodes/var-declaration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,IAAI,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,WAA2B,EAC3B,KAAyB;IAEzB,OAAO,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,MAAwB,CAAC;QAEzC,sBAAsB;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5B,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YAClC,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,uBAAuB;QACvB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;YAC7B,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,4CAA4C;QAC5C,sEAAsE;QACtE,oDAAoD;QACpD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,UAAS,OAAY;gBAC1B,8CAA8C;gBAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBAClC,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;oBAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC/C,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;wBAClC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC5B,CAAC;yBAAM,IAAI,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;wBAC3C,OAAO,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/lib/plugin-utils.js
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utilities for working with Less.js plugins in Jess
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Detect if a plugin is a Less.js plugin
|
|
6
|
-
*/
|
|
7
|
-
export function isLessPlugin(plugin) {
|
|
8
|
-
if (!plugin) {
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
// Less plugins typically have an install method
|
|
12
|
-
if (typeof plugin.install === 'function') {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
// Some Less plugins are constructor functions that create instances with install
|
|
16
|
-
// Check if the constructor's prototype has install (like autoprefix)
|
|
17
|
-
if (typeof plugin === 'function') {
|
|
18
|
-
// Check if the function itself has install (some plugins are like this)
|
|
19
|
-
if (typeof plugin.install === 'function') {
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
// Check if the constructor's prototype has install
|
|
23
|
-
if (plugin.prototype && typeof plugin.prototype.install === 'function') {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
// Try calling as a constructor
|
|
27
|
-
try {
|
|
28
|
-
const instance = new plugin({});
|
|
29
|
-
if (instance && typeof instance.install === 'function') {
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
// Try calling as a function
|
|
35
|
-
try {
|
|
36
|
-
const instance = plugin({});
|
|
37
|
-
if (instance && typeof instance.install === 'function') {
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
// Even if it returns undefined, if it's a function it might be a Less plugin
|
|
41
|
-
// Less.js will handle it by checking for install on the plugin object itself
|
|
42
|
-
// So we should treat functions as potential Less plugins
|
|
43
|
-
return true; // Assume function might be a Less plugin
|
|
44
|
-
}
|
|
45
|
-
catch (e2) {
|
|
46
|
-
// Not a Less plugin
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Detect if a plugin is a Jess plugin
|
|
54
|
-
*/
|
|
55
|
-
export function isJessPlugin(plugin) {
|
|
56
|
-
if (!plugin) {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
// Jess plugins implement PluginInterface
|
|
60
|
-
// They have a name property and implement AbstractPlugin or match PluginInterface
|
|
61
|
-
if (typeof plugin === 'object' && 'name' in plugin && typeof plugin.name === 'string') {
|
|
62
|
-
// Could be a Jess plugin
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
// Plugin factory functions that return PluginInterface
|
|
66
|
-
if (typeof plugin === 'function') {
|
|
67
|
-
try {
|
|
68
|
-
const instance = plugin({});
|
|
69
|
-
if (instance && typeof instance === 'object' && 'name' in instance && typeof instance.name === 'string') {
|
|
70
|
-
return true;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
catch (e) {
|
|
74
|
-
// Not a Jess plugin factory
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Filter and separate Less plugins from Jess plugins
|
|
81
|
-
* This allows mixed plugin arrays to be handled correctly
|
|
82
|
-
*/
|
|
83
|
-
export function filterPlugins(plugins) {
|
|
84
|
-
const lessPlugins = [];
|
|
85
|
-
const jessPlugins = [];
|
|
86
|
-
for (const plugin of plugins) {
|
|
87
|
-
if (isLessPlugin(plugin)) {
|
|
88
|
-
lessPlugins.push(plugin);
|
|
89
|
-
}
|
|
90
|
-
else if (isJessPlugin(plugin)) {
|
|
91
|
-
jessPlugins.push(plugin);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
// Unknown type - assume it's a Less plugin and try to handle it
|
|
95
|
-
lessPlugins.push(plugin);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return { lessPlugins, jessPlugins };
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=plugin-utils.js.map
|
package/lib/plugin-utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-utils.js","sourceRoot":"","sources":["../src/plugin-utils.ts"],"names":[],"mappings":"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"}
|