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

Function wrapArgs

packages/capnweb-validate/src/internal/core.ts:644–674  ·  view source on GitHub ↗
(
  args: unknown[],
  methodSpec: Exclude<MethodSpec, { unchecked: true }>,
  serviceName: string,
  prop: string
)

Source from the content-addressed store, hash-verified

642}
643
644function wrapArgs(
645 args: unknown[],
646 methodSpec: Exclude<MethodSpec, { unchecked: true }>,
647 serviceName: string,
648 prop: string
649): unknown[] {
650 let specArgs = methodSpec.args ?? [];
651 let next: unknown[] | undefined;
652 let wrapOne = (i: number, validator: Validator): void => {
653 let wrapped = wrapResolvedValue(
654 args[i],
655 validator,
656 [serviceName, prop, i],
657 "client",
658 // Preserve native stubs so user code can forward them over workerd RPC
659 // without leaking a non-cloneable validation Proxy.
660 false
661 );
662 if (wrapped !== args[i]) {
663 next ??= args.slice();
664 next[i] = wrapped;
665 }
666 };
667 for (let i = 0; i < specArgs.length; i++) wrapOne(i, specArgs[i]!);
668 if (methodSpec.rest) {
669 for (let i = specArgs.length; i < args.length; i++) {
670 wrapOne(i, methodSpec.rest);
671 }
672 }
673 return next ?? args;
674}
675
676export function wrapServerTarget<T extends object>(
677 target: T,

Callers 2

getFunction · 0.85
wrapPrototypeMethodsFunction · 0.85

Calls 1

wrapOneFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…