boss-css 0.0.1 → 0.0.3
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 +1 -0
- package/dist/_virtual/rolldown_runtime.cjs +43 -0
- package/dist/_virtual/rolldown_runtime.mjs +20 -0
- package/dist/api/browser.cjs +54 -0
- package/dist/api/browser.mjs +48 -0
- package/dist/api/config.cjs +94 -0
- package/dist/api/config.mjs +91 -0
- package/dist/api/css.cjs +304 -0
- package/dist/api/css.mjs +303 -0
- package/dist/api/dictionary.cjs +218 -0
- package/dist/api/dictionary.mjs +215 -0
- package/dist/api/file/dts.cjs +21 -0
- package/dist/api/file/dts.mjs +21 -0
- package/dist/api/file/file.cjs +123 -0
- package/dist/api/file/file.mjs +120 -0
- package/dist/api/file/js.cjs +118 -0
- package/dist/api/file/js.mjs +116 -0
- package/dist/api/names.cjs +52 -0
- package/dist/api/names.mjs +46 -0
- package/dist/api/noopCss.cjs +37 -0
- package/dist/api/noopCss.mjs +36 -0
- package/dist/api/propTree.cjs +54 -0
- package/dist/api/propTree.mjs +48 -0
- package/dist/api/server.cjs +112 -0
- package/dist/api/server.mjs +106 -0
- package/dist/cli/build.cjs +1 -0
- package/dist/cli/build.mjs +3 -0
- package/dist/cli/index.cjs +30 -0
- package/dist/cli/index.mjs +29 -0
- package/dist/cli/tasks/build.cjs +24 -0
- package/dist/cli/tasks/build.mjs +23 -0
- package/dist/cli/tasks/choose.cjs +47 -0
- package/dist/cli/tasks/choose.mjs +46 -0
- package/dist/cli/tasks/compile.cjs +68 -0
- package/dist/cli/tasks/compile.mjs +67 -0
- package/dist/cli/tasks/dev.cjs +51 -0
- package/dist/cli/tasks/dev.mjs +48 -0
- package/dist/cli/tasks/init.cjs +1835 -0
- package/dist/cli/tasks/init.mjs +1831 -0
- package/dist/cli/tasks/watch.cjs +38 -0
- package/dist/cli/tasks/watch.mjs +37 -0
- package/dist/cli/templates/init.cjs +82 -0
- package/dist/cli/templates/init.mjs +78 -0
- package/dist/cli/types.cjs +13 -0
- package/dist/cli/types.mjs +13 -0
- package/dist/cli/utils.cjs +43 -0
- package/dist/cli/utils.mjs +41 -0
- package/dist/compile/classname-strategy.cjs +79 -0
- package/dist/compile/classname-strategy.mjs +77 -0
- package/dist/compile/classname.cjs +366 -0
- package/dist/compile/classname.mjs +360 -0
- package/dist/compile/index.cjs +238 -0
- package/dist/compile/index.mjs +235 -0
- package/dist/compile/jsx.cjs +803 -0
- package/dist/compile/jsx.mjs +800 -0
- package/dist/compile/prepared.cjs +88 -0
- package/dist/compile/prepared.mjs +87 -0
- package/dist/compile/runtime.cjs +33 -0
- package/dist/compile/runtime.mjs +32 -0
- package/dist/compile/transform.cjs +371 -0
- package/dist/compile/transform.mjs +369 -0
- package/dist/cx/index.cjs +93 -0
- package/dist/cx/index.mjs +85 -0
- package/dist/detect-fw/index.cjs +384 -0
- package/dist/detect-fw/index.mjs +379 -0
- package/dist/dev/client.cjs +39 -0
- package/dist/dev/client.mjs +38 -0
- package/dist/dev/plugin/browser.cjs +11 -0
- package/dist/dev/plugin/browser.mjs +9 -0
- package/dist/dev/plugin/server.cjs +86 -0
- package/dist/dev/plugin/server.mjs +78 -0
- package/dist/dev/port.cjs +46 -0
- package/dist/dev/port.mjs +43 -0
- package/dist/dev/runtime.cjs +28 -0
- package/dist/dev/runtime.mjs +29 -0
- package/dist/dev/server.cjs +808 -0
- package/dist/dev/server.mjs +805 -0
- package/dist/dev/shared.cjs +6 -0
- package/dist/dev/shared.mjs +5 -0
- package/dist/eslint-plugin/index.cjs +66 -0
- package/dist/eslint-plugin/index.mjs +66 -0
- package/dist/eslint-plugin/rules/classnames-only.cjs +68 -0
- package/dist/eslint-plugin/rules/classnames-only.mjs +68 -0
- package/dist/eslint-plugin/rules/format-classnames.cjs +137 -0
- package/dist/eslint-plugin/rules/format-classnames.mjs +136 -0
- package/dist/eslint-plugin/rules/no-unknown-classes.cjs +119 -0
- package/dist/eslint-plugin/rules/no-unknown-classes.mjs +119 -0
- package/dist/eslint-plugin/rules/prefer-classnames.cjs +69 -0
- package/dist/eslint-plugin/rules/prefer-classnames.mjs +69 -0
- package/dist/eslint-plugin/rules/prefer-token-values.cjs +197 -0
- package/dist/eslint-plugin/rules/prefer-token-values.mjs +197 -0
- package/dist/eslint-plugin/rules/props-only.cjs +115 -0
- package/dist/eslint-plugin/rules/props-only.mjs +115 -0
- package/dist/eslint-plugin/rules/redundant-cx.cjs +66 -0
- package/dist/eslint-plugin/rules/redundant-cx.mjs +66 -0
- package/dist/eslint-plugin/rules/require-prop-functions.cjs +130 -0
- package/dist/eslint-plugin/rules/require-prop-functions.mjs +130 -0
- package/dist/eslint-plugin/utils/api.cjs +30 -0
- package/dist/eslint-plugin/utils/api.mjs +29 -0
- package/dist/eslint-plugin/utils/ast.cjs +119 -0
- package/dist/eslint-plugin/utils/ast.mjs +112 -0
- package/dist/eslint-plugin/utils/boss-classes.cjs +185 -0
- package/dist/eslint-plugin/utils/boss-classes.mjs +175 -0
- package/dist/eslint-plugin/utils/defaults.cjs +99 -0
- package/dist/eslint-plugin/utils/defaults.mjs +93 -0
- package/dist/eslint-plugin/utils/format.cjs +20 -0
- package/dist/eslint-plugin/utils/format.mjs +19 -0
- package/dist/eslint-plugin/utils/order.cjs +76 -0
- package/dist/eslint-plugin/utils/order.mjs +76 -0
- package/dist/eslint-plugin/utils/property-order.cjs +449 -0
- package/dist/eslint-plugin/utils/property-order.mjs +448 -0
- package/dist/eslint-plugin/utils/static.cjs +36 -0
- package/dist/eslint-plugin/utils/static.mjs +35 -0
- package/dist/fontsource/directory.cjs +39588 -0
- package/dist/fontsource/directory.mjs +39587 -0
- package/dist/fontsource/server.cjs +291 -0
- package/dist/fontsource/server.mjs +282 -0
- package/dist/index.cjs +10 -0
- package/dist/index.mjs +6 -0
- package/dist/log/browser.cjs +28 -0
- package/dist/log/browser.mjs +28 -0
- package/dist/log/server.cjs +32 -0
- package/dist/log/server.mjs +30 -0
- package/dist/merge/index.cjs +590 -0
- package/dist/merge/index.mjs +586 -0
- package/dist/native/browser.cjs +78 -0
- package/dist/native/browser.mjs +77 -0
- package/dist/native/server.cjs +180 -0
- package/dist/native/server.mjs +176 -0
- package/dist/native/styleTypes.cjs +168 -0
- package/dist/native/styleTypes.mjs +164 -0
- package/dist/parser/classname/server.cjs +239 -0
- package/dist/parser/classname/server.mjs +232 -0
- package/dist/parser/jsx/browser.cjs +66 -0
- package/dist/parser/jsx/browser.mjs +63 -0
- package/dist/parser/jsx/extractCode.cjs +99 -0
- package/dist/parser/jsx/extractCode.mjs +98 -0
- package/dist/parser/jsx/extractPrepared.cjs +123 -0
- package/dist/parser/jsx/extractPrepared.mjs +122 -0
- package/dist/parser/jsx/extractProps.cjs +234 -0
- package/dist/parser/jsx/extractProps.mjs +232 -0
- package/dist/parser/jsx/isDOMProp.cjs +17 -0
- package/dist/parser/jsx/isDOMProp.mjs +15 -0
- package/dist/parser/jsx/native.cjs +110 -0
- package/dist/parser/jsx/native.mjs +108 -0
- package/dist/parser/jsx/runtime.cjs +4 -0
- package/dist/parser/jsx/runtime.mjs +3 -0
- package/dist/parser/jsx/server.cjs +278 -0
- package/dist/parser/jsx/server.mjs +268 -0
- package/dist/postcss/index.cjs +16 -0
- package/dist/postcss/index.mjs +16 -0
- package/dist/prop/at/runtime-only.cjs +90 -0
- package/dist/prop/at/runtime-only.mjs +88 -0
- package/dist/prop/at/server.cjs +282 -0
- package/dist/prop/at/server.mjs +268 -0
- package/dist/prop/at/shared.cjs +153 -0
- package/dist/prop/at/shared.mjs +144 -0
- package/dist/prop/bosswind/browser.cjs +18 -0
- package/dist/prop/bosswind/browser.mjs +16 -0
- package/dist/prop/bosswind/runtime-only.cjs +18 -0
- package/dist/prop/bosswind/runtime-only.mjs +16 -0
- package/dist/prop/bosswind/server.cjs +81 -0
- package/dist/prop/bosswind/server.mjs +72 -0
- package/dist/prop/bosswind/shared.cjs +861 -0
- package/dist/prop/bosswind/shared.mjs +855 -0
- package/dist/prop/bosswind/tailwind-theme.cjs +703 -0
- package/dist/prop/bosswind/tailwind-theme.mjs +702 -0
- package/dist/prop/child/runtime-only.cjs +18 -0
- package/dist/prop/child/runtime-only.mjs +15 -0
- package/dist/prop/child/server.cjs +81 -0
- package/dist/prop/child/server.mjs +72 -0
- package/dist/prop/css/getDtsTemplate.cjs +65 -0
- package/dist/prop/css/getDtsTemplate.mjs +63 -0
- package/dist/prop/css/runtime-only.cjs +14 -0
- package/dist/prop/css/runtime-only.mjs +13 -0
- package/dist/prop/css/server.cjs +99 -0
- package/dist/prop/css/server.mjs +90 -0
- package/dist/prop/pseudo/runtime-only.cjs +23 -0
- package/dist/prop/pseudo/runtime-only.mjs +21 -0
- package/dist/prop/pseudo/server.cjs +91 -0
- package/dist/prop/pseudo/server.mjs +82 -0
- package/dist/prop/pseudo/shared.cjs +61 -0
- package/dist/prop/pseudo/shared.mjs +60 -0
- package/dist/reset/server.cjs +34 -0
- package/dist/reset/server.mjs +26 -0
- package/dist/runtime/index.cjs +119 -0
- package/dist/runtime/index.mjs +118 -0
- package/dist/runtime/preact.cjs +4 -0
- package/dist/runtime/preact.mjs +3 -0
- package/dist/runtime/qwik.cjs +21 -0
- package/dist/runtime/qwik.mjs +18 -0
- package/dist/runtime/react.cjs +4 -0
- package/dist/runtime/react.mjs +3 -0
- package/dist/runtime/solid.cjs +15 -0
- package/dist/runtime/solid.mjs +14 -0
- package/dist/runtime/stencil.cjs +25 -0
- package/dist/runtime/stencil.mjs +21 -0
- package/dist/runtime/style.cjs +14 -0
- package/dist/runtime/style.mjs +13 -0
- package/dist/shared/boundaries.cjs +288 -0
- package/dist/shared/boundaries.mjs +285 -0
- package/dist/shared/customCss.cjs +212 -0
- package/dist/shared/customCss.mjs +211 -0
- package/dist/shared/debug.cjs +76 -0
- package/dist/shared/debug.mjs +74 -0
- package/dist/shared/file.cjs +21 -0
- package/dist/shared/file.mjs +19 -0
- package/dist/shared/framework.cjs +10 -0
- package/dist/shared/framework.mjs +9 -0
- package/dist/shared/json.cjs +58 -0
- package/dist/shared/json.mjs +57 -0
- package/dist/shared/types.cjs +11 -0
- package/dist/shared/types.mjs +10 -0
- package/dist/strategy/classic/runtime-only.cjs +190 -0
- package/dist/strategy/classic/runtime-only.mjs +186 -0
- package/dist/strategy/classname-first/runtime-only.cjs +138 -0
- package/dist/strategy/classname-first/runtime-only.mjs +134 -0
- package/dist/strategy/classname-first/server.cjs +139 -0
- package/dist/strategy/classname-first/server.mjs +133 -0
- package/dist/strategy/classname-only/server.cjs +43 -0
- package/dist/strategy/classname-only/server.mjs +35 -0
- package/dist/strategy/inline-first/browser.cjs +61 -0
- package/dist/strategy/inline-first/browser.mjs +58 -0
- package/dist/strategy/inline-first/runtime-only.cjs +159 -0
- package/dist/strategy/inline-first/runtime-only.mjs +155 -0
- package/dist/strategy/inline-first/server.cjs +92 -0
- package/dist/strategy/inline-first/server.mjs +83 -0
- package/dist/strategy/runtime/runtime-only.cjs +24 -0
- package/dist/strategy/runtime/runtime-only.mjs +22 -0
- package/dist/strategy/runtime/server.cjs +72 -0
- package/dist/strategy/runtime/server.mjs +63 -0
- package/dist/strategy/runtime-only/css.cjs +183 -0
- package/dist/strategy/runtime-only/css.mjs +181 -0
- package/dist/tasks/build.cjs +88 -0
- package/dist/tasks/build.mjs +84 -0
- package/dist/tasks/compile.cjs +12 -0
- package/dist/tasks/compile.mjs +12 -0
- package/dist/tasks/postcss.cjs +116 -0
- package/dist/tasks/postcss.mjs +113 -0
- package/dist/tasks/session.cjs +46 -0
- package/dist/tasks/session.mjs +42 -0
- package/dist/tasks/watch.cjs +102 -0
- package/dist/tasks/watch.mjs +99 -0
- package/dist/transform/cache.cjs +24 -0
- package/dist/transform/cache.mjs +21 -0
- package/dist/transform/processFile.cjs +26 -0
- package/dist/transform/processFile.mjs +24 -0
- package/dist/use/token/browser.cjs +65 -0
- package/dist/use/token/browser.mjs +61 -0
- package/dist/use/token/runtime-only.cjs +245 -0
- package/dist/use/token/runtime-only.mjs +239 -0
- package/dist/use/token/server.cjs +325 -0
- package/dist/use/token/server.mjs +313 -0
- package/dist/use/token/vars.cjs +47 -0
- package/dist/use/token/vars.mjs +46 -0
- package/package.json +300 -4
- package/src/api/config.d.ts +1 -0
- package/src/fontsource/types.d.ts +50 -0
- package/src/packages/document-create-element/createElement.browser.js +3 -0
- package/src/packages/document-create-element/createElement.js +7 -0
- package/src/packages/document-create-element/package.json +17 -0
- package/src/packages/is-css-prop/browser.js +13 -0
- package/src/packages/is-css-prop/index.js +13 -0
- package/src/packages/is-css-prop/package-lock.json +52 -0
- package/src/packages/is-css-prop/package.json +17 -0
- package/src/prop/css/csstype.json +4387 -0
- package/src/prop/css/package.json +3 -0
- package/src/reset/reset.css +259 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
const require_ast = require('../utils/ast.cjs');
|
|
2
|
+
const require_defaults = require('../utils/defaults.cjs');
|
|
3
|
+
const require_boss_classes = require('../utils/boss-classes.cjs');
|
|
4
|
+
|
|
5
|
+
//#region src/eslint-plugin/rules/props-only.js
|
|
6
|
+
const RULE_NAME = "props-only";
|
|
7
|
+
const defaultOptions = {
|
|
8
|
+
attributes: require_defaults.DEFAULT_ATTRIBUTE_PATTERNS,
|
|
9
|
+
callees: require_defaults.DEFAULT_CALLEE_PATTERNS,
|
|
10
|
+
variables: require_defaults.DEFAULT_VARIABLE_PATTERNS,
|
|
11
|
+
tags: require_defaults.DEFAULT_TAG_PATTERNS,
|
|
12
|
+
allowCustomContexts: false,
|
|
13
|
+
additionalContexts: [],
|
|
14
|
+
additionalProps: [],
|
|
15
|
+
singleProps: []
|
|
16
|
+
};
|
|
17
|
+
const createPatterns = (options) => ({
|
|
18
|
+
attributes: require_ast.compilePatterns(options.attributes),
|
|
19
|
+
callees: require_ast.compilePatterns(options.callees),
|
|
20
|
+
variables: require_ast.compilePatterns(options.variables),
|
|
21
|
+
tags: require_ast.compilePatterns(options.tags)
|
|
22
|
+
});
|
|
23
|
+
const create = (context) => {
|
|
24
|
+
const sourceCode = context.getSourceCode();
|
|
25
|
+
const options = {
|
|
26
|
+
...defaultOptions,
|
|
27
|
+
...context.options[0] || {}
|
|
28
|
+
};
|
|
29
|
+
const patterns = createPatterns(options);
|
|
30
|
+
const reportLiteral = (literal) => {
|
|
31
|
+
if (!literal || !literal.value) return;
|
|
32
|
+
if (!require_boss_classes.containsBossToken(literal.value, options)) return;
|
|
33
|
+
context.report({
|
|
34
|
+
node: literal.node,
|
|
35
|
+
messageId: "propsOnly"
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
JSXAttribute(node) {
|
|
40
|
+
const name = require_ast.getJSXAttributeName(node);
|
|
41
|
+
if (!name || !require_ast.matchesPattern(patterns.attributes, name)) return;
|
|
42
|
+
if (!node.value) return;
|
|
43
|
+
const literals = [];
|
|
44
|
+
require_ast.collectClassLiteralsFromExpression(node.value, sourceCode, literals);
|
|
45
|
+
for (const literal of literals) reportLiteral(literal);
|
|
46
|
+
},
|
|
47
|
+
CallExpression(node) {
|
|
48
|
+
const calleeName = require_ast.getCalleeName(node.callee);
|
|
49
|
+
if (!calleeName || !require_ast.matchesPattern(patterns.callees, calleeName)) return;
|
|
50
|
+
const literals = [];
|
|
51
|
+
for (const argument of node.arguments) require_ast.collectClassLiteralsFromExpression(argument, sourceCode, literals);
|
|
52
|
+
for (const literal of literals) reportLiteral(literal);
|
|
53
|
+
},
|
|
54
|
+
VariableDeclarator(node) {
|
|
55
|
+
if (!node.id || node.id.type !== "Identifier") return;
|
|
56
|
+
if (!require_ast.matchesPattern(patterns.variables, node.id.name)) return;
|
|
57
|
+
const literals = [];
|
|
58
|
+
require_ast.collectClassLiteralsFromExpression(node.init, sourceCode, literals);
|
|
59
|
+
for (const literal of literals) reportLiteral(literal);
|
|
60
|
+
},
|
|
61
|
+
TaggedTemplateExpression(node) {
|
|
62
|
+
const tagName = require_ast.getCalleeName(node.tag);
|
|
63
|
+
if (!tagName || !require_ast.matchesPattern(patterns.tags, tagName)) return;
|
|
64
|
+
const literal = require_ast.getLiteralInfo(node.quasi, sourceCode);
|
|
65
|
+
if (literal) reportLiteral(literal);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
var props_only_default = {
|
|
70
|
+
name: RULE_NAME,
|
|
71
|
+
meta: {
|
|
72
|
+
type: "problem",
|
|
73
|
+
docs: { description: "Require Boss style props instead of class names." },
|
|
74
|
+
schema: [{
|
|
75
|
+
type: "object",
|
|
76
|
+
additionalProperties: false,
|
|
77
|
+
properties: {
|
|
78
|
+
attributes: {
|
|
79
|
+
type: "array",
|
|
80
|
+
items: { type: "string" }
|
|
81
|
+
},
|
|
82
|
+
callees: {
|
|
83
|
+
type: "array",
|
|
84
|
+
items: { type: "string" }
|
|
85
|
+
},
|
|
86
|
+
variables: {
|
|
87
|
+
type: "array",
|
|
88
|
+
items: { type: "string" }
|
|
89
|
+
},
|
|
90
|
+
tags: {
|
|
91
|
+
type: "array",
|
|
92
|
+
items: { type: "string" }
|
|
93
|
+
},
|
|
94
|
+
allowCustomContexts: { type: "boolean" },
|
|
95
|
+
additionalContexts: {
|
|
96
|
+
type: "array",
|
|
97
|
+
items: { type: "string" }
|
|
98
|
+
},
|
|
99
|
+
additionalProps: {
|
|
100
|
+
type: "array",
|
|
101
|
+
items: { type: "string" }
|
|
102
|
+
},
|
|
103
|
+
singleProps: {
|
|
104
|
+
type: "array",
|
|
105
|
+
items: { type: "string" }
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}],
|
|
109
|
+
messages: { propsOnly: "Use Boss props instead of class names for Boss styles." }
|
|
110
|
+
},
|
|
111
|
+
create
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
//#endregion
|
|
115
|
+
exports.default = props_only_default;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { collectClassLiteralsFromExpression, compilePatterns, getCalleeName, getJSXAttributeName, getLiteralInfo, matchesPattern } from "../utils/ast.mjs";
|
|
2
|
+
import { DEFAULT_ATTRIBUTE_PATTERNS, DEFAULT_CALLEE_PATTERNS, DEFAULT_TAG_PATTERNS, DEFAULT_VARIABLE_PATTERNS } from "../utils/defaults.mjs";
|
|
3
|
+
import { containsBossToken } from "../utils/boss-classes.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/eslint-plugin/rules/props-only.js
|
|
6
|
+
const RULE_NAME = "props-only";
|
|
7
|
+
const defaultOptions = {
|
|
8
|
+
attributes: DEFAULT_ATTRIBUTE_PATTERNS,
|
|
9
|
+
callees: DEFAULT_CALLEE_PATTERNS,
|
|
10
|
+
variables: DEFAULT_VARIABLE_PATTERNS,
|
|
11
|
+
tags: DEFAULT_TAG_PATTERNS,
|
|
12
|
+
allowCustomContexts: false,
|
|
13
|
+
additionalContexts: [],
|
|
14
|
+
additionalProps: [],
|
|
15
|
+
singleProps: []
|
|
16
|
+
};
|
|
17
|
+
const createPatterns = (options) => ({
|
|
18
|
+
attributes: compilePatterns(options.attributes),
|
|
19
|
+
callees: compilePatterns(options.callees),
|
|
20
|
+
variables: compilePatterns(options.variables),
|
|
21
|
+
tags: compilePatterns(options.tags)
|
|
22
|
+
});
|
|
23
|
+
const create = (context) => {
|
|
24
|
+
const sourceCode = context.getSourceCode();
|
|
25
|
+
const options = {
|
|
26
|
+
...defaultOptions,
|
|
27
|
+
...context.options[0] || {}
|
|
28
|
+
};
|
|
29
|
+
const patterns = createPatterns(options);
|
|
30
|
+
const reportLiteral = (literal) => {
|
|
31
|
+
if (!literal || !literal.value) return;
|
|
32
|
+
if (!containsBossToken(literal.value, options)) return;
|
|
33
|
+
context.report({
|
|
34
|
+
node: literal.node,
|
|
35
|
+
messageId: "propsOnly"
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
JSXAttribute(node) {
|
|
40
|
+
const name = getJSXAttributeName(node);
|
|
41
|
+
if (!name || !matchesPattern(patterns.attributes, name)) return;
|
|
42
|
+
if (!node.value) return;
|
|
43
|
+
const literals = [];
|
|
44
|
+
collectClassLiteralsFromExpression(node.value, sourceCode, literals);
|
|
45
|
+
for (const literal of literals) reportLiteral(literal);
|
|
46
|
+
},
|
|
47
|
+
CallExpression(node) {
|
|
48
|
+
const calleeName = getCalleeName(node.callee);
|
|
49
|
+
if (!calleeName || !matchesPattern(patterns.callees, calleeName)) return;
|
|
50
|
+
const literals = [];
|
|
51
|
+
for (const argument of node.arguments) collectClassLiteralsFromExpression(argument, sourceCode, literals);
|
|
52
|
+
for (const literal of literals) reportLiteral(literal);
|
|
53
|
+
},
|
|
54
|
+
VariableDeclarator(node) {
|
|
55
|
+
if (!node.id || node.id.type !== "Identifier") return;
|
|
56
|
+
if (!matchesPattern(patterns.variables, node.id.name)) return;
|
|
57
|
+
const literals = [];
|
|
58
|
+
collectClassLiteralsFromExpression(node.init, sourceCode, literals);
|
|
59
|
+
for (const literal of literals) reportLiteral(literal);
|
|
60
|
+
},
|
|
61
|
+
TaggedTemplateExpression(node) {
|
|
62
|
+
const tagName = getCalleeName(node.tag);
|
|
63
|
+
if (!tagName || !matchesPattern(patterns.tags, tagName)) return;
|
|
64
|
+
const literal = getLiteralInfo(node.quasi, sourceCode);
|
|
65
|
+
if (literal) reportLiteral(literal);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
var props_only_default = {
|
|
70
|
+
name: RULE_NAME,
|
|
71
|
+
meta: {
|
|
72
|
+
type: "problem",
|
|
73
|
+
docs: { description: "Require Boss style props instead of class names." },
|
|
74
|
+
schema: [{
|
|
75
|
+
type: "object",
|
|
76
|
+
additionalProperties: false,
|
|
77
|
+
properties: {
|
|
78
|
+
attributes: {
|
|
79
|
+
type: "array",
|
|
80
|
+
items: { type: "string" }
|
|
81
|
+
},
|
|
82
|
+
callees: {
|
|
83
|
+
type: "array",
|
|
84
|
+
items: { type: "string" }
|
|
85
|
+
},
|
|
86
|
+
variables: {
|
|
87
|
+
type: "array",
|
|
88
|
+
items: { type: "string" }
|
|
89
|
+
},
|
|
90
|
+
tags: {
|
|
91
|
+
type: "array",
|
|
92
|
+
items: { type: "string" }
|
|
93
|
+
},
|
|
94
|
+
allowCustomContexts: { type: "boolean" },
|
|
95
|
+
additionalContexts: {
|
|
96
|
+
type: "array",
|
|
97
|
+
items: { type: "string" }
|
|
98
|
+
},
|
|
99
|
+
additionalProps: {
|
|
100
|
+
type: "array",
|
|
101
|
+
items: { type: "string" }
|
|
102
|
+
},
|
|
103
|
+
singleProps: {
|
|
104
|
+
type: "array",
|
|
105
|
+
items: { type: "string" }
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}],
|
|
109
|
+
messages: { propsOnly: "Use Boss props instead of class names for Boss styles." }
|
|
110
|
+
},
|
|
111
|
+
create
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
//#endregion
|
|
115
|
+
export { props_only_default as default };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const require_ast = require('../utils/ast.cjs');
|
|
2
|
+
const require_defaults = require('../utils/defaults.cjs');
|
|
3
|
+
|
|
4
|
+
//#region src/eslint-plugin/rules/redundant-cx.js
|
|
5
|
+
const RULE_NAME = "redundant-cx";
|
|
6
|
+
const defaultOptions = {
|
|
7
|
+
components: require_defaults.DEFAULT_COMPONENTS,
|
|
8
|
+
callees: ["^cx$", "^\\$\\$\\.cx$"]
|
|
9
|
+
};
|
|
10
|
+
const getCallExpression = (node) => {
|
|
11
|
+
if (!node) return null;
|
|
12
|
+
if (node.type === "ChainExpression") return getCallExpression(node.expression);
|
|
13
|
+
if (node.type === "CallExpression") return node;
|
|
14
|
+
if (node.type === "OptionalCallExpression") return node;
|
|
15
|
+
return null;
|
|
16
|
+
};
|
|
17
|
+
const create = (context) => {
|
|
18
|
+
const options = {
|
|
19
|
+
...defaultOptions,
|
|
20
|
+
...context.options[0] || {}
|
|
21
|
+
};
|
|
22
|
+
const componentSet = new Set(options.components);
|
|
23
|
+
const calleePatterns = require_ast.compilePatterns(options.callees);
|
|
24
|
+
return { JSXOpeningElement(node) {
|
|
25
|
+
const rootName = require_ast.getJSXRootName(node.name);
|
|
26
|
+
if (!rootName || !componentSet.has(rootName)) return;
|
|
27
|
+
for (const attribute of node.attributes) {
|
|
28
|
+
if (!attribute || attribute.type !== "JSXAttribute") continue;
|
|
29
|
+
if (require_ast.getJSXAttributeName(attribute) !== "className") continue;
|
|
30
|
+
const callExpression = getCallExpression(attribute.value?.type === "JSXExpressionContainer" ? attribute.value.expression : null);
|
|
31
|
+
if (!callExpression) continue;
|
|
32
|
+
const calleeName = require_ast.getCalleeName(callExpression.callee);
|
|
33
|
+
if (!calleeName || !require_ast.matchesPattern(calleePatterns, calleeName)) continue;
|
|
34
|
+
context.report({
|
|
35
|
+
node: attribute,
|
|
36
|
+
messageId: "redundantCx"
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
} };
|
|
40
|
+
};
|
|
41
|
+
var redundant_cx_default = {
|
|
42
|
+
name: RULE_NAME,
|
|
43
|
+
meta: {
|
|
44
|
+
type: "suggestion",
|
|
45
|
+
docs: { description: "Disallow wrapping $$ className with cx; $$ already applies cx semantics." },
|
|
46
|
+
schema: [{
|
|
47
|
+
type: "object",
|
|
48
|
+
additionalProperties: false,
|
|
49
|
+
properties: {
|
|
50
|
+
components: {
|
|
51
|
+
type: "array",
|
|
52
|
+
items: { type: "string" }
|
|
53
|
+
},
|
|
54
|
+
callees: {
|
|
55
|
+
type: "array",
|
|
56
|
+
items: { type: "string" }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}],
|
|
60
|
+
messages: { redundantCx: "Do not wrap $$ className with cx; pass values directly to className." }
|
|
61
|
+
},
|
|
62
|
+
create
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
//#endregion
|
|
66
|
+
exports.default = redundant_cx_default;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { compilePatterns, getCalleeName, getJSXAttributeName, getJSXRootName, matchesPattern } from "../utils/ast.mjs";
|
|
2
|
+
import { DEFAULT_COMPONENTS } from "../utils/defaults.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/eslint-plugin/rules/redundant-cx.js
|
|
5
|
+
const RULE_NAME = "redundant-cx";
|
|
6
|
+
const defaultOptions = {
|
|
7
|
+
components: DEFAULT_COMPONENTS,
|
|
8
|
+
callees: ["^cx$", "^\\$\\$\\.cx$"]
|
|
9
|
+
};
|
|
10
|
+
const getCallExpression = (node) => {
|
|
11
|
+
if (!node) return null;
|
|
12
|
+
if (node.type === "ChainExpression") return getCallExpression(node.expression);
|
|
13
|
+
if (node.type === "CallExpression") return node;
|
|
14
|
+
if (node.type === "OptionalCallExpression") return node;
|
|
15
|
+
return null;
|
|
16
|
+
};
|
|
17
|
+
const create = (context) => {
|
|
18
|
+
const options = {
|
|
19
|
+
...defaultOptions,
|
|
20
|
+
...context.options[0] || {}
|
|
21
|
+
};
|
|
22
|
+
const componentSet = new Set(options.components);
|
|
23
|
+
const calleePatterns = compilePatterns(options.callees);
|
|
24
|
+
return { JSXOpeningElement(node) {
|
|
25
|
+
const rootName = getJSXRootName(node.name);
|
|
26
|
+
if (!rootName || !componentSet.has(rootName)) return;
|
|
27
|
+
for (const attribute of node.attributes) {
|
|
28
|
+
if (!attribute || attribute.type !== "JSXAttribute") continue;
|
|
29
|
+
if (getJSXAttributeName(attribute) !== "className") continue;
|
|
30
|
+
const callExpression = getCallExpression(attribute.value?.type === "JSXExpressionContainer" ? attribute.value.expression : null);
|
|
31
|
+
if (!callExpression) continue;
|
|
32
|
+
const calleeName = getCalleeName(callExpression.callee);
|
|
33
|
+
if (!calleeName || !matchesPattern(calleePatterns, calleeName)) continue;
|
|
34
|
+
context.report({
|
|
35
|
+
node: attribute,
|
|
36
|
+
messageId: "redundantCx"
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
} };
|
|
40
|
+
};
|
|
41
|
+
var redundant_cx_default = {
|
|
42
|
+
name: RULE_NAME,
|
|
43
|
+
meta: {
|
|
44
|
+
type: "suggestion",
|
|
45
|
+
docs: { description: "Disallow wrapping $$ className with cx; $$ already applies cx semantics." },
|
|
46
|
+
schema: [{
|
|
47
|
+
type: "object",
|
|
48
|
+
additionalProperties: false,
|
|
49
|
+
properties: {
|
|
50
|
+
components: {
|
|
51
|
+
type: "array",
|
|
52
|
+
items: { type: "string" }
|
|
53
|
+
},
|
|
54
|
+
callees: {
|
|
55
|
+
type: "array",
|
|
56
|
+
items: { type: "string" }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}],
|
|
60
|
+
messages: { redundantCx: "Do not wrap $$ className with cx; pass values directly to className." }
|
|
61
|
+
},
|
|
62
|
+
create
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
//#endregion
|
|
66
|
+
export { redundant_cx_default as default };
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
const require_ast = require('../utils/ast.cjs');
|
|
2
|
+
const require_defaults = require('../utils/defaults.cjs');
|
|
3
|
+
const require_api = require('../utils/api.cjs');
|
|
4
|
+
const require_boss_classes = require('../utils/boss-classes.cjs');
|
|
5
|
+
const require_static = require('../utils/static.cjs');
|
|
6
|
+
|
|
7
|
+
//#region src/eslint-plugin/rules/require-prop-functions.js
|
|
8
|
+
const RULE_NAME = "require-prop-functions";
|
|
9
|
+
const defaultOptions = {
|
|
10
|
+
components: require_defaults.DEFAULT_COMPONENTS,
|
|
11
|
+
additionalContexts: [],
|
|
12
|
+
additionalProps: []
|
|
13
|
+
};
|
|
14
|
+
const unwrapExpression = (node) => {
|
|
15
|
+
if (!node) return node;
|
|
16
|
+
switch (node.type) {
|
|
17
|
+
case "JSXExpressionContainer": return unwrapExpression(node.expression);
|
|
18
|
+
case "ChainExpression": return unwrapExpression(node.expression);
|
|
19
|
+
case "ParenthesizedExpression": return unwrapExpression(node.expression);
|
|
20
|
+
case "TSAsExpression":
|
|
21
|
+
case "TSTypeAssertion":
|
|
22
|
+
case "TSNonNullExpression": return unwrapExpression(node.expression);
|
|
23
|
+
default: return node;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const isFunctionValue = (node) => {
|
|
27
|
+
const resolved = unwrapExpression(node);
|
|
28
|
+
return resolved?.type === "ArrowFunctionExpression" || resolved?.type === "FunctionExpression";
|
|
29
|
+
};
|
|
30
|
+
const getPropertyKey = (property) => {
|
|
31
|
+
const key = property.key;
|
|
32
|
+
if (!key) return null;
|
|
33
|
+
if (key.type === "Identifier") return key.name;
|
|
34
|
+
if (key.type === "Literal") return `${key.value}`;
|
|
35
|
+
return null;
|
|
36
|
+
};
|
|
37
|
+
const isContainerContextKey = (name) => name === "container" || name.startsWith("container ") || name.startsWith("container_");
|
|
38
|
+
const isContextKey = (name, contextSet) => {
|
|
39
|
+
if (!name) return false;
|
|
40
|
+
if (name.startsWith("[") && name.endsWith("]")) return true;
|
|
41
|
+
if (isContainerContextKey(name)) return true;
|
|
42
|
+
return contextSet.has(name);
|
|
43
|
+
};
|
|
44
|
+
const create = (context) => {
|
|
45
|
+
const options = {
|
|
46
|
+
...defaultOptions,
|
|
47
|
+
...context.options[0] || {}
|
|
48
|
+
};
|
|
49
|
+
const componentSet = new Set(options.components);
|
|
50
|
+
const contextSet = require_boss_classes.getContextSet(options);
|
|
51
|
+
const extraProps = options.additionalProps?.length ? new Set(options.additionalProps) : null;
|
|
52
|
+
const { api } = require_api.getApi();
|
|
53
|
+
if (!Boolean(api?.plugins?.some?.((plugin) => plugin?.name === "classname-first"))) return {};
|
|
54
|
+
const reportDynamicValue = (node, propName) => {
|
|
55
|
+
context.report({
|
|
56
|
+
node,
|
|
57
|
+
messageId: "requirePropFunctions",
|
|
58
|
+
data: { prop: propName }
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
const checkValue = (valueNode, propName) => {
|
|
62
|
+
if (!valueNode) return;
|
|
63
|
+
if (require_static.isStaticValue(valueNode)) return;
|
|
64
|
+
if (isFunctionValue(valueNode)) return;
|
|
65
|
+
reportDynamicValue(valueNode, propName);
|
|
66
|
+
};
|
|
67
|
+
const checkObjectExpression = (objectExpression) => {
|
|
68
|
+
for (const property of objectExpression.properties || []) {
|
|
69
|
+
if (!property || property.type !== "Property") continue;
|
|
70
|
+
if (property.kind && property.kind !== "init") continue;
|
|
71
|
+
const propName = getPropertyKey(property);
|
|
72
|
+
if (!propName) continue;
|
|
73
|
+
const value = property.value;
|
|
74
|
+
if (require_boss_classes.isCssPropName(propName, extraProps)) {
|
|
75
|
+
checkValue(value, propName);
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const resolved = unwrapExpression(value);
|
|
79
|
+
if (resolved?.type === "ObjectExpression" && isContextKey(propName, contextSet)) checkObjectExpression(resolved);
|
|
80
|
+
else if (resolved?.type === "ObjectExpression") checkObjectExpression(resolved);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
return { JSXOpeningElement(node) {
|
|
84
|
+
const rootName = require_ast.getJSXRootName(node.name);
|
|
85
|
+
if (!rootName || !componentSet.has(rootName)) return;
|
|
86
|
+
for (const attribute of node.attributes) {
|
|
87
|
+
if (!attribute || attribute.type !== "JSXAttribute") continue;
|
|
88
|
+
const name = require_ast.getJSXAttributeName(attribute);
|
|
89
|
+
if (!name) continue;
|
|
90
|
+
if (name === "className" || name === "class") continue;
|
|
91
|
+
if (require_boss_classes.isCssPropName(name, extraProps)) {
|
|
92
|
+
checkValue(attribute.value, name);
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (!isContextKey(name, contextSet)) continue;
|
|
96
|
+
const value = unwrapExpression(attribute.value);
|
|
97
|
+
if (value?.type === "ObjectExpression") checkObjectExpression(value);
|
|
98
|
+
}
|
|
99
|
+
} };
|
|
100
|
+
};
|
|
101
|
+
var require_prop_functions_default = {
|
|
102
|
+
name: RULE_NAME,
|
|
103
|
+
meta: {
|
|
104
|
+
type: "problem",
|
|
105
|
+
docs: { description: "Require dynamic Boss props to use functions when classname-first is enabled." },
|
|
106
|
+
schema: [{
|
|
107
|
+
type: "object",
|
|
108
|
+
additionalProperties: false,
|
|
109
|
+
properties: {
|
|
110
|
+
components: {
|
|
111
|
+
type: "array",
|
|
112
|
+
items: { type: "string" }
|
|
113
|
+
},
|
|
114
|
+
additionalContexts: {
|
|
115
|
+
type: "array",
|
|
116
|
+
items: { type: "string" }
|
|
117
|
+
},
|
|
118
|
+
additionalProps: {
|
|
119
|
+
type: "array",
|
|
120
|
+
items: { type: "string" }
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}],
|
|
124
|
+
messages: { requirePropFunctions: "Use {{prop}}={() => value} for dynamic Boss props with classname-first." }
|
|
125
|
+
},
|
|
126
|
+
create
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
//#endregion
|
|
130
|
+
exports.default = require_prop_functions_default;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { getJSXAttributeName, getJSXRootName } from "../utils/ast.mjs";
|
|
2
|
+
import { DEFAULT_COMPONENTS } from "../utils/defaults.mjs";
|
|
3
|
+
import { getApi } from "../utils/api.mjs";
|
|
4
|
+
import { getContextSet, isCssPropName } from "../utils/boss-classes.mjs";
|
|
5
|
+
import { isStaticValue } from "../utils/static.mjs";
|
|
6
|
+
|
|
7
|
+
//#region src/eslint-plugin/rules/require-prop-functions.js
|
|
8
|
+
const RULE_NAME = "require-prop-functions";
|
|
9
|
+
const defaultOptions = {
|
|
10
|
+
components: DEFAULT_COMPONENTS,
|
|
11
|
+
additionalContexts: [],
|
|
12
|
+
additionalProps: []
|
|
13
|
+
};
|
|
14
|
+
const unwrapExpression = (node) => {
|
|
15
|
+
if (!node) return node;
|
|
16
|
+
switch (node.type) {
|
|
17
|
+
case "JSXExpressionContainer": return unwrapExpression(node.expression);
|
|
18
|
+
case "ChainExpression": return unwrapExpression(node.expression);
|
|
19
|
+
case "ParenthesizedExpression": return unwrapExpression(node.expression);
|
|
20
|
+
case "TSAsExpression":
|
|
21
|
+
case "TSTypeAssertion":
|
|
22
|
+
case "TSNonNullExpression": return unwrapExpression(node.expression);
|
|
23
|
+
default: return node;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const isFunctionValue = (node) => {
|
|
27
|
+
const resolved = unwrapExpression(node);
|
|
28
|
+
return resolved?.type === "ArrowFunctionExpression" || resolved?.type === "FunctionExpression";
|
|
29
|
+
};
|
|
30
|
+
const getPropertyKey = (property) => {
|
|
31
|
+
const key = property.key;
|
|
32
|
+
if (!key) return null;
|
|
33
|
+
if (key.type === "Identifier") return key.name;
|
|
34
|
+
if (key.type === "Literal") return `${key.value}`;
|
|
35
|
+
return null;
|
|
36
|
+
};
|
|
37
|
+
const isContainerContextKey = (name) => name === "container" || name.startsWith("container ") || name.startsWith("container_");
|
|
38
|
+
const isContextKey = (name, contextSet) => {
|
|
39
|
+
if (!name) return false;
|
|
40
|
+
if (name.startsWith("[") && name.endsWith("]")) return true;
|
|
41
|
+
if (isContainerContextKey(name)) return true;
|
|
42
|
+
return contextSet.has(name);
|
|
43
|
+
};
|
|
44
|
+
const create = (context) => {
|
|
45
|
+
const options = {
|
|
46
|
+
...defaultOptions,
|
|
47
|
+
...context.options[0] || {}
|
|
48
|
+
};
|
|
49
|
+
const componentSet = new Set(options.components);
|
|
50
|
+
const contextSet = getContextSet(options);
|
|
51
|
+
const extraProps = options.additionalProps?.length ? new Set(options.additionalProps) : null;
|
|
52
|
+
const { api } = getApi();
|
|
53
|
+
if (!Boolean(api?.plugins?.some?.((plugin) => plugin?.name === "classname-first"))) return {};
|
|
54
|
+
const reportDynamicValue = (node, propName) => {
|
|
55
|
+
context.report({
|
|
56
|
+
node,
|
|
57
|
+
messageId: "requirePropFunctions",
|
|
58
|
+
data: { prop: propName }
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
const checkValue = (valueNode, propName) => {
|
|
62
|
+
if (!valueNode) return;
|
|
63
|
+
if (isStaticValue(valueNode)) return;
|
|
64
|
+
if (isFunctionValue(valueNode)) return;
|
|
65
|
+
reportDynamicValue(valueNode, propName);
|
|
66
|
+
};
|
|
67
|
+
const checkObjectExpression = (objectExpression) => {
|
|
68
|
+
for (const property of objectExpression.properties || []) {
|
|
69
|
+
if (!property || property.type !== "Property") continue;
|
|
70
|
+
if (property.kind && property.kind !== "init") continue;
|
|
71
|
+
const propName = getPropertyKey(property);
|
|
72
|
+
if (!propName) continue;
|
|
73
|
+
const value = property.value;
|
|
74
|
+
if (isCssPropName(propName, extraProps)) {
|
|
75
|
+
checkValue(value, propName);
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const resolved = unwrapExpression(value);
|
|
79
|
+
if (resolved?.type === "ObjectExpression" && isContextKey(propName, contextSet)) checkObjectExpression(resolved);
|
|
80
|
+
else if (resolved?.type === "ObjectExpression") checkObjectExpression(resolved);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
return { JSXOpeningElement(node) {
|
|
84
|
+
const rootName = getJSXRootName(node.name);
|
|
85
|
+
if (!rootName || !componentSet.has(rootName)) return;
|
|
86
|
+
for (const attribute of node.attributes) {
|
|
87
|
+
if (!attribute || attribute.type !== "JSXAttribute") continue;
|
|
88
|
+
const name = getJSXAttributeName(attribute);
|
|
89
|
+
if (!name) continue;
|
|
90
|
+
if (name === "className" || name === "class") continue;
|
|
91
|
+
if (isCssPropName(name, extraProps)) {
|
|
92
|
+
checkValue(attribute.value, name);
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (!isContextKey(name, contextSet)) continue;
|
|
96
|
+
const value = unwrapExpression(attribute.value);
|
|
97
|
+
if (value?.type === "ObjectExpression") checkObjectExpression(value);
|
|
98
|
+
}
|
|
99
|
+
} };
|
|
100
|
+
};
|
|
101
|
+
var require_prop_functions_default = {
|
|
102
|
+
name: RULE_NAME,
|
|
103
|
+
meta: {
|
|
104
|
+
type: "problem",
|
|
105
|
+
docs: { description: "Require dynamic Boss props to use functions when classname-first is enabled." },
|
|
106
|
+
schema: [{
|
|
107
|
+
type: "object",
|
|
108
|
+
additionalProperties: false,
|
|
109
|
+
properties: {
|
|
110
|
+
components: {
|
|
111
|
+
type: "array",
|
|
112
|
+
items: { type: "string" }
|
|
113
|
+
},
|
|
114
|
+
additionalContexts: {
|
|
115
|
+
type: "array",
|
|
116
|
+
items: { type: "string" }
|
|
117
|
+
},
|
|
118
|
+
additionalProps: {
|
|
119
|
+
type: "array",
|
|
120
|
+
items: { type: "string" }
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}],
|
|
124
|
+
messages: { requirePropFunctions: "Use {{prop}}={() => value} for dynamic Boss props with classname-first." }
|
|
125
|
+
},
|
|
126
|
+
create
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
//#endregion
|
|
130
|
+
export { require_prop_functions_default as default };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
let boss_css_api_server = require("boss-css/api/server");
|
|
3
|
+
let boss_css_api_config = require("boss-css/api/config");
|
|
4
|
+
|
|
5
|
+
//#region src/eslint-plugin/utils/api.js
|
|
6
|
+
let api = null;
|
|
7
|
+
let error = null;
|
|
8
|
+
let initPromise = null;
|
|
9
|
+
const initApi = () => {
|
|
10
|
+
if (initPromise) return initPromise;
|
|
11
|
+
initPromise = (async () => {
|
|
12
|
+
try {
|
|
13
|
+
api = await (0, boss_css_api_server.createApi)(await (0, boss_css_api_config.loadConfig)(process.cwd()), true);
|
|
14
|
+
} catch (err) {
|
|
15
|
+
error = err;
|
|
16
|
+
}
|
|
17
|
+
})();
|
|
18
|
+
return initPromise;
|
|
19
|
+
};
|
|
20
|
+
initApi();
|
|
21
|
+
const getApi = () => {
|
|
22
|
+
if (!initPromise) initApi();
|
|
23
|
+
return {
|
|
24
|
+
api,
|
|
25
|
+
error
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
exports.getApi = getApi;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { createApi } from "boss-css/api/server";
|
|
2
|
+
import { loadConfig } from "boss-css/api/config";
|
|
3
|
+
|
|
4
|
+
//#region src/eslint-plugin/utils/api.js
|
|
5
|
+
let api = null;
|
|
6
|
+
let error = null;
|
|
7
|
+
let initPromise = null;
|
|
8
|
+
const initApi = () => {
|
|
9
|
+
if (initPromise) return initPromise;
|
|
10
|
+
initPromise = (async () => {
|
|
11
|
+
try {
|
|
12
|
+
api = await createApi(await loadConfig(process.cwd()), true);
|
|
13
|
+
} catch (err) {
|
|
14
|
+
error = err;
|
|
15
|
+
}
|
|
16
|
+
})();
|
|
17
|
+
return initPromise;
|
|
18
|
+
};
|
|
19
|
+
initApi();
|
|
20
|
+
const getApi = () => {
|
|
21
|
+
if (!initPromise) initApi();
|
|
22
|
+
return {
|
|
23
|
+
api,
|
|
24
|
+
error
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
export { getApi };
|