43aadbeb45
98 annotations posées à côté des déclarations, et un test qui les exige sur la surface publiée. Elles portent trois choses : le niveau qui répond, la référence amont, et la catégorie parmi les cinq. La cinquième est celle qui manquait : declared-not-wired, quand la cible DÉFINIT la forme et ne la câble pas. Neuf symboles en relèvent, dont readLinks — que j'avais classé « notre invention » en raisonnant depuis l'absence, alors que c'est le meilleur alignement disponible. Les références citent un SYMBOLE, jamais une ligne : trois citations du document avaient déjà pourri. Cinq corrections au passage, toutes vérifiées à la source — un chemin ORM qui n'existe pas, deux plages de lignes fausses, et surtout docs.* et subscribeDoc étiquetés PASSTHROUGH alors qu'ils sont alignés : nos noms, plus un argument jamais transmis. La sémantique survit à la migration, les sites d'appel non, et la nuance disparaissait sous une étiquette trop flatteuse. Le test échoue à l'annotation retirée, à la catégorie mal orthographiée, et à une invention qui prétendrait citer une référence — vérifié en cassant les trois. Il a aussi attrapé un défaut en lui-même : le gabarit de format placé dans index.ts se faisait analyser comme une annotation. La classification couvre l'interne qui prétend ressembler à la cible — tout emulated-verifier — et exclut ce qui ne le prétend pas. La faute d'origine portait sur une fonction non exportée ; n'être pas publié n'a protégé personne. Quatre symboles ont résisté et sont annotés avec leur catégorie dominante, la seconde nommée dans la note plutôt que lissée.
19 lines
1.0 KiB
TypeScript
19 lines
1.0 KiB
TypeScript
/**
|
|
* Wrapped `useShape`: same signature as `@ng-org/orm`. Once the cap emulation is
|
|
* in force, the returned set is a read-filtered VIEW (only items in documents the
|
|
* current holder has the ReadCap of); before the first cap is issued it passes the
|
|
* real set through unchanged. At migration the filtering disappears — the broker
|
|
* only delivers documents whose cap the wallet holds.
|
|
*/
|
|
|
|
import { getConfig, getCaps } from "../shared-wallet/bootstrap";
|
|
import { makeReadFilteredView } from "../emulated-verifier/read-filter";
|
|
|
|
// @provenance useShape kind=passthrough level=3 ref=sdk/js/orm/src/frontendAdapters/react/useShape.ts:useShape — forwards to the injected real hook; the read-filtered view emulates cryptographic isolation and the generic `T` is widened to `unknown`
|
|
export function useShape(shapeType: unknown, scope: unknown): unknown {
|
|
const set = getConfig().useShape(shapeType, scope) as object;
|
|
const caps = getCaps();
|
|
if (!caps.isEnforcing()) return set; // no cap issued yet → passthrough
|
|
return makeReadFilteredView(set, caps);
|
|
}
|