d37ed7e07c
## Summary - **Merge queue optimization**: Created a dedicated `ci-merge-queue.yaml` workflow that only runs Playwright E2E tests on `ubuntu-latest-8-cores`. Removed `merge_group` trigger from all 7 existing CI workflows (front, server, shared, website, sdk, zapier, docker-compose). The merge queue goes from ~30+ parallel jobs to a single focused E2E job. - **Label-based merge queue simulation**: Added `run-merge-queue` label support so developers can trigger the exact merge queue E2E pipeline on any open PR before it enters the queue. - **Prettier in lint**: Chained `prettier --check` into `lint` and `prettier --write` into `lint --configuration=fix` across `nx.json` defaults, `twenty-front`, and `twenty-server`. Prettier formatting errors are now caught by `lint` and fixed by `lint:fix` / `lint:diff-with-main --configuration=fix`. ## After merge (manual repo settings) Update GitHub branch protection required status checks: 1. Remove old per-workflow merge queue checks (`ci-front-status-check`, `ci-e2e-status-check`, `ci-server-status-check`, etc.) 2. Add `ci-merge-queue-status-check` as the required check for the merge queue
71 lines
1.8 KiB
JSON
71 lines
1.8 KiB
JSON
{
|
|
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
|
"jsPlugins": ["../twenty-oxlint-rules/dist/oxlint-plugin.mjs"],
|
|
"plugins": ["typescript", "import", "unicorn"],
|
|
"categories": {
|
|
"correctness": "off"
|
|
},
|
|
"ignorePatterns": ["node_modules", "dist"],
|
|
"rules": {
|
|
"func-style": ["error", "declaration", { "allowArrowFunctions": true }],
|
|
"no-console": [
|
|
"warn",
|
|
{ "allow": ["group", "groupCollapsed", "groupEnd"] }
|
|
],
|
|
"no-control-regex": "off",
|
|
"no-debugger": "error",
|
|
"no-duplicate-imports": "error",
|
|
"no-undef": "off",
|
|
"no-unused-vars": "off",
|
|
"no-redeclare": "off",
|
|
"import/no-duplicates": "error",
|
|
"typescript/no-redeclare": "error",
|
|
"typescript/ban-ts-comment": "error",
|
|
"typescript/consistent-type-imports": [
|
|
"error",
|
|
{
|
|
"prefer": "type-imports",
|
|
"fixStyle": "inline-type-imports"
|
|
}
|
|
],
|
|
"typescript/explicit-function-return-type": "off",
|
|
"typescript/explicit-module-boundary-types": "off",
|
|
"typescript/no-empty-object-type": [
|
|
"error",
|
|
{
|
|
"allowInterfaces": "with-single-extends"
|
|
}
|
|
],
|
|
"typescript/no-empty-function": "off",
|
|
"typescript/no-explicit-any": "off",
|
|
"typescript/no-unused-vars": [
|
|
"warn",
|
|
{
|
|
"vars": "all",
|
|
"varsIgnorePattern": "^_",
|
|
"args": "after-used",
|
|
"argsIgnorePattern": "^_"
|
|
}
|
|
],
|
|
"twenty/enforce-module-boundaries": [
|
|
"error",
|
|
{
|
|
"depConstraints": [
|
|
{
|
|
"sourceTag": "scope:shared",
|
|
"onlyDependOnLibsWithTags": ["scope:shared"]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"overrides": [
|
|
{
|
|
"files": ["**/constants/*.ts", "**/*.constants.ts"],
|
|
"rules": {
|
|
"twenty/max-consts-per-file": ["error", { "max": 1 }]
|
|
}
|
|
}
|
|
]
|
|
}
|