📄 validationHelpers.ts¶
📊 Analysis Summary¶
| Metric | Count |
|---|---|
| 🔧 Functions | 6 |
| 📦 Imports | 4 |
| 📊 Variables & Constants | 8 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 packages/rule-tester/src/utils/validationHelpers.ts
📦 Imports¶
| Name | Source |
|---|---|
TSESTree |
@typescript-eslint/utils |
Parser |
@typescript-eslint/utils/ts-eslint |
SourceCode |
@typescript-eslint/utils/ts-eslint |
simpleTraverse |
@typescript-eslint/typescript-estree |
Variables & Constants¶
| Name | Type | Kind | Value | Exported |
|---|---|---|---|---|
RULE_TESTER_PARAMETERS |
readonly ["after", "before", "code", "defaultFilenames", "dependencyConstraints", "errors", "filename", "name", "only", "options", "output", "skip"] |
const | `[ | |
| 'after', | ||||
| 'before', | ||||
| 'code', | ||||
| 'defaultFilenames', | ||||
| 'dependencyConstraints', | ||||
| 'errors', | ||||
| 'filename', | ||||
| 'name', | ||||
| 'only', | ||||
| 'options', | ||||
| 'output', | ||||
| 'skip', | ||||
| ] as const` | ✓ | |||
ERROR_OBJECT_PARAMETERS |
ReadonlySet<string> |
const | `new Set([ | |
| 'column', | ||||
| 'data', | ||||
| 'endColumn', | ||||
| 'endLine', | ||||
| 'line', | ||||
| 'message', | ||||
| 'messageId', | ||||
| 'suggestions', | ||||
| 'type', | ||||
| ])` | ✓ | |||
FRIENDLY_ERROR_OBJECT_PARAMETER_LIST |
string |
const | ``[${[ | |
| ...ERROR_OBJECT_PARAMETERS, | ||||
| ] | ||||
.map(key => '${key}') |
||||
| .join(', ')}]`` | ✓ | |||
SUGGESTION_OBJECT_PARAMETERS |
ReadonlySet<string> |
const | `new Set([ | |
| 'data', | ||||
| 'desc', | ||||
| 'messageId', | ||||
| 'output', | ||||
| ])` | ✓ | |||
FRIENDLY_SUGGESTION_OBJECT_PARAMETER_LIST |
string |
const | ``[${[ | |
| ...SUGGESTION_OBJECT_PARAMETERS, | ||||
| ] | ||||
.map(key => '${key}') |
||||
| .join(', ')}]`` | ✓ | |||
parsed |
Parser.ParseResult |
const | parser.parseForESLint(...args) as Parser.ParseResult |
✗ |
ast |
TSESTree.Program |
const | parser.parse(...args) as TSESTree.Program |
✗ |
REQUIRED_SCENARIOS |
readonly ["valid", "invalid"] |
const | ['valid', 'invalid'] as const |
✓ |
Functions¶
sanitize(text: string): string¶
Code
export function sanitize(text: string): string {
if (typeof text !== 'string') {
return '';
}
return text.replaceAll(
// eslint-disable-next-line no-control-regex
/[\u0000-\u0009\u000b-\u001a]/gu,
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
c => `\\u${c.codePointAt(0)!.toString(16).padStart(4, '0')}`,
);
}
-
JSDoc:
-
Parameters:
text: string- Return Type:
string - Calls:
text.replaceAllc.codePointAt(0)!.toString(16).padStart- Internal Comments:
wrapParser(parser: Parser.LooseParserModule): Parser.LooseParserModule¶
Code
export function wrapParser(
parser: Parser.LooseParserModule,
): Parser.LooseParserModule {
/**
* Define `start`/`end` properties of all nodes of the given AST as throwing error.
*/
function defineStartEndAsErrorInTree(
ast: TSESTree.Program,
visitorKeys?: Readonly<SourceCode.VisitorKeys>,
): void {
/**
* Define `start`/`end` properties as throwing error.
*/
function defineStartEndAsError(objName: string, node: unknown): void {
Object.defineProperties(node, {
end: {
configurable: true,
enumerable: false,
get() {
throw new Error(
`Use ${objName}.range[1] instead of ${objName}.end`,
);
},
},
start: {
configurable: true,
enumerable: false,
get() {
throw new Error(
`Use ${objName}.range[0] instead of ${objName}.start`,
);
},
},
});
}
simpleTraverse(ast, {
enter: node => defineStartEndAsError('node', node),
visitorKeys,
});
ast.tokens?.forEach(token => defineStartEndAsError('token', token));
ast.comments?.forEach(comment => defineStartEndAsError('token', comment));
}
if ('parseForESLint' in parser) {
return {
parseForESLint(...args): Parser.ParseResult {
const parsed = parser.parseForESLint(...args) as Parser.ParseResult;
defineStartEndAsErrorInTree(parsed.ast, parsed.visitorKeys);
return parsed;
},
// @ts-expect-error -- see above
[parserSymbol]: parser,
};
}
return {
parse(...args): TSESTree.Program {
const ast = parser.parse(...args) as TSESTree.Program;
defineStartEndAsErrorInTree(ast);
return ast;
},
// @ts-expect-error -- see above
[parserSymbol]: parser,
};
}
-
JSDoc:
-
Parameters:
parser: Parser.LooseParserModule- Return Type:
Parser.LooseParserModule - Calls:
Object.definePropertiessimpleTraverse (from @typescript-eslint/typescript-estree)defineStartEndAsErrorast.tokens?.forEachast.comments?.forEachparser.parseForESLintdefineStartEndAsErrorInTreeparser.parse- Internal Comments:
defineStartEndAsErrorInTree(ast: TSESTree.Program, visitorKeys: Readonly<SourceCode.VisitorKeys>): void¶
Code
function defineStartEndAsErrorInTree(
ast: TSESTree.Program,
visitorKeys?: Readonly<SourceCode.VisitorKeys>,
): void {
/**
* Define `start`/`end` properties as throwing error.
*/
function defineStartEndAsError(objName: string, node: unknown): void {
Object.defineProperties(node, {
end: {
configurable: true,
enumerable: false,
get() {
throw new Error(
`Use ${objName}.range[1] instead of ${objName}.end`,
);
},
},
start: {
configurable: true,
enumerable: false,
get() {
throw new Error(
`Use ${objName}.range[0] instead of ${objName}.start`,
);
},
},
});
}
simpleTraverse(ast, {
enter: node => defineStartEndAsError('node', node),
visitorKeys,
});
ast.tokens?.forEach(token => defineStartEndAsError('token', token));
ast.comments?.forEach(comment => defineStartEndAsError('token', comment));
}
-
JSDoc:
-
Parameters:
ast: TSESTree.ProgramvisitorKeys: Readonly<SourceCode.VisitorKeys>- Return Type:
void - Calls:
Object.definePropertiessimpleTraverse (from @typescript-eslint/typescript-estree)defineStartEndAsErrorast.tokens?.forEachast.comments?.forEach- Internal Comments:
defineStartEndAsError(objName: string, node: unknown): void¶
Code
function defineStartEndAsError(objName: string, node: unknown): void {
Object.defineProperties(node, {
end: {
configurable: true,
enumerable: false,
get() {
throw new Error(
`Use ${objName}.range[1] instead of ${objName}.end`,
);
},
},
start: {
configurable: true,
enumerable: false,
get() {
throw new Error(
`Use ${objName}.range[0] instead of ${objName}.start`,
);
},
},
});
}
-
JSDoc:
-
Parameters:
objName: stringnode: unknown- Return Type:
void - Calls:
Object.defineProperties
enter(node: any): void¶
- Parameters:
node: any- Return Type:
void - Calls:
defineStartEndAsError
enter(node: any): void¶
- Parameters:
node: any- Return Type:
void - Calls:
defineStartEndAsError