@culur/config-stylelint 1.7.0 → 1.7.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 (87) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/{factory-wCIsmB0H.mjs → factory-B33e_UAZ.mjs} +4 -13
  3. package/dist/factory-B33e_UAZ.mjs.map +1 -0
  4. package/dist/{factory-BTQtj5HJ.cjs → factory-BNS_YTTh.cjs} +4 -13
  5. package/dist/factory-BNS_YTTh.cjs.map +1 -0
  6. package/dist/factory.cjs +1 -1
  7. package/dist/factory.d.cts +0 -1
  8. package/dist/factory.d.mts +0 -1
  9. package/dist/factory.mjs +1 -1
  10. package/dist/shareable-configs/auto.cjs +1 -1
  11. package/dist/shareable-configs/auto.cjs.map +1 -1
  12. package/dist/shareable-configs/auto.d.cts +1 -3
  13. package/dist/shareable-configs/auto.d.mts +1 -3
  14. package/dist/shareable-configs/auto.mjs +1 -1
  15. package/dist/shareable-configs/auto.mjs.map +1 -1
  16. package/dist/shareable-configs/none.cjs +1 -1
  17. package/dist/shareable-configs/none.cjs.map +1 -1
  18. package/dist/shareable-configs/none.d.cts +1 -3
  19. package/dist/shareable-configs/none.d.mts +1 -3
  20. package/dist/shareable-configs/none.mjs +1 -1
  21. package/dist/shareable-configs/none.mjs.map +1 -1
  22. package/dist/shareable-configs/sass-vue.cjs +1 -1
  23. package/dist/shareable-configs/sass-vue.cjs.map +1 -1
  24. package/dist/shareable-configs/sass-vue.d.cts +1 -3
  25. package/dist/shareable-configs/sass-vue.d.mts +1 -3
  26. package/dist/shareable-configs/sass-vue.mjs +1 -1
  27. package/dist/shareable-configs/sass-vue.mjs.map +1 -1
  28. package/dist/shareable-configs/sass.cjs +1 -1
  29. package/dist/shareable-configs/sass.cjs.map +1 -1
  30. package/dist/shareable-configs/sass.d.cts +1 -3
  31. package/dist/shareable-configs/sass.d.mts +1 -3
  32. package/dist/shareable-configs/sass.mjs +1 -1
  33. package/dist/shareable-configs/sass.mjs.map +1 -1
  34. package/dist/shareable-configs/tailwind3-sass-vue.cjs +1 -1
  35. package/dist/shareable-configs/tailwind3-sass-vue.cjs.map +1 -1
  36. package/dist/shareable-configs/tailwind3-sass-vue.d.cts +1 -3
  37. package/dist/shareable-configs/tailwind3-sass-vue.d.mts +1 -3
  38. package/dist/shareable-configs/tailwind3-sass-vue.mjs +1 -1
  39. package/dist/shareable-configs/tailwind3-sass-vue.mjs.map +1 -1
  40. package/dist/shareable-configs/tailwind3-sass.cjs +1 -1
  41. package/dist/shareable-configs/tailwind3-sass.cjs.map +1 -1
  42. package/dist/shareable-configs/tailwind3-sass.d.cts +1 -3
  43. package/dist/shareable-configs/tailwind3-sass.d.mts +1 -3
  44. package/dist/shareable-configs/tailwind3-sass.mjs +1 -1
  45. package/dist/shareable-configs/tailwind3-sass.mjs.map +1 -1
  46. package/dist/shareable-configs/tailwind3.cjs +1 -1
  47. package/dist/shareable-configs/tailwind3.cjs.map +1 -1
  48. package/dist/shareable-configs/tailwind3.d.cts +1 -3
  49. package/dist/shareable-configs/tailwind3.d.mts +1 -3
  50. package/dist/shareable-configs/tailwind3.mjs +1 -1
  51. package/dist/shareable-configs/tailwind3.mjs.map +1 -1
  52. package/dist/shareable-configs/tailwind4-vue.cjs +1 -1
  53. package/dist/shareable-configs/tailwind4-vue.cjs.map +1 -1
  54. package/dist/shareable-configs/tailwind4-vue.d.cts +1 -3
  55. package/dist/shareable-configs/tailwind4-vue.d.mts +1 -3
  56. package/dist/shareable-configs/tailwind4-vue.mjs +1 -1
  57. package/dist/shareable-configs/tailwind4-vue.mjs.map +1 -1
  58. package/dist/shareable-configs/tailwind4.cjs +1 -1
  59. package/dist/shareable-configs/tailwind4.cjs.map +1 -1
  60. package/dist/shareable-configs/tailwind4.d.cts +1 -3
  61. package/dist/shareable-configs/tailwind4.d.mts +1 -3
  62. package/dist/shareable-configs/tailwind4.mjs +1 -1
  63. package/dist/shareable-configs/tailwind4.mjs.map +1 -1
  64. package/dist/shareable-configs/vue.cjs +1 -1
  65. package/dist/shareable-configs/vue.cjs.map +1 -1
  66. package/dist/shareable-configs/vue.d.cts +1 -3
  67. package/dist/shareable-configs/vue.d.mts +1 -3
  68. package/dist/shareable-configs/vue.mjs +1 -1
  69. package/dist/shareable-configs/vue.mjs.map +1 -1
  70. package/package.json +8 -8
  71. package/src/configs/css.test.ts +8 -0
  72. package/src/configs/scss.test.ts +7 -0
  73. package/src/configs/shared.test.ts +7 -0
  74. package/src/configs/vue.test.ts +17 -0
  75. package/src/factory.test.ts +30 -0
  76. package/src/rules/at-rule-no-unknown.test.ts +48 -0
  77. package/src/rules/declaration-block-no-redundant-longhand-properties.test.ts +36 -0
  78. package/src/rules/dollar-variable-pattern.test.ts +27 -0
  79. package/src/rules/function-no-unknown.test.ts +44 -0
  80. package/src/rules/import-notation.test.ts +16 -0
  81. package/src/rules/order.test.ts +53 -0
  82. package/src/rules/selector-pseudo-class-no-unknown.test.ts +40 -0
  83. package/src/shareable-configs/shareable-configs.test.ts +25 -0
  84. package/src/utils/utils.test.ts +46 -0
  85. package/src/utils/utils.ts +1 -4
  86. package/dist/factory-BTQtj5HJ.cjs.map +0 -1
  87. package/dist/factory-wCIsmB0H.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory-BTQtj5HJ.cjs","names":[],"sources":["../src/utils/utils.ts","../src/rules/at-rule-no-unknown.ts","../src/rules/declaration-block-no-redundant-longhand-properties.ts","../src/rules/function-no-unknown.ts","../src/rules/import-notation.ts","../src/rules/order.ts","../src/rules/selector-pseudo-class-no-unknown.ts","../src/configs/css.ts","../src/rules/dollar-variable-pattern.ts","../src/configs/scss.ts","../src/configs/shared.ts","../src/configs/vue.ts","../src/factory.ts"],"sourcesContent":["import type { Config, ConfigRuleSettings } from 'stylelint';\n\n// import type Primary, Secondary from stylelint\n\ntype StringOrRegex = string | RegExp;\ntype OneOrMany<S> = S | S[];\n\nexport type Primary =\n | number\n | true\n | OneOrMany<StringOrRegex>\n | Record<string, any>;\nexport type Secondary = Record<string, any>;\n\nexport const defineRule = <\n PrimaryOption extends Primary,\n SecondaryOptions extends Secondary = object,\n>(\n rule: ConfigRuleSettings<PrimaryOption, SecondaryOptions>,\n) => rule;\n\nexport const defineRules = <TRules extends Config['rules']>(rule: TRules) =>\n rule;\n\n// clone function mergeConfigs from stylelint repository\nexport const mergeConfigs = (\n ...configsOrNull: (Config | undefined | null | false)[]\n) => {\n const configs = configsOrNull.filter((c): c is Config => !!c);\n\n return {\n plugins: [...new Set(configs.flatMap(c => c.plugins ?? []))],\n overrides: [...new Set(configs.flatMap(c => c.overrides ?? []))],\n extends: configs\n .flatMap(c => c.extends ?? [])\n .filter((item, index, arr) => arr.lastIndexOf(item) === index),\n rules: configs.reduce(\n (acc, config) => ({ ...acc, ...config.rules }),\n {} as Config['rules'],\n ),\n ...configs.reduce(\n (\n acc,\n { plugins: _p, overrides: _o, extends: _e, rules: _r, ...config },\n ) => ({ ...acc, ...config }),\n {} as Config,\n ),\n };\n};\n\nexport const isInRange = (\n version: false | number | undefined,\n ...versions: number[]\n) => typeof version === 'number' && versions.includes(version);\n","import type { Packages } from '@culur/utils-packages';\nimport { defineRule, defineRules } from '~/utils';\n\nconst getIgnoreAtRulesByTailwindVersion = (\n tailwindVersion: false | number | undefined,\n) => {\n switch (tailwindVersion) {\n // https://tailwindcss-v0.netlify.app//docs/functions-and-directives\n case 0:\n return [\n // Directives\n 'tailwind',\n 'apply',\n\n 'variants',\n 'responsive',\n 'screen',\n ];\n\n // https://v1.tailwindcss.com/docs/functions-and-directives\n // https://v2.tailwindcss.com/docs/functions-and-directives\n case 1:\n case 2:\n return [\n // Directives\n 'tailwind',\n 'apply',\n 'layer', // new\n\n 'variants',\n 'responsive',\n 'screen',\n ];\n\n // https://v3.tailwindcss.com/docs/functions-and-directives\n case 3:\n return [\n // Directives\n 'tailwind',\n 'layer',\n 'apply',\n 'config', // new\n ];\n\n // https://tailwindcss.com/docs/functions-and-directives\n case 4:\n return [\n // Directives\n 'import',\n 'theme',\n 'source',\n 'utility',\n 'variant',\n 'custom-variant',\n 'apply',\n 'reference',\n\n // Compatibility\n 'config',\n 'plugin',\n ];\n\n default:\n return [];\n }\n};\n\nexport const atRuleNoUnknownRule = (packages: Partial<Packages>) =>\n defineRule<true, { ignoreAtRules: (string | RegExp)[] }>([\n true,\n { ignoreAtRules: getIgnoreAtRulesByTailwindVersion(packages.tailwind) },\n ]);\n\nexport const atRuleNoUnknownCSS = (packages: Partial<Packages>) =>\n defineRules({\n 'at-rule-no-unknown': atRuleNoUnknownRule(packages),\n });\n\nexport const atRuleNoUnknownSCSS = (packages: Partial<Packages>) =>\n defineRules({\n 'at-rule-no-unknown': null,\n 'scss/at-rule-no-unknown': atRuleNoUnknownRule(packages),\n });\n","import { defineRule, defineRules } from '~/utils';\n\nexport const declarationBlockNoRedundantLonghandPropertiesRule = defineRule<\n true,\n { ignoreShorthands?: (string | RegExp)[] }\n>([true, { ignoreShorthands: ['grid-template'] }]);\n\nexport const declarationBlockNoRedundantLonghandProperties = defineRules({\n 'declaration-block-no-redundant-longhand-properties':\n declarationBlockNoRedundantLonghandPropertiesRule,\n});\n","import type { Packages } from '@culur/utils-packages';\nimport { defineRule, defineRules } from '~/utils';\n\nconst getIgnoreFunctionsByTailwindVersion = (\n tailwindVersion: false | number | undefined,\n) => {\n switch (tailwindVersion) {\n // https://tailwindcss-v0.netlify.app//docs/functions-and-directives\n case 0:\n return ['config'];\n\n // https://v1.tailwindcss.com/docs/functions-and-directives\n case 1:\n return ['theme'];\n\n // https://v2.tailwindcss.com/docs/functions-and-directives\n case 2:\n return ['screen', 'theme'];\n\n // https://v3.tailwindcss.com/docs/functions-and-directives\n case 3:\n return ['theme', 'screen'];\n\n // https://tailwindcss.com/docs/functions-and-directives\n case 4:\n return ['--alpha', '--spacing', 'theme'];\n\n default:\n return [];\n }\n};\n\nconst sassFunctionRegex = /^(list|math|color)\\..+/;\nconst getIgnoreFunctions = (packages: Partial<Packages>) => [\n // https://tailwindcss.com\n ...getIgnoreFunctionsByTailwindVersion(packages.tailwind),\n\n // https://sass-lang.com/documentation/modules/list\n // https://sass-lang.com/documentation/modules/math\n // https://sass-lang.com/documentation/modules/color\n ...(packages.sass //\n ? [sassFunctionRegex]\n : []),\n\n // https://vuejs.org/api/sfc-css-features.html#v-bind-in-css\n ...(packages.vue //\n ? ['v-bind']\n : []),\n];\n\nexport function functionNoUnknownRule(packages: Partial<Packages>) {\n return defineRule<true, { ignoreFunctions: (string | RegExp)[] }>([\n true,\n { ignoreFunctions: getIgnoreFunctions(packages) },\n ]);\n}\n\nexport const functionNoUnknown = (packages: Partial<Packages>) =>\n defineRules({\n 'function-no-unknown': functionNoUnknownRule(packages),\n });\n","import type { Packages } from '@culur/utils-packages';\nimport { defineRules, isInRange } from '~/utils';\n\nexport const importNotationCSS = (packages: Partial<Packages>) =>\n defineRules(\n isInRange(packages.tailwind, 4) //\n ? { 'import-notation': null }\n : {},\n );\n","import type { Packages } from '@culur/utils-packages';\nimport { defineRule, defineRules, isInRange } from '~/utils';\n\n// https://github.com/hudochenkov/stylelint-order/blob/master/rules/order/README.md#options\n\ntype Keyword =\n | 'custom-properties' /**/ // Custom properties (e.g. --property: 10px;)\n | 'dollar-variables' /***/ // Dollar variables (e.g. $variable)\n | 'at-variables' /*******/ // At-variables (e.g. @variable available in Less syntax)\n | 'declarations' /*******/ // CSS declarations (e.g. display: block)\n | 'rules' /**************/ // Nested rules (e.g. a { span {} })\n | 'at-rules' /***********/ // Nested at-rules (e.g. div { @media () {} })\n | 'less-mixins'; /*******/ // Mixins in Less syntax (e.g. .mixin();)\n\ninterface AtRule {\n type: 'at-rule';\n name?: string;\n parameter?: string | RegExp;\n hasBlock?: boolean;\n}\n\ninterface Rule {\n type: 'rule';\n selector?: string | RegExp;\n name?: string;\n}\n\ntype PrimaryOption = Array<Keyword | AtRule | Rule>;\ninterface SecondaryOptions {\n unspecified?: 'top' | 'bottom' | 'ignore';\n}\n\nconst definePrimaryOption = (...options: (PrimaryOption[number] | false | undefined)[]) =>\n options.filter((option): option is PrimaryOption[number] => !!option);\n\nconst blockRuleRegex = /^&::[\\w-]+/;\n\nexport const orderRule = (packages: Partial<Packages>) =>\n defineRule<PrimaryOption, SecondaryOptions>([\n definePrimaryOption(\n //! import\n packages.sass /**********************************/ && { type: 'at-rule', name: 'use' }, // scss: @use 'path/path';\n packages.sass /**********************************/ && { type: 'at-rule', name: 'forward' }, // scss: @forward 'path/path';\n packages.sass /**********************************/ && { type: 'at-rule', name: 'import' }, // scss: @import 'path/path';\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'import' }, // tailwind 4: @import \"tailwindcss\";\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'source' }, // tailwind 4: @source \"../node_modules/@culur/ui-lib\";\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'reference' }, // tailwind 4: @reference \"../../app.css\";\n\n //! root\n isInRange(packages.tailwind, 0, 1, 2, 3) /*******/ && { type: 'at-rule', name: 'tailwind' }, // tailwind 0,1,2,3 : @tailwind base;\n isInRange(packages.tailwind, 3, 4) /*************/ && { type: 'at-rule', name: 'config' }, // tailwind 3,4: @config 'tailwind.custom.config.js'\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'plugin' }, // tailwind 4: @plugin '@tailwindcss/typography'\n isInRange(packages.tailwind, 1, 2, 3) /**********/ && { type: 'at-rule', name: 'layer' }, // tailwind 1,2,3 : @layer base {}\n\n //! variables\n 'dollar-variables', // css: $variable: 10px;\n 'at-variables', // css: @variable: 10px;\n { type: 'at-rule', hasBlock: false }, // css: @variable: 10px;\n 'custom-properties', // css: --property: 10px;\n\n //! tailwind\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'theme' }, // tailwind 4: @theme {}\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'custom-variant' }, // tailwind 4: @custom-variant pointer-coarse (@media (pointer: coarse));\n\n //! functions, methods\n packages.sass /**********************************/ && { type: 'at-rule', name: 'function' }, // scss: @function sum() {}\n packages.sass /**********************************/ && { type: 'at-rule', name: 'mixin' }, // scss: @mixin mixin-name {}\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'utility' }, // tailwind 4: @utility tab-4 { tab-size: 4; }\n\n //! declarations\n packages.sass /**********************************/ && { type: 'at-rule', name: 'extend' }, // scss: @extend .class-name;\n packages.sass /**********************************/ && { type: 'at-rule', name: 'include' }, // scss: @include mixin-name;\n isInRange(packages.tailwind, 0, 1, 2, 3, 4) /****/ && { type: 'at-rule', name: 'apply' }, // tailwind 0,1,2,3,4: @apply p-3;\n 'less-mixins', // less: .mixin();\n 'declarations', // css: display: block;\n\n //! block rules\n { type: 'rule', selector: blockRuleRegex }, // css: &::after {}\n 'rules', // css: child-component {}\n\n //! blocks nested\n packages.sass && { type: 'at-rule', name: 'at-root' }, // scss: @at-root selector { /* content */ }\n isInRange(packages.tailwind, 0, 1, 2) /**********/ && { type: 'at-rule', name: 'responsive' }, // tailwind 0,1,2 : @responsive {}\n isInRange(packages.tailwind, 0, 1, 2) /**********/ && { type: 'at-rule', name: 'variants' }, // tailwind 0,1,2 : @variants hover {}\n isInRange(packages.tailwind, 0, 1, 2) /**********/ && { type: 'at-rule', name: 'screen' }, // tailwind 0,1,2 : @screen sm {}\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'variants' }, // tailwind 4: @variant dark {}\n { type: 'at-rule', hasBlock: true }, // css: @media () {}\n ),\n {\n unspecified: 'bottom',\n },\n ]);\n\nexport const order = (packages: Partial<Packages>) =>\n defineRules({\n 'order/order': orderRule(packages),\n });\n","import { defineRule, defineRules } from '~/utils';\n\nexport const selectorPseudoClassNoUnknownRule = defineRule<\n true,\n { ignorePseudoClasses?: (string | RegExp)[] }\n>([true, { ignorePseudoClasses: ['global', 'local'] }]);\n\nexport const selectorPseudoClassNoUnknown = defineRules({\n 'selector-pseudo-class-no-unknown': selectorPseudoClassNoUnknownRule,\n});\n","import type { Packages } from '@culur/utils-packages';\nimport type { Config } from 'stylelint';\nimport { atRuleNoUnknownCSS } from '~/rules/at-rule-no-unknown';\nimport { declarationBlockNoRedundantLonghandProperties } from '~/rules/declaration-block-no-redundant-longhand-properties';\nimport { functionNoUnknown } from '~/rules/function-no-unknown';\nimport { importNotationCSS } from '~/rules/import-notation';\nimport { order } from '~/rules/order';\nimport { selectorPseudoClassNoUnknown } from '~/rules/selector-pseudo-class-no-unknown';\n\nexport const configCss = (packages: Partial<Packages>): Config => ({\n extends: ['stylelint-config-standard', 'stylelint-config-clean-order'],\n plugins: ['stylelint-order', 'stylelint-selector-bem-pattern'],\n rules: {\n ...atRuleNoUnknownCSS(packages),\n ...declarationBlockNoRedundantLonghandProperties,\n ...functionNoUnknown(packages),\n ...importNotationCSS(packages),\n ...order(packages),\n ...selectorPseudoClassNoUnknown,\n 'declaration-empty-line-before': null,\n },\n});\n","import { defineRule, defineRules } from '~/utils';\n\ntype PrimaryOption = string;\ninterface SecondaryOptions {\n message: string;\n}\n\nexport const dollarVariablePatternRule = defineRule<\n PrimaryOption,\n SecondaryOptions\n>([\n '^(-{0,2}?[a-z][a-z0-9]*)(-[a-z0-9]+)*$',\n { message: 'Expected variable to be kebab-case' },\n]);\n\nexport const dollarVariablePatternSCSS = defineRules({\n 'scss/dollar-variable-pattern': dollarVariablePatternRule,\n});\n","import type { Packages } from '@culur/utils-packages';\nimport type { Config } from 'stylelint';\nimport { atRuleNoUnknownSCSS } from '~/rules/at-rule-no-unknown';\nimport { dollarVariablePatternSCSS } from '~/rules/dollar-variable-pattern';\n\nexport const configScss = (packages: Partial<Packages>): Config => ({\n extends: ['stylelint-config-standard-scss'],\n rules: {\n ...atRuleNoUnknownSCSS(packages),\n ...dollarVariablePatternSCSS,\n },\n});\n","import type { Config } from 'stylelint';\n\nexport const configShared = (): Config => ({\n extends: ['stylelint-config-html'],\n});\n","import type { Packages } from '@culur/utils-packages';\nimport type { Config } from 'stylelint';\n\nexport const configVue = (packages: Partial<Packages>): Config => ({\n extends: [\n packages.sass\n ? 'stylelint-config-standard-vue/scss'\n : 'stylelint-config-standard-vue',\n ],\n});\n","import type { Packages } from '@culur/utils-packages';\nimport type { Config } from 'stylelint';\nimport { configCss } from './configs/css';\nimport { configScss } from './configs/scss';\nimport { configShared } from './configs/shared';\nimport { configVue } from './configs/vue';\nimport { mergeConfigs } from './utils';\n\nexport default function defineConfig(\n packages?: Partial<Packages>,\n config?: Config,\n): Config {\n const packages_ = packages ?? {};\n\n return mergeConfigs(\n configShared(),\n configCss(packages_),\n packages_.sass && configScss(packages_),\n packages_.vue && configVue(packages_),\n config,\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory-wCIsmB0H.mjs","names":[],"sources":["../src/utils/utils.ts","../src/rules/at-rule-no-unknown.ts","../src/rules/declaration-block-no-redundant-longhand-properties.ts","../src/rules/function-no-unknown.ts","../src/rules/import-notation.ts","../src/rules/order.ts","../src/rules/selector-pseudo-class-no-unknown.ts","../src/configs/css.ts","../src/rules/dollar-variable-pattern.ts","../src/configs/scss.ts","../src/configs/shared.ts","../src/configs/vue.ts","../src/factory.ts"],"sourcesContent":["import type { Config, ConfigRuleSettings } from 'stylelint';\n\n// import type Primary, Secondary from stylelint\n\ntype StringOrRegex = string | RegExp;\ntype OneOrMany<S> = S | S[];\n\nexport type Primary =\n | number\n | true\n | OneOrMany<StringOrRegex>\n | Record<string, any>;\nexport type Secondary = Record<string, any>;\n\nexport const defineRule = <\n PrimaryOption extends Primary,\n SecondaryOptions extends Secondary = object,\n>(\n rule: ConfigRuleSettings<PrimaryOption, SecondaryOptions>,\n) => rule;\n\nexport const defineRules = <TRules extends Config['rules']>(rule: TRules) =>\n rule;\n\n// clone function mergeConfigs from stylelint repository\nexport const mergeConfigs = (\n ...configsOrNull: (Config | undefined | null | false)[]\n) => {\n const configs = configsOrNull.filter((c): c is Config => !!c);\n\n return {\n plugins: [...new Set(configs.flatMap(c => c.plugins ?? []))],\n overrides: [...new Set(configs.flatMap(c => c.overrides ?? []))],\n extends: configs\n .flatMap(c => c.extends ?? [])\n .filter((item, index, arr) => arr.lastIndexOf(item) === index),\n rules: configs.reduce(\n (acc, config) => ({ ...acc, ...config.rules }),\n {} as Config['rules'],\n ),\n ...configs.reduce(\n (\n acc,\n { plugins: _p, overrides: _o, extends: _e, rules: _r, ...config },\n ) => ({ ...acc, ...config }),\n {} as Config,\n ),\n };\n};\n\nexport const isInRange = (\n version: false | number | undefined,\n ...versions: number[]\n) => typeof version === 'number' && versions.includes(version);\n","import type { Packages } from '@culur/utils-packages';\nimport { defineRule, defineRules } from '~/utils';\n\nconst getIgnoreAtRulesByTailwindVersion = (\n tailwindVersion: false | number | undefined,\n) => {\n switch (tailwindVersion) {\n // https://tailwindcss-v0.netlify.app//docs/functions-and-directives\n case 0:\n return [\n // Directives\n 'tailwind',\n 'apply',\n\n 'variants',\n 'responsive',\n 'screen',\n ];\n\n // https://v1.tailwindcss.com/docs/functions-and-directives\n // https://v2.tailwindcss.com/docs/functions-and-directives\n case 1:\n case 2:\n return [\n // Directives\n 'tailwind',\n 'apply',\n 'layer', // new\n\n 'variants',\n 'responsive',\n 'screen',\n ];\n\n // https://v3.tailwindcss.com/docs/functions-and-directives\n case 3:\n return [\n // Directives\n 'tailwind',\n 'layer',\n 'apply',\n 'config', // new\n ];\n\n // https://tailwindcss.com/docs/functions-and-directives\n case 4:\n return [\n // Directives\n 'import',\n 'theme',\n 'source',\n 'utility',\n 'variant',\n 'custom-variant',\n 'apply',\n 'reference',\n\n // Compatibility\n 'config',\n 'plugin',\n ];\n\n default:\n return [];\n }\n};\n\nexport const atRuleNoUnknownRule = (packages: Partial<Packages>) =>\n defineRule<true, { ignoreAtRules: (string | RegExp)[] }>([\n true,\n { ignoreAtRules: getIgnoreAtRulesByTailwindVersion(packages.tailwind) },\n ]);\n\nexport const atRuleNoUnknownCSS = (packages: Partial<Packages>) =>\n defineRules({\n 'at-rule-no-unknown': atRuleNoUnknownRule(packages),\n });\n\nexport const atRuleNoUnknownSCSS = (packages: Partial<Packages>) =>\n defineRules({\n 'at-rule-no-unknown': null,\n 'scss/at-rule-no-unknown': atRuleNoUnknownRule(packages),\n });\n","import { defineRule, defineRules } from '~/utils';\n\nexport const declarationBlockNoRedundantLonghandPropertiesRule = defineRule<\n true,\n { ignoreShorthands?: (string | RegExp)[] }\n>([true, { ignoreShorthands: ['grid-template'] }]);\n\nexport const declarationBlockNoRedundantLonghandProperties = defineRules({\n 'declaration-block-no-redundant-longhand-properties':\n declarationBlockNoRedundantLonghandPropertiesRule,\n});\n","import type { Packages } from '@culur/utils-packages';\nimport { defineRule, defineRules } from '~/utils';\n\nconst getIgnoreFunctionsByTailwindVersion = (\n tailwindVersion: false | number | undefined,\n) => {\n switch (tailwindVersion) {\n // https://tailwindcss-v0.netlify.app//docs/functions-and-directives\n case 0:\n return ['config'];\n\n // https://v1.tailwindcss.com/docs/functions-and-directives\n case 1:\n return ['theme'];\n\n // https://v2.tailwindcss.com/docs/functions-and-directives\n case 2:\n return ['screen', 'theme'];\n\n // https://v3.tailwindcss.com/docs/functions-and-directives\n case 3:\n return ['theme', 'screen'];\n\n // https://tailwindcss.com/docs/functions-and-directives\n case 4:\n return ['--alpha', '--spacing', 'theme'];\n\n default:\n return [];\n }\n};\n\nconst sassFunctionRegex = /^(list|math|color)\\..+/;\nconst getIgnoreFunctions = (packages: Partial<Packages>) => [\n // https://tailwindcss.com\n ...getIgnoreFunctionsByTailwindVersion(packages.tailwind),\n\n // https://sass-lang.com/documentation/modules/list\n // https://sass-lang.com/documentation/modules/math\n // https://sass-lang.com/documentation/modules/color\n ...(packages.sass //\n ? [sassFunctionRegex]\n : []),\n\n // https://vuejs.org/api/sfc-css-features.html#v-bind-in-css\n ...(packages.vue //\n ? ['v-bind']\n : []),\n];\n\nexport function functionNoUnknownRule(packages: Partial<Packages>) {\n return defineRule<true, { ignoreFunctions: (string | RegExp)[] }>([\n true,\n { ignoreFunctions: getIgnoreFunctions(packages) },\n ]);\n}\n\nexport const functionNoUnknown = (packages: Partial<Packages>) =>\n defineRules({\n 'function-no-unknown': functionNoUnknownRule(packages),\n });\n","import type { Packages } from '@culur/utils-packages';\nimport { defineRules, isInRange } from '~/utils';\n\nexport const importNotationCSS = (packages: Partial<Packages>) =>\n defineRules(\n isInRange(packages.tailwind, 4) //\n ? { 'import-notation': null }\n : {},\n );\n","import type { Packages } from '@culur/utils-packages';\nimport { defineRule, defineRules, isInRange } from '~/utils';\n\n// https://github.com/hudochenkov/stylelint-order/blob/master/rules/order/README.md#options\n\ntype Keyword =\n | 'custom-properties' /**/ // Custom properties (e.g. --property: 10px;)\n | 'dollar-variables' /***/ // Dollar variables (e.g. $variable)\n | 'at-variables' /*******/ // At-variables (e.g. @variable available in Less syntax)\n | 'declarations' /*******/ // CSS declarations (e.g. display: block)\n | 'rules' /**************/ // Nested rules (e.g. a { span {} })\n | 'at-rules' /***********/ // Nested at-rules (e.g. div { @media () {} })\n | 'less-mixins'; /*******/ // Mixins in Less syntax (e.g. .mixin();)\n\ninterface AtRule {\n type: 'at-rule';\n name?: string;\n parameter?: string | RegExp;\n hasBlock?: boolean;\n}\n\ninterface Rule {\n type: 'rule';\n selector?: string | RegExp;\n name?: string;\n}\n\ntype PrimaryOption = Array<Keyword | AtRule | Rule>;\ninterface SecondaryOptions {\n unspecified?: 'top' | 'bottom' | 'ignore';\n}\n\nconst definePrimaryOption = (...options: (PrimaryOption[number] | false | undefined)[]) =>\n options.filter((option): option is PrimaryOption[number] => !!option);\n\nconst blockRuleRegex = /^&::[\\w-]+/;\n\nexport const orderRule = (packages: Partial<Packages>) =>\n defineRule<PrimaryOption, SecondaryOptions>([\n definePrimaryOption(\n //! import\n packages.sass /**********************************/ && { type: 'at-rule', name: 'use' }, // scss: @use 'path/path';\n packages.sass /**********************************/ && { type: 'at-rule', name: 'forward' }, // scss: @forward 'path/path';\n packages.sass /**********************************/ && { type: 'at-rule', name: 'import' }, // scss: @import 'path/path';\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'import' }, // tailwind 4: @import \"tailwindcss\";\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'source' }, // tailwind 4: @source \"../node_modules/@culur/ui-lib\";\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'reference' }, // tailwind 4: @reference \"../../app.css\";\n\n //! root\n isInRange(packages.tailwind, 0, 1, 2, 3) /*******/ && { type: 'at-rule', name: 'tailwind' }, // tailwind 0,1,2,3 : @tailwind base;\n isInRange(packages.tailwind, 3, 4) /*************/ && { type: 'at-rule', name: 'config' }, // tailwind 3,4: @config 'tailwind.custom.config.js'\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'plugin' }, // tailwind 4: @plugin '@tailwindcss/typography'\n isInRange(packages.tailwind, 1, 2, 3) /**********/ && { type: 'at-rule', name: 'layer' }, // tailwind 1,2,3 : @layer base {}\n\n //! variables\n 'dollar-variables', // css: $variable: 10px;\n 'at-variables', // css: @variable: 10px;\n { type: 'at-rule', hasBlock: false }, // css: @variable: 10px;\n 'custom-properties', // css: --property: 10px;\n\n //! tailwind\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'theme' }, // tailwind 4: @theme {}\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'custom-variant' }, // tailwind 4: @custom-variant pointer-coarse (@media (pointer: coarse));\n\n //! functions, methods\n packages.sass /**********************************/ && { type: 'at-rule', name: 'function' }, // scss: @function sum() {}\n packages.sass /**********************************/ && { type: 'at-rule', name: 'mixin' }, // scss: @mixin mixin-name {}\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'utility' }, // tailwind 4: @utility tab-4 { tab-size: 4; }\n\n //! declarations\n packages.sass /**********************************/ && { type: 'at-rule', name: 'extend' }, // scss: @extend .class-name;\n packages.sass /**********************************/ && { type: 'at-rule', name: 'include' }, // scss: @include mixin-name;\n isInRange(packages.tailwind, 0, 1, 2, 3, 4) /****/ && { type: 'at-rule', name: 'apply' }, // tailwind 0,1,2,3,4: @apply p-3;\n 'less-mixins', // less: .mixin();\n 'declarations', // css: display: block;\n\n //! block rules\n { type: 'rule', selector: blockRuleRegex }, // css: &::after {}\n 'rules', // css: child-component {}\n\n //! blocks nested\n packages.sass && { type: 'at-rule', name: 'at-root' }, // scss: @at-root selector { /* content */ }\n isInRange(packages.tailwind, 0, 1, 2) /**********/ && { type: 'at-rule', name: 'responsive' }, // tailwind 0,1,2 : @responsive {}\n isInRange(packages.tailwind, 0, 1, 2) /**********/ && { type: 'at-rule', name: 'variants' }, // tailwind 0,1,2 : @variants hover {}\n isInRange(packages.tailwind, 0, 1, 2) /**********/ && { type: 'at-rule', name: 'screen' }, // tailwind 0,1,2 : @screen sm {}\n isInRange(packages.tailwind, 4) /****************/ && { type: 'at-rule', name: 'variants' }, // tailwind 4: @variant dark {}\n { type: 'at-rule', hasBlock: true }, // css: @media () {}\n ),\n {\n unspecified: 'bottom',\n },\n ]);\n\nexport const order = (packages: Partial<Packages>) =>\n defineRules({\n 'order/order': orderRule(packages),\n });\n","import { defineRule, defineRules } from '~/utils';\n\nexport const selectorPseudoClassNoUnknownRule = defineRule<\n true,\n { ignorePseudoClasses?: (string | RegExp)[] }\n>([true, { ignorePseudoClasses: ['global', 'local'] }]);\n\nexport const selectorPseudoClassNoUnknown = defineRules({\n 'selector-pseudo-class-no-unknown': selectorPseudoClassNoUnknownRule,\n});\n","import type { Packages } from '@culur/utils-packages';\nimport type { Config } from 'stylelint';\nimport { atRuleNoUnknownCSS } from '~/rules/at-rule-no-unknown';\nimport { declarationBlockNoRedundantLonghandProperties } from '~/rules/declaration-block-no-redundant-longhand-properties';\nimport { functionNoUnknown } from '~/rules/function-no-unknown';\nimport { importNotationCSS } from '~/rules/import-notation';\nimport { order } from '~/rules/order';\nimport { selectorPseudoClassNoUnknown } from '~/rules/selector-pseudo-class-no-unknown';\n\nexport const configCss = (packages: Partial<Packages>): Config => ({\n extends: ['stylelint-config-standard', 'stylelint-config-clean-order'],\n plugins: ['stylelint-order', 'stylelint-selector-bem-pattern'],\n rules: {\n ...atRuleNoUnknownCSS(packages),\n ...declarationBlockNoRedundantLonghandProperties,\n ...functionNoUnknown(packages),\n ...importNotationCSS(packages),\n ...order(packages),\n ...selectorPseudoClassNoUnknown,\n 'declaration-empty-line-before': null,\n },\n});\n","import { defineRule, defineRules } from '~/utils';\n\ntype PrimaryOption = string;\ninterface SecondaryOptions {\n message: string;\n}\n\nexport const dollarVariablePatternRule = defineRule<\n PrimaryOption,\n SecondaryOptions\n>([\n '^(-{0,2}?[a-z][a-z0-9]*)(-[a-z0-9]+)*$',\n { message: 'Expected variable to be kebab-case' },\n]);\n\nexport const dollarVariablePatternSCSS = defineRules({\n 'scss/dollar-variable-pattern': dollarVariablePatternRule,\n});\n","import type { Packages } from '@culur/utils-packages';\nimport type { Config } from 'stylelint';\nimport { atRuleNoUnknownSCSS } from '~/rules/at-rule-no-unknown';\nimport { dollarVariablePatternSCSS } from '~/rules/dollar-variable-pattern';\n\nexport const configScss = (packages: Partial<Packages>): Config => ({\n extends: ['stylelint-config-standard-scss'],\n rules: {\n ...atRuleNoUnknownSCSS(packages),\n ...dollarVariablePatternSCSS,\n },\n});\n","import type { Config } from 'stylelint';\n\nexport const configShared = (): Config => ({\n extends: ['stylelint-config-html'],\n});\n","import type { Packages } from '@culur/utils-packages';\nimport type { Config } from 'stylelint';\n\nexport const configVue = (packages: Partial<Packages>): Config => ({\n extends: [\n packages.sass\n ? 'stylelint-config-standard-vue/scss'\n : 'stylelint-config-standard-vue',\n ],\n});\n","import type { Packages } from '@culur/utils-packages';\nimport type { Config } from 'stylelint';\nimport { configCss } from './configs/css';\nimport { configScss } from './configs/scss';\nimport { configShared } from './configs/shared';\nimport { configVue } from './configs/vue';\nimport { mergeConfigs } from './utils';\n\nexport default function defineConfig(\n packages?: Partial<Packages>,\n config?: Config,\n): Config {\n const packages_ = packages ?? {};\n\n return mergeConfigs(\n configShared(),\n configCss(packages_),\n packages_.sass && configScss(packages_),\n packages_.vue && configVue(packages_),\n config,\n );\n}\n"],"mappings":"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"}