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

Function callValidatedThen

packages/capnweb-validate/src/internal/core.ts:1122–1151  ·  view source on GitHub ↗
(
  target: (...args: unknown[]) => unknown,
  receiver: unknown,
  returns: Validator,
  path: PropertyPath,
  side: WrapSide,
  mode: ValidationMode,
  onfulfilled?: ((value: unknown) => unknown) | null,
  onrejected?: ((reason: unknown) => unknown) | null
)

Source from the content-addressed store, hash-verified

1120}
1121
1122function callValidatedThen(
1123 target: (...args: unknown[]) => unknown,
1124 receiver: unknown,
1125 returns: Validator,
1126 path: PropertyPath,
1127 side: WrapSide,
1128 mode: ValidationMode,
1129 onfulfilled?: ((value: unknown) => unknown) | null,
1130 onrejected?: ((reason: unknown) => unknown) | null
1131): Promise<unknown> {
1132 let then = Reflect.get(target, "then", receiver) as (
1133 onfulfilled?: ((value: unknown) => unknown) | null,
1134 onrejected?: ((reason: unknown) => unknown) | null
1135 ) => Promise<unknown>;
1136 return Reflect.apply(then, target, [
1137 (value: unknown) => {
1138 // Validation runs in the fulfillment handler; route a failure to onrejected so the awaiter rejects rather than hangs,
1139 // or rethrow when there is no onrejected (bare `.then(onF)`) to reject the chained promise.
1140 let wrapped: unknown;
1141 try {
1142 wrapped = validateResolvedValue(value, returns, path, side, mode);
1143 } catch (err) {
1144 if (onrejected) return onrejected(err);
1145 throw err;
1146 }
1147 return onfulfilled ? onfulfilled(wrapped) : wrapped;
1148 },
1149 onrejected,
1150 ]);
1151}
1152
1153function methodSpecFor(
1154 validator: Validator,

Callers 1

getFunction · 0.85

Calls 3

validateResolvedValueFunction · 0.85
applyMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…