boss-css 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/README.md +1 -0
  2. package/dist/_virtual/rolldown_runtime.cjs +43 -0
  3. package/dist/_virtual/rolldown_runtime.mjs +20 -0
  4. package/dist/api/browser.cjs +54 -0
  5. package/dist/api/browser.mjs +48 -0
  6. package/dist/api/config.cjs +94 -0
  7. package/dist/api/config.mjs +91 -0
  8. package/dist/api/css.cjs +304 -0
  9. package/dist/api/css.mjs +303 -0
  10. package/dist/api/dictionary.cjs +218 -0
  11. package/dist/api/dictionary.mjs +215 -0
  12. package/dist/api/file/dts.cjs +21 -0
  13. package/dist/api/file/dts.mjs +21 -0
  14. package/dist/api/file/file.cjs +123 -0
  15. package/dist/api/file/file.mjs +120 -0
  16. package/dist/api/file/js.cjs +118 -0
  17. package/dist/api/file/js.mjs +116 -0
  18. package/dist/api/names.cjs +52 -0
  19. package/dist/api/names.mjs +46 -0
  20. package/dist/api/noopCss.cjs +37 -0
  21. package/dist/api/noopCss.mjs +36 -0
  22. package/dist/api/propTree.cjs +54 -0
  23. package/dist/api/propTree.mjs +48 -0
  24. package/dist/api/server.cjs +112 -0
  25. package/dist/api/server.mjs +106 -0
  26. package/dist/cli/build.cjs +1 -0
  27. package/dist/cli/build.mjs +3 -0
  28. package/dist/cli/index.cjs +30 -0
  29. package/dist/cli/index.mjs +29 -0
  30. package/dist/cli/tasks/build.cjs +24 -0
  31. package/dist/cli/tasks/build.mjs +23 -0
  32. package/dist/cli/tasks/choose.cjs +47 -0
  33. package/dist/cli/tasks/choose.mjs +46 -0
  34. package/dist/cli/tasks/compile.cjs +68 -0
  35. package/dist/cli/tasks/compile.mjs +67 -0
  36. package/dist/cli/tasks/dev.cjs +51 -0
  37. package/dist/cli/tasks/dev.mjs +48 -0
  38. package/dist/cli/tasks/init.cjs +1835 -0
  39. package/dist/cli/tasks/init.mjs +1831 -0
  40. package/dist/cli/tasks/watch.cjs +38 -0
  41. package/dist/cli/tasks/watch.mjs +37 -0
  42. package/dist/cli/templates/init.cjs +82 -0
  43. package/dist/cli/templates/init.mjs +78 -0
  44. package/dist/cli/types.cjs +13 -0
  45. package/dist/cli/types.mjs +13 -0
  46. package/dist/cli/utils.cjs +43 -0
  47. package/dist/cli/utils.mjs +41 -0
  48. package/dist/compile/classname-strategy.cjs +79 -0
  49. package/dist/compile/classname-strategy.mjs +77 -0
  50. package/dist/compile/classname.cjs +366 -0
  51. package/dist/compile/classname.mjs +360 -0
  52. package/dist/compile/index.cjs +238 -0
  53. package/dist/compile/index.mjs +235 -0
  54. package/dist/compile/jsx.cjs +803 -0
  55. package/dist/compile/jsx.mjs +800 -0
  56. package/dist/compile/prepared.cjs +88 -0
  57. package/dist/compile/prepared.mjs +87 -0
  58. package/dist/compile/runtime.cjs +33 -0
  59. package/dist/compile/runtime.mjs +32 -0
  60. package/dist/compile/transform.cjs +371 -0
  61. package/dist/compile/transform.mjs +369 -0
  62. package/dist/cx/index.cjs +93 -0
  63. package/dist/cx/index.mjs +85 -0
  64. package/dist/detect-fw/index.cjs +384 -0
  65. package/dist/detect-fw/index.mjs +379 -0
  66. package/dist/dev/client.cjs +39 -0
  67. package/dist/dev/client.mjs +38 -0
  68. package/dist/dev/plugin/browser.cjs +11 -0
  69. package/dist/dev/plugin/browser.mjs +9 -0
  70. package/dist/dev/plugin/server.cjs +86 -0
  71. package/dist/dev/plugin/server.mjs +78 -0
  72. package/dist/dev/port.cjs +46 -0
  73. package/dist/dev/port.mjs +43 -0
  74. package/dist/dev/runtime.cjs +28 -0
  75. package/dist/dev/runtime.mjs +29 -0
  76. package/dist/dev/server.cjs +808 -0
  77. package/dist/dev/server.mjs +805 -0
  78. package/dist/dev/shared.cjs +6 -0
  79. package/dist/dev/shared.mjs +5 -0
  80. package/dist/eslint-plugin/index.cjs +66 -0
  81. package/dist/eslint-plugin/index.mjs +66 -0
  82. package/dist/eslint-plugin/rules/classnames-only.cjs +68 -0
  83. package/dist/eslint-plugin/rules/classnames-only.mjs +68 -0
  84. package/dist/eslint-plugin/rules/format-classnames.cjs +137 -0
  85. package/dist/eslint-plugin/rules/format-classnames.mjs +136 -0
  86. package/dist/eslint-plugin/rules/no-unknown-classes.cjs +119 -0
  87. package/dist/eslint-plugin/rules/no-unknown-classes.mjs +119 -0
  88. package/dist/eslint-plugin/rules/prefer-classnames.cjs +69 -0
  89. package/dist/eslint-plugin/rules/prefer-classnames.mjs +69 -0
  90. package/dist/eslint-plugin/rules/prefer-token-values.cjs +197 -0
  91. package/dist/eslint-plugin/rules/prefer-token-values.mjs +197 -0
  92. package/dist/eslint-plugin/rules/props-only.cjs +115 -0
  93. package/dist/eslint-plugin/rules/props-only.mjs +115 -0
  94. package/dist/eslint-plugin/rules/redundant-cx.cjs +66 -0
  95. package/dist/eslint-plugin/rules/redundant-cx.mjs +66 -0
  96. package/dist/eslint-plugin/rules/require-prop-functions.cjs +130 -0
  97. package/dist/eslint-plugin/rules/require-prop-functions.mjs +130 -0
  98. package/dist/eslint-plugin/utils/api.cjs +30 -0
  99. package/dist/eslint-plugin/utils/api.mjs +29 -0
  100. package/dist/eslint-plugin/utils/ast.cjs +119 -0
  101. package/dist/eslint-plugin/utils/ast.mjs +112 -0
  102. package/dist/eslint-plugin/utils/boss-classes.cjs +185 -0
  103. package/dist/eslint-plugin/utils/boss-classes.mjs +175 -0
  104. package/dist/eslint-plugin/utils/defaults.cjs +99 -0
  105. package/dist/eslint-plugin/utils/defaults.mjs +93 -0
  106. package/dist/eslint-plugin/utils/format.cjs +20 -0
  107. package/dist/eslint-plugin/utils/format.mjs +19 -0
  108. package/dist/eslint-plugin/utils/order.cjs +76 -0
  109. package/dist/eslint-plugin/utils/order.mjs +76 -0
  110. package/dist/eslint-plugin/utils/property-order.cjs +449 -0
  111. package/dist/eslint-plugin/utils/property-order.mjs +448 -0
  112. package/dist/eslint-plugin/utils/static.cjs +36 -0
  113. package/dist/eslint-plugin/utils/static.mjs +35 -0
  114. package/dist/fontsource/directory.cjs +39588 -0
  115. package/dist/fontsource/directory.mjs +39587 -0
  116. package/dist/fontsource/server.cjs +291 -0
  117. package/dist/fontsource/server.mjs +282 -0
  118. package/dist/index.cjs +10 -0
  119. package/dist/index.mjs +6 -0
  120. package/dist/log/browser.cjs +28 -0
  121. package/dist/log/browser.mjs +28 -0
  122. package/dist/log/server.cjs +32 -0
  123. package/dist/log/server.mjs +30 -0
  124. package/dist/merge/index.cjs +590 -0
  125. package/dist/merge/index.mjs +586 -0
  126. package/dist/native/browser.cjs +78 -0
  127. package/dist/native/browser.mjs +77 -0
  128. package/dist/native/server.cjs +180 -0
  129. package/dist/native/server.mjs +176 -0
  130. package/dist/native/styleTypes.cjs +168 -0
  131. package/dist/native/styleTypes.mjs +164 -0
  132. package/dist/parser/classname/server.cjs +239 -0
  133. package/dist/parser/classname/server.mjs +232 -0
  134. package/dist/parser/jsx/browser.cjs +66 -0
  135. package/dist/parser/jsx/browser.mjs +63 -0
  136. package/dist/parser/jsx/extractCode.cjs +99 -0
  137. package/dist/parser/jsx/extractCode.mjs +98 -0
  138. package/dist/parser/jsx/extractPrepared.cjs +123 -0
  139. package/dist/parser/jsx/extractPrepared.mjs +122 -0
  140. package/dist/parser/jsx/extractProps.cjs +234 -0
  141. package/dist/parser/jsx/extractProps.mjs +232 -0
  142. package/dist/parser/jsx/isDOMProp.cjs +17 -0
  143. package/dist/parser/jsx/isDOMProp.mjs +15 -0
  144. package/dist/parser/jsx/native.cjs +110 -0
  145. package/dist/parser/jsx/native.mjs +108 -0
  146. package/dist/parser/jsx/runtime.cjs +4 -0
  147. package/dist/parser/jsx/runtime.mjs +3 -0
  148. package/dist/parser/jsx/server.cjs +278 -0
  149. package/dist/parser/jsx/server.mjs +268 -0
  150. package/dist/postcss/index.cjs +16 -0
  151. package/dist/postcss/index.mjs +16 -0
  152. package/dist/prop/at/runtime-only.cjs +90 -0
  153. package/dist/prop/at/runtime-only.mjs +88 -0
  154. package/dist/prop/at/server.cjs +282 -0
  155. package/dist/prop/at/server.mjs +268 -0
  156. package/dist/prop/at/shared.cjs +153 -0
  157. package/dist/prop/at/shared.mjs +144 -0
  158. package/dist/prop/bosswind/browser.cjs +18 -0
  159. package/dist/prop/bosswind/browser.mjs +16 -0
  160. package/dist/prop/bosswind/runtime-only.cjs +18 -0
  161. package/dist/prop/bosswind/runtime-only.mjs +16 -0
  162. package/dist/prop/bosswind/server.cjs +81 -0
  163. package/dist/prop/bosswind/server.mjs +72 -0
  164. package/dist/prop/bosswind/shared.cjs +861 -0
  165. package/dist/prop/bosswind/shared.mjs +855 -0
  166. package/dist/prop/bosswind/tailwind-theme.cjs +703 -0
  167. package/dist/prop/bosswind/tailwind-theme.mjs +702 -0
  168. package/dist/prop/child/runtime-only.cjs +18 -0
  169. package/dist/prop/child/runtime-only.mjs +15 -0
  170. package/dist/prop/child/server.cjs +81 -0
  171. package/dist/prop/child/server.mjs +72 -0
  172. package/dist/prop/css/getDtsTemplate.cjs +65 -0
  173. package/dist/prop/css/getDtsTemplate.mjs +63 -0
  174. package/dist/prop/css/runtime-only.cjs +14 -0
  175. package/dist/prop/css/runtime-only.mjs +13 -0
  176. package/dist/prop/css/server.cjs +99 -0
  177. package/dist/prop/css/server.mjs +90 -0
  178. package/dist/prop/pseudo/runtime-only.cjs +23 -0
  179. package/dist/prop/pseudo/runtime-only.mjs +21 -0
  180. package/dist/prop/pseudo/server.cjs +91 -0
  181. package/dist/prop/pseudo/server.mjs +82 -0
  182. package/dist/prop/pseudo/shared.cjs +61 -0
  183. package/dist/prop/pseudo/shared.mjs +60 -0
  184. package/dist/reset/server.cjs +34 -0
  185. package/dist/reset/server.mjs +26 -0
  186. package/dist/runtime/index.cjs +119 -0
  187. package/dist/runtime/index.mjs +118 -0
  188. package/dist/runtime/preact.cjs +4 -0
  189. package/dist/runtime/preact.mjs +3 -0
  190. package/dist/runtime/qwik.cjs +21 -0
  191. package/dist/runtime/qwik.mjs +18 -0
  192. package/dist/runtime/react.cjs +4 -0
  193. package/dist/runtime/react.mjs +3 -0
  194. package/dist/runtime/solid.cjs +15 -0
  195. package/dist/runtime/solid.mjs +14 -0
  196. package/dist/runtime/stencil.cjs +25 -0
  197. package/dist/runtime/stencil.mjs +21 -0
  198. package/dist/runtime/style.cjs +14 -0
  199. package/dist/runtime/style.mjs +13 -0
  200. package/dist/shared/boundaries.cjs +288 -0
  201. package/dist/shared/boundaries.mjs +285 -0
  202. package/dist/shared/customCss.cjs +212 -0
  203. package/dist/shared/customCss.mjs +211 -0
  204. package/dist/shared/debug.cjs +76 -0
  205. package/dist/shared/debug.mjs +74 -0
  206. package/dist/shared/file.cjs +21 -0
  207. package/dist/shared/file.mjs +19 -0
  208. package/dist/shared/framework.cjs +10 -0
  209. package/dist/shared/framework.mjs +9 -0
  210. package/dist/shared/json.cjs +58 -0
  211. package/dist/shared/json.mjs +57 -0
  212. package/dist/shared/types.cjs +11 -0
  213. package/dist/shared/types.mjs +10 -0
  214. package/dist/strategy/classic/runtime-only.cjs +190 -0
  215. package/dist/strategy/classic/runtime-only.mjs +186 -0
  216. package/dist/strategy/classname-first/runtime-only.cjs +138 -0
  217. package/dist/strategy/classname-first/runtime-only.mjs +134 -0
  218. package/dist/strategy/classname-first/server.cjs +139 -0
  219. package/dist/strategy/classname-first/server.mjs +133 -0
  220. package/dist/strategy/classname-only/server.cjs +43 -0
  221. package/dist/strategy/classname-only/server.mjs +35 -0
  222. package/dist/strategy/inline-first/browser.cjs +61 -0
  223. package/dist/strategy/inline-first/browser.mjs +58 -0
  224. package/dist/strategy/inline-first/runtime-only.cjs +159 -0
  225. package/dist/strategy/inline-first/runtime-only.mjs +155 -0
  226. package/dist/strategy/inline-first/server.cjs +92 -0
  227. package/dist/strategy/inline-first/server.mjs +83 -0
  228. package/dist/strategy/runtime/runtime-only.cjs +24 -0
  229. package/dist/strategy/runtime/runtime-only.mjs +22 -0
  230. package/dist/strategy/runtime/server.cjs +72 -0
  231. package/dist/strategy/runtime/server.mjs +63 -0
  232. package/dist/strategy/runtime-only/css.cjs +183 -0
  233. package/dist/strategy/runtime-only/css.mjs +181 -0
  234. package/dist/tasks/build.cjs +88 -0
  235. package/dist/tasks/build.mjs +84 -0
  236. package/dist/tasks/compile.cjs +12 -0
  237. package/dist/tasks/compile.mjs +12 -0
  238. package/dist/tasks/postcss.cjs +116 -0
  239. package/dist/tasks/postcss.mjs +113 -0
  240. package/dist/tasks/session.cjs +46 -0
  241. package/dist/tasks/session.mjs +42 -0
  242. package/dist/tasks/watch.cjs +102 -0
  243. package/dist/tasks/watch.mjs +99 -0
  244. package/dist/transform/cache.cjs +24 -0
  245. package/dist/transform/cache.mjs +21 -0
  246. package/dist/transform/processFile.cjs +26 -0
  247. package/dist/transform/processFile.mjs +24 -0
  248. package/dist/use/token/browser.cjs +65 -0
  249. package/dist/use/token/browser.mjs +61 -0
  250. package/dist/use/token/runtime-only.cjs +245 -0
  251. package/dist/use/token/runtime-only.mjs +239 -0
  252. package/dist/use/token/server.cjs +325 -0
  253. package/dist/use/token/server.mjs +313 -0
  254. package/dist/use/token/vars.cjs +47 -0
  255. package/dist/use/token/vars.mjs +46 -0
  256. package/package.json +300 -4
  257. package/src/api/config.d.ts +1 -0
  258. package/src/fontsource/types.d.ts +50 -0
  259. package/src/packages/document-create-element/createElement.browser.js +3 -0
  260. package/src/packages/document-create-element/createElement.js +7 -0
  261. package/src/packages/document-create-element/package.json +17 -0
  262. package/src/packages/is-css-prop/browser.js +13 -0
  263. package/src/packages/is-css-prop/index.js +13 -0
  264. package/src/packages/is-css-prop/package-lock.json +52 -0
  265. package/src/packages/is-css-prop/package.json +17 -0
  266. package/src/prop/css/csstype.json +4387 -0
  267. package/src/prop/css/package.json +3 -0
  268. package/src/reset/reset.css +259 -0
@@ -0,0 +1,6 @@
1
+
2
+ //#region src/dev/shared.ts
3
+ const DEFAULT_DEV_PORT = 48400;
4
+
5
+ //#endregion
6
+ exports.DEFAULT_DEV_PORT = DEFAULT_DEV_PORT;
@@ -0,0 +1,5 @@
1
+ //#region src/dev/shared.ts
2
+ const DEFAULT_DEV_PORT = 48400;
3
+
4
+ //#endregion
5
+ export { DEFAULT_DEV_PORT };
@@ -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;