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

Function effect

src/effected.ts:112–157  ·  view source on GitHub ↗
(...args: unknown[])

Source from the content-addressed store, hash-verified

110 <Payloads extends unknown[], R>(...payloads: Payloads) => Effected<Effect<Name, Payloads, R>, R>
111: (...payloads: Payloads) => Effected<Default<Effect<Name, Payloads, R>, T, F>, R>;
112export function effect(...args: unknown[]): any {
113 if (args.length === 0) return effect;
114 const [name, options = {}] = args as [
115 name: string | symbol,
116 options?: {
117 resumable?: boolean;
118 defaultHandler?: (context: any, ...args: unknown[]) => unknown;
119 },
120 ];
121 const result = (...payloads: unknown[]) => {
122 const defaultHandler =
123 options.defaultHandler &&
124 ((context: any, ...payloads: unknown[]) => options.defaultHandler!(context, ...payloads));
125 return effected(() => {
126 let state = 0;
127 return {
128 next: (...args) => {
129 switch (state) {
130 case 0:
131 state++;
132 return {
133 done: false,
134 value: Object.assign(new Effect(name, payloads), {
135 ...(options.resumable === false ? { resumable: false } : {}),
136 ...(defaultHandler ? { defaultHandler } : {}),
137 }),
138 };
139 case 1:
140 state++;
141 return {
142 done: true,
143 ...(args.length > 0 ? { value: args[0] } : {}),
144 } as IteratorReturnResult<unknown>;
145 default:
146 return { done: true } as IteratorReturnResult<unknown>;
147 }
148 },
149 };
150 });
151 };
152 if ((options as any)._overrideFunctionName === false) return result as never;
153 return renameFunction(
154 result,
155 typeof name === "string" ? name : name.toString().slice(7, -1) || "",
156 ) as never;
157}
158
159/**
160 * Create a function that returns an {@link Effected} instance (an effected program) which yields a

Callers 15

effected.proof.tsFile · 0.90
effected.spec.tsFile · 0.90
stringifyFunction · 0.90
iterateFunction · 0.90
askFunction · 0.90
logEffectFunction · 0.90
askFunction · 0.90
iterateFunction · 0.90

Calls 1

renameFunctionFunction · 0.85

Tested by 5

stringifyFunction · 0.72
iterateFunction · 0.72
askFunction · 0.72
logEffectFunction · 0.72
askFunction · 0.72