mirror of
https://github.com/morluto/rea.git
synced 2026-11-04 22:06:10 +00:00
fix(analysis): resolve procedure identities and preserve literal queries
This commit is contained in:
1 parent
f2e22e13a6
commit
d830cb79b3
9 files changed
+117
-116
No files matched your search
@@ -0,0 +1,29 @@
|
||||
import type { AnalysisOperation } from "./AnalysisProvider.js";
|
||||
import { AnalysisOutputError } from "../domain/analysisErrorCore.js";
|
||||
import type { AnalysisError } from "../domain/analysisErrorBase.js";
|
||||
import type { JsonValue } from "../domain/jsonValue.js";
|
||||
import { err, ok, type Result } from "../domain/result.js";
|
||||
|
||||
type AnalysisCall = (
|
||||
operation: AnalysisOperation,
|
||||
parameters: Readonly<Record<string, JsonValue>>,
|
||||
signal?: AbortSignal,
|
||||
) => Promise<Result<JsonValue, AnalysisError>>;
|
||||
|
||||
/** Resolve a caller selector to an observed provider procedure identity. */
|
||||
export const resolveProcedureAddress = async (
|
||||
call: AnalysisCall,
|
||||
procedure: string,
|
||||
signal?: AbortSignal,
|
||||
): Promise<Result<string, AnalysisError>> => {
|
||||
const result = await call("procedure_address", { procedure }, signal);
|
||||
if (!result.ok) return result;
|
||||
return typeof result.value === "string" && result.value.length > 0
|
||||
? ok(result.value)
|
||||
: err(
|
||||
new AnalysisOutputError(
|
||||
"procedure_address",
|
||||
"provider returned no canonical procedure address",
|
||||
),
|
||||
);
|
||||
};
|
||||
Reference in new issue
Block a user