dorfteich/eslint.config.mjs
Claude Fable 5 74a9e495e4
Some checks failed
CI / Lint, typecheck, test (pull_request) Failing after 6m34s
CI / Import/export fidelity gate (pull_request) Has been skipped
CI / Build container images (pull_request) Has been skipped
CI / Auth e2e pack (pull_request) Has been skipped
#209: pandoc reference documents carry the VS-NfD marking for DOCX/ODT
reference-vs-nfd.docx/.odt ship as derived binaries: the pinned pandoc's
default reference documents plus a header and footer with the marking —
part of the document's page setup, so it repeats on every page in Word
and LibreOffice and is not deletable body text. Source of truth is
scripts/gen-classified-reference-docs.mjs (wording from shared
classificationMarking(); maintenance documented in assets/README.md).
The converter passes reference docs to pandoc-server via in-request
files + reference-doc; the worker attaches them for marked docx/odt jobs
(job option {marking}, as in #208). Unclassified exports pass nothing
and are unchanged (pinned by fake-converter test). Fidelity suite
asserts against real pandoc 3.6 that marked outputs carry the
header/footer parts and unmarked ones do not; per-page repetition
verified via LibreOffice 25.8 headless PDF (5/5 pages, 2 markings each,
both formats). Word: quick manual look pending (sample files in the
workspace), procedure documented in assets/README.md.

Co-Authored-By: Claude Fable 5 (1M context) <noreply@anthropic.com>
2026-07-31 07:09:47 +02:00

67 lines
1.9 KiB
JavaScript

// Repo-wide ESLint flat config. Packages inherit these rules; add
// package-specific overrides here (scoped by `files`) rather than with
// per-package config files, so rules stay consistent across the monorepo.
import js from '@eslint/js';
import tseslint from 'typescript-eslint';
import prettier from 'eslint-config-prettier';
export default tseslint.config(
{
ignores: [
'**/dist/**',
// Vendored third-party apps bundled into plugins (drawio) — never linted.
'packages/plugins/*/vendor/**',
'**/node_modules/**',
'**/coverage/**',
'**/.pnpm-store/**',
'**/*.gen.ts',
// Runtime data volumes (installed plugin bundles, uploads) — not source.
'apps/api/data/**',
],
},
js.configs.recommended,
...tseslint.configs.recommended,
prettier,
{
// Plain-Node maintenance/build scripts (no TypeScript, no bundler).
files: [
'scripts/**/*.mjs',
'deploy/**/*.mjs',
'packages/plugins/*/build.mjs',
'apps/api/scripts/**/*.mjs',
],
languageOptions: {
globals: {
console: 'readonly',
process: 'readonly',
URL: 'readonly',
fetch: 'readonly',
Buffer: 'readonly',
setTimeout: 'readonly',
},
},
},
{
// Classic browser scripts served verbatim from public/ (theme-init.js,
// issue #180): no bundler, no modules, browser globals only.
files: ['apps/web/public/*.js'],
languageOptions: {
globals: {
window: 'readonly',
document: 'readonly',
},
},
},
{
rules: {
// Unused values are usually bugs; underscore-prefix marks intentional ones.
'@typescript-eslint/no-unused-vars': [
'error',
{ argsIgnorePattern: '^_', varsIgnorePattern: '^_' },
],
// `any` defeats the shared Zod/type contracts between client and server.
'@typescript-eslint/no-explicit-any': 'error',
},
},
);