MCPcopy Create free account
hub / github.com/Snowflyt/tinyeffect / effectify

Function effectify

src/effected.ts:2515–2544  ·  view source on GitHub ↗
(promise: Promise<T>)

Source from the content-addressed store, hash-verified

2513 * ```
2514 */
2515export function effectify<T>(promise: Promise<T>): Effected<never, T> {
2516 return effected(() => {
2517 let state = 0;
2518 return {
2519 next: (...args) => {
2520 switch (state) {
2521 case 0:
2522 state++;
2523 return {
2524 done: false,
2525 value: {
2526 _effectAsync: true,
2527 onComplete: (
2528 ...args: [onComplete: (value: T) => void, onThrow?: (value: unknown) => void]
2529 ) => promise.then(...args),
2530 } as never,
2531 };
2532 case 1:
2533 state++;
2534 return {
2535 done: true,
2536 ...(args.length > 0 ? { value: args[0] } : {}),
2537 } as IteratorReturnResult<T>;
2538 default:
2539 return { done: true } as IteratorReturnResult<T>;
2540 }
2541 },
2542 };
2543 });
2544}
2545
2546/**
2547 * Run an effected program synchronously and return its result.

Callers 6

effected.spec.tsFile · 0.90
fetchAdminDataFunction · 0.90
createUser2Function · 0.90
prettyThin3Function · 0.90
fetchAdminDataFunction · 0.90
createUser2Function · 0.90

Calls 1

effectedFunction · 0.85

Tested by 3

fetchAdminDataFunction · 0.72
createUser2Function · 0.72
prettyThin3Function · 0.72