@ember-template-lint/todo-utils
A collection of utilities to generate and store lint item metadata.
Those utilities are:
Functions
- buildTodoDatum(lintResult, lintMessage, todoConfig) ⇒
Adapts a LintResult to a TodoDataV2. FilePaths are absolute
when received from a lint result, so they're converted to relative paths for stability in
serializing the contents to disc.
- todoStorageDirExists(baseDir) ⇒
Determines if the .lint-todo storage directory exists.
- ensureTodoStorageDir(baseDir) ⇒
Creates, or ensures the creation of, the .lint-todo directory.
- getTodoStorageDirPath(baseDir) ⇒
- todoFilePathFor(baseDir, todoData) ⇒
Creates a file path from the linting data. Excludes extension.
- todoDirFor(filePath) ⇒
Creates a short hash for the todo's file path.
- todoFileNameFor(todoData) ⇒
Generates a unique filename for a todo lint data.
- writeTodos(baseDir, maybeTodos, options) ⇒
Writes files for todo lint violations. One file is generated for each violation, using a generated
hash to identify each.
Given a list of todo lint violations, this function will also delete existing files that no longer
have a todo lint violation.
- readTodos(baseDir) ⇒
Reads all todo files in the .lint-todo directory.
- readTodosForFilePath(todoStorageDir, filePath) ⇒
Reads todo files in the .lint-todo directory for a specific filePath.
- readTodoData(baseDir) ⇒
Reads todo files in the .lint-todo directory and returns Todo data in an array.
- getTodoBatches(maybeTodos, existing, options) ⇒
Gets 4 maps containing todo items to add, remove, those that are expired, or those that are stable (not to be modified).
- applyTodoChanges(todoStorageDir, add, remove)
Applies todo changes, either adding or removing, based on batches from getTodoBatches
.
- getTodoConfig(baseDir, engine, customDaysToDecay) ⇒
Gets the todo configuration.
Config values can be present in
The package.json
- validateConfig(baseDir) ⇒
Validates whether we have a unique config in a single location.
- getSeverity(todo, today) ⇒
Returns the correct severity level based on the todo data's decay dates.
- isExpired(date, today) ⇒
Evaluates whether a date is expired (earlier than today)
- getDatePart(date) ⇒
Converts a date to include year, month, and day values only (time is zeroed out).
- differenceInDays(startDate, endDate) ⇒
Returns the difference in days between two dates.
- format(date) ⇒
Formats the date in short form, eg. 2021-01-01
buildTodoDatum(lintResult, lintMessage, todoConfig) ⇒
Adapts a LintResult to a TodoDataV2. FilePaths are absolute
when received from a lint result, so they're converted to relative paths for stability in
serializing the contents to disc.
Kind: global function
Returns: - A TodoDataV2 object.
Param | Description |
---|
lintResult | The lint result object. |
lintMessage | A lint message object representing a specific violation for a file. |
todoConfig | An object containing the warn or error days, in integers. |
todoStorageDirExists(baseDir) ⇒
Determines if the .lint-todo storage directory exists.
Kind: global function
Returns: - true if the todo storage directory exists, otherwise false.
Param | Description |
---|
baseDir | The base directory that contains the .lint-todo storage directory. |
ensureTodoStorageDir(baseDir) ⇒
Creates, or ensures the creation of, the .lint-todo directory.
Kind: global function
Returns: - The todo storage directory path.
Param | Description |
---|
baseDir | The base directory that contains the .lint-todo storage directory. |
getTodoStorageDirPath(baseDir) ⇒
Kind: global function
Returns: - The todo storage directory path.
Param | Description |
---|
baseDir | The base directory that contains the .lint-todo storage directory. |
todoFilePathFor(baseDir, todoData) ⇒
Creates a file path from the linting data. Excludes extension.
Kind: global function
Returns: - The todo file path for a TodoDataV2 object.
Param | Description |
---|
baseDir | The base directory that contains the .lint-todo storage directory. |
todoData | The linting data for an individual violation. |
Example
42b8532cff6da75c5e5895a6f33522bf37418d0c/6e3be839
todoDirFor(filePath) ⇒
Creates a short hash for the todo's file path.
Kind: global function
Returns: - The todo directory for a specific filepath.
Param | Description |
---|
filePath | The filePath from linting data for an individual violation. |
todoFileNameFor(todoData) ⇒
Generates a unique filename for a todo lint data.
Kind: global function
Returns: - The todo file name for a TodoDataV2 object.
Param | Description |
---|
todoData | The linting data for an individual violation. |
writeTodos(baseDir, maybeTodos, options) ⇒
Writes files for todo lint violations. One file is generated for each violation, using a generated
hash to identify each.
Given a list of todo lint violations, this function will also delete existing files that no longer
have a todo lint violation.
Kind: global function
Returns: - The counts of added and removed todos.
Param | Description |
---|
baseDir | The base directory that contains the .lint-todo storage directory. |
maybeTodos | The linting data, converted to TodoDataV2 format. |
options | An object containing write options. |
readTodos(baseDir) ⇒
Reads all todo files in the .lint-todo directory.
Kind: global function
Returns: - A Map of TodoFilePathHash/TodoMatcher.
Param | Description |
---|
baseDir | The base directory that contains the .lint-todo storage directory. |
readTodosForFilePath(todoStorageDir, filePath) ⇒
Reads todo files in the .lint-todo directory for a specific filePath.
Kind: global function
Returns: - A Map of TodoFilePathHash/TodoMatcher.
Param | Description |
---|
todoStorageDir | The .lint-todo storage directory. |
filePath | The relative file path of the file to return todo items for. |
readTodoData(baseDir) ⇒
Reads todo files in the .lint-todo directory and returns Todo data in an array.
Kind: global function
Returns: An array of TodoDataV2
Param | Description |
---|
baseDir | The base directory that contains the .lint-todo storage directory. |
getTodoBatches(maybeTodos, existing, options) ⇒
Gets 4 maps containing todo items to add, remove, those that are expired, or those that are stable (not to be modified).
Kind: global function
Returns: - An object of TodoBatches.
Param | Description |
---|
maybeTodos | The linting data for violations. |
existing | Existing todo lint data. |
options | An object containing write options. |
applyTodoChanges(todoStorageDir, add, remove)
Applies todo changes, either adding or removing, based on batches from getTodoBatches
.
Kind: global function
Param | Description |
---|
todoStorageDir | The .lint-todo storage directory. |
add | Batch of todos to add. |
remove | Batch of todos to remove. |
getTodoConfig(baseDir, engine, customDaysToDecay) ⇒
Gets the todo configuration.
Config values can be present in
The package.json
Kind: global function
Returns: - The todo config object.
Param | Description |
---|
baseDir | The base directory that contains the project's package.json. |
engine | The engine for this configuration, eg. eslint |
customDaysToDecay | The optional custom days to decay configuration. |
Example
{
"lintTodo": {
"some-engine": {
"daysToDecay": {
"warn": 5,
"error": 10
},
"daysToDecayByRule": {
"no-bare-strings": { "warn": 10, "error": 20 }
}
}
}
}
A .lint-todorc.js file
Example
module.exports = {
"some-engine": {
"daysToDecay": {
"warn": 5,
"error": 10
},
"daysToDecayByRule": {
"no-bare-strings": { "warn": 10, "error": 20 }
}
}
}
Environment variables (TODO_DAYS_TO_WARN
or TODO_DAYS_TO_ERROR
)
- Env vars override package.json config
Passed in directly, such as from command line options.
- Passed in options override both env vars and package.json config
validateConfig(baseDir) ⇒
Validates whether we have a unique config in a single location.
Kind: global function
Returns: A ConfigValidationResult that indicates whether a config is unique
Param | Description |
---|
baseDir | The base directory that contains the project's package.json. |
getSeverity(todo, today) ⇒
Returns the correct severity level based on the todo data's decay dates.
Kind: global function
Returns: Severity - the lint severity based on the evaluation of the decay dates.
Param | Description |
---|
todo | The todo data. |
today | A number representing a date (UNIX Epoch - milliseconds) |
isExpired(date, today) ⇒
Evaluates whether a date is expired (earlier than today)
Kind: global function
Returns: true if the date is earlier than today, otherwise false
Param | Description |
---|
date | The date to evaluate |
today | A number representing a date (UNIX Epoch - milliseconds) |
getDatePart(date) ⇒
Converts a date to include year, month, and day values only (time is zeroed out).
Kind: global function
Returns: Date - A date with the time zeroed out eg. '2021-01-01T08:00:00.000Z'
Param | Description |
---|
date | The date to convert |
differenceInDays(startDate, endDate) ⇒
Returns the difference in days between two dates.
Kind: global function
Returns: a number representing the days between the dates
Param | Description |
---|
startDate | The start date |
endDate | The end date |
format(date) ⇒
Formats the date in short form, eg. 2021-01-01
Kind: global function
Returns: A string representing the formatted date
Param | Description |
---|
date | The date to format |