eslint-plugin-jsdoc
Version:
JSDoc linting rules for ESLint.
1 lines • 45.7 kB
Source Map (JSON)
{"version":3,"file":"typeFormatting.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdocUtils","_jsdoccomment","e","__esModule","default","digitRegex","_default","exports","iterateJsdoc","context","indent","jsdoc","settings","utils","arrayBrackets","arrowFunctionPostReturnMarkerSpacing","arrowFunctionPreReturnMarkerSpacing","enableFixer","functionOrClassParameterSpacing","functionOrClassPostGenericSpacing","functionOrClassPostReturnMarkerSpacing","functionOrClassPreReturnMarkerSpacing","functionOrClassTypeParameterSpacing","genericAndTupleElementSpacing","genericDot","keyValuePostColonSpacing","keyValuePostKeySpacing","keyValuePostOptionalSpacing","keyValuePostVariadicSpacing","methodQuotes","objectFieldIndent","objectFieldQuote","objectFieldSeparator","objectFieldSeparatorOptionalLinebreak","objectFieldSeparatorTrailingPunctuation","parameterDefaultValueSpacing","postMethodNameSpacing","postNewSpacing","separatorForSingleObjectField","stringQuotes","typeBracketSpacing","unionSpacing","options","mode","checkTypeFormats","tag","potentialType","type","parsedType","tryParseType","parseType","fix","rewireByParsedType","errorMessages","startsWith","endsWith","push","test","traverse","nde","errorMessage","conditionalAdds","meta","typNode","newMeta","parameterSpacing","postGenericSpacing","postReturnMarkerSpacing","preReturnMarkerSpacing","typeParameterSpacing","typeNode","arrow","quote","undefined","left","value","brackets","dot","elementSpacing","postKeySpacing","postColonSpacing","postOptionalSpacing","postVariadicSpacing","variadic","separator","propertyIndent","trailingPunctuation","replace","key","defaultValue","defaultValueSpacing","spacing","differentResult","stringify","length","reportJSDoc","tags","getPresentTags","iterateAllJsdocs","docs","description","url","fixable","schema","additionalProperties","properties","enum","module"],"sources":["../../src/rules/typeFormatting.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n rewireByParsedType,\n} from '../jsdocUtils.js';\nimport {\n parse as parseType,\n stringify,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\n\nconst digitRegex = (/^(\\d+(\\.\\d*)?|\\.\\d+)([eE][\\-+]?\\d+)?$/v);\n\nexport default iterateJsdoc(({\n context,\n indent,\n jsdoc,\n settings,\n utils,\n// eslint-disable-next-line complexity -- Todo\n}) => {\n const {\n arrayBrackets = 'square',\n arrowFunctionPostReturnMarkerSpacing = ' ',\n arrowFunctionPreReturnMarkerSpacing = ' ',\n enableFixer = true,\n functionOrClassParameterSpacing = ' ',\n functionOrClassPostGenericSpacing = '',\n functionOrClassPostReturnMarkerSpacing = ' ',\n functionOrClassPreReturnMarkerSpacing = '',\n functionOrClassTypeParameterSpacing = ' ',\n genericAndTupleElementSpacing = ' ',\n genericDot = false,\n keyValuePostColonSpacing = ' ',\n keyValuePostKeySpacing = '',\n keyValuePostOptionalSpacing = '',\n keyValuePostVariadicSpacing = '',\n methodQuotes = 'double',\n objectFieldIndent = '',\n objectFieldQuote = null,\n objectFieldSeparator = 'comma',\n objectFieldSeparatorOptionalLinebreak = true,\n objectFieldSeparatorTrailingPunctuation = false,\n parameterDefaultValueSpacing = ' ',\n postMethodNameSpacing = '',\n postNewSpacing = ' ',\n // propertyQuotes = null,\n separatorForSingleObjectField = false,\n stringQuotes = 'double',\n typeBracketSpacing = '',\n unionSpacing = ' ',\n } = context.options[0] || {};\n\n const {\n mode,\n } = settings;\n\n /**\n * @param {import('@es-joy/jsdoccomment').JsdocTagWithInline} tag\n */\n const checkTypeFormats = (tag) => {\n const potentialType = tag.type;\n let parsedType;\n try {\n parsedType = mode === 'permissive' ?\n tryParseType(/** @type {string} */ (potentialType)) :\n parseType(/** @type {string} */ (potentialType), mode);\n } catch {\n return;\n }\n\n const fix = () => {\n rewireByParsedType(jsdoc, tag, parsedType, indent, typeBracketSpacing);\n };\n\n /** @type {string[]} */\n const errorMessages = [];\n\n if (typeBracketSpacing && (!tag.type.startsWith(typeBracketSpacing) || !tag.type.endsWith(typeBracketSpacing))) {\n errorMessages.push(`Must have initial and final \"${typeBracketSpacing}\" spacing`);\n } else if (!typeBracketSpacing && ((/^\\s/v).test(tag.type) || (/\\s$/v).test(tag.type))) {\n errorMessages.push('Must have no initial spacing');\n }\n\n // eslint-disable-next-line complexity -- Todo\n traverse(parsedType, (nde) => {\n let errorMessage = '';\n\n /**\n * @param {Partial<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing?: string,\n * postMethodNameSpacing?: string\n * }} meta\n * @returns {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing?: string,\n * postMethodNameSpacing?: string\n * }}\n */\n const conditionalAdds = (meta) => {\n const typNode =\n /**\n * @type {import('jsdoc-type-pratt-parser').FunctionResult|\n * import('jsdoc-type-pratt-parser').CallSignatureResult|\n * import('jsdoc-type-pratt-parser').ComputedMethodResult|\n * import('jsdoc-type-pratt-parser').ConstructorSignatureResult|\n * import('jsdoc-type-pratt-parser').MethodSignatureResult\n * }\n */ (nde);\n\n /**\n * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing?: string,\n * postMethodNameSpacing?: string\n * }}\n */\n const newMeta = {\n parameterSpacing: meta.parameterSpacing ?? typNode.meta?.parameterSpacing ?? ' ',\n postGenericSpacing: meta.postGenericSpacing ?? typNode.meta?.postGenericSpacing ?? '',\n postReturnMarkerSpacing: meta.postReturnMarkerSpacing ?? typNode.meta?.postReturnMarkerSpacing ?? ' ',\n preReturnMarkerSpacing: meta.preReturnMarkerSpacing ?? typNode.meta?.preReturnMarkerSpacing ?? '',\n typeParameterSpacing: meta.typeParameterSpacing ?? typNode.meta?.typeParameterSpacing ?? ' ',\n };\n\n if (typNode.type === 'JsdocTypeConstructorSignature') {\n newMeta.postNewSpacing = meta.postNewSpacing;\n }\n\n if (typNode.type === 'JsdocTypeMethodSignature') {\n newMeta.postMethodNameSpacing = meta.postMethodNameSpacing ?? typNode.meta?.postMethodNameSpacing ?? '';\n }\n\n return newMeta;\n };\n\n switch (nde.type) {\n case 'JsdocTypeConstructorSignature': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').ConstructorSignatureResult} */ (nde);\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.postNewSpacing ?? ' ') !== postNewSpacing) {\n typeNode.meta =\n /**\n * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing: string,\n * }}\n */ (conditionalAdds({\n postNewSpacing,\n }));\n errorMessage = `Post-\\`new\\` spacing should be \"${postNewSpacing}\"`;\n break;\n }\n }\n\n case 'JsdocTypeFunction': {\n const typeNode =\n /**\n * @type {import('jsdoc-type-pratt-parser').FunctionResult}\n */ nde;\n if ('arrow' in typeNode && typeNode.arrow) {\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.postReturnMarkerSpacing ?? ' ') !== arrowFunctionPostReturnMarkerSpacing) {\n typeNode.meta =\n /**\n * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing: string,\n * }}\n */ (conditionalAdds({\n postReturnMarkerSpacing: arrowFunctionPostReturnMarkerSpacing,\n /* c8 ignore next -- Guard */\n preReturnMarkerSpacing: typeNode.meta?.preReturnMarkerSpacing ?? ' ',\n }));\n errorMessage = `Post-return-marker spacing should be \"${arrowFunctionPostReturnMarkerSpacing}\"`;\n break;\n /* c8 ignore next -- Guard */\n } else if ((typeNode.meta?.preReturnMarkerSpacing ?? ' ') !== arrowFunctionPreReturnMarkerSpacing) {\n typeNode.meta =\n /**\n * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing: string,\n * }}\n */ (conditionalAdds({\n /* c8 ignore next -- Guard */\n postReturnMarkerSpacing: typeNode.meta?.postReturnMarkerSpacing ?? ' ',\n preReturnMarkerSpacing: arrowFunctionPreReturnMarkerSpacing,\n }));\n errorMessage = `Pre-return-marker spacing should be \"${arrowFunctionPreReturnMarkerSpacing}\"`;\n break;\n }\n\n break;\n }\n }\n\n case 'JsdocTypeCallSignature':\n case 'JsdocTypeComputedMethod':\n case 'JsdocTypeMethodSignature': {\n const typeNode =\n /**\n * @type {import('jsdoc-type-pratt-parser').FunctionResult|\n * import('jsdoc-type-pratt-parser').CallSignatureResult|\n * import('jsdoc-type-pratt-parser').ComputedMethodResult|\n * import('jsdoc-type-pratt-parser').ConstructorSignatureResult|\n * import('jsdoc-type-pratt-parser').MethodSignatureResult\n * }\n */ (nde);\n if (typeNode.type === 'JsdocTypeMethodSignature' &&\n (typeNode.meta?.postMethodNameSpacing ?? '') !== postMethodNameSpacing\n ) {\n typeNode.meta = {\n quote: typeNode.meta.quote,\n ...conditionalAdds({\n postMethodNameSpacing,\n }),\n };\n errorMessage = `Post-method-name spacing should be \"${postMethodNameSpacing}\"`;\n break;\n } else if (typeNode.type === 'JsdocTypeMethodSignature' &&\n typeNode.meta.quote !== undefined &&\n typeNode.meta.quote !== methodQuotes\n ) {\n typeNode.meta = {\n ...conditionalAdds({\n postMethodNameSpacing: typeNode.meta.postMethodNameSpacing ?? '',\n }),\n quote: methodQuotes,\n };\n errorMessage = `Method quoting style should be \"${methodQuotes}\"`;\n break;\n }\n\n if ((typeNode.meta?.parameterSpacing ?? ' ') !== functionOrClassParameterSpacing) {\n typeNode.meta = conditionalAdds({\n parameterSpacing: functionOrClassParameterSpacing,\n });\n errorMessage = `Parameter spacing should be \"${functionOrClassParameterSpacing}\"`;\n } else if ((typeNode.meta?.postGenericSpacing ?? '') !== functionOrClassPostGenericSpacing) {\n typeNode.meta = conditionalAdds({\n postGenericSpacing: functionOrClassPostGenericSpacing,\n });\n errorMessage = `Post-generic spacing should be \"${functionOrClassPostGenericSpacing}\"`;\n } else if ((typeNode.meta?.postReturnMarkerSpacing ?? ' ') !== functionOrClassPostReturnMarkerSpacing) {\n typeNode.meta = conditionalAdds({\n postReturnMarkerSpacing: functionOrClassPostReturnMarkerSpacing,\n });\n errorMessage = `Post-return-marker spacing should be \"${functionOrClassPostReturnMarkerSpacing}\"`;\n } else if ((typeNode.meta?.preReturnMarkerSpacing ?? '') !== functionOrClassPreReturnMarkerSpacing) {\n typeNode.meta = conditionalAdds({\n preReturnMarkerSpacing: functionOrClassPreReturnMarkerSpacing,\n });\n errorMessage = `Pre-return-marker spacing should be \"${functionOrClassPreReturnMarkerSpacing}\"`;\n } else if ((typeNode.meta?.typeParameterSpacing ?? ' ') !== functionOrClassTypeParameterSpacing) {\n typeNode.meta = conditionalAdds({\n typeParameterSpacing: functionOrClassTypeParameterSpacing,\n });\n errorMessage = `Type parameter spacing should be \"${functionOrClassTypeParameterSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeGeneric': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (nde);\n if ('value' in typeNode.left && typeNode.left.value === 'Array') {\n if (typeNode.meta.brackets !== arrayBrackets) {\n typeNode.meta.brackets = arrayBrackets;\n errorMessage = `Array bracket style should be ${arrayBrackets}`;\n }\n } else if (typeNode.meta.dot !== genericDot) {\n typeNode.meta.dot = genericDot;\n errorMessage = `Dot usage should be ${genericDot}`;\n } else if ((typeNode.meta.elementSpacing ?? ' ') !== genericAndTupleElementSpacing) {\n typeNode.meta.elementSpacing = genericAndTupleElementSpacing;\n errorMessage = `Element spacing should be \"${genericAndTupleElementSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeKeyValue': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').KeyValueResult} */ (nde);\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.postKeySpacing ?? '') !== keyValuePostKeySpacing) {\n typeNode.meta = {\n /* c8 ignore next -- Guard */\n postColonSpacing: typeNode.meta?.postColonSpacing ?? ' ',\n postKeySpacing: keyValuePostKeySpacing,\n /* c8 ignore next 2 -- Guard */\n postOptionalSpacing: typeNode.meta?.postOptionalSpacing ?? '',\n postVariadicSpacing: typeNode.meta?.postVariadicSpacing ?? '',\n };\n errorMessage = `Post key spacing should be \"${keyValuePostKeySpacing}\"`;\n /* c8 ignore next -- Guard */\n } else if ((typeNode.meta?.postColonSpacing ?? ' ') !== keyValuePostColonSpacing) {\n typeNode.meta = {\n postColonSpacing: keyValuePostColonSpacing,\n /* c8 ignore next 3 -- Guard */\n postKeySpacing: typeNode.meta?.postKeySpacing ?? '',\n postOptionalSpacing: typeNode.meta?.postOptionalSpacing ?? '',\n postVariadicSpacing: typeNode.meta?.postVariadicSpacing ?? '',\n };\n errorMessage = `Post colon spacing should be \"${keyValuePostColonSpacing}\"`;\n /* c8 ignore next -- Guard */\n } else if ((typeNode.meta?.postOptionalSpacing ?? '') !== keyValuePostOptionalSpacing) {\n typeNode.meta = {\n /* c8 ignore next 2 -- Guard */\n postColonSpacing: typeNode.meta?.postColonSpacing ?? ' ',\n postKeySpacing: typeNode.meta?.postKeySpacing ?? '',\n postOptionalSpacing: keyValuePostOptionalSpacing,\n /* c8 ignore next -- Guard */\n postVariadicSpacing: typeNode.meta?.postVariadicSpacing ?? '',\n };\n errorMessage = `Post optional (\\`?\\`) spacing should be \"${keyValuePostOptionalSpacing}\"`;\n /* c8 ignore next -- Guard */\n } else if (typeNode.variadic && (typeNode.meta?.postVariadicSpacing ?? '') !== keyValuePostVariadicSpacing) {\n typeNode.meta = {\n /* c8 ignore next 3 -- Guard */\n postColonSpacing: typeNode.meta?.postColonSpacing ?? ' ',\n postKeySpacing: typeNode.meta?.postKeySpacing ?? '',\n postOptionalSpacing: typeNode.meta?.postOptionalSpacing ?? '',\n postVariadicSpacing: keyValuePostVariadicSpacing,\n };\n errorMessage = `Post variadic (\\`...\\`) spacing should be \"${keyValuePostVariadicSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeObject': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').ObjectResult} */ (nde);\n /* c8 ignore next -- Guard */\n const separator = typeNode.meta.separator ?? 'comma';\n if (\n (separator !== objectFieldSeparator &&\n (!objectFieldSeparatorOptionalLinebreak ||\n !(objectFieldSeparator.endsWith('-linebreak') &&\n objectFieldSeparator.startsWith(separator)))) ||\n (typeNode.meta.separatorForSingleObjectField ?? false) !== separatorForSingleObjectField ||\n ((typeNode.meta.propertyIndent ?? '') !== objectFieldIndent &&\n separator.endsWith('-linebreak')) ||\n (typeNode.meta.trailingPunctuation ?? false) !== objectFieldSeparatorTrailingPunctuation\n ) {\n typeNode.meta.separator = objectFieldSeparatorOptionalLinebreak && !separator.endsWith('and-linebreak') ?\n objectFieldSeparator.replace(/-and-linebreak$/v, '') :\n objectFieldSeparator;\n typeNode.meta.separatorForSingleObjectField = separatorForSingleObjectField;\n typeNode.meta.propertyIndent = objectFieldIndent;\n typeNode.meta.trailingPunctuation = objectFieldSeparatorTrailingPunctuation;\n errorMessage = `Inconsistent ${objectFieldSeparator} separator usage`;\n }\n\n break;\n }\n\n case 'JsdocTypeObjectField': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').ObjectFieldResult} */ (nde);\n if ((objectFieldQuote ||\n (typeof typeNode.key === 'string' &&\n (\n (/^[\\p{ID_Start}$_][\\p{ID_Continue}$\\u200C\\u200D]*$/v).test(typeNode.key) ||\n digitRegex.test(typeNode.key)\n )\n )) &&\n typeNode.meta.quote !== (objectFieldQuote ?? undefined) &&\n (typeof typeNode.key !== 'string' ||\n !digitRegex.test(typeNode.key))\n ) {\n typeNode.meta.quote = objectFieldQuote ?? undefined;\n errorMessage = `Inconsistent object field quotes ${objectFieldQuote}`;\n } else if ((typeNode.meta?.postKeySpacing ?? '') !== keyValuePostKeySpacing) {\n typeNode.meta.postKeySpacing = keyValuePostKeySpacing;\n errorMessage = `Post key spacing should be \"${keyValuePostKeySpacing}\"`;\n } else if ((typeNode.meta?.postColonSpacing ?? ' ') !== keyValuePostColonSpacing) {\n typeNode.meta.postColonSpacing = keyValuePostColonSpacing;\n errorMessage = `Post colon spacing should be \"${keyValuePostColonSpacing}\"`;\n } else if ((typeNode.meta?.postOptionalSpacing ?? '') !== keyValuePostOptionalSpacing) {\n typeNode.meta.postOptionalSpacing = keyValuePostOptionalSpacing;\n errorMessage = `Post optional (\\`?\\`) spacing should be \"${keyValuePostOptionalSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeStringValue': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').StringValueResult} */ (nde);\n if (typeNode.meta.quote !== stringQuotes) {\n typeNode.meta.quote = stringQuotes;\n errorMessage = `Inconsistent ${stringQuotes} string quotes usage`;\n }\n\n break;\n }\n\n // Only suitable for namepaths (and would need changes); see https://github.com/gajus/eslint-plugin-jsdoc/issues/1524\n // case 'JsdocTypeProperty': {\n // const typeNode = /** @type {import('jsdoc-type-pratt-parser').PropertyResult} */ (nde);\n\n // if ((propertyQuotes ||\n // (typeof typeNode.value === 'string' && !(/\\s/v).test(typeNode.value))) &&\n // typeNode.meta.quote !== (propertyQuotes ?? undefined)\n // ) {\n // typeNode.meta.quote = propertyQuotes ?? undefined;\n // errorMessage = `Inconsistent ${propertyQuotes} property quotes usage`;\n // }\n\n // break;\n // }\n\n case 'JsdocTypeTuple': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').TupleResult} */ (nde);\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.elementSpacing ?? ' ') !== genericAndTupleElementSpacing) {\n typeNode.meta = {\n elementSpacing: genericAndTupleElementSpacing,\n };\n errorMessage = `Element spacing should be \"${genericAndTupleElementSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeTypeParameter': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').TypeParameterResult} */ (nde);\n /* c8 ignore next -- Guard */\n if (typeNode.defaultValue && (typeNode.meta?.defaultValueSpacing ?? ' ') !== parameterDefaultValueSpacing) {\n typeNode.meta = {\n defaultValueSpacing: parameterDefaultValueSpacing,\n };\n errorMessage = `Default value spacing should be \"${parameterDefaultValueSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeUnion': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').UnionResult} */ (nde);\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.spacing ?? ' ') !== unionSpacing) {\n typeNode.meta = {\n spacing: unionSpacing,\n };\n errorMessage = `Inconsistent \"${unionSpacing}\" union spacing usage`;\n }\n\n break;\n }\n\n default:\n break;\n }\n\n if (errorMessage) {\n errorMessages.push(errorMessage);\n }\n });\n\n const differentResult = tag.type !==\n typeBracketSpacing + stringify(parsedType) + typeBracketSpacing;\n\n if (errorMessages.length && differentResult) {\n for (const errorMessage of errorMessages) {\n utils.reportJSDoc(\n errorMessage, tag, enableFixer ? fix : null,\n );\n }\n // Stringification may have been equal previously (and thus no error reported)\n // because the stringification doesn't preserve everything\n } else if (differentResult) {\n utils.reportJSDoc(\n 'There was an error with type formatting', tag, enableFixer ? fix : null,\n );\n }\n };\n\n const tags = utils.getPresentTags([\n 'param',\n 'property',\n 'returns',\n 'this',\n 'throws',\n 'type',\n 'typedef',\n 'yields',\n ]);\n for (const tag of tags) {\n if (tag.type) {\n checkTypeFormats(tag);\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Formats JSDoc type values.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/type-formatting.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n arrayBrackets: {\n description: 'Determines how array generics are represented. Set to `angle` for the style `Array<type>` or `square` for the style `type[]`. Defaults to \"square\".',\n enum: [\n 'angle',\n 'square',\n ],\n type: 'string',\n },\n arrowFunctionPostReturnMarkerSpacing: {\n description: 'The space character (if any) to use after return markers (`=>`). Defaults to \" \".',\n type: 'string',\n },\n arrowFunctionPreReturnMarkerSpacing: {\n description: 'The space character (if any) to use before return markers (`=>`). Defaults to \" \".',\n type: 'string',\n },\n enableFixer: {\n description: 'Whether to enable the fixer. Defaults to `true`.',\n type: 'boolean',\n },\n functionOrClassParameterSpacing: {\n description: 'The space character (if any) to use between function or class parameters. Defaults to \" \".',\n type: 'string',\n },\n functionOrClassPostGenericSpacing: {\n description: 'The space character (if any) to use after a generic expression in a function or class. Defaults to \"\".',\n type: 'string',\n },\n functionOrClassPostReturnMarkerSpacing: {\n description: 'The space character (if any) to use after return markers (`:`). Defaults to \"\".',\n type: 'string',\n },\n functionOrClassPreReturnMarkerSpacing: {\n description: 'The space character (if any) to use before return markers (`:`). Defaults to \"\".',\n type: 'string',\n },\n functionOrClassTypeParameterSpacing: {\n description: 'The space character (if any) to use between type parameters in a function or class. Defaults to \" \".',\n type: 'string',\n },\n genericAndTupleElementSpacing: {\n description: 'The space character (if any) to use between elements in generics and tuples. Defaults to \" \".',\n type: 'string',\n },\n genericDot: {\n description: 'Boolean value of whether to use a dot before the angled brackets of a generic (e.g., `SomeType.<AnotherType>`). Defaults to `false`.',\n type: 'boolean',\n },\n keyValuePostColonSpacing: {\n description: 'The amount of spacing (if any) after the colon of a key-value or object-field pair. Defaults to \" \".',\n type: 'string',\n },\n keyValuePostKeySpacing: {\n description: 'The amount of spacing (if any) immediately after keys in a key-value or object-field pair. Defaults to \"\".',\n type: 'string',\n },\n keyValuePostOptionalSpacing: {\n description: 'The amount of spacing (if any) after the optional operator (`?`) in a key-value or object-field pair. Defaults to \"\".',\n type: 'string',\n },\n keyValuePostVariadicSpacing: {\n description: 'The amount of spacing (if any) after a variadic operator (`...`) in a key-value pair. Defaults to \"\".',\n type: 'string',\n },\n methodQuotes: {\n description: 'The style of quotation mark for surrounding method names when quoted. Defaults to `double`',\n enum: [\n 'double',\n 'single',\n ],\n type: 'string',\n },\n objectFieldIndent: {\n description: `A string indicating the whitespace to be added on each line preceding an\nobject property-value field. Defaults to the empty string.`,\n type: 'string',\n },\n objectFieldQuote: {\n description: `Whether and how object field properties should be quoted (e.g., \\`{\"a\": string}\\`).\nSet to \\`single\\`, \\`double\\`, or \\`null\\`. Defaults to \\`null\\` (no quotes unless\nrequired due to special characters within the field). Digits will be kept as is,\nregardless of setting (they can either represent a digit or a string digit).`,\n enum: [\n 'double',\n 'single',\n null,\n ],\n },\n objectFieldSeparator: {\n description: `For object properties, specify whether a \"semicolon\", \"comma\", \"linebreak\",\n\"semicolon-and-linebreak\", or \"comma-and-linebreak\" should be used after\neach object property-value pair.\n\nDefaults to \\`\"comma\"\\`.`,\n enum: [\n 'comma',\n 'comma-and-linebreak',\n 'linebreak',\n 'semicolon',\n 'semicolon-and-linebreak',\n ],\n type: 'string',\n },\n objectFieldSeparatorOptionalLinebreak: {\n description: `Whether \\`objectFieldSeparator\\` set to \\`\"semicolon-and-linebreak\"\\` or\n\\`\"comma-and-linebreak\"\\` should be allowed to optionally drop the linebreak.\n\nDefaults to \\`true\\`.`,\n type: 'boolean',\n },\n objectFieldSeparatorTrailingPunctuation: {\n description: `If \\`separatorForSingleObjectField\\` is not in effect (i.e., if it is \\`false\\`\nor there are multiple property-value object fields present), this property\nwill determine whether to add punctuation corresponding to the\n\\`objectFieldSeparator\\` (e.g., a semicolon) to the final object field.\nDefaults to \\`false\\`.`,\n type: 'boolean',\n },\n parameterDefaultValueSpacing: {\n description: 'The space character (if any) to use between the equal signs of a default value. Defaults to \" \".',\n type: 'string',\n },\n postMethodNameSpacing: {\n description: 'The space character (if any) to add after a method name. Defaults to \"\".',\n type: 'string',\n },\n postNewSpacing: {\n description: 'The space character (if any) to add after \"new\" in a constructor. Defaults to \" \".',\n type: 'string',\n },\n // propertyQuotes: {\n // description: `Whether and how namepath properties should be quoted (e.g., \\`ab.\"cd\".\"ef\"\\`).\n // Set to \\`single\\`, \\`double\\`, or \\`null\\`. Defaults to \\`null\\` (no quotes unless\n // required due to whitespace within the property).`,\n // enum: [\n // 'double',\n // 'single',\n // null,\n // ],\n // },\n separatorForSingleObjectField: {\n description: `Whether to apply the \\`objectFieldSeparator\\` (e.g., a semicolon) when there\nis only one property-value object field present. Defaults to \\`false\\`.`,\n type: 'boolean',\n },\n stringQuotes: {\n description: `How string literals should be quoted (e.g., \\`\"abc\"\\`). Set to \\`single\\`\nor \\`double\\`. Defaults to 'double'.`,\n enum: [\n 'double',\n 'single',\n ],\n type: 'string',\n },\n typeBracketSpacing: {\n description: `A string of spaces that will be added immediately after the type's initial\ncurly bracket and immediately before its ending curly bracket. Defaults\nto the empty string.`,\n type: 'string',\n },\n unionSpacing: {\n description: 'Determines the spacing to add to unions (`|`). Defaults to a single space (`\" \"`).',\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}