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,66 @@
|
|
|
1
|
+
const require_format_classnames = require('./rules/format-classnames.cjs');
|
|
2
|
+
const require_no_unknown_classes = require('./rules/no-unknown-classes.cjs');
|
|
3
|
+
const require_props_only = require('./rules/props-only.cjs');
|
|
4
|
+
const require_classnames_only = require('./rules/classnames-only.cjs');
|
|
5
|
+
const require_prefer_classnames = require('./rules/prefer-classnames.cjs');
|
|
6
|
+
const require_require_prop_functions = require('./rules/require-prop-functions.cjs');
|
|
7
|
+
const require_redundant_cx = require('./rules/redundant-cx.cjs');
|
|
8
|
+
const require_prefer_token_values = require('./rules/prefer-token-values.cjs');
|
|
9
|
+
|
|
10
|
+
//#region src/eslint-plugin/index.js
|
|
11
|
+
const plugin = {
|
|
12
|
+
meta: { name: "boss-css" },
|
|
13
|
+
rules: {
|
|
14
|
+
[require_format_classnames.default.name]: require_format_classnames.default,
|
|
15
|
+
[require_no_unknown_classes.default.name]: require_no_unknown_classes.default,
|
|
16
|
+
[require_props_only.default.name]: require_props_only.default,
|
|
17
|
+
[require_classnames_only.default.name]: require_classnames_only.default,
|
|
18
|
+
[require_prefer_classnames.default.name]: require_prefer_classnames.default,
|
|
19
|
+
[require_require_prop_functions.default.name]: require_require_prop_functions.default,
|
|
20
|
+
[require_redundant_cx.default.name]: require_redundant_cx.default,
|
|
21
|
+
[require_prefer_token_values.default.name]: require_prefer_token_values.default
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const plugins = [plugin.meta.name];
|
|
25
|
+
const globalOptions = { languageOptions: { globals: { $$: "readonly" } } };
|
|
26
|
+
const createConfig = (name, getRules) => ({
|
|
27
|
+
[`${name}-error`]: {
|
|
28
|
+
plugins,
|
|
29
|
+
rules: getRules("error"),
|
|
30
|
+
...globalOptions
|
|
31
|
+
},
|
|
32
|
+
[`${name}-warn`]: {
|
|
33
|
+
plugins,
|
|
34
|
+
rules: getRules("warn"),
|
|
35
|
+
...globalOptions
|
|
36
|
+
},
|
|
37
|
+
[name]: {
|
|
38
|
+
plugins,
|
|
39
|
+
rules: getRules(),
|
|
40
|
+
...globalOptions
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
const getStylisticRules = (severity = "warn") => ({
|
|
44
|
+
[`${plugin.meta.name}/${require_format_classnames.default.name}`]: severity,
|
|
45
|
+
[`${plugin.meta.name}/${require_redundant_cx.default.name}`]: severity,
|
|
46
|
+
[`${plugin.meta.name}/${require_prefer_token_values.default.name}`]: severity
|
|
47
|
+
});
|
|
48
|
+
const getCorrectnessRules = (severity = "error") => ({
|
|
49
|
+
[`${plugin.meta.name}/${require_no_unknown_classes.default.name}`]: severity,
|
|
50
|
+
[`${plugin.meta.name}/${require_require_prop_functions.default.name}`]: severity
|
|
51
|
+
});
|
|
52
|
+
const config = {
|
|
53
|
+
...plugin,
|
|
54
|
+
configs: {
|
|
55
|
+
...createConfig("stylistic", getStylisticRules),
|
|
56
|
+
...createConfig("correctness", getCorrectnessRules),
|
|
57
|
+
...createConfig("recommended", (severity) => ({
|
|
58
|
+
...getStylisticRules(severity),
|
|
59
|
+
...getCorrectnessRules(severity)
|
|
60
|
+
}))
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
var eslint_plugin_default = config;
|
|
64
|
+
|
|
65
|
+
//#endregion
|
|
66
|
+
module.exports = eslint_plugin_default;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import format_classnames_default from "./rules/format-classnames.mjs";
|
|
2
|
+
import no_unknown_classes_default from "./rules/no-unknown-classes.mjs";
|
|
3
|
+
import props_only_default from "./rules/props-only.mjs";
|
|
4
|
+
import classnames_only_default from "./rules/classnames-only.mjs";
|
|
5
|
+
import prefer_classnames_default from "./rules/prefer-classnames.mjs";
|
|
6
|
+
import require_prop_functions_default from "./rules/require-prop-functions.mjs";
|
|
7
|
+
import redundant_cx_default from "./rules/redundant-cx.mjs";
|
|
8
|
+
import prefer_token_values_default from "./rules/prefer-token-values.mjs";
|
|
9
|
+
|
|
10
|
+
//#region src/eslint-plugin/index.js
|
|
11
|
+
const plugin = {
|
|
12
|
+
meta: { name: "boss-css" },
|
|
13
|
+
rules: {
|
|
14
|
+
[format_classnames_default.name]: format_classnames_default,
|
|
15
|
+
[no_unknown_classes_default.name]: no_unknown_classes_default,
|
|
16
|
+
[props_only_default.name]: props_only_default,
|
|
17
|
+
[classnames_only_default.name]: classnames_only_default,
|
|
18
|
+
[prefer_classnames_default.name]: prefer_classnames_default,
|
|
19
|
+
[require_prop_functions_default.name]: require_prop_functions_default,
|
|
20
|
+
[redundant_cx_default.name]: redundant_cx_default,
|
|
21
|
+
[prefer_token_values_default.name]: prefer_token_values_default
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const plugins = [plugin.meta.name];
|
|
25
|
+
const globalOptions = { languageOptions: { globals: { $$: "readonly" } } };
|
|
26
|
+
const createConfig = (name, getRules) => ({
|
|
27
|
+
[`${name}-error`]: {
|
|
28
|
+
plugins,
|
|
29
|
+
rules: getRules("error"),
|
|
30
|
+
...globalOptions
|
|
31
|
+
},
|
|
32
|
+
[`${name}-warn`]: {
|
|
33
|
+
plugins,
|
|
34
|
+
rules: getRules("warn"),
|
|
35
|
+
...globalOptions
|
|
36
|
+
},
|
|
37
|
+
[name]: {
|
|
38
|
+
plugins,
|
|
39
|
+
rules: getRules(),
|
|
40
|
+
...globalOptions
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
const getStylisticRules = (severity = "warn") => ({
|
|
44
|
+
[`${plugin.meta.name}/${format_classnames_default.name}`]: severity,
|
|
45
|
+
[`${plugin.meta.name}/${redundant_cx_default.name}`]: severity,
|
|
46
|
+
[`${plugin.meta.name}/${prefer_token_values_default.name}`]: severity
|
|
47
|
+
});
|
|
48
|
+
const getCorrectnessRules = (severity = "error") => ({
|
|
49
|
+
[`${plugin.meta.name}/${no_unknown_classes_default.name}`]: severity,
|
|
50
|
+
[`${plugin.meta.name}/${require_prop_functions_default.name}`]: severity
|
|
51
|
+
});
|
|
52
|
+
const config = {
|
|
53
|
+
...plugin,
|
|
54
|
+
configs: {
|
|
55
|
+
...createConfig("stylistic", getStylisticRules),
|
|
56
|
+
...createConfig("correctness", getCorrectnessRules),
|
|
57
|
+
...createConfig("recommended", (severity) => ({
|
|
58
|
+
...getStylisticRules(severity),
|
|
59
|
+
...getCorrectnessRules(severity)
|
|
60
|
+
}))
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
var eslint_plugin_default = config;
|
|
64
|
+
|
|
65
|
+
//#endregion
|
|
66
|
+
export { eslint_plugin_default as default };
|
|
@@ -0,0 +1,68 @@
|
|
|
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/classnames-only.js
|
|
6
|
+
const RULE_NAME = "classnames-only";
|
|
7
|
+
const defaultOptions = {
|
|
8
|
+
components: require_defaults.DEFAULT_COMPONENTS,
|
|
9
|
+
additionalContexts: [],
|
|
10
|
+
additionalProps: []
|
|
11
|
+
};
|
|
12
|
+
const isStyleProp = (name, options) => {
|
|
13
|
+
if (!name || name === "className" || name === "class") return false;
|
|
14
|
+
if (require_boss_classes.getContextSet(options).has(name)) return true;
|
|
15
|
+
return require_boss_classes.isCssPropName(name, options.additionalProps?.length ? new Set(options.additionalProps) : null);
|
|
16
|
+
};
|
|
17
|
+
const create = (context) => {
|
|
18
|
+
const options = {
|
|
19
|
+
...defaultOptions,
|
|
20
|
+
...context.options[0] || {}
|
|
21
|
+
};
|
|
22
|
+
const componentSet = new Set(options.components);
|
|
23
|
+
return { JSXOpeningElement(node) {
|
|
24
|
+
const rootName = require_ast.getJSXRootName(node.name);
|
|
25
|
+
if (!rootName || !componentSet.has(rootName)) return;
|
|
26
|
+
for (const attribute of node.attributes) {
|
|
27
|
+
if (!attribute || attribute.type !== "JSXAttribute") continue;
|
|
28
|
+
const name = require_ast.getJSXAttributeName(attribute);
|
|
29
|
+
if (!name) continue;
|
|
30
|
+
if (!isStyleProp(name, options)) continue;
|
|
31
|
+
context.report({
|
|
32
|
+
node: attribute,
|
|
33
|
+
messageId: "classnamesOnly",
|
|
34
|
+
data: { prop: name }
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
} };
|
|
38
|
+
};
|
|
39
|
+
var classnames_only_default = {
|
|
40
|
+
name: RULE_NAME,
|
|
41
|
+
meta: {
|
|
42
|
+
type: "problem",
|
|
43
|
+
docs: { description: "Disallow Boss style props; require className instead." },
|
|
44
|
+
schema: [{
|
|
45
|
+
type: "object",
|
|
46
|
+
additionalProperties: false,
|
|
47
|
+
properties: {
|
|
48
|
+
components: {
|
|
49
|
+
type: "array",
|
|
50
|
+
items: { type: "string" }
|
|
51
|
+
},
|
|
52
|
+
additionalContexts: {
|
|
53
|
+
type: "array",
|
|
54
|
+
items: { type: "string" }
|
|
55
|
+
},
|
|
56
|
+
additionalProps: {
|
|
57
|
+
type: "array",
|
|
58
|
+
items: { type: "string" }
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}],
|
|
62
|
+
messages: { classnamesOnly: "Use className instead of the \"{{prop}}\" Boss prop." }
|
|
63
|
+
},
|
|
64
|
+
create
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
//#endregion
|
|
68
|
+
exports.default = classnames_only_default;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { getJSXAttributeName, getJSXRootName } from "../utils/ast.mjs";
|
|
2
|
+
import { DEFAULT_COMPONENTS } from "../utils/defaults.mjs";
|
|
3
|
+
import { getContextSet, isCssPropName } from "../utils/boss-classes.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/eslint-plugin/rules/classnames-only.js
|
|
6
|
+
const RULE_NAME = "classnames-only";
|
|
7
|
+
const defaultOptions = {
|
|
8
|
+
components: DEFAULT_COMPONENTS,
|
|
9
|
+
additionalContexts: [],
|
|
10
|
+
additionalProps: []
|
|
11
|
+
};
|
|
12
|
+
const isStyleProp = (name, options) => {
|
|
13
|
+
if (!name || name === "className" || name === "class") return false;
|
|
14
|
+
if (getContextSet(options).has(name)) return true;
|
|
15
|
+
return isCssPropName(name, options.additionalProps?.length ? new Set(options.additionalProps) : null);
|
|
16
|
+
};
|
|
17
|
+
const create = (context) => {
|
|
18
|
+
const options = {
|
|
19
|
+
...defaultOptions,
|
|
20
|
+
...context.options[0] || {}
|
|
21
|
+
};
|
|
22
|
+
const componentSet = new Set(options.components);
|
|
23
|
+
return { JSXOpeningElement(node) {
|
|
24
|
+
const rootName = getJSXRootName(node.name);
|
|
25
|
+
if (!rootName || !componentSet.has(rootName)) return;
|
|
26
|
+
for (const attribute of node.attributes) {
|
|
27
|
+
if (!attribute || attribute.type !== "JSXAttribute") continue;
|
|
28
|
+
const name = getJSXAttributeName(attribute);
|
|
29
|
+
if (!name) continue;
|
|
30
|
+
if (!isStyleProp(name, options)) continue;
|
|
31
|
+
context.report({
|
|
32
|
+
node: attribute,
|
|
33
|
+
messageId: "classnamesOnly",
|
|
34
|
+
data: { prop: name }
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
} };
|
|
38
|
+
};
|
|
39
|
+
var classnames_only_default = {
|
|
40
|
+
name: RULE_NAME,
|
|
41
|
+
meta: {
|
|
42
|
+
type: "problem",
|
|
43
|
+
docs: { description: "Disallow Boss style props; require className instead." },
|
|
44
|
+
schema: [{
|
|
45
|
+
type: "object",
|
|
46
|
+
additionalProperties: false,
|
|
47
|
+
properties: {
|
|
48
|
+
components: {
|
|
49
|
+
type: "array",
|
|
50
|
+
items: { type: "string" }
|
|
51
|
+
},
|
|
52
|
+
additionalContexts: {
|
|
53
|
+
type: "array",
|
|
54
|
+
items: { type: "string" }
|
|
55
|
+
},
|
|
56
|
+
additionalProps: {
|
|
57
|
+
type: "array",
|
|
58
|
+
items: { type: "string" }
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}],
|
|
62
|
+
messages: { classnamesOnly: "Use className instead of the \"{{prop}}\" Boss prop." }
|
|
63
|
+
},
|
|
64
|
+
create
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
//#endregion
|
|
68
|
+
export { classnames_only_default as default };
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_ast = require('../utils/ast.cjs');
|
|
3
|
+
const require_defaults = require('../utils/defaults.cjs');
|
|
4
|
+
const require_format = require('../utils/format.cjs');
|
|
5
|
+
const require_boss_classes = require('../utils/boss-classes.cjs');
|
|
6
|
+
const require_order = require('../utils/order.cjs');
|
|
7
|
+
let boss_css_merge = require("boss-css/merge");
|
|
8
|
+
|
|
9
|
+
//#region src/eslint-plugin/rules/format-classnames.js
|
|
10
|
+
const RULE_NAME = "format-classnames";
|
|
11
|
+
const defaultOptions = {
|
|
12
|
+
attributes: require_defaults.DEFAULT_ATTRIBUTE_PATTERNS,
|
|
13
|
+
callees: require_defaults.DEFAULT_CALLEE_PATTERNS,
|
|
14
|
+
variables: require_defaults.DEFAULT_VARIABLE_PATTERNS,
|
|
15
|
+
tags: require_defaults.DEFAULT_TAG_PATTERNS,
|
|
16
|
+
merge: {},
|
|
17
|
+
order: "improved",
|
|
18
|
+
additionalProps: []
|
|
19
|
+
};
|
|
20
|
+
const createPatterns = (options) => ({
|
|
21
|
+
attributes: require_ast.compilePatterns(options.attributes),
|
|
22
|
+
callees: require_ast.compilePatterns(options.callees),
|
|
23
|
+
variables: require_ast.compilePatterns(options.variables),
|
|
24
|
+
tags: require_ast.compilePatterns(options.tags)
|
|
25
|
+
});
|
|
26
|
+
const formatClassList = (merge, literal, options) => {
|
|
27
|
+
if (!literal.value) return null;
|
|
28
|
+
const next = require_order.sortTokens(require_boss_classes.splitClassList(merge(literal.value)), options).join(" ");
|
|
29
|
+
if (next === literal.value) return null;
|
|
30
|
+
return next;
|
|
31
|
+
};
|
|
32
|
+
const create = (context) => {
|
|
33
|
+
const sourceCode = context.getSourceCode();
|
|
34
|
+
const options = {
|
|
35
|
+
...defaultOptions,
|
|
36
|
+
...context.options[0] || {}
|
|
37
|
+
};
|
|
38
|
+
const patterns = createPatterns(options);
|
|
39
|
+
const merge = (0, boss_css_merge.createBossMerge)(options.merge || {});
|
|
40
|
+
const reportLiteral = (literal) => {
|
|
41
|
+
if (!literal || !literal.canFix) return;
|
|
42
|
+
const next = formatClassList(merge, literal, options);
|
|
43
|
+
if (!next) return;
|
|
44
|
+
context.report({
|
|
45
|
+
node: literal.node,
|
|
46
|
+
messageId: "format",
|
|
47
|
+
data: {
|
|
48
|
+
original: literal.value,
|
|
49
|
+
formatted: next
|
|
50
|
+
},
|
|
51
|
+
fix: (fixer) => fixer.replaceText(literal.node, require_format.buildLiteralReplacement(literal.node, sourceCode, next))
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
return {
|
|
55
|
+
JSXAttribute(node) {
|
|
56
|
+
const name = require_ast.getJSXAttributeName(node);
|
|
57
|
+
if (!name || !require_ast.matchesPattern(patterns.attributes, name)) return;
|
|
58
|
+
if (!node.value) return;
|
|
59
|
+
const literals = [];
|
|
60
|
+
require_ast.collectClassLiteralsFromExpression(node.value, sourceCode, literals);
|
|
61
|
+
for (const literal of literals) reportLiteral(literal);
|
|
62
|
+
},
|
|
63
|
+
CallExpression(node) {
|
|
64
|
+
const calleeName = require_ast.getCalleeName(node.callee);
|
|
65
|
+
if (!calleeName || !require_ast.matchesPattern(patterns.callees, calleeName)) return;
|
|
66
|
+
const literals = [];
|
|
67
|
+
for (const argument of node.arguments) require_ast.collectClassLiteralsFromExpression(argument, sourceCode, literals);
|
|
68
|
+
for (const literal of literals) reportLiteral(literal);
|
|
69
|
+
},
|
|
70
|
+
VariableDeclarator(node) {
|
|
71
|
+
if (!node.id || node.id.type !== "Identifier") return;
|
|
72
|
+
if (!require_ast.matchesPattern(patterns.variables, node.id.name)) return;
|
|
73
|
+
const literals = [];
|
|
74
|
+
require_ast.collectClassLiteralsFromExpression(node.init, sourceCode, literals);
|
|
75
|
+
for (const literal of literals) reportLiteral(literal);
|
|
76
|
+
},
|
|
77
|
+
TaggedTemplateExpression(node) {
|
|
78
|
+
const tagName = require_ast.getCalleeName(node.tag);
|
|
79
|
+
if (!tagName || !require_ast.matchesPattern(patterns.tags, tagName)) return;
|
|
80
|
+
const literal = require_ast.getLiteralInfo(node.quasi, sourceCode);
|
|
81
|
+
if (literal) reportLiteral(literal);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
var format_classnames_default = {
|
|
86
|
+
name: RULE_NAME,
|
|
87
|
+
meta: {
|
|
88
|
+
type: "layout",
|
|
89
|
+
docs: { description: "Normalize Boss class lists using boss-css/merge." },
|
|
90
|
+
fixable: "code",
|
|
91
|
+
schema: [{
|
|
92
|
+
type: "object",
|
|
93
|
+
additionalProperties: false,
|
|
94
|
+
properties: {
|
|
95
|
+
attributes: {
|
|
96
|
+
type: "array",
|
|
97
|
+
items: { type: "string" }
|
|
98
|
+
},
|
|
99
|
+
callees: {
|
|
100
|
+
type: "array",
|
|
101
|
+
items: { type: "string" }
|
|
102
|
+
},
|
|
103
|
+
variables: {
|
|
104
|
+
type: "array",
|
|
105
|
+
items: { type: "string" }
|
|
106
|
+
},
|
|
107
|
+
tags: {
|
|
108
|
+
type: "array",
|
|
109
|
+
items: { type: "string" }
|
|
110
|
+
},
|
|
111
|
+
merge: {
|
|
112
|
+
type: "object",
|
|
113
|
+
additionalProperties: true
|
|
114
|
+
},
|
|
115
|
+
order: {
|
|
116
|
+
type: "string",
|
|
117
|
+
enum: [
|
|
118
|
+
"none",
|
|
119
|
+
"asc",
|
|
120
|
+
"desc",
|
|
121
|
+
"official",
|
|
122
|
+
"improved"
|
|
123
|
+
]
|
|
124
|
+
},
|
|
125
|
+
additionalProps: {
|
|
126
|
+
type: "array",
|
|
127
|
+
items: { type: "string" }
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}],
|
|
131
|
+
messages: { format: "Boss class list is not normalized." }
|
|
132
|
+
},
|
|
133
|
+
create
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
//#endregion
|
|
137
|
+
exports.default = format_classnames_default;
|
|
@@ -0,0 +1,136 @@
|
|
|
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 { buildLiteralReplacement } from "../utils/format.mjs";
|
|
4
|
+
import { splitClassList } from "../utils/boss-classes.mjs";
|
|
5
|
+
import { sortTokens } from "../utils/order.mjs";
|
|
6
|
+
import { createBossMerge } from "boss-css/merge";
|
|
7
|
+
|
|
8
|
+
//#region src/eslint-plugin/rules/format-classnames.js
|
|
9
|
+
const RULE_NAME = "format-classnames";
|
|
10
|
+
const defaultOptions = {
|
|
11
|
+
attributes: DEFAULT_ATTRIBUTE_PATTERNS,
|
|
12
|
+
callees: DEFAULT_CALLEE_PATTERNS,
|
|
13
|
+
variables: DEFAULT_VARIABLE_PATTERNS,
|
|
14
|
+
tags: DEFAULT_TAG_PATTERNS,
|
|
15
|
+
merge: {},
|
|
16
|
+
order: "improved",
|
|
17
|
+
additionalProps: []
|
|
18
|
+
};
|
|
19
|
+
const createPatterns = (options) => ({
|
|
20
|
+
attributes: compilePatterns(options.attributes),
|
|
21
|
+
callees: compilePatterns(options.callees),
|
|
22
|
+
variables: compilePatterns(options.variables),
|
|
23
|
+
tags: compilePatterns(options.tags)
|
|
24
|
+
});
|
|
25
|
+
const formatClassList = (merge, literal, options) => {
|
|
26
|
+
if (!literal.value) return null;
|
|
27
|
+
const next = sortTokens(splitClassList(merge(literal.value)), options).join(" ");
|
|
28
|
+
if (next === literal.value) return null;
|
|
29
|
+
return next;
|
|
30
|
+
};
|
|
31
|
+
const create = (context) => {
|
|
32
|
+
const sourceCode = context.getSourceCode();
|
|
33
|
+
const options = {
|
|
34
|
+
...defaultOptions,
|
|
35
|
+
...context.options[0] || {}
|
|
36
|
+
};
|
|
37
|
+
const patterns = createPatterns(options);
|
|
38
|
+
const merge = createBossMerge(options.merge || {});
|
|
39
|
+
const reportLiteral = (literal) => {
|
|
40
|
+
if (!literal || !literal.canFix) return;
|
|
41
|
+
const next = formatClassList(merge, literal, options);
|
|
42
|
+
if (!next) return;
|
|
43
|
+
context.report({
|
|
44
|
+
node: literal.node,
|
|
45
|
+
messageId: "format",
|
|
46
|
+
data: {
|
|
47
|
+
original: literal.value,
|
|
48
|
+
formatted: next
|
|
49
|
+
},
|
|
50
|
+
fix: (fixer) => fixer.replaceText(literal.node, buildLiteralReplacement(literal.node, sourceCode, next))
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
JSXAttribute(node) {
|
|
55
|
+
const name = getJSXAttributeName(node);
|
|
56
|
+
if (!name || !matchesPattern(patterns.attributes, name)) return;
|
|
57
|
+
if (!node.value) return;
|
|
58
|
+
const literals = [];
|
|
59
|
+
collectClassLiteralsFromExpression(node.value, sourceCode, literals);
|
|
60
|
+
for (const literal of literals) reportLiteral(literal);
|
|
61
|
+
},
|
|
62
|
+
CallExpression(node) {
|
|
63
|
+
const calleeName = getCalleeName(node.callee);
|
|
64
|
+
if (!calleeName || !matchesPattern(patterns.callees, calleeName)) return;
|
|
65
|
+
const literals = [];
|
|
66
|
+
for (const argument of node.arguments) collectClassLiteralsFromExpression(argument, sourceCode, literals);
|
|
67
|
+
for (const literal of literals) reportLiteral(literal);
|
|
68
|
+
},
|
|
69
|
+
VariableDeclarator(node) {
|
|
70
|
+
if (!node.id || node.id.type !== "Identifier") return;
|
|
71
|
+
if (!matchesPattern(patterns.variables, node.id.name)) return;
|
|
72
|
+
const literals = [];
|
|
73
|
+
collectClassLiteralsFromExpression(node.init, sourceCode, literals);
|
|
74
|
+
for (const literal of literals) reportLiteral(literal);
|
|
75
|
+
},
|
|
76
|
+
TaggedTemplateExpression(node) {
|
|
77
|
+
const tagName = getCalleeName(node.tag);
|
|
78
|
+
if (!tagName || !matchesPattern(patterns.tags, tagName)) return;
|
|
79
|
+
const literal = getLiteralInfo(node.quasi, sourceCode);
|
|
80
|
+
if (literal) reportLiteral(literal);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
var format_classnames_default = {
|
|
85
|
+
name: RULE_NAME,
|
|
86
|
+
meta: {
|
|
87
|
+
type: "layout",
|
|
88
|
+
docs: { description: "Normalize Boss class lists using boss-css/merge." },
|
|
89
|
+
fixable: "code",
|
|
90
|
+
schema: [{
|
|
91
|
+
type: "object",
|
|
92
|
+
additionalProperties: false,
|
|
93
|
+
properties: {
|
|
94
|
+
attributes: {
|
|
95
|
+
type: "array",
|
|
96
|
+
items: { type: "string" }
|
|
97
|
+
},
|
|
98
|
+
callees: {
|
|
99
|
+
type: "array",
|
|
100
|
+
items: { type: "string" }
|
|
101
|
+
},
|
|
102
|
+
variables: {
|
|
103
|
+
type: "array",
|
|
104
|
+
items: { type: "string" }
|
|
105
|
+
},
|
|
106
|
+
tags: {
|
|
107
|
+
type: "array",
|
|
108
|
+
items: { type: "string" }
|
|
109
|
+
},
|
|
110
|
+
merge: {
|
|
111
|
+
type: "object",
|
|
112
|
+
additionalProperties: true
|
|
113
|
+
},
|
|
114
|
+
order: {
|
|
115
|
+
type: "string",
|
|
116
|
+
enum: [
|
|
117
|
+
"none",
|
|
118
|
+
"asc",
|
|
119
|
+
"desc",
|
|
120
|
+
"official",
|
|
121
|
+
"improved"
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
additionalProps: {
|
|
125
|
+
type: "array",
|
|
126
|
+
items: { type: "string" }
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}],
|
|
130
|
+
messages: { format: "Boss class list is not normalized." }
|
|
131
|
+
},
|
|
132
|
+
create
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
//#endregion
|
|
136
|
+
export { format_classnames_default as default };
|
|
@@ -0,0 +1,119 @@
|
|
|
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/no-unknown-classes.js
|
|
6
|
+
const RULE_NAME = "no-unknown-classes";
|
|
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 reportInvalid = (literal) => {
|
|
31
|
+
if (!literal || !literal.value) return;
|
|
32
|
+
const invalid = require_boss_classes.findInvalidTokens(literal.value, options);
|
|
33
|
+
if (!invalid.length) return;
|
|
34
|
+
const preview = invalid.slice(0, 3).join(", ");
|
|
35
|
+
const remainder = invalid.length > 3 ? ` (+${invalid.length - 3} more)` : "";
|
|
36
|
+
context.report({
|
|
37
|
+
node: literal.node,
|
|
38
|
+
messageId: "invalid",
|
|
39
|
+
data: { classes: preview + remainder }
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
JSXAttribute(node) {
|
|
44
|
+
const name = require_ast.getJSXAttributeName(node);
|
|
45
|
+
if (!name || !require_ast.matchesPattern(patterns.attributes, name)) return;
|
|
46
|
+
if (!node.value) return;
|
|
47
|
+
const literals = [];
|
|
48
|
+
require_ast.collectClassLiteralsFromExpression(node.value, sourceCode, literals);
|
|
49
|
+
for (const literal of literals) reportInvalid(literal);
|
|
50
|
+
},
|
|
51
|
+
CallExpression(node) {
|
|
52
|
+
const calleeName = require_ast.getCalleeName(node.callee);
|
|
53
|
+
if (!calleeName || !require_ast.matchesPattern(patterns.callees, calleeName)) return;
|
|
54
|
+
const literals = [];
|
|
55
|
+
for (const argument of node.arguments) require_ast.collectClassLiteralsFromExpression(argument, sourceCode, literals);
|
|
56
|
+
for (const literal of literals) reportInvalid(literal);
|
|
57
|
+
},
|
|
58
|
+
VariableDeclarator(node) {
|
|
59
|
+
if (!node.id || node.id.type !== "Identifier") return;
|
|
60
|
+
if (!require_ast.matchesPattern(patterns.variables, node.id.name)) return;
|
|
61
|
+
const literals = [];
|
|
62
|
+
require_ast.collectClassLiteralsFromExpression(node.init, sourceCode, literals);
|
|
63
|
+
for (const literal of literals) reportInvalid(literal);
|
|
64
|
+
},
|
|
65
|
+
TaggedTemplateExpression(node) {
|
|
66
|
+
const tagName = require_ast.getCalleeName(node.tag);
|
|
67
|
+
if (!tagName || !require_ast.matchesPattern(patterns.tags, tagName)) return;
|
|
68
|
+
const literal = require_ast.getLiteralInfo(node.quasi, sourceCode);
|
|
69
|
+
if (literal) reportInvalid(literal);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
var no_unknown_classes_default = {
|
|
74
|
+
name: RULE_NAME,
|
|
75
|
+
meta: {
|
|
76
|
+
type: "problem",
|
|
77
|
+
docs: { description: "Disallow unknown or non-Boss class names." },
|
|
78
|
+
schema: [{
|
|
79
|
+
type: "object",
|
|
80
|
+
additionalProperties: false,
|
|
81
|
+
properties: {
|
|
82
|
+
attributes: {
|
|
83
|
+
type: "array",
|
|
84
|
+
items: { type: "string" }
|
|
85
|
+
},
|
|
86
|
+
callees: {
|
|
87
|
+
type: "array",
|
|
88
|
+
items: { type: "string" }
|
|
89
|
+
},
|
|
90
|
+
variables: {
|
|
91
|
+
type: "array",
|
|
92
|
+
items: { type: "string" }
|
|
93
|
+
},
|
|
94
|
+
tags: {
|
|
95
|
+
type: "array",
|
|
96
|
+
items: { type: "string" }
|
|
97
|
+
},
|
|
98
|
+
allowCustomContexts: { type: "boolean" },
|
|
99
|
+
additionalContexts: {
|
|
100
|
+
type: "array",
|
|
101
|
+
items: { type: "string" }
|
|
102
|
+
},
|
|
103
|
+
additionalProps: {
|
|
104
|
+
type: "array",
|
|
105
|
+
items: { type: "string" }
|
|
106
|
+
},
|
|
107
|
+
singleProps: {
|
|
108
|
+
type: "array",
|
|
109
|
+
items: { type: "string" }
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}],
|
|
113
|
+
messages: { invalid: "Invalid Boss class names: {{classes}}." }
|
|
114
|
+
},
|
|
115
|
+
create
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
//#endregion
|
|
119
|
+
exports.default = no_unknown_classes_default;
|