mirror of
https://github.com/JamesIves/github-pages-deploy-action.git
synced 2023-12-15 20:03:39 +08:00
1 line
20 KiB
Plaintext
1 line
20 KiB
Plaintext
{"version":3,"sources":["../../src/rules/checkExamples.js"],"names":["zeroBasedLineIndexAdjust","likelyNestedJSDocIndentSpace","preTagSpaceLength","firstLinePrefixLength","hasCaptionRegex","escapeStringRegexp","str","replace","countChars","ch","match","RegExp","length","getRegexFromString","regexString","flags","regex","uniqueFlags","Set","join","report","utils","context","globalState","tagName","getPreferredTagName","hasTag","has","set","Map","matchingFileNameMap","get","options","exampleCodeRegex","rejectExampleCodeRegex","noDefaultExampleRules","checkEslintrc","matchingFileName","filename","paddedIndent","baseConfig","configFile","allowInlineConfig","reportUnusedDisableDirectives","captionRequired","defaultFileName","jsFileName","getFilename","includes","rulePaths","rules","undefined","forEachPreferredTag","tag","targetTagName","source","description","trim","test","sources","nonJSPrefacingCols","nonJSPrefacingLines","startingIndex","lastStringCount","exampleCode","lastIndex","exec","index","n0","n1","preMatch","slice","preMatchLines","colDelta","lastIndexOf","nonJSPreface","nonJSPrefaceLineCount","idx","indexOf","charsInLastLine","string","push","global","checkRules","cliConfig","useEslintrc","cliConfigStr","JSON","stringify","src","fileNameMapKey","file","cliFile","cli","CLIEngine","config","getConfigForFile","executeOnText","results","messages","codeStartLine","line","codeStartCol","forEach","message","column","severity","ruleId","startLine","startCol","iterateAllJsdocs","meta","schema","additionalProperties","properties","default","type","noTrim"],"mappings":"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","sourcesContent":["import {CLIEngine} from 'eslint';\nimport iterateJsdoc from '../iterateJsdoc';\nimport warnRemovedSettings from '../warnRemovedSettings';\n\nconst zeroBasedLineIndexAdjust = -1;\nconst likelyNestedJSDocIndentSpace = 1;\nconst preTagSpaceLength = 1;\n\n// If a space is present, we should ignore it\nconst firstLinePrefixLength = preTagSpaceLength;\n\nconst hasCaptionRegex = /^\\s*<caption>(.*?)<\\/caption>/u;\n\nconst escapeStringRegexp = (str) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/gu, '\\\\$&');\n};\nconst countChars = (str, ch) => {\n return (str.match(new RegExp(escapeStringRegexp(ch), 'gu')) || []).length;\n};\n\nconst getRegexFromString = (regexString) => {\n const match = regexString.match(/^\\/(.*)\\/([gimyus]*)$/u);\n let flags = 'u';\n let regex = regexString;\n if (match) {\n [, regex, flags] = match;\n if (!flags) {\n flags = 'u';\n }\n const uniqueFlags = [...new Set(flags)];\n flags = uniqueFlags.join('');\n }\n\n return new RegExp(regex, flags);\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n context,\n globalState,\n}) => {\n warnRemovedSettings(context, 'check-examples');\n const tagName = utils.getPreferredTagName({tagName: 'example'});\n if (!utils.hasTag(tagName)) {\n return;\n }\n\n if (!globalState.has('checkExamples-matchingFileName')) {\n globalState.set('checkExamples-matchingFileName', new Map());\n }\n const matchingFileNameMap = globalState.get('checkExamples-matchingFileName');\n\n const options = context.options[0] || {};\n let {\n exampleCodeRegex = null,\n rejectExampleCodeRegex = null,\n } = options;\n const {\n noDefaultExampleRules = false,\n checkEslintrc = true,\n matchingFileName: filename = null,\n paddedIndent = 0,\n baseConfig = {},\n configFile,\n allowInlineConfig = true,\n reportUnusedDisableDirectives = true,\n captionRequired = false,\n } = options;\n\n let defaultFileName;\n if (!filename) {\n const jsFileName = context.getFilename();\n if (typeof jsFileName === 'string' && jsFileName.includes('.')) {\n defaultFileName = jsFileName.replace(/\\..*?$/, '.md');\n } else {\n defaultFileName = 'dummy.md';\n }\n }\n\n // Make this configurable?\n const rulePaths = [];\n\n const rules = noDefaultExampleRules ? undefined : {\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n 'no-multiple-empty-lines': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n };\n\n if (exampleCodeRegex) {\n exampleCodeRegex = getRegexFromString(exampleCodeRegex);\n }\n if (rejectExampleCodeRegex) {\n rejectExampleCodeRegex = getRegexFromString(rejectExampleCodeRegex);\n }\n\n utils.forEachPreferredTag('example', (tag, targetTagName) => {\n let source = tag.description;\n const match = source.match(hasCaptionRegex);\n\n if (captionRequired && (!match || !match[1].trim())) {\n report('Caption is expected for examples.', null, tag);\n }\n\n // If we allow newlines in hasCaptionRegex, we should add to line count\n source = source.replace(hasCaptionRegex, '');\n\n if (exampleCodeRegex && !exampleCodeRegex.test(source) ||\n rejectExampleCodeRegex && rejectExampleCodeRegex.test(source)\n ) {\n return;\n }\n\n const sources = [];\n if (exampleCodeRegex) {\n let nonJSPrefacingCols = 0;\n let nonJSPrefacingLines = 0;\n\n let startingIndex = 0;\n let lastStringCount = 0;\n\n let exampleCode;\n exampleCodeRegex.lastIndex = 0;\n while ((exampleCode = exampleCodeRegex.exec(source)) !== null) {\n const {index, 0: n0, 1: n1} = exampleCode;\n\n // Count anything preceding user regex match (can affect line numbering)\n const preMatch = source.slice(startingIndex, index);\n\n const preMatchLines = countChars(preMatch, '\\n');\n\n const colDelta = preMatchLines ?\n preMatch.slice(preMatch.lastIndexOf('\\n') + 1).length :\n preMatch.length;\n\n let nonJSPreface;\n let nonJSPrefaceLineCount;\n if (n1) {\n const idx = n0.indexOf(n1);\n nonJSPreface = n0.slice(0, idx);\n nonJSPrefaceLineCount = countChars(nonJSPreface, '\\n');\n } else {\n nonJSPreface = '';\n nonJSPrefaceLineCount = 0;\n }\n\n nonJSPrefacingLines += lastStringCount + preMatchLines + nonJSPrefaceLineCount;\n\n // Ignore `preMatch` delta if newlines here\n if (nonJSPrefaceLineCount) {\n const charsInLastLine = nonJSPreface.slice(nonJSPreface.lastIndexOf('\\n') + 1).length;\n\n nonJSPrefacingCols += charsInLastLine;\n } else {\n nonJSPrefacingCols += colDelta + nonJSPreface.length;\n }\n\n const string = n1 || n0;\n sources.push({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n });\n startingIndex = exampleCodeRegex.lastIndex;\n lastStringCount = countChars(string, '\\n');\n if (!exampleCodeRegex.global) {\n break;\n }\n }\n } else {\n sources.push({\n nonJSPrefacingCols: 0,\n nonJSPrefacingLines: 0,\n string: source,\n });\n }\n\n // Todo: Make fixable\n // Todo: Fix whitespace indent\n const checkRules = function ({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n }) {\n const cliConfig = {\n allowInlineConfig,\n baseConfig,\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: checkEslintrc,\n };\n const cliConfigStr = JSON.stringify(cliConfig);\n\n const src = paddedIndent ?\n string.replace(new RegExp(`(^|\\n) {${paddedIndent}}(?!$)`, 'gu'), '\\n') :\n string;\n\n // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api\n const fileNameMapKey = filename ?\n 'a' + cliConfigStr + filename :\n 'b' + cliConfigStr + defaultFileName;\n const file = filename || defaultFileName;\n let cliFile;\n if (matchingFileNameMap.has(fileNameMapKey)) {\n cliFile = matchingFileNameMap.get(fileNameMapKey);\n } else {\n const cli = new CLIEngine(cliConfig);\n let config;\n if (filename || checkEslintrc) {\n config = cli.getConfigForFile(file);\n }\n\n // We need a new instance to ensure that the rules that may only\n // be available to `file` (if it has its own `.eslintrc`),\n // will be defined.\n cliFile = new CLIEngine({\n allowInlineConfig,\n baseConfig: {\n ...baseConfig,\n ...config,\n },\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: false,\n });\n matchingFileNameMap.set(fileNameMapKey, cliFile);\n }\n\n const {results: [{messages}]} =\n cliFile.executeOnText(src);\n\n // NOTE: `tag.line` can be 0 if of form `/** @tag ... */`\n const codeStartLine = tag.line + nonJSPrefacingLines;\n const codeStartCol = likelyNestedJSDocIndentSpace;\n\n messages.forEach(({message, line, column, severity, ruleId}) => {\n const startLine = codeStartLine + line + zeroBasedLineIndexAdjust;\n const startCol = codeStartCol + (\n\n // This might not work for line 0, but line 0 is unlikely for examples\n line <= 1 ? nonJSPrefacingCols + firstLinePrefixLength : preTagSpaceLength\n ) + column;\n\n report(\n '@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') +\n (ruleId ? ' (' + ruleId + ')' : '') + ': ' +\n message,\n null,\n {\n column: startCol,\n line: startLine,\n },\n );\n });\n };\n\n sources.forEach(checkRules);\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowInlineConfig: {\n default: true,\n type: 'boolean',\n },\n baseConfig: {\n type: 'object',\n },\n captionRequired: {\n default: false,\n type: 'boolean',\n },\n checkEslintrc: {\n default: true,\n type: 'boolean',\n },\n configFile: {\n type: 'string',\n },\n exampleCodeRegex: {\n type: 'string',\n },\n matchingFileName: {\n type: 'string',\n },\n noDefaultExampleRules: {\n default: false,\n type: 'boolean',\n },\n paddedIndent: {\n default: 0,\n type: 'integer',\n },\n rejectExampleCodeRegex: {\n type: 'string',\n },\n reportUnusedDisableDirectives: {\n default: true,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n noTrim: true,\n});\n"],"file":"checkExamples.js"} |