in src/v2/providers/https.ts [279:340]
export function onTaskDispatched<Args = any>(
options: TaskQueueOptions,
handler: (request: TaskRequest<Args>) => void | Promise<void>
): TaskQueueFunction<Args>;
export function onTaskDispatched<Args = any>(
optsOrHandler:
| TaskQueueOptions
| ((request: TaskRequest<Args>) => void | Promise<void>),
handler?: (request: TaskRequest<Args>) => void | Promise<void>
): TaskQueueFunction<Args> {
let opts: TaskQueueOptions;
if (arguments.length == 1) {
opts = {};
handler = optsOrHandler as (
request: TaskRequest<Args>
) => void | Promise<void>;
} else {
opts = optsOrHandler as TaskQueueOptions;
}
// onEnqueueHandler sniffs the function length to determine which API to present.
// fix the length to prevent api versions from being mismatched.
const fixedLen = (req: TaskRequest<Args>) => handler(req);
const func: any = onDispatchHandler(fixedLen);
Object.defineProperty(func, '__trigger', {
get: () => {
const baseOpts = options.optionsToTriggerAnnotations(
options.getGlobalOptions()
);
// global options calls region a scalar and https allows it to be an array,
// but optionsToTriggerAnnotations handles both cases.
const specificOpts = options.optionsToTriggerAnnotations(
opts as options.GlobalOptions
);
const taskQueueTrigger: Record<string, unknown> = {};
copyIfPresent(taskQueueTrigger, opts, 'retryConfig', 'rateLimits');
convertIfPresent(
taskQueueTrigger,
opts,
'invoker',
'invoker',
convertInvoker
);
return {
apiVersion: 2,
platform: 'gcfv2',
...baseOpts,
...specificOpts,
labels: {
...baseOpts?.labels,
...specificOpts?.labels,
},
taskQueueTrigger,
};
},
});
func.run = handler;
return func;
}