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
14 lines
725 B
JavaScript
14 lines
725 B
JavaScript
/** Count declarations named isRecord and declarations with the shared predicate. */
|
|
export const recordPredicateCounts = (content) => {
|
|
const arrow =
|
|
/\bconst\s+[\w$]+\s*=\s*\(\s*([\w$]+)[^)]*\)\s*(?::[^=]+)?=>\s*typeof\s+\1\s*===\s*["']object["']\s*&&\s*\1\s*!==\s*null\s*&&\s*!Array\.isArray\(\1\)\s*(?=;|\})/gu;
|
|
const declaration =
|
|
/\bfunction\s+[\w$]+\s*\(\s*([\w$]+)[^)]*\)\s*(?::[^{]+)?\{\s*return\s+typeof\s+\1\s*===\s*["']object["']\s*&&\s*\1\s*!==\s*null\s*&&\s*!Array\.isArray\(\1\)\s*(?=;|\})/gu;
|
|
return {
|
|
named: [...content.matchAll(/\b(?:const|function)\s+isRecord\b/gu)].length,
|
|
bodies:
|
|
[...content.matchAll(arrow)].length +
|
|
[...content.matchAll(declaration)].length,
|
|
};
|
|
};
|