MCPcopy
hub / github.com/cloudflare/capnweb / wrapResolvedValue

Function wrapResolvedValue

packages/capnweb-validate/src/internal/core.ts:792–940  ·  view source on GitHub ↗
(
  value: unknown,
  validator: Validator,
  path: PropertyPath,
  side: WrapSide,
  wrapStubs = true
)

Source from the content-addressed store, hash-verified

790}
791
792function wrapResolvedValue(
793 value: unknown,
794 validator: Validator,
795 path: PropertyPath,
796 side: WrapSide,
797 wrapStubs = true
798): unknown {
799 if (path.length >= MAX_VALIDATION_DEPTH) return value;
800 let shape = shapeOf(validator);
801 if (!shape) return value;
802 if (shape.kind === "lazy")
803 return wrapResolvedValue(value, shape.thunk(), path, side, wrapStubs);
804 if (shape.kind === "union") {
805 for (let branch of shape.branches) {
806 try {
807 branch(value, path);
808 return wrapResolvedValue(value, branch, path, side, wrapStubs);
809 } catch (err) {
810 if (!isValidationTypeError(err)) throw err;
811 }
812 }
813 return value;
814 }
815 if (shape.kind === "stub") {
816 if (!wrapStubs) return value;
817 if (!shape.service) return value;
818 let valueType = typeof value;
819 if (value === null || (valueType !== "object" && valueType !== "function"))
820 return value;
821 return side === "server"
822 ? wrapServerTarget(value as object, shape.service)
823 : wrapClientStub(value as object, shape.service);
824 }
825 if (shape.kind === "array" || shape.kind === "tuple") {
826 if (!Array.isArray(value)) return value;
827 let next: unknown[] | undefined;
828 for (let i = 0; i < value.length; i++) {
829 let elemValidator =
830 shape.kind === "array"
831 ? shape.element
832 : (shape.elements[i] ?? shape.rest);
833 if (!elemValidator) continue;
834 let wrapped = wrapResolvedValue(
835 value[i],
836 elemValidator,
837 [...path, i],
838 side,
839 wrapStubs
840 );
841 if (wrapped !== value[i]) {
842 next ??= value.slice();
843 copyDisposeDescriptor(value, next);
844 next[i] = wrapped;
845 }
846 }
847 return next ?? value;
848 }
849 if (shape.kind === "map") {

Callers 2

wrapOneFunction · 0.85
validateResolvedValueFunction · 0.85

Calls 6

shapeOfFunction · 0.85
isValidationTypeErrorFunction · 0.85
wrapServerTargetFunction · 0.85
wrapClientStubFunction · 0.85
copyDisposeDescriptorFunction · 0.85
ownFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…