From b271486999ac670ff8bf84e6d3f25d3e5bdc1468 Mon Sep 17 00:00:00 2001 From: "M.U.N.I.N" <82655227+SNDST00M@users.noreply.github.com> Date: Sat, 14 May 2022 20:01:39 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E2=9C=A8=20Add=20TypeScript=20definiti?= =?UTF-8?q?ons=20(#739)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 6 ++- tsconfig.json | 14 +++++++ types/index.d.ts | 95 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 tsconfig.json create mode 100644 types/index.d.ts diff --git a/package.json b/package.json index acbb082..ea85327 100644 --- a/package.json +++ b/package.json @@ -3,13 +3,15 @@ "version": "0.0.0-development", "description": "Formats your JavaScript using prettier followed by eslint --fix", "main": "dist/index.js", + "types": "types/index.d.ts", "scripts": { "start": "nps", "test": "nps test", "precommit": "opt --in pre-commit --exec \"npm start validate\"" }, "files": [ - "dist" + "dist", + "types" ], "keywords": [], "author": "Kent C. Dodds (http://kentcdodds.com/)", @@ -18,6 +20,8 @@ ], "license": "MIT", "dependencies": { + "@types/eslint": "^8.4.2", + "@types/prettier": "^2.6.0", "@typescript-eslint/parser": "^5.10.0", "common-tags": "^1.4.0", "dlv": "^1.1.0", diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..e844e53 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "CommonJS", + "lib": ["ES2020", "DOM"], + "moduleResolution": "Node", + "rootDir": ".", + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "baseUrl": "./" + }, + "exclude": ["node_modules"] +} diff --git a/types/index.d.ts b/types/index.d.ts new file mode 100644 index 0000000..7cf8b65 --- /dev/null +++ b/types/index.d.ts @@ -0,0 +1,95 @@ +// Type definitions for prettier-eslint 12.0 +// Project: https://github.com/prettier/prettier-eslint + +import * as eslint from "eslint"; +import * as prettier from "prettier"; + +declare namespace format { + /** + * Logging level for the traceback of the synchronous formatting process. + */ + type LogLevel = "error" | "warn" | "info" | "debug" | "trace"; + + /** + * Options to format text with Prettier and ESLint. + */ + interface Options { + /** + * The config to use for formatting with ESLint. + */ + eslintConfig?: eslint.Linter.Config; + /** + * The path to the eslint module to use. + * Will default to require.resolve('eslint') + */ + eslintPath?: string; + /** + * The options to pass for formatting with `prettier` if the given + * option is not inferrable from the `eslintConfig`. + */ + fallbackPrettierOptions?: prettier.Options; + /** + * The path of the file being formatted can be used in lieu of + * `eslintConfig` (eslint will be used to find the relevant + * config for the file). Will also be used to load the `text` if + * `text` is not provided. + */ + filePath?: string; + /** + * The level for the logs (`error`, `warn`, `info`, `debug`, `trace`). + */ + logLevel?: LogLevel; + /** + * The options to pass for formatting with `prettier`. If not provided, + * prettier-eslint will attempt to create the options based on the + * `eslintConfig` value. + */ + prettierOptions?: prettier.Options; + /** + * The path to the `prettier` module. + * Will default to require.resovlve('prettier') + */ + prettierPath?: string; + /** + * Run Prettier last. + */ + prettierLast?: boolean; + /** + * The text (JavaScript code) to format. + */ + text: string; + } +} + +/** + * Formats the text with Prettier and then ESLint while obeying the user's + * configuration. + * + * @param options Options to format text with Prettier and Eslint. + * @param options.eslintConfig The config to use for formatting + * with ESLint. + * @param options.eslintPath The path to the eslint module to use. + * Will default to require.resolve('eslint') + * @param options.fallbackPrettierOptions The options to pass for + * formatting with `prettier` if the given option is not inferrable from the + * eslintConfig. + * @param options.filePath The path of the file being formatted + * can be used in lieu of `eslintConfig` (eslint will be used to find the + * relevant config for the file). Will also be used to load the `text` if + * `text` is not provided. + * @param options.prettierOptions The options to pass for + * formatting with `prettier`. If not provided, prettier-eslint will attempt + * to create the options based on the `eslintConfig` value. + * @param options.prettierLast Run Prettier last. + * @param options.prettierPath The path to the prettier module. + * Will default to require.resovlve('prettier') + * @param options.logLevel The level for the logs (`error`, `warn`, + * `info`, `debug`, `trace`). + * @param options.text The text (JavaScript code) to format. + * @return Auto-formatted text that is mostly compliant with the + * supplied configuration. The auto-formatting is limited to the issues that + * Prettier and ESLint can automatically fix. + */ +declare function format(options: format.Options): string; + +export = format;