@efa-one/sdk 1.14.0 → 1.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -112,6 +112,33 @@ The flat output layout (`backend/` + `frontend/` at the package root) is a
112
112
  deliberate choice so that consumers using `moduleResolution: node` (node10) can
113
113
  resolve the subpath imports physically — without having to change their tsconfig.
114
114
 
115
+ ## Quality gates (CI)
116
+
117
+ Every push and pull request runs the full gate; the same gate also runs as a
118
+ prerequisite job of the release workflow, so a `v*` tag can never publish a state
119
+ that a PR would have rejected.
120
+
121
+ | Workflow | Runs on | What it enforces |
122
+ |---|---|---|
123
+ | `build-check.yml` | push (`main`, `development`), PR, called by `publish.yml` | `tsc` typecheck (sources **and** `test/` + `scripts/`), Vitest **with coverage thresholds**, ESLint, full `npm run build` (incl. the ESM specifier gate), plus `npm ci` **and** `npm run build` in both `template/` scaffolds |
124
+ | `security.yml` | push, PR, weekly (Mon 06:00 UTC) | `npm audit --audit-level=high` and a copyleft license gate (GPL/AGPL/LGPL) across all three npm directories, Trivy filesystem scan (HIGH/CRITICAL, **including devDependencies** — without that switch Trivy skips them and the scan would be structurally empty here), Trivy misconfig/secret scan (report-only) |
125
+ | `publish.yml` | `v*` tag | tag ↔ `package.json` version match, then npm publish via OIDC trusted publishing |
126
+ | `dependabot.yml` + `dependabot-automerge.yml` | weekly | grouped minor/patch dependency PRs for the SDK, both scaffolds, the scaffold's Docker base images and the GitHub Actions themselves. Auto-merge is present but dormant — see the header comment in the workflow for the three settings that arm it |
127
+
128
+ Run the blocking gates locally before pushing:
129
+
130
+ ```bash
131
+ ./scripts/ci-local.sh # mirrors build-check.yml + security.yml (Trivy via docker if not installed)
132
+ ```
133
+
134
+ Coverage uses a two-level ratchet (global floor + per-file gates on the modules that
135
+ are deliberately tested); see `vitest.config.ts`. When new tests raise coverage, raise
136
+ the thresholds — never lower them.
137
+
138
+ **TypeScript is pinned to exactly `6.0.3`.** That is the last JS-based line;
139
+ `typescript-eslint` does not support the native 7.0 compiler and aborts the entire lint
140
+ run under it. Dependabot is configured to never propose a TypeScript major.
141
+
115
142
  ## Versioning
116
143
 
117
144
  SemVer. Consuming apps pull new versions with `npm update @efa-one/sdk`.
@@ -1,4 +1,4 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useMemo, useState } from 'react';
3
3
  import * as DropdownMenu from './DropdownMenu.js';
4
4
  import { ChevronDown, ChevronUp, ChevronRight, Settings, EyeOff, Filter, RotateCcw, ArrowUp, ArrowDown, Layers, X } from 'lucide-react';
@@ -1,4 +1,4 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
3
  import { Pencil } from 'lucide-react';
4
4
  import { Dialog, DialogClose } from './Dialog.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@efa-one/sdk",
3
- "version": "1.14.0",
3
+ "version": "1.14.1",
4
4
  "description": "Offizielles SDK für efa-one-Apps: Auth/Session, Service-Discovery, Gateway-Client, Audit/Reporting/Mail/Notifications, Permission- und Capability-Registrierung sowie das Frontend-IPC-/i18n-Toolkit.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "commonjs",
@@ -43,8 +43,10 @@
43
43
  "build:backend": "tsc -p tsconfig.backend.json",
44
44
  "build:frontend": "tsc -p tsconfig.frontend.json && node scripts/postbuild-frontend.mjs",
45
45
  "build": "npm run clean && npm run build:backend && npm run build:frontend",
46
- "typecheck": "tsc -p tsconfig.backend.json --noEmit && tsc -p tsconfig.frontend.json --noEmit",
46
+ "typecheck": "tsc -p tsconfig.backend.json --noEmit && tsc -p tsconfig.frontend.json --noEmit && tsc -p tsconfig.test.json --noEmit",
47
+ "lint": "eslint src test scripts",
47
48
  "test": "vitest run",
49
+ "test:coverage": "vitest run --coverage",
48
50
  "prepublishOnly": "npm run build"
49
51
  },
50
52
  "publishConfig": {
@@ -103,28 +105,33 @@
103
105
  }
104
106
  },
105
107
  "devDependencies": {
108
+ "@eslint/js": "^9.39.5",
106
109
  "@radix-ui/react-dialog": "^1.1.4",
107
110
  "@radix-ui/react-dropdown-menu": "^2.1.4",
108
111
  "@radix-ui/react-tooltip": "^1.1.6",
109
112
  "@types/express": "^4.17.21",
110
113
  "@types/jsonwebtoken": "^9.0.6",
111
- "cookie-parser": "^1.4.6",
112
- "lucide-react": "^0.468.0",
113
114
  "@types/node": "^20.14.0",
114
115
  "@types/pg": "^8.11.0",
115
116
  "@types/react": "^18.2.46",
117
+ "@types/react-dom": "^18.2.0",
116
118
  "@types/supertest": "^7.2.0",
119
+ "@vitest/coverage-v8": "^4.1.11",
120
+ "cookie-parser": "^1.4.6",
121
+ "eslint": "^9.39.5",
122
+ "eslint-plugin-react-hooks": "^7.1.1",
117
123
  "express": "^4.19.2",
118
124
  "i18next": "^23.11.0",
119
125
  "i18next-http-backend": "^2.7.3",
120
126
  "jsonwebtoken": "^9.0.2",
127
+ "lucide-react": "^0.577.0",
121
128
  "pg": "^8.12.0",
122
129
  "react": "^18.2.0",
123
130
  "react-dom": "^18.2.0",
124
- "@types/react-dom": "^18.2.0",
125
131
  "react-i18next": "^13.5.0",
126
132
  "supertest": "^7.2.2",
127
- "typescript": "7.0.2",
133
+ "typescript": "6.0.3",
134
+ "typescript-eslint": "^8.67.0",
128
135
  "vitest": "^4.1.4"
129
136
  },
130
137
  "engines": {