Implement query execution, scoped RPC enrichment, live collections, and scaffold integration
This commit is contained in:
Vendored
+11
@@ -3,6 +3,7 @@ import { readFileSync } from "node:fs";
|
||||
import { createInvocationRegistry } from "./invocations.js";
|
||||
import { isObjectReference, referenceFromWire, referenceToWire, assertReferenceFree, } from "./references.js";
|
||||
export * from "./bindings.js";
|
||||
export * from "./queries.js";
|
||||
export { relationshipMap, relationshipList, relationshipSet } from "./relationships.js";
|
||||
import { AsyncLocalStorage } from "node:async_hooks";
|
||||
import { createHmac, randomBytes, randomUUID, timingSafeEqual } from "node:crypto";
|
||||
@@ -155,6 +156,15 @@ export const createRuntimeContext = (camino, orch, request) => {
|
||||
const ports = new Map();
|
||||
for (const dependency of request.dependencies) {
|
||||
switch (dependency.binding.case) {
|
||||
case "queryId": {
|
||||
const queryId = dependency.binding.value, objectId = dependency.objectId || request.objectId;
|
||||
ports.set(dependency.portId, {
|
||||
queryId,
|
||||
execute: (variables, expectedDefinitionDigest) => orch.executeQuery({ queryId, objectId, variables, expectedDefinitionDigest }),
|
||||
watch: (variables, signal, expectedDefinitionDigest) => orch.watchQuery({ queryId, objectId, variables, expectedDefinitionDigest }, { signal }),
|
||||
});
|
||||
break;
|
||||
}
|
||||
case "stateSlotId": {
|
||||
const slotId = dependency.binding.value;
|
||||
const dependencyObjectId = dependency.objectId || request.objectId;
|
||||
@@ -298,6 +308,7 @@ export const createRuntimeContext = (camino, orch, request) => {
|
||||
edge: (portId) => requirePort(portId, "edgeTypeId"),
|
||||
interface: (portId) => requirePort(portId, "interfaceRevisionId"),
|
||||
constructor: (portId) => requirePort(portId, "atomId"),
|
||||
query: (portId) => requirePort(portId, "queryId"),
|
||||
};
|
||||
};
|
||||
export const derived = (get) => ({ kind: "derived", get });
|
||||
|
||||
Reference in New Issue
Block a user