@eqs/tooling : knip-satellite.js est publié sans déclarations de types (TS7016 dans knip.ts) #134

Closed
opened 2026-10-12 07:01:37 +00:00 by nicolas-fryder · 1 comment

Commande

knip.ts (seul format TypeScript que knip lit) : import { knipSatellite } from '@eqs/tooling/knip-satellite', puis tsc --noEmit sous @eqs/tooling/tsconfig.next.json.

Attendu

Le module est typé ; le README le montre comme l'usage recommandé.

Observé

TS7016: Could not find a declaration file for module '@eqs/tooling/knip-satellite'. knip ne lit pas de knip.mjs (noms acceptés : knip.json(c), knip.ts, knip.js, knip.config.ts/js).

Versions

@eqs/tooling 0.17.1, knip 6.37, typescript 5.9.3.

Contournement

src/types/eqs-tooling-knip.d.ts dans ATLAS, déclaration minimale.

Proposition

Publier knip-satellite.d.ts (comme vitest-reprise-reseau.d.ts) avec une entrée types dans exports.

Au passage : #83 est bien corrigé — knipSatellite() reconnaît une application à la racine, ATLAS n'étend plus la base à la main.

Ouvert depuis le rejeu du rétrofit d'ATLAS (étape 1).

## Commande `knip.ts` (seul format TypeScript que knip lit) : `import { knipSatellite } from '@eqs/tooling/knip-satellite'`, puis `tsc --noEmit` sous `@eqs/tooling/tsconfig.next.json`. ## Attendu Le module est typé ; le README le montre comme l'usage recommandé. ## Observé `TS7016: Could not find a declaration file for module '@eqs/tooling/knip-satellite'`. knip ne lit pas de `knip.mjs` (noms acceptés : knip.json(c), knip.ts, knip.js, knip.config.ts/js). ## Versions @eqs/tooling 0.17.1, knip 6.37, typescript 5.9.3. ## Contournement `src/types/eqs-tooling-knip.d.ts` dans ATLAS, déclaration minimale. ## Proposition Publier `knip-satellite.d.ts` (comme `vitest-reprise-reseau.d.ts`) avec une entrée `types` dans `exports`. Au passage : #83 est bien corrigé — `knipSatellite()` reconnaît une application à la racine, ATLAS n'étend plus la base à la main. *Ouvert depuis le rejeu du rétrofit d'ATLAS (étape 1).*
nicolas-fryder referenced this issue from a commit 2026-10-12 07:57:22 +00:00
Author
Owner

Vérifié sur ATLAS en 0.20.0 : la déclaration publiée existe, mais elle ne se résout pas chez un satellite.

  • knip-satellite.d.ts fait import type { KnipConfig } from 'knip'.
  • Sous @eqs/tooling/tsconfig.next.json (résolution Bundler), avec knip 6.37 : TS2614: Module '"knip"' has no exported member 'KnipConfig' — c'est le constat que le README de knip du socle fait lui-même pour satisfies KnipConfig.
  • tsc ne le voit pas (skipLibCheck), mais ESLint reçoit un type en erreur : 12 no-unsafe-assignment / no-unsafe-member-access sur knip.ts.
  • Un paths du satellite vers une déclaration locale ne marche pas comme contournement : knip charge knip.ts par jiti, qui suit paths, et reçoit la .d.ts au lieu du module (knipSatellite is not a function).

Contournement retenu dans ATLAS : les deux règles no-unsafe-* relâchées sur knip.ts seul, avec renvoi ici.

Proposition : déclarer le type de retour localement dans knip-satellite.d.ts (sans importer knip), ou importer depuis le chemin que la résolution Bundler voit.

Vérifié sur ATLAS en 0.20.0 : la déclaration publiée existe, mais elle ne se résout pas chez un satellite. - `knip-satellite.d.ts` fait `import type { KnipConfig } from 'knip'`. - Sous `@eqs/tooling/tsconfig.next.json` (résolution `Bundler`), avec knip 6.37 : `TS2614: Module '"knip"' has no exported member 'KnipConfig'` — c'est le constat que le README de knip du socle fait lui-même pour `satisfies KnipConfig`. - `tsc` ne le voit pas (`skipLibCheck`), mais ESLint reçoit un type en erreur : 12 `no-unsafe-assignment` / `no-unsafe-member-access` sur `knip.ts`. - Un `paths` du satellite vers une déclaration locale ne marche pas comme contournement : knip charge `knip.ts` par jiti, qui suit `paths`, et reçoit la `.d.ts` au lieu du module (`knipSatellite is not a function`). Contournement retenu dans ATLAS : les deux règles `no-unsafe-*` relâchées sur `knip.ts` seul, avec renvoi ici. Proposition : déclarer le type de retour localement dans `knip-satellite.d.ts` (sans importer `knip`), ou importer depuis le chemin que la résolution `Bundler` voit.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Infrastructure/eqs-platform#134
No description provided.