@typestyles/eslint-plugin 0.2.0
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/LICENSE +204 -0
- package/README.md +119 -0
- package/dist/index.cjs +680 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +128 -0
- package/dist/index.d.ts +128 -0
- package/dist/index.js +670 -0
- package/dist/index.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/create-rule.ts","../src/rules/no-default-scope-in-package.ts","../src/utils/style-calls.ts","../src/rules/no-duplicate-namespace.ts","../src/utils/css-properties.ts","../src/utils/style-ast.ts","../src/rules/no-invalid-unitless-value.ts","../src/rules/no-shorthand-longhand-conflict.ts","../src/index.ts"],"names":["ESLintUtils","memberPropertyName"],"mappings":"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","file":"index.cjs","sourcesContent":["import { ESLintUtils } from '@typescript-eslint/utils';\n\nexport const createRule = ESLintUtils.RuleCreator(\n (name) => `https://typestyles.dev/docs/eslint#${name}`,\n);\n","import type { TSESTree } from '@typescript-eslint/utils';\nimport { createRule } from '../utils/create-rule';\n\nfunction memberPropertyName(node: TSESTree.MemberExpression): string | null {\n if (node.property.type === 'Identifier' && !node.computed) return node.property.name;\n if (node.property.type === 'Literal' && typeof node.property.value === 'string') {\n return node.property.value;\n }\n return null;\n}\n\nfunction isDefaultStylesCall(node: TSESTree.CallExpression): boolean {\n const { callee } = node;\n if (callee.type !== 'MemberExpression') return false;\n const method = memberPropertyName(callee);\n if (method !== 'class' && method !== 'component') return false;\n\n if (callee.object.type === 'Identifier') {\n return callee.object.name === 'styles';\n }\n return false;\n}\n\nexport const noDefaultScopeInPackage = createRule({\n name: 'no-default-scope-in-package',\n meta: {\n type: 'suggestion',\n docs: {\n description:\n 'Require a scoped styles factory (`createTypeStyles`/`createStyles` with `scopeId`) instead of the default `styles` export in publishable packages',\n },\n messages: {\n unscopedInPackage:\n 'Using the default `styles.{{method}}()` in a published package risks class-name collisions. Use `createTypeStyles({ scopeId: pkg.name })` or `createStyles({ scopeId })` instead.',\n },\n schema: [],\n },\n defaultOptions: [],\n create(context) {\n return {\n CallExpression(node) {\n if (!isDefaultStylesCall(node)) return;\n\n const method = memberPropertyName(node.callee as TSESTree.MemberExpression);\n\n context.report({\n node: node.callee,\n messageId: 'unscopedInPackage',\n data: { method: method ?? 'class' },\n });\n },\n };\n },\n});\n","import type { TSESTree } from '@typescript-eslint/utils';\n\nexport type NamespaceKind =\n | 'styles.class'\n | 'styles.component'\n | 'styles.hashClass'\n | 'tokens.create'\n | 'tokens.createTheme'\n | 'createTheme'\n | 'keyframes.create'\n | 'global.style'\n | 'global.fontFace';\n\nexport interface NamespaceCall {\n kind: NamespaceKind;\n /** Logical namespace key used for duplicate detection. */\n key: string;\n /** AST node for the namespace string literal (for reporting). */\n nameNode: TSESTree.StringLiteral;\n}\n\nfunction memberPropertyName(node: TSESTree.MemberExpression): string | null {\n if (node.property.type === 'Identifier' && !node.computed) return node.property.name;\n if (node.property.type === 'Literal' && typeof node.property.value === 'string') {\n return node.property.value;\n }\n return null;\n}\n\nfunction calleeRootName(node: TSESTree.CallExpression['callee']): string | null {\n if (node.type === 'Identifier') return node.name;\n if (node.type === 'MemberExpression') {\n if (node.object.type === 'Identifier') return node.object.name;\n if (node.object.type === 'MemberExpression') {\n const inner = memberPropertyName(node.object);\n const outer = calleeRootName(node.object);\n if (outer && inner) return `${outer}.${inner}`;\n }\n }\n return null;\n}\n\nfunction isMemberCall(\n callee: TSESTree.CallExpression['callee'],\n objectName: string,\n method: string,\n): boolean {\n if (callee.type !== 'MemberExpression') return false;\n const methodName = memberPropertyName(callee);\n if (methodName !== method) return false;\n if (callee.object.type === 'Identifier') return callee.object.name === objectName;\n return false;\n}\n\nfunction firstStringArg(args: TSESTree.CallExpressionArgument[]): TSESTree.StringLiteral | null {\n const first = args[0];\n if (!first || first.type === 'SpreadElement') return null;\n if (first.type === 'Literal' && typeof first.value === 'string') return first;\n return null;\n}\n\n/**\n * Detect TypeStyles namespace registrations from call expressions.\n * Matches API shape (e.g. `styles.class('card', …)`) regardless of import alias.\n */\nexport function getNamespaceCall(node: TSESTree.CallExpression): NamespaceCall | null {\n const { callee, arguments: args } = node;\n\n if (isMemberCall(callee, 'styles', 'class')) {\n const nameNode = firstStringArg(args);\n if (!nameNode) return null;\n return { kind: 'styles.class', key: `.${nameNode.value}-`, nameNode };\n }\n\n if (isMemberCall(callee, 'styles', 'component')) {\n const nameNode = firstStringArg(args);\n if (!nameNode) return null;\n return { kind: 'styles.component', key: `.${nameNode.value}-`, nameNode };\n }\n\n if (isMemberCall(callee, 'styles', 'hashClass')) {\n const first = args[0];\n if (!first || first.type === 'SpreadElement') return null;\n if (first.type === 'Literal' && typeof first.value === 'string') {\n return { kind: 'styles.hashClass', key: `.${first.value}-`, nameNode: first };\n }\n const label = args[1];\n if (label?.type === 'Literal' && typeof label.value === 'string') {\n return { kind: 'styles.hashClass', key: `.${label.value}-`, nameNode: label };\n }\n return null;\n }\n\n if (isMemberCall(callee, 'tokens', 'create')) {\n const nameNode = firstStringArg(args);\n if (!nameNode) return null;\n return { kind: 'tokens.create', key: `tokens:${nameNode.value}`, nameNode };\n }\n\n if (isMemberCall(callee, 'tokens', 'createTheme')) {\n const nameNode = firstStringArg(args);\n if (!nameNode) return null;\n return { kind: 'tokens.createTheme', key: `theme:${nameNode.value}`, nameNode };\n }\n\n if (callee.type === 'Identifier' && callee.name === 'createTheme') {\n const nameNode = firstStringArg(args);\n if (!nameNode) return null;\n return { kind: 'createTheme', key: `theme:${nameNode.value}`, nameNode };\n }\n\n if (isMemberCall(callee, 'keyframes', 'create')) {\n const nameNode = firstStringArg(args);\n if (!nameNode) return null;\n return { kind: 'keyframes.create', key: `keyframes:${nameNode.value}`, nameNode };\n }\n\n if (isMemberCall(callee, 'global', 'style')) {\n const nameNode = firstStringArg(args);\n if (!nameNode) return null;\n return { kind: 'global.style', key: nameNode.value, nameNode };\n }\n\n if (isMemberCall(callee, 'global', 'fontFace')) {\n const nameNode = firstStringArg(args);\n if (!nameNode) return null;\n return { kind: 'global.fontFace', key: `font-face:${nameNode.value}`, nameNode };\n }\n\n // `myStyles.class` / `myTokens.create` from createStyles/createTokens bindings\n if (callee.type === 'MemberExpression') {\n const method = memberPropertyName(callee);\n const root = calleeRootName(callee);\n if (method === 'class' && root) {\n const nameNode = firstStringArg(args);\n if (!nameNode) return null;\n return { kind: 'styles.class', key: `.${nameNode.value}-`, nameNode };\n }\n if (method === 'component' && root) {\n const nameNode = firstStringArg(args);\n if (!nameNode) return null;\n return { kind: 'styles.component', key: `.${nameNode.value}-`, nameNode };\n }\n if (method === 'create' && root?.endsWith('tokens')) {\n const nameNode = firstStringArg(args);\n if (!nameNode) return null;\n return { kind: 'tokens.create', key: `tokens:${nameNode.value}`, nameNode };\n }\n }\n\n return null;\n}\n\n/** Extract style object literals passed to TypeStyles style APIs. */\nexport function getStyleObjectArguments(\n node: TSESTree.CallExpression,\n): TSESTree.ObjectExpression[] {\n const { callee, arguments: args } = node;\n const objects: TSESTree.ObjectExpression[] = [];\n\n const pushObject = (arg: TSESTree.CallExpressionArgument | undefined) => {\n if (!arg || arg.type === 'SpreadElement') return;\n if (arg.type === 'ObjectExpression') objects.push(arg);\n if (arg.type === 'ArrowFunctionExpression' && arg.body.type === 'ObjectExpression') {\n objects.push(arg.body);\n }\n };\n\n if (callee.type === 'MemberExpression') {\n const method = memberPropertyName(callee);\n if (method === 'class' || method === 'component') {\n pushObject(args[1]);\n return objects;\n }\n if (method === 'hashClass') {\n const first = args[0];\n if (first && first.type !== 'SpreadElement' && first.type === 'ObjectExpression') {\n objects.push(first);\n }\n return objects;\n }\n }\n\n return objects;\n}\n","import { createRule } from '../utils/create-rule';\nimport { getNamespaceCall } from '../utils/style-calls';\n\ninterface NamespaceLocation {\n filename: string;\n line: number;\n column: number;\n}\n\n/** Cross-file registry for a single ESLint CLI run (best-effort; not shared across workers). */\nconst namespaceRegistry = new Map<string, NamespaceLocation>();\n\n/** @internal Test hook */\nexport function resetNamespaceRegistry(): void {\n namespaceRegistry.clear();\n}\n\nexport const noDuplicateNamespace = createRule({\n name: 'no-duplicate-namespace',\n meta: {\n type: 'problem',\n docs: {\n description:\n 'Disallow reusing the same TypeStyles namespace (`styles.class`, `styles.component`, `tokens.create`, …) across the project',\n },\n messages: {\n duplicateInFile:\n 'Namespace `{{name}}` ({{kind}}) is already registered in this file at line {{line}}.',\n duplicateAcrossFiles:\n 'Namespace `{{name}}` ({{kind}}) is already registered in `{{otherFile}}` at line {{line}}.',\n },\n schema: [],\n },\n defaultOptions: [],\n create(context) {\n const fileSeen = new Map<string, { line: number; column: number }>();\n const filename = context.filename;\n\n return {\n CallExpression(node) {\n const call = getNamespaceCall(node);\n if (!call) return;\n\n const displayName =\n call.kind === 'styles.class' || call.kind === 'styles.component'\n ? call.nameNode.value\n : call.nameNode.value;\n\n const line = call.nameNode.loc?.start.line ?? node.loc?.start.line ?? 0;\n const column = call.nameNode.loc?.start.column ?? node.loc?.start.column ?? 0;\n\n const priorInFile = fileSeen.get(call.key);\n if (priorInFile) {\n context.report({\n node: call.nameNode,\n messageId: 'duplicateInFile',\n data: {\n name: displayName,\n kind: call.kind,\n line: String(priorInFile.line),\n },\n });\n return;\n }\n fileSeen.set(call.key, { line, column });\n\n const priorGlobal = namespaceRegistry.get(call.key);\n if (priorGlobal && priorGlobal.filename !== filename) {\n context.report({\n node: call.nameNode,\n messageId: 'duplicateAcrossFiles',\n data: {\n name: displayName,\n kind: call.kind,\n otherFile: priorGlobal.filename,\n line: String(priorGlobal.line),\n },\n });\n return;\n }\n\n if (!priorGlobal) {\n namespaceRegistry.set(call.key, { filename, line, column });\n }\n },\n };\n },\n});\n","/**\n * CSS properties that accept unitless numbers in TypeStyles serialization.\n * Keep in sync with `packages/typestyles/src/css.ts`.\n */\nexport const UNITLESS_PROPERTIES = new Set([\n 'animationIterationCount',\n 'aspectRatio',\n 'borderImageOutset',\n 'borderImageSlice',\n 'borderImageWidth',\n 'boxFlex',\n 'boxFlexGroup',\n 'boxOrdinalGroup',\n 'columnCount',\n 'columns',\n 'flex',\n 'flexGrow',\n 'flexPositive',\n 'flexShrink',\n 'flexNegative',\n 'flexOrder',\n 'fontSizeAdjust',\n 'fontWeight',\n 'gridArea',\n 'gridColumn',\n 'gridColumnEnd',\n 'gridColumnSpan',\n 'gridColumnStart',\n 'gridRow',\n 'gridRowEnd',\n 'gridRowSpan',\n 'gridRowStart',\n 'initialLetter',\n 'lineClamp',\n 'lineHeight',\n 'maskBorderOutset',\n 'maskBorderSlice',\n 'maskBorderWidth',\n 'opacity',\n 'order',\n 'orphans',\n 'scale',\n 'tabSize',\n 'widows',\n 'zIndex',\n 'zoom',\n 'fillOpacity',\n 'floodOpacity',\n 'stopOpacity',\n 'strokeDasharray',\n 'strokeDashoffset',\n 'strokeMiterlimit',\n 'strokeOpacity',\n 'strokeWidth',\n]);\n\nconst VENDOR_PREFIX_RE = /^(Webkit|Moz|ms|O)([A-Z])(.*)$/;\n\nexport function isUnitlessProperty(prop: string): boolean {\n if (UNITLESS_PROPERTIES.has(prop)) return true;\n const match = VENDOR_PREFIX_RE.exec(prop);\n if (match) {\n return UNITLESS_PROPERTIES.has(match[2].toLowerCase() + match[3]);\n }\n return false;\n}\n\n/** Shorthand property → longhands that must not appear in the same style object. */\nexport const SHORTHAND_TO_LONGHANDS: Readonly<Record<string, readonly string[]>> = {\n padding: [\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n 'paddingInline',\n 'paddingBlock',\n 'paddingInlineStart',\n 'paddingInlineEnd',\n 'paddingBlockStart',\n 'paddingBlockEnd',\n ],\n margin: [\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'marginInline',\n 'marginBlock',\n 'marginInlineStart',\n 'marginInlineEnd',\n 'marginBlockStart',\n 'marginBlockEnd',\n ],\n border: [\n 'borderWidth',\n 'borderStyle',\n 'borderColor',\n 'borderTop',\n 'borderRight',\n 'borderBottom',\n 'borderLeft',\n 'borderInline',\n 'borderBlock',\n ],\n borderWidth: [\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderInlineWidth',\n 'borderBlockWidth',\n ],\n borderStyle: ['borderTopStyle', 'borderRightStyle', 'borderBottomStyle', 'borderLeftStyle'],\n borderColor: ['borderTopColor', 'borderRightColor', 'borderBottomColor', 'borderLeftColor'],\n borderTop: ['borderTopWidth', 'borderTopStyle', 'borderTopColor'],\n borderRight: ['borderRightWidth', 'borderRightStyle', 'borderRightColor'],\n borderBottom: ['borderBottomWidth', 'borderBottomStyle', 'borderBottomColor'],\n borderLeft: ['borderLeftWidth', 'borderLeftStyle', 'borderLeftColor'],\n background: [\n 'backgroundColor',\n 'backgroundImage',\n 'backgroundPosition',\n 'backgroundSize',\n 'backgroundRepeat',\n 'backgroundAttachment',\n 'backgroundOrigin',\n 'backgroundClip',\n ],\n font: ['fontStyle', 'fontVariant', 'fontWeight', 'fontSize', 'lineHeight', 'fontFamily'],\n flex: ['flexGrow', 'flexShrink', 'flexBasis'],\n gap: ['rowGap', 'columnGap'],\n overflow: ['overflowX', 'overflowY'],\n transition: [\n 'transitionProperty',\n 'transitionDuration',\n 'transitionTimingFunction',\n 'transitionDelay',\n ],\n animation: [\n 'animationName',\n 'animationDuration',\n 'animationTimingFunction',\n 'animationDelay',\n 'animationIterationCount',\n 'animationDirection',\n 'animationFillMode',\n 'animationPlayState',\n ],\n outline: ['outlineWidth', 'outlineStyle', 'outlineColor'],\n listStyle: ['listStyleType', 'listStylePosition', 'listStyleImage'],\n grid: [\n 'gridTemplateRows',\n 'gridTemplateColumns',\n 'gridTemplateAreas',\n 'gridAutoRows',\n 'gridAutoColumns',\n 'gridAutoFlow',\n ],\n gridTemplate: ['gridTemplateRows', 'gridTemplateColumns', 'gridTemplateAreas'],\n inset: ['top', 'right', 'bottom', 'left'],\n insetBlock: ['insetBlockStart', 'insetBlockEnd'],\n insetInline: ['insetInlineStart', 'insetInlineEnd'],\n};\n\n/** Bare numeric strings (no CSS unit) that emit invalid CSS when serialized. */\nexport const BARE_NUMBER_STRING_RE = /^-?\\d+(\\.\\d+)?$/;\n\nexport function findShorthandLonghandConflicts(\n propertyNames: readonly string[],\n): Array<{ shorthand: string; longhand: string }> {\n const keys = new Set(propertyNames);\n const seen = new Set<string>();\n const conflicts: Array<{ shorthand: string; longhand: string }> = [];\n\n for (const key of keys) {\n const longhands = SHORTHAND_TO_LONGHANDS[key];\n if (longhands) {\n for (const longhand of longhands) {\n if (keys.has(longhand)) {\n const id = `${key}|${longhand}`;\n if (!seen.has(id)) {\n seen.add(id);\n conflicts.push({ shorthand: key, longhand });\n }\n }\n }\n }\n }\n\n return conflicts;\n}\n","import type { TSESTree } from '@typescript-eslint/utils';\n\nconst NESTED_SELECTOR_KEY_RE = /^(&|@|\\[)/;\n\n/** Keys that wrap nested style objects in component configs. */\nconst COMPONENT_STRUCTURAL_KEYS = new Set([\n 'base',\n 'variants',\n 'defaultVariants',\n 'compoundVariants',\n 'slots',\n]);\n\nexport function getStaticPropertyKey(prop: TSESTree.Property): string | null {\n if (prop.computed) return null;\n if (prop.key.type === 'Identifier') return prop.key.name;\n if (prop.key.type === 'Literal' && typeof prop.key.value === 'string') return prop.key.value;\n return null;\n}\n\nexport function isCssPropertyKey(key: string): boolean {\n if (NESTED_SELECTOR_KEY_RE.test(key)) return false;\n if (COMPONENT_STRUCTURAL_KEYS.has(key)) return false;\n return /^[a-zA-Z]/.test(key);\n}\n\n/**\n * Collect CSS property names declared at the top level of a style object literal.\n */\nexport function collectCssPropertyNames(obj: TSESTree.ObjectExpression): string[] {\n const names: string[] = [];\n for (const prop of obj.properties) {\n if (prop.type !== 'Property') continue;\n const key = getStaticPropertyKey(prop);\n if (key && isCssPropertyKey(key)) names.push(key);\n }\n return names;\n}\n\n/**\n * Visit each style object literal in a TypeStyles style/config tree.\n * Recurses into pseudos, at-rules, component `base` / `variants`, and slot objects.\n */\nexport function visitStyleObjectLiterals(\n node: TSESTree.ObjectExpression,\n onStyleObject: (obj: TSESTree.ObjectExpression) => void,\n): void {\n onStyleObject(node);\n\n for (const prop of node.properties) {\n if (prop.type !== 'Property') continue;\n const key = getStaticPropertyKey(prop);\n if (!key) continue;\n\n if (NESTED_SELECTOR_KEY_RE.test(key)) {\n if (prop.value.type === 'ObjectExpression') {\n visitStyleObjectLiterals(prop.value, onStyleObject);\n }\n continue;\n }\n\n if (key === 'variants' && prop.value.type === 'ObjectExpression') {\n for (const groupProp of prop.value.properties) {\n if (groupProp.type !== 'Property' || groupProp.value.type !== 'ObjectExpression') continue;\n for (const optionProp of groupProp.value.properties) {\n if (optionProp.type === 'Property' && optionProp.value.type === 'ObjectExpression') {\n visitStyleObjectLiterals(optionProp.value, onStyleObject);\n }\n }\n }\n continue;\n }\n\n if (key === 'compoundVariants' && prop.value.type === 'ArrayExpression') {\n for (const element of prop.value.elements) {\n if (!element || element.type !== 'ObjectExpression') continue;\n for (const cvProp of element.properties) {\n if (cvProp.type !== 'Property') continue;\n const cvKey = getStaticPropertyKey(cvProp);\n if (cvKey === 'css' && cvProp.value.type === 'ObjectExpression') {\n visitStyleObjectLiterals(cvProp.value, onStyleObject);\n }\n }\n }\n continue;\n }\n\n if (\n (COMPONENT_STRUCTURAL_KEYS.has(key) || prop.value.type === 'ObjectExpression') &&\n prop.value.type === 'ObjectExpression'\n ) {\n visitStyleObjectLiterals(prop.value, onStyleObject);\n }\n }\n}\n\nexport function getStringLiteralValue(node: TSESTree.Node): string | null {\n if (node.type === 'Literal' && typeof node.value === 'string') return node.value;\n return null;\n}\n\nexport function getNumericLiteralValue(node: TSESTree.Node): number | null {\n if (node.type === 'Literal' && typeof node.value === 'number') return node.value;\n return null;\n}\n","import type { TSESTree } from '@typescript-eslint/utils';\nimport { createRule } from '../utils/create-rule';\nimport { BARE_NUMBER_STRING_RE, isUnitlessProperty } from '../utils/css-properties';\nimport {\n getNumericLiteralValue,\n getStaticPropertyKey,\n getStringLiteralValue,\n isCssPropertyKey,\n visitStyleObjectLiterals,\n} from '../utils/style-ast';\nimport { getStyleObjectArguments } from '../utils/style-calls';\n\nexport const noInvalidUnitlessValue = createRule({\n name: 'no-invalid-unitless-value',\n meta: {\n type: 'problem',\n docs: {\n description:\n 'Disallow bare numeric strings on properties that require CSS units (TypeStyles only auto-appends `px` to numbers, not strings)',\n },\n messages: {\n bareNumberString:\n '`{{property}}` is set to bare number string `{{value}}`, which emits invalid CSS. Use a number (`{{numeric}}`) or a value with units (`{{value}}px`).',\n suspiciousUnitlessNumber:\n '`{{property}}` is unitless in CSS — numeric `{{value}}` is emitted without a unit. Use a ratio (e.g. `1.5`) or an explicit length (`\"24px\"`).',\n },\n schema: [\n {\n type: 'object',\n properties: {\n checkSuspiciousUnitlessNumbers: { type: 'boolean' },\n },\n additionalProperties: false,\n },\n ],\n },\n defaultOptions: [{ checkSuspiciousUnitlessNumbers: true }],\n create(context, [options]) {\n /** Properties where a large integer usually means the author meant a length, not a unitless ratio. */\n const SUSPICIOUS_UNITLESS_PROPERTIES = new Set(['lineHeight']);\n\n function checkStyleObject(obj: TSESTree.ObjectExpression) {\n for (const prop of obj.properties) {\n if (prop.type !== 'Property') continue;\n const key = getStaticPropertyKey(prop);\n if (!key || !isCssPropertyKey(key)) continue;\n\n const stringValue = getStringLiteralValue(prop.value);\n if (stringValue && BARE_NUMBER_STRING_RE.test(stringValue) && !isUnitlessProperty(key)) {\n context.report({\n node: prop.value,\n messageId: 'bareNumberString',\n data: {\n property: key,\n value: stringValue,\n numeric: stringValue,\n },\n });\n continue;\n }\n\n if (options.checkSuspiciousUnitlessNumbers && SUSPICIOUS_UNITLESS_PROPERTIES.has(key)) {\n const num = getNumericLiteralValue(prop.value);\n if (num != null && num >= 8 && Number.isInteger(num)) {\n context.report({\n node: prop.value,\n messageId: 'suspiciousUnitlessNumber',\n data: { property: key, value: String(num) },\n });\n }\n }\n }\n }\n\n return {\n CallExpression(node) {\n for (const styleObj of getStyleObjectArguments(node)) {\n visitStyleObjectLiterals(styleObj, checkStyleObject);\n }\n },\n ObjectExpression(node) {\n const parent = node.parent;\n if (\n parent?.type === 'Property' &&\n (parent.key.type === 'Identifier' || parent.key.type === 'Literal')\n ) {\n const parentKey =\n parent.key.type === 'Identifier'\n ? parent.key.name\n : typeof parent.key.value === 'string'\n ? parent.key.value\n : null;\n if (parentKey === 'from' || parentKey === 'to' || /^\\d+%$/.test(parentKey ?? '')) {\n visitStyleObjectLiterals(node, checkStyleObject);\n }\n }\n },\n };\n },\n});\n","import type { TSESTree } from '@typescript-eslint/utils';\nimport { createRule } from '../utils/create-rule';\nimport { findShorthandLonghandConflicts } from '../utils/css-properties';\nimport { collectCssPropertyNames, visitStyleObjectLiterals } from '../utils/style-ast';\nimport { getStyleObjectArguments } from '../utils/style-calls';\n\nexport const noShorthandLonghandConflict = createRule({\n name: 'no-shorthand-longhand-conflict',\n meta: {\n type: 'problem',\n docs: {\n description:\n 'Disallow mixing CSS shorthand and longhand properties in the same TypeStyles style object',\n },\n messages: {\n conflict:\n '`{{shorthand}}` and `{{longhand}}` must not appear in the same style object — the longhand is ignored or overridden unpredictably.',\n },\n schema: [],\n },\n defaultOptions: [],\n create(context) {\n function checkStyleObject(obj: TSESTree.ObjectExpression) {\n const propertyNames = collectCssPropertyNames(obj);\n const conflicts = findShorthandLonghandConflicts(propertyNames);\n for (const { shorthand, longhand } of conflicts) {\n context.report({\n node: obj,\n messageId: 'conflict',\n data: { shorthand, longhand },\n });\n }\n }\n\n return {\n CallExpression(node) {\n for (const styleObj of getStyleObjectArguments(node)) {\n visitStyleObjectLiterals(styleObj, checkStyleObject);\n }\n },\n ObjectExpression(node) {\n // Keyframe stops: `{ from: { opacity: 0 }, to: { opacity: 1 } }`\n const parent = node.parent;\n if (\n parent?.type === 'Property' &&\n (parent.key.type === 'Identifier' || parent.key.type === 'Literal')\n ) {\n const parentKey =\n parent.key.type === 'Identifier'\n ? parent.key.name\n : typeof parent.key.value === 'string'\n ? parent.key.value\n : null;\n if (parentKey === 'from' || parentKey === 'to' || /^\\d+%$/.test(parentKey ?? '')) {\n visitStyleObjectLiterals(node, checkStyleObject);\n }\n }\n },\n };\n },\n});\n","import { noDefaultScopeInPackage } from './rules/no-default-scope-in-package';\nimport { noDuplicateNamespace } from './rules/no-duplicate-namespace';\nimport { noInvalidUnitlessValue } from './rules/no-invalid-unitless-value';\nimport { noShorthandLonghandConflict } from './rules/no-shorthand-longhand-conflict';\n\nexport const rules = {\n 'no-default-scope-in-package': noDefaultScopeInPackage,\n 'no-shorthand-longhand-conflict': noShorthandLonghandConflict,\n 'no-invalid-unitless-value': noInvalidUnitlessValue,\n 'no-duplicate-namespace': noDuplicateNamespace,\n};\n\nexport {\n noDefaultScopeInPackage,\n noShorthandLonghandConflict,\n noInvalidUnitlessValue,\n noDuplicateNamespace,\n};\n\nconst plugin = {\n meta: {\n name: '@typestyles/eslint-plugin',\n version: '0.1.0',\n },\n rules,\n};\n\n/** Flat-config preset for TypeStyles projects. */\nexport const configs = {\n recommended: {\n plugins: {\n '@typestyles': plugin,\n },\n rules: {\n '@typestyles/no-shorthand-longhand-conflict': 'error',\n '@typestyles/no-invalid-unitless-value': 'error',\n '@typestyles/no-duplicate-namespace': 'error',\n },\n },\n /** Preset for publishable packages — adds `no-default-scope-in-package`. */\n package: {\n plugins: {\n '@typestyles': plugin,\n },\n rules: {\n '@typestyles/no-shorthand-longhand-conflict': 'error',\n '@typestyles/no-invalid-unitless-value': 'error',\n '@typestyles/no-duplicate-namespace': 'error',\n '@typestyles/no-default-scope-in-package': 'error',\n },\n },\n};\n\nObject.assign(plugin, { configs });\n\nexport default plugin;\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import * as _typescript_eslint_utils_ts_eslint from '@typescript-eslint/utils/ts-eslint';
|
|
2
|
+
|
|
3
|
+
declare const noDefaultScopeInPackage: _typescript_eslint_utils_ts_eslint.RuleModule<"unscopedInPackage", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
4
|
+
name: string;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
declare const noDuplicateNamespace: _typescript_eslint_utils_ts_eslint.RuleModule<"duplicateInFile" | "duplicateAcrossFiles", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
8
|
+
name: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
declare const noInvalidUnitlessValue: _typescript_eslint_utils_ts_eslint.RuleModule<"bareNumberString" | "suspiciousUnitlessNumber", [{
|
|
12
|
+
checkSuspiciousUnitlessNumbers: boolean;
|
|
13
|
+
}], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
14
|
+
name: string;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
declare const noShorthandLonghandConflict: _typescript_eslint_utils_ts_eslint.RuleModule<"conflict", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
18
|
+
name: string;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
declare const rules: {
|
|
22
|
+
'no-default-scope-in-package': _typescript_eslint_utils_ts_eslint.RuleModule<"unscopedInPackage", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
23
|
+
name: string;
|
|
24
|
+
};
|
|
25
|
+
'no-shorthand-longhand-conflict': _typescript_eslint_utils_ts_eslint.RuleModule<"conflict", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
26
|
+
name: string;
|
|
27
|
+
};
|
|
28
|
+
'no-invalid-unitless-value': _typescript_eslint_utils_ts_eslint.RuleModule<"bareNumberString" | "suspiciousUnitlessNumber", [{
|
|
29
|
+
checkSuspiciousUnitlessNumbers: boolean;
|
|
30
|
+
}], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
31
|
+
name: string;
|
|
32
|
+
};
|
|
33
|
+
'no-duplicate-namespace': _typescript_eslint_utils_ts_eslint.RuleModule<"duplicateInFile" | "duplicateAcrossFiles", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
34
|
+
name: string;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
declare const plugin: {
|
|
39
|
+
meta: {
|
|
40
|
+
name: string;
|
|
41
|
+
version: string;
|
|
42
|
+
};
|
|
43
|
+
rules: {
|
|
44
|
+
'no-default-scope-in-package': _typescript_eslint_utils_ts_eslint.RuleModule<"unscopedInPackage", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
45
|
+
name: string;
|
|
46
|
+
};
|
|
47
|
+
'no-shorthand-longhand-conflict': _typescript_eslint_utils_ts_eslint.RuleModule<"conflict", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
48
|
+
name: string;
|
|
49
|
+
};
|
|
50
|
+
'no-invalid-unitless-value': _typescript_eslint_utils_ts_eslint.RuleModule<"bareNumberString" | "suspiciousUnitlessNumber", [{
|
|
51
|
+
checkSuspiciousUnitlessNumbers: boolean;
|
|
52
|
+
}], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
53
|
+
name: string;
|
|
54
|
+
};
|
|
55
|
+
'no-duplicate-namespace': _typescript_eslint_utils_ts_eslint.RuleModule<"duplicateInFile" | "duplicateAcrossFiles", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
56
|
+
name: string;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
/** Flat-config preset for TypeStyles projects. */
|
|
61
|
+
declare const configs: {
|
|
62
|
+
recommended: {
|
|
63
|
+
plugins: {
|
|
64
|
+
'@typestyles': {
|
|
65
|
+
meta: {
|
|
66
|
+
name: string;
|
|
67
|
+
version: string;
|
|
68
|
+
};
|
|
69
|
+
rules: {
|
|
70
|
+
'no-default-scope-in-package': _typescript_eslint_utils_ts_eslint.RuleModule<"unscopedInPackage", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
71
|
+
name: string;
|
|
72
|
+
};
|
|
73
|
+
'no-shorthand-longhand-conflict': _typescript_eslint_utils_ts_eslint.RuleModule<"conflict", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
74
|
+
name: string;
|
|
75
|
+
};
|
|
76
|
+
'no-invalid-unitless-value': _typescript_eslint_utils_ts_eslint.RuleModule<"bareNumberString" | "suspiciousUnitlessNumber", [{
|
|
77
|
+
checkSuspiciousUnitlessNumbers: boolean;
|
|
78
|
+
}], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
79
|
+
name: string;
|
|
80
|
+
};
|
|
81
|
+
'no-duplicate-namespace': _typescript_eslint_utils_ts_eslint.RuleModule<"duplicateInFile" | "duplicateAcrossFiles", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
82
|
+
name: string;
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
rules: {
|
|
88
|
+
'@typestyles/no-shorthand-longhand-conflict': string;
|
|
89
|
+
'@typestyles/no-invalid-unitless-value': string;
|
|
90
|
+
'@typestyles/no-duplicate-namespace': string;
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
/** Preset for publishable packages — adds `no-default-scope-in-package`. */
|
|
94
|
+
package: {
|
|
95
|
+
plugins: {
|
|
96
|
+
'@typestyles': {
|
|
97
|
+
meta: {
|
|
98
|
+
name: string;
|
|
99
|
+
version: string;
|
|
100
|
+
};
|
|
101
|
+
rules: {
|
|
102
|
+
'no-default-scope-in-package': _typescript_eslint_utils_ts_eslint.RuleModule<"unscopedInPackage", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
103
|
+
name: string;
|
|
104
|
+
};
|
|
105
|
+
'no-shorthand-longhand-conflict': _typescript_eslint_utils_ts_eslint.RuleModule<"conflict", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
106
|
+
name: string;
|
|
107
|
+
};
|
|
108
|
+
'no-invalid-unitless-value': _typescript_eslint_utils_ts_eslint.RuleModule<"bareNumberString" | "suspiciousUnitlessNumber", [{
|
|
109
|
+
checkSuspiciousUnitlessNumbers: boolean;
|
|
110
|
+
}], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
111
|
+
name: string;
|
|
112
|
+
};
|
|
113
|
+
'no-duplicate-namespace': _typescript_eslint_utils_ts_eslint.RuleModule<"duplicateInFile" | "duplicateAcrossFiles", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
114
|
+
name: string;
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
rules: {
|
|
120
|
+
'@typestyles/no-shorthand-longhand-conflict': string;
|
|
121
|
+
'@typestyles/no-invalid-unitless-value': string;
|
|
122
|
+
'@typestyles/no-duplicate-namespace': string;
|
|
123
|
+
'@typestyles/no-default-scope-in-package': string;
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
export { configs, plugin as default, noDefaultScopeInPackage, noDuplicateNamespace, noInvalidUnitlessValue, noShorthandLonghandConflict, rules };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import * as _typescript_eslint_utils_ts_eslint from '@typescript-eslint/utils/ts-eslint';
|
|
2
|
+
|
|
3
|
+
declare const noDefaultScopeInPackage: _typescript_eslint_utils_ts_eslint.RuleModule<"unscopedInPackage", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
4
|
+
name: string;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
declare const noDuplicateNamespace: _typescript_eslint_utils_ts_eslint.RuleModule<"duplicateInFile" | "duplicateAcrossFiles", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
8
|
+
name: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
declare const noInvalidUnitlessValue: _typescript_eslint_utils_ts_eslint.RuleModule<"bareNumberString" | "suspiciousUnitlessNumber", [{
|
|
12
|
+
checkSuspiciousUnitlessNumbers: boolean;
|
|
13
|
+
}], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
14
|
+
name: string;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
declare const noShorthandLonghandConflict: _typescript_eslint_utils_ts_eslint.RuleModule<"conflict", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
18
|
+
name: string;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
declare const rules: {
|
|
22
|
+
'no-default-scope-in-package': _typescript_eslint_utils_ts_eslint.RuleModule<"unscopedInPackage", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
23
|
+
name: string;
|
|
24
|
+
};
|
|
25
|
+
'no-shorthand-longhand-conflict': _typescript_eslint_utils_ts_eslint.RuleModule<"conflict", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
26
|
+
name: string;
|
|
27
|
+
};
|
|
28
|
+
'no-invalid-unitless-value': _typescript_eslint_utils_ts_eslint.RuleModule<"bareNumberString" | "suspiciousUnitlessNumber", [{
|
|
29
|
+
checkSuspiciousUnitlessNumbers: boolean;
|
|
30
|
+
}], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
31
|
+
name: string;
|
|
32
|
+
};
|
|
33
|
+
'no-duplicate-namespace': _typescript_eslint_utils_ts_eslint.RuleModule<"duplicateInFile" | "duplicateAcrossFiles", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
34
|
+
name: string;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
declare const plugin: {
|
|
39
|
+
meta: {
|
|
40
|
+
name: string;
|
|
41
|
+
version: string;
|
|
42
|
+
};
|
|
43
|
+
rules: {
|
|
44
|
+
'no-default-scope-in-package': _typescript_eslint_utils_ts_eslint.RuleModule<"unscopedInPackage", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
45
|
+
name: string;
|
|
46
|
+
};
|
|
47
|
+
'no-shorthand-longhand-conflict': _typescript_eslint_utils_ts_eslint.RuleModule<"conflict", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
48
|
+
name: string;
|
|
49
|
+
};
|
|
50
|
+
'no-invalid-unitless-value': _typescript_eslint_utils_ts_eslint.RuleModule<"bareNumberString" | "suspiciousUnitlessNumber", [{
|
|
51
|
+
checkSuspiciousUnitlessNumbers: boolean;
|
|
52
|
+
}], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
53
|
+
name: string;
|
|
54
|
+
};
|
|
55
|
+
'no-duplicate-namespace': _typescript_eslint_utils_ts_eslint.RuleModule<"duplicateInFile" | "duplicateAcrossFiles", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
56
|
+
name: string;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
/** Flat-config preset for TypeStyles projects. */
|
|
61
|
+
declare const configs: {
|
|
62
|
+
recommended: {
|
|
63
|
+
plugins: {
|
|
64
|
+
'@typestyles': {
|
|
65
|
+
meta: {
|
|
66
|
+
name: string;
|
|
67
|
+
version: string;
|
|
68
|
+
};
|
|
69
|
+
rules: {
|
|
70
|
+
'no-default-scope-in-package': _typescript_eslint_utils_ts_eslint.RuleModule<"unscopedInPackage", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
71
|
+
name: string;
|
|
72
|
+
};
|
|
73
|
+
'no-shorthand-longhand-conflict': _typescript_eslint_utils_ts_eslint.RuleModule<"conflict", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
74
|
+
name: string;
|
|
75
|
+
};
|
|
76
|
+
'no-invalid-unitless-value': _typescript_eslint_utils_ts_eslint.RuleModule<"bareNumberString" | "suspiciousUnitlessNumber", [{
|
|
77
|
+
checkSuspiciousUnitlessNumbers: boolean;
|
|
78
|
+
}], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
79
|
+
name: string;
|
|
80
|
+
};
|
|
81
|
+
'no-duplicate-namespace': _typescript_eslint_utils_ts_eslint.RuleModule<"duplicateInFile" | "duplicateAcrossFiles", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
82
|
+
name: string;
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
rules: {
|
|
88
|
+
'@typestyles/no-shorthand-longhand-conflict': string;
|
|
89
|
+
'@typestyles/no-invalid-unitless-value': string;
|
|
90
|
+
'@typestyles/no-duplicate-namespace': string;
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
/** Preset for publishable packages — adds `no-default-scope-in-package`. */
|
|
94
|
+
package: {
|
|
95
|
+
plugins: {
|
|
96
|
+
'@typestyles': {
|
|
97
|
+
meta: {
|
|
98
|
+
name: string;
|
|
99
|
+
version: string;
|
|
100
|
+
};
|
|
101
|
+
rules: {
|
|
102
|
+
'no-default-scope-in-package': _typescript_eslint_utils_ts_eslint.RuleModule<"unscopedInPackage", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
103
|
+
name: string;
|
|
104
|
+
};
|
|
105
|
+
'no-shorthand-longhand-conflict': _typescript_eslint_utils_ts_eslint.RuleModule<"conflict", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
106
|
+
name: string;
|
|
107
|
+
};
|
|
108
|
+
'no-invalid-unitless-value': _typescript_eslint_utils_ts_eslint.RuleModule<"bareNumberString" | "suspiciousUnitlessNumber", [{
|
|
109
|
+
checkSuspiciousUnitlessNumbers: boolean;
|
|
110
|
+
}], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
111
|
+
name: string;
|
|
112
|
+
};
|
|
113
|
+
'no-duplicate-namespace': _typescript_eslint_utils_ts_eslint.RuleModule<"duplicateInFile" | "duplicateAcrossFiles", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
114
|
+
name: string;
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
rules: {
|
|
120
|
+
'@typestyles/no-shorthand-longhand-conflict': string;
|
|
121
|
+
'@typestyles/no-invalid-unitless-value': string;
|
|
122
|
+
'@typestyles/no-duplicate-namespace': string;
|
|
123
|
+
'@typestyles/no-default-scope-in-package': string;
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
export { configs, plugin as default, noDefaultScopeInPackage, noDuplicateNamespace, noInvalidUnitlessValue, noShorthandLonghandConflict, rules };
|