mirror of
https://github.com/morluto/rea.git
synced 2026-11-15 19:23:24 +00:00
* refactor(domain): one owner for the non-array record predicate Thirty-four source files each declared isRecord as a non-null object that is not an array, and six more spelled the same predicate as isObject, isSchemaRecord or isStorageRecord. They now import isRecord from src/domain/isRecord.ts, whose overloads keep JsonValue narrowing for the desktop and environment readers. DshCordisPatch's predicate also excludes Cordis expressions, so it is renamed isPatchRecord. architecture-guards refuses a new local copy under any name. The seven files that still hold one are listed and must leave the list when their copy goes. * fix(guards): count record predicate copies precisely * test(hopper): retry after confirmed application exit * fix: reject stale record predicate exceptions
20 lines
672 B
TypeScript
20 lines
672 B
TypeScript
import { expect, it } from "vitest";
|
|
import { recordPredicateCounts } from "../../scripts/verify/record-predicate-guard.mjs";
|
|
|
|
it("counts both function forms and does not depend on the parameter name", () => {
|
|
const predicate =
|
|
'typeof input === "object" && input !== null && !Array.isArray(input)';
|
|
expect(
|
|
recordPredicateCounts(`function isObject(input) { return ${predicate}; }`)
|
|
.bodies,
|
|
).toBe(1);
|
|
expect(
|
|
recordPredicateCounts(`const isObject = (input) => ${predicate};`).bodies,
|
|
).toBe(1);
|
|
expect(
|
|
recordPredicateCounts(
|
|
`const a = (input) => ${predicate}; const b = (input) => ${predicate};`,
|
|
).bodies,
|
|
).toBe(2);
|
|
});
|