mirror of
https://github.com/morluto/rea.git
synced 2026-11-10 16:57:19 +00:00
fix(plist): own dictionary decoding across Apple workflows
Preserve XML, OpenStep and binary dictionary keys at their format owners. Share validated binary reference facts with materialization while retaining scalar precision, UID identity and bounded expansion. Migrate archive, Interface Builder, native and app-bundle consumers, then remove obsolete key-omission accounting and schema copies. Validated source regressions and compiled CLI/MCP workflows, including native plist fidelity and archive identity. Typecheck, lint, docs and test discovery pass. No performance benchmarks were required.
This commit is contained in:
1 parent
3b26d7f80b
commit
eb06e263cb
35 files changed
+1006
-785
No files matched your search
@@ -84,10 +84,7 @@ import {
|
||||
} from "../domain/apple/plistValue.js";
|
||||
import { createPlistNumberProjection } from "../domain/apple/plistNumbers.js";
|
||||
import type { NativeUiObservationResult } from "../domain/native/nativeUiObservation.js";
|
||||
import {
|
||||
omittedPrototypeKeysLimitation,
|
||||
parseXmlPropertyList,
|
||||
} from "../domain/propertyListKeys.js";
|
||||
import { parseXmlPropertyList } from "../domain/propertyListKeys.js";
|
||||
import {
|
||||
demangleSwiftSchema,
|
||||
inspectPlistSchema,
|
||||
@@ -808,11 +805,6 @@ class NativeMacOSClient implements AnalysisClient {
|
||||
...parsed.limitations,
|
||||
...entitlementValue.limitations.map((note) => `Entitlements: ${note}`),
|
||||
"Inspected a digest-verified Mach-O byte snapshot; filesystem-bound signing context and trust validation are not examined.",
|
||||
...(entitlementValue.omittedPrototypeKeys === 0
|
||||
? []
|
||||
: [
|
||||
`Entitlements: ${omittedPrototypeKeysLimitation(entitlementValue.omittedPrototypeKeys)}`,
|
||||
]),
|
||||
];
|
||||
const architectures = codeSignArchitectures(parsed.format, this.target);
|
||||
if (architectures.length > 1)
|
||||
@@ -1491,13 +1483,11 @@ const parseEntitlements = (
|
||||
output: string,
|
||||
): {
|
||||
readonly value: JsonValue;
|
||||
readonly omittedPrototypeKeys: number;
|
||||
readonly limitations: readonly string[];
|
||||
} => {
|
||||
const start = output.indexOf("<?xml");
|
||||
const end = output.lastIndexOf("</plist>");
|
||||
if (start < 0 || end < start)
|
||||
return { value: null, omittedPrototypeKeys: 0, limitations: [] };
|
||||
if (start < 0 || end < start) return { value: null, limitations: [] };
|
||||
const decoded = parseXmlPropertyList(
|
||||
output.slice(start, end + "</plist>".length),
|
||||
);
|
||||
@@ -1506,7 +1496,6 @@ const parseEntitlements = (
|
||||
const value = numbers.project(projected.value);
|
||||
return {
|
||||
value,
|
||||
omittedPrototypeKeys: decoded.omittedPrototypeKeys,
|
||||
limitations: [
|
||||
...numbers.limitations(),
|
||||
...(projected.nonFiniteRealCount === 0
|
||||
|
||||
Reference in new issue
Block a user