UNPKG

actionhero

Version:

actionhero.js is a multi-transport API Server with integrated cluster capabilities and delayed tasks

424 lines 21 kB
<!doctype html> <html class="default no-js"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>TaskMiddleware | actionhero</title> <meta name="description" content="Documentation for actionhero"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="../assets/css/main.css"> </head> <body> <header> <div class="tsd-page-toolbar"> <div class="container"> <div class="table-wrap"> <div class="table-cell" id="tsd-search" data-index="../assets/js/search.json" data-base=".."> <div class="field"> <label for="tsd-search-field" class="tsd-widget search no-caption">Search</label> <input id="tsd-search-field" type="text" /> </div> <ul class="results"> <li class="state loading">Preparing search index...</li> <li class="state failure">The search index is not available</li> </ul> <a href="../index.html" class="title">actionhero</a> </div> <div class="table-cell" id="tsd-widgets"> <div id="tsd-filter"> <a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a> <div class="tsd-filter-group"> <div class="tsd-select" id="tsd-filter-visibility"> <span class="tsd-select-label">All</span> <ul class="tsd-select-list"> <li data-value="public">Public</li> <li data-value="protected">Public/Protected</li> <li data-value="private" class="selected">All</li> </ul> </div> <input type="checkbox" id="tsd-filter-inherited" checked /> <label class="tsd-widget" for="tsd-filter-inherited">Inherited</label> <input type="checkbox" id="tsd-filter-externals" checked /> <label class="tsd-widget" for="tsd-filter-externals">Externals</label> <input type="checkbox" id="tsd-filter-only-exported" /> <label class="tsd-widget" for="tsd-filter-only-exported">Only exported</label> </div> </div> <a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a> </div> </div> </div> </div> <div class="tsd-page-title"> <div class="container"> <ul class="tsd-breadcrumb"> <li> <a href="../globals.html">Globals</a> </li> <li> <a href="../modules/task.html">task</a> </li> <li> <a href="task.taskmiddleware.html">TaskMiddleware</a> </li> </ul> <h1>Interface TaskMiddleware</h1> </div> </div> </header> <div class="container container-main"> <div class="row"> <div class="col-8 col-content"> <section class="tsd-panel tsd-comment"> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>An example middleware</p> <pre><code class="language-js"><span class="hljs-keyword">const</span> middleware = { <span class="hljs-attr">name</span>: <span class="hljs-string">'timer'</span>, <span class="hljs-attr">global</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">priority</span>: <span class="hljs-number">90</span>, <span class="hljs-attr">preProcessor</span>: <span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{ <span class="hljs-keyword">const</span> worker = <span class="hljs-keyword">this</span>.worker worker.startTime = process.hrtime() }, <span class="hljs-attr">postProcessor</span>: <span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{ <span class="hljs-keyword">const</span> worker = <span class="hljs-keyword">this</span>.worker <span class="hljs-keyword">const</span> elapsed = process.hrtime(worker.startTime) <span class="hljs-keyword">const</span> seconds = elapsed[<span class="hljs-number">0</span>] <span class="hljs-keyword">const</span> millis = elapsed[<span class="hljs-number">1</span>] / <span class="hljs-number">1000000</span> log(worker.job.class + <span class="hljs-string">' done in '</span> + seconds + <span class="hljs-string">' s and '</span> + millis + <span class="hljs-string">' ms.'</span>, <span class="hljs-string">'info'</span>) }, <span class="hljs-attr">preEnqueue</span>: <span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{ <span class="hljs-keyword">const</span> arg = <span class="hljs-keyword">this</span>.args[<span class="hljs-number">0</span>] <span class="hljs-keyword">return</span> (arg === <span class="hljs-string">'ok'</span>) <span class="hljs-comment">// returning `false` will prevent the task from enqueueing</span> }, <span class="hljs-attr">postEnqueue</span>: <span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{ log(<span class="hljs-string">"Task successfully enqueued!"</span>) } } api.tasks.addMiddleware(middleware)</code></pre> </div> </div> </section> <section class="tsd-panel tsd-hierarchy"> <h3>Hierarchy</h3> <ul class="tsd-hierarchy"> <li> <span class="target">TaskMiddleware</span> </li> </ul> </section> <section class="tsd-panel-group tsd-index-group"> <h2>Index</h2> <section class="tsd-panel tsd-index-panel"> <div class="tsd-index-content"> <section class="tsd-index-section "> <h3>Properties</h3> <ul class="tsd-index-list"> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="task.taskmiddleware.html#global" class="tsd-kind-icon">global</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="task.taskmiddleware.html#name" class="tsd-kind-icon">name</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="task.taskmiddleware.html#postenqueue" class="tsd-kind-icon">post<wbr>Enqueue</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="task.taskmiddleware.html#postprocessor" class="tsd-kind-icon">post<wbr>Processor</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="task.taskmiddleware.html#preenqueue" class="tsd-kind-icon">pre<wbr>Enqueue</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="task.taskmiddleware.html#preprocessor" class="tsd-kind-icon">pre<wbr>Processor</a></li> <li class="tsd-kind-property tsd-parent-kind-interface"><a href="task.taskmiddleware.html#priority" class="tsd-kind-icon">priority</a></li> </ul> </section> </div> </section> </section> <section class="tsd-panel-group tsd-member-group "> <h2>Properties</h2> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <a name="global" class="tsd-anchor"></a> <h3>global</h3> <div class="tsd-signature tsd-kind-icon">global<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/actionhero/actionhero/blob/fd12b4f0/src/modules/task.ts#L39">src/modules/task.ts:39</a></li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Is this middleware applied to all tasks?</p> </div> </div> </section> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <a name="name" class="tsd-anchor"></a> <h3>name</h3> <div class="tsd-signature tsd-kind-icon">name<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/actionhero/actionhero/blob/fd12b4f0/src/modules/task.ts#L37">src/modules/task.ts:37</a></li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Unique name for the middleware.</p> </div> </div> </section> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <a name="postenqueue" class="tsd-anchor"></a> <h3><span class="tsd-flag ts-flagOptional">Optional</span> post<wbr>Enqueue</h3> <div class="tsd-signature tsd-kind-icon">post<wbr>Enqueue<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Function</span></div> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/actionhero/actionhero/blob/fd12b4f0/src/modules/task.ts#L49">src/modules/task.ts:49</a></li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Called after a task using this middleware is enqueued.</p> </div> </div> </section> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <a name="postprocessor" class="tsd-anchor"></a> <h3><span class="tsd-flag ts-flagOptional">Optional</span> post<wbr>Processor</h3> <div class="tsd-signature tsd-kind-icon">post<wbr>Processor<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Function</span></div> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/actionhero/actionhero/blob/fd12b4f0/src/modules/task.ts#L45">src/modules/task.ts:45</a></li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Called after the task runs.</p> </div> </div> </section> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <a name="preenqueue" class="tsd-anchor"></a> <h3><span class="tsd-flag ts-flagOptional">Optional</span> pre<wbr>Enqueue</h3> <div class="tsd-signature tsd-kind-icon">pre<wbr>Enqueue<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Function</span></div> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/actionhero/actionhero/blob/fd12b4f0/src/modules/task.ts#L47">src/modules/task.ts:47</a></li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Called before a task using this middleware is enqueued.</p> </div> </div> </section> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <a name="preprocessor" class="tsd-anchor"></a> <h3><span class="tsd-flag ts-flagOptional">Optional</span> pre<wbr>Processor</h3> <div class="tsd-signature tsd-kind-icon">pre<wbr>Processor<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Function</span></div> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/actionhero/actionhero/blob/fd12b4f0/src/modules/task.ts#L43">src/modules/task.ts:43</a></li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Called berore the task runs. Has access to all params, before sanitization. Can modify the data object for use in tasks.</p> </div> </div> </section> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"> <a name="priority" class="tsd-anchor"></a> <h3><span class="tsd-flag ts-flagOptional">Optional</span> priority</h3> <div class="tsd-signature tsd-kind-icon">priority<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/actionhero/actionhero/blob/fd12b4f0/src/modules/task.ts#L41">src/modules/task.ts:41</a></li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Module load order. Defaults to <code>api.config.general.defaultMiddlewarePriority</code>.</p> </div> </div> </section> </section> </div> <div class="col-4 col-menu menu-sticky-wrap menu-highlight"> <nav class="tsd-navigation primary"> <ul> <li class="globals "> <a href="../globals.html"><em>Globals</em></a> </li> <li class=" tsd-kind-namespace"> <a href="../modules/action.html">action</a> </li> <li class=" tsd-kind-namespace"> <a href="../modules/cache.html">cache</a> </li> <li class=" tsd-kind-namespace"> <a href="../modules/chatroom.html">chat<wbr>Room</a> </li> <li class=" tsd-kind-namespace"> <a href="../modules/i18n.html">i18n</a> </li> <li class=" tsd-kind-namespace"> <a href="../modules/redis.html">redis</a> </li> <li class=" tsd-kind-namespace"> <a href="../modules/route.html">route</a> </li> <li class=" tsd-kind-namespace"> <a href="../modules/spechelper.html">spec<wbr>Helper</a> </li> <li class="current tsd-kind-namespace"> <a href="../modules/task.html">task</a> </li> </ul> </nav> <nav class="tsd-navigation secondary menu-sticky"> <ul class="before-current"> </ul> <ul class="current"> <li class="current tsd-kind-interface tsd-parent-kind-namespace"> <a href="task.taskmiddleware.html" class="tsd-kind-icon">Task<wbr>Middleware</a> <ul> <li class=" tsd-kind-property tsd-parent-kind-interface"> <a href="task.taskmiddleware.html#global" class="tsd-kind-icon">global</a> </li> <li class=" tsd-kind-property tsd-parent-kind-interface"> <a href="task.taskmiddleware.html#name" class="tsd-kind-icon">name</a> </li> <li class=" tsd-kind-property tsd-parent-kind-interface"> <a href="task.taskmiddleware.html#postenqueue" class="tsd-kind-icon">post<wbr>Enqueue</a> </li> <li class=" tsd-kind-property tsd-parent-kind-interface"> <a href="task.taskmiddleware.html#postprocessor" class="tsd-kind-icon">post<wbr>Processor</a> </li> <li class=" tsd-kind-property tsd-parent-kind-interface"> <a href="task.taskmiddleware.html#preenqueue" class="tsd-kind-icon">pre<wbr>Enqueue</a> </li> <li class=" tsd-kind-property tsd-parent-kind-interface"> <a href="task.taskmiddleware.html#preprocessor" class="tsd-kind-icon">pre<wbr>Processor</a> </li> <li class=" tsd-kind-property tsd-parent-kind-interface"> <a href="task.taskmiddleware.html#priority" class="tsd-kind-icon">priority</a> </li> </ul> </li> </ul> <ul class="after-current"> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#addmiddleware" class="tsd-kind-icon">add<wbr>Middleware</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#alldelayed" class="tsd-kind-icon">all<wbr>Delayed</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#allworkingon" class="tsd-kind-icon">all<wbr>Working<wbr>On</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#cleanoldworkers" class="tsd-kind-icon">clean<wbr>Old<wbr>Workers</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#del" class="tsd-kind-icon">del</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#deldelayed" class="tsd-kind-icon">del<wbr>Delayed</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#dellock" class="tsd-kind-icon">del<wbr>Lock</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#delqueue" class="tsd-kind-icon">del<wbr>Queue</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#delayedat" class="tsd-kind-icon">delayed<wbr>At</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#details" class="tsd-kind-icon">details</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#enqueue" class="tsd-kind-icon">enqueue</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#enqueueallrecurrenttasks" class="tsd-kind-icon">enqueue<wbr>All<wbr>Recurrent<wbr>Tasks</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#enqueueat" class="tsd-kind-icon">enqueue<wbr>At</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#enqueuein" class="tsd-kind-icon">enqueue<wbr>In</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#enqueuerecurrenttask" class="tsd-kind-icon">enqueue<wbr>Recurrent<wbr>Task</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#failed" class="tsd-kind-icon">failed</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#failedcount" class="tsd-kind-icon">failed<wbr>Count</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#locks" class="tsd-kind-icon">locks</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#queued" class="tsd-kind-icon">queued</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#removefailed" class="tsd-kind-icon">remove<wbr>Failed</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#retryandremovefailed" class="tsd-kind-icon">retry<wbr>And<wbr>Remove<wbr>Failed</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#scheduledat" class="tsd-kind-icon">scheduled<wbr>At</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#stats" class="tsd-kind-icon">stats</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#stoprecurrenttask" class="tsd-kind-icon">stop<wbr>Recurrent<wbr>Task</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#timestamps" class="tsd-kind-icon">timestamps</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace tsd-is-not-exported"> <a href="../modules/task.html#validateinput" class="tsd-kind-icon">validate<wbr>Input</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#workers" class="tsd-kind-icon">workers</a> </li> <li class=" tsd-kind-function tsd-parent-kind-namespace"> <a href="../modules/task.html#workingon" class="tsd-kind-icon">working<wbr>On</a> </li> </ul> </nav> </div> </div> </div> <footer class="with-border-bottom"> <div class="container"> <h2>Legend</h2> <div class="tsd-legend-group"> <ul class="tsd-legend"> <li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li> <li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li> <li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li> </ul> <ul class="tsd-legend"> <li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited property</span></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited method</span></li> </ul> <ul class="tsd-legend"> <li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li> </ul> <ul class="tsd-legend"> <li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private method</span></li> </ul> <ul class="tsd-legend"> <li class="tsd-kind-method tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static method</span></li> </ul> </div> </div> </footer> <div class="container tsd-generator"> <p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p> </div> <div class="overlay"></div> <script src="../assets/js/main.js"></script> <script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script> </body> </html>