core: Flesh out Prettier config package.
This commit is contained in:
18
packages/prettier-config/LICENSE.txt
Normal file
18
packages/prettier-config/LICENSE.txt
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2025 Authentik Security, Inc.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
||||||
|
associated documentation files (the "Software"), to deal in the Software without restriction,
|
||||||
|
including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
||||||
|
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial
|
||||||
|
portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
|
||||||
|
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
||||||
|
OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
5
packages/prettier-config/README.md
Normal file
5
packages/prettier-config/README.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# `@goauthentik/prettier-config`
|
||||||
|
|
||||||
|
This package contains the Prettier configuration used by authentik.
|
||||||
|
While it is possible to use this configuration outside of our projects,
|
||||||
|
you may find that it is not as useful as other popular configurations.
|
||||||
51
packages/prettier-config/config.js
Normal file
51
packages/prettier-config/config.js
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/**
|
||||||
|
* authentik Prettier configuration.
|
||||||
|
*
|
||||||
|
* @type {import("prettier").Config}
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
export const AuthentikPrettierConfig = {
|
||||||
|
arrowParens: "always",
|
||||||
|
bracketSpacing: true,
|
||||||
|
embeddedLanguageFormatting: "auto",
|
||||||
|
htmlWhitespaceSensitivity: "css",
|
||||||
|
insertPragma: false,
|
||||||
|
jsxSingleQuote: false,
|
||||||
|
printWidth: 100,
|
||||||
|
proseWrap: "preserve",
|
||||||
|
quoteProps: "consistent",
|
||||||
|
requirePragma: false,
|
||||||
|
semi: true,
|
||||||
|
singleQuote: false,
|
||||||
|
tabWidth: 4,
|
||||||
|
trailingComma: "all",
|
||||||
|
useTabs: false,
|
||||||
|
vueIndentScriptAndStyle: false,
|
||||||
|
plugins: ["prettier-plugin-packagejson", "@trivago/prettier-plugin-sort-imports"],
|
||||||
|
importOrder: ["^(@?)lit(.*)$", "\\.css$", "^@goauthentik/api$", "^[./]"],
|
||||||
|
importOrderSeparation: true,
|
||||||
|
importOrderSortSpecifiers: true,
|
||||||
|
importOrderParserPlugins: ["typescript", "jsx", "classProperties", "decorators-legacy"],
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: "tsconfig.json",
|
||||||
|
options: {
|
||||||
|
trailingComma: "none",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: "package.json",
|
||||||
|
options: {
|
||||||
|
packageSortOrder: [
|
||||||
|
// ---
|
||||||
|
"name",
|
||||||
|
"version",
|
||||||
|
"description",
|
||||||
|
"scripts",
|
||||||
|
"devDependencies",
|
||||||
|
"dependencies",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
19
packages/prettier-config/format.js
Normal file
19
packages/prettier-config/format.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import { format } from "prettier";
|
||||||
|
import { AuthentikPrettierConfig } from "./config.js";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format using Prettier.
|
||||||
|
*
|
||||||
|
* Defaults to using the TypeScript parser.
|
||||||
|
*
|
||||||
|
* @category Formatting
|
||||||
|
* @param {string} fileContents The contents of the file to format.
|
||||||
|
*
|
||||||
|
* @returns {Promise<string>} The formatted file contents.
|
||||||
|
*/
|
||||||
|
export function formatWithPrettier(fileContents) {
|
||||||
|
return format(fileContents, {
|
||||||
|
...AuthentikPrettierConfig,
|
||||||
|
parser: "typescript",
|
||||||
|
});
|
||||||
|
}
|
||||||
6
packages/prettier-config/index.js
Normal file
6
packages/prettier-config/index.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import { AuthentikPrettierConfig } from "./config.js";
|
||||||
|
|
||||||
|
export * from "./config.js";
|
||||||
|
export * from "./format.js";
|
||||||
|
|
||||||
|
export default AuthentikPrettierConfig;
|
||||||
27
packages/prettier-config/package.json
Normal file
27
packages/prettier-config/package.json
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"name": "@goauthentik/prettier-config",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "authentik's Prettier config",
|
||||||
|
"type": "module",
|
||||||
|
"license": "MIT",
|
||||||
|
"exports": {
|
||||||
|
"./package.json": "./package.json",
|
||||||
|
".": {
|
||||||
|
"import": "./index.js",
|
||||||
|
"types": "./out/index.d.ts"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"types": "./out/index.d.ts",
|
||||||
|
"peerDependencies": {
|
||||||
|
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
||||||
|
"prettier-plugin-organize-imports": "^4.1.0",
|
||||||
|
"prettier": "^3.5.3",
|
||||||
|
"prettier-plugin-packagejson": "^2.5.10"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=20.11"
|
||||||
|
},
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
}
|
||||||
|
}
|
||||||
7
packages/prettier-config/tsconfig.json
Normal file
7
packages/prettier-config/tsconfig.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"extends": "@goauthentik/tsconfig",
|
||||||
|
"compilerOptions": {
|
||||||
|
"checkJs": true,
|
||||||
|
"emitDeclarationOnly": true
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user