fix: les trois citations que les paquets installes invalidaient

Recherche menee sur les 94 citations vers engine/ et sdk/, en comparant
l'arbre cite aux artefacts publies. Onze citations de niveau 2
(doc_subscribe, sparql_update, sparql_query, doc_create) sont
identiques de part et d'autre, ainsi que ShapeType, Schema et
DeepSignalSet. Trois ne l'etaient pas.

- Scope : la revision citee declare `graphs?` OPTIONNEL,
  @ng-org/orm@0.1.2-alpha.21 le rend requis - et c'est le paquet
  installe qui est reexporte ici.
- BaseType : la revision citee garde "@graph" en commentaire derriere un
  TODO, @ng-org/shex-orm@0.1.2-alpha.9 le declare.
- NG : le compte de membres disait 88 en neuf endroits, dont un marque
  VERIFIED et un autre annoncant une mesure contre alpha.14. Le paquet
  installe en declare 90 - 84 fonctions et 6 classes RDF - et deux des
  quatre-vingt-dix, graph_orm_next_page et graph_orm_previous_page, sont
  absents de l'arbre cite. Le compte vit desormais a un seul endroit,
  avec la version a laquelle il appartient ; ailleurs il disparait, parce
  que la phrase disait "tous les membres" et que le chiffre n'y ajoutait
  qu'une occasion de perimer.

Les deux premieres reprennent la forme que RdfOrmConfig et
OrmSubscriptionHandle portaient deja : une clause finale nommant la
version publiee la ou elle diverge de la revision citee.
This commit is contained in:
Sylvain Duchesne
2026-09-24 15:05:36 +02:00
parent 7bcb52a5fd
commit 139d21843a
7 changed files with 25 additions and 17 deletions
+1 -1
View File
@@ -109,7 +109,7 @@ export function init(...args: any[]): any {
* prose, unenforceable and silent when missed - and it WAS missed, by both consumers in
* this repository, which is how the hole was found.
*
* Nothing is taken from the caller: `wrappedNg()` forwards every one of the 88 members to
* Nothing is taken from the caller: `wrappedNg()` forwards every one of its members to
* the very object `configure()` received, and it is the same object `ng` publishes, so the
* ORM now reaches the engine through exactly what the application does. The remaining
* arguments and the return value pass straight through.
+13 -5
View File
@@ -39,10 +39,18 @@ function graphsWrittenBy(patches: unknown): Nuri[] {
}
/**
* Typed `NG` — upstream's own type for `ng` (`NG = typeof NGModule`, 88 exported members,
* installed `index.d.ts:136-231`). The proxy adds no member and removes none, so this is
* the honest declaration; it used to be `Record<string, any>`, which silently dropped all
* 88 signatures and let any misspelt member typecheck.
* Typed `NG` - upstream's own type for `ng`. `NG = typeof NGModule`, the `NGModule`
* namespace of the installed `@ng-org/web`, which at `0.1.2-alpha.14` declares 90 members:
* 84 functions and 6 RDF classes. The proxy adds no member and removes none, so this is
* the honest declaration; it used to be `Record<string, any>`, which silently dropped
* every signature and let any misspelt member typecheck.
*
* The count is named with its RELEASE because it moves with one, and this one had stopped
* matching: the figure recorded here was two short, and two of the ninety -
* `graph_orm_next_page` and `graph_orm_previous_page` - appear nowhere in the cited
* checkout's `sdk/js/lib-wasm/src/lib.rs`, the tree that declares the PREVIOUS release
* `@ng-org/web@0.1.2-alpha.13`. A count with no release beside it is a claim nobody can
* re-check against anything, so it drifts in silence - which is what happened.
*
* The empty object is only the Proxy's TARGET: every property is answered by the `get`
* trap below, never by the target, so there is nothing to put in it. Typing the target is
@@ -144,7 +152,7 @@ export function makeNg(): NG {
// callable for the path `<member>.bind`, calling it posts a remote request named
// after the MEMBER with the bind arguments, and what comes back is a PROMISE.
//
// The published `ng` therefore answered all 88 members with a promise instead of a
// The published `ng` therefore answered every member with a promise instead of a
// function, and a caller got the SDK's own `<member> is not a function`. What made
// it invisible for months is that this library's internals never go through this
// proxy - they call the injected `ng` directly - and every fake in the suite is a