Skip to content

lint-todo/utils

Repository files navigation

@ember-template-lint/todo-utils

CI Build npm version License Dependabot Volta Managed TypeScript Code Style: prettier

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

About

A set of utilities that enable the management of "todo" lint violations.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 9