QRun-IO/ci-policy: ci / fork-guard (push) Skipped
QRun-IO/ci-policy: ci / head-profile (push) Skipped
QRun-IO/ci-policy: ci / application-template-0 (push) Skipped
QRun-IO/ci-policy: ci / gradle-1 (push) Skipped
QRun-IO/ci-policy: ci / java-docker-3 (push) Skipped
QRun-IO/ci-policy: ci / java-docker-4 (push) Skipped
QRun-IO/ci-policy: ci / java-frontend-browser-5 (push) Skipped
QRun-IO/ci-policy: ci / java-maven-6 (push) Skipped
QRun-IO/ci-policy: ci / java-maven-7 (push) Skipped
QRun-IO/ci-policy: ci / node-8 (push) Skipped
QRun-IO/ci-policy: ci / node-9 (push) Skipped
QRun-IO/ci-policy: ci / node-10 (push) Skipped
QRun-IO/ci-policy: ci / node-playwright-11 (push) Skipped
QRun-IO/ci-policy: ci / repository-policy-12 (push) Skipped
QRun-IO/ci-policy: ci / source-config-13 (push) Skipped
QRun-IO/ci-policy: ci / source-config-14 (push) Skipped
QRun-IO/ci-policy: ci / android-0 (push) Skipped
QRun-IO/ci-policy: ci / original-business (push) Skipped
QRun-IO/ci-policy: ci / original-mcp (push) Skipped
QRun-IO/ci-policy: ci / original-voyage (push) Skipped
QRun-IO/ci-policy: ci / original-cli (push) Skipped
QRun-IO/ci-policy: ci / repository-policy (push) Skipped
QRun-IO/ci-policy: ci / java-core-2-head (push) Skipped
QRun-IO/ci-policy: ci / java-docker-3-head (push) Skipped
QRun-IO/ci-policy: ci / java-maven-6-head (push) Skipped
QRun-IO/ci-policy: ci / java-maven-7-head (push) Skipped
QRun-IO/ci-policy: ci / not-enrolled (push) Failing after 7s
QRun-IO/ci-policy: native / fork-deny (push) Skipped
QRun-IO/ci-policy: native / dotnet-0 (push) Skipped
QRun-IO/ci-policy: ci / ci-result (push) Failing after 6s
QRun-IO/ci-policy: native / native-result (push) Successful in 6s
Save the current implementation and README, status, and known-issue documentation at the user-requested stop. No completed release or deployment is claimed. Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: GPT-6 Codex <noreply@openai.com>
78 lines
3.4 KiB
JavaScript
78 lines
3.4 KiB
JavaScript
// Copyright (C) 2026 Kingsrook, LLC.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
// KofTwentyTwo TypeScript / JavaScript lint configuration (K22-CODE-TS).
|
|
// The Kingsrook layout (3-space indent, Allman braces, if(...) with no space, no more than
|
|
// one blank line inside code) is enforced by ESLint Stylistic rather than Prettier, which
|
|
// cannot express Allman braces. Type-aware strict rules come from typescript-eslint.
|
|
// Install: npm i -D eslint @eslint/js typescript-eslint @stylistic/eslint-plugin typescript
|
|
import js from "@eslint/js";
|
|
import stylistic from "@stylistic/eslint-plugin";
|
|
import tseslint from "typescript-eslint";
|
|
|
|
export default tseslint.config(
|
|
{
|
|
ignores: ["dist/**", "build/**", "coverage/**", "node_modules/**", "**/*.generated.*"],
|
|
},
|
|
js.configs.recommended,
|
|
tseslint.configs.strictTypeChecked,
|
|
tseslint.configs.stylisticTypeChecked,
|
|
{
|
|
languageOptions: {
|
|
parserOptions: {
|
|
projectService: true,
|
|
tsconfigRootDir: import.meta.dirname,
|
|
},
|
|
},
|
|
plugins: { "@stylistic": stylistic },
|
|
rules: {
|
|
// Kingsrook layout
|
|
"@stylistic/indent": ["error", 3, { SwitchCase: 1 }],
|
|
"@stylistic/brace-style": ["error", "allman", { allowSingleLine: false }],
|
|
"@stylistic/keyword-spacing": ["error", {
|
|
before: true,
|
|
after: true,
|
|
overrides: {
|
|
if: { after: false },
|
|
for: { after: false },
|
|
while: { after: false },
|
|
switch: { after: false },
|
|
catch: { after: false },
|
|
},
|
|
}],
|
|
// 1 blank line inside code; up to 3 so methods can be separated by 3.
|
|
"@stylistic/no-multiple-empty-lines": ["error", { max: 3, maxBOF: 0, maxEOF: 0 }],
|
|
"@stylistic/lines-between-class-members": ["error", "always", { exceptAfterSingleLine: true }],
|
|
"@stylistic/semi": ["error", "always"],
|
|
"@stylistic/quotes": ["error", "double", { avoidEscape: true }],
|
|
"@stylistic/comma-dangle": ["error", "always-multiline"],
|
|
"@stylistic/eol-last": ["error", "always"],
|
|
"@stylistic/no-tabs": "error",
|
|
"@stylistic/no-trailing-spaces": "error",
|
|
"@stylistic/operator-linebreak": ["error", "before"],
|
|
"@stylistic/dot-location": ["error", "property"],
|
|
"@stylistic/max-len": "off",
|
|
|
|
// Kingsrook non-layout rules
|
|
"curly": ["error", "all"],
|
|
"eqeqeq": ["error", "always"],
|
|
"no-console": "error",
|
|
"no-warning-comments": ["error", { terms: ["todo", "fixme"], location: "start" }],
|
|
"@typescript-eslint/explicit-function-return-type": "error",
|
|
"@typescript-eslint/naming-convention": ["error",
|
|
{ selector: "default", format: ["camelCase"] },
|
|
{ selector: "variable", modifiers: ["const", "global"], format: ["camelCase", "UPPER_CASE"] },
|
|
{ selector: "typeLike", format: ["PascalCase"] },
|
|
{ selector: "enumMember", format: ["PascalCase", "UPPER_CASE"] },
|
|
{ selector: "import", format: null },
|
|
{ selector: "objectLiteralProperty", format: null },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
files: ["**/*.js", "**/*.mjs", "**/*.cjs"],
|
|
extends: [tseslint.configs.disableTypeChecked],
|
|
// Plain-JavaScript test fixtures cannot carry TypeScript return annotations.
|
|
rules: { "@typescript-eslint/explicit-function-return-type": "off" },
|
|
},
|
|
);
|