{"_id":"@alpha-lambda/tasks","_rev":"1-c72cfded6a87566c175b318188e4853f","name":"@alpha-lambda/tasks","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@alpha-lambda/tasks","version":"1.0.0","description":"simple task framework","main":"tasks.js","scripts":{"test":"nyc --all ava","posttest":"eslint . ","coverage":"nyc report --reporter=text-lcov | coveralls"},"repository":{"type":"git","url":"git+https://github.com/alpha-lambda/task-node.git"},"keywords":["aws","lambda","framework"],"author":{"name":"https://github.com/orgs/alpha-lambda/people"},"license":"MIT","bugs":{"url":"https://github.com/alpha-lambda/task-node/issues"},"homepage":"https://github.com/alpha-lambda/task-node#readme","devDependencies":{"ava":"^2.0.0","coveralls":"^3.0.4","eslint":"^5.16.0","nyc":"^14.1.1","publish":"^0.6.0","sinon":"^7.3.2"},"dependencies":{},"gitHead":"b8e631d4e14e75f8a868bcbf417aa6de2c277bcc","_id":"@alpha-lambda/tasks@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"dougmoscrop","email":"doug.moscrop@gmail.com"},"dist":{"integrity":"sha512-xmd663eMhPp5v7JKqLMN6D0jOW/XGS6/x/D0SQIliqVLQn4cKhnNmiFw85jXeZHjDUjditcJ/bq7TKlAcCw8Uw==","shasum":"cca56bff6579ae774ae896f1de509669db749415","tarball":"https://registry.npmjs.org/@alpha-lambda/tasks/-/tasks-1.0.0.tgz","fileCount":4,"unpackedSize":6488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAXHTCRA9TVsSAnZWagAATK0QAIrglvO8AabumnzUP4Lu\n889f3/QG2IPub3ggNEAHUdIAP+d03AH8f0wsMvNgmIGgFJoIELa6LBrJaP2+\nOCzpMu6VqcGiQxQc0op2fhWf8S77a+oXAr0303mg6DOUZd0MEvkv9U7RWjOs\n07vgs0fMldGogaM+6+9FZoAv0f50Nr/zYX2spfDx07DVAby3E2iYo4iQi0K4\nOBjvXe+93bmzxJzd52/z11pDc0E+qjZiIRCHHGEe5eLg0X+KfaZbwtXMtCfN\nWPLHl7HCfUeejCDcvLNaG6apfPNENlyeNJETBBPwnl0HF9Gd8Or6EXKaY+Sm\n/EfIyBhrf2EbBIInc/QrvaG3dpmCNM4NH3ZIott+4H3CsGNurr89qN5MH3sU\nYBDBorxiq4xYOs2m2AY0ppqlUT70/LaPMGzcjUpTBHj3szW/su9F7s1NcnPJ\nMUkgwSX0PNdKnqPrTNpDlH9DL/haHr7JdMK3sSzsBbX4/IBqTiB4Vhom5deM\nzE+ZYqgatBHVcvRqdKCcwMjrs3Kw60OXeqKv8U42ASb9bd1TGdUUNRMXFPGv\nI2PNJmxsbIA+dRSJ9571Vn40NyMJmRhqx8X4M2hr3cJrOy4cOljZAR7b4eAm\neA6Dpi3gvznYRiGwVyiQe/ZruGuWTPGogqICld4ZqWOfwCdtAyfMgL2mAq8B\nFbK/\r\n=rFVx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDT1enT5SDBsNC2NCBDxRz+QBuvHri/8HjsYCp63GS2HAiEAjt+OuUkNTxemg6LB9ykQewXkMdHqKEIFJ91QB0/BWCE="}]},"maintainers":[{"name":"bdgamble","email":"bryan.d.gamble@gmail.com"},{"name":"dougmoscrop","email":"doug.moscrop@gmail.com"},{"name":"antonbazhal","email":"am.bazhal@gmail.com"},{"name":"tradigan","email":"todd.radigan@d2l.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_1.0.0_1560375763137_0.61235757551706"},"_hasShrinkwrap":false}},"time":{"created":"2019-06-12T21:42:43.047Z","1.0.0":"2019-06-12T21:42:43.251Z","modified":"2022-04-04T13:37:59.150Z"},"maintainers":[{"name":"bdgamble","email":"bryan.d.gamble@gmail.com"},{"name":"dougmoscrop","email":"doug.moscrop@gmail.com"},{"name":"antonbazhal","email":"am.bazhal@gmail.com"},{"name":"tradigan","email":"todd.radigan@d2l.com"}],"description":"simple task framework","homepage":"https://github.com/alpha-lambda/task-node#readme","keywords":["aws","lambda","framework"],"repository":{"type":"git","url":"git+https://github.com/alpha-lambda/task-node.git"},"author":{"name":"https://github.com/orgs/alpha-lambda/people"},"bugs":{"url":"https://github.com/alpha-lambda/task-node/issues"},"license":"MIT","readme":"# @alpha-lambda/tasks\n\nThis is a simple task management library, for use in Lambda, connected to SQS and maybe Kinesis.\n\n## Usage\n\nFirst, define tasks:\n\n> tasks.js\n\n```js\nconst tasks = require('@alpha-lambda/tasks');\n\nmodule.exports = tasks([\n    {\n        type: 'foo',\n        schedule(context, tasks) {\n            // call SQS, Kinesis, etc.\n        },\n        execute(context, tasks, Task) {\n            // perform the work that the task defines\n            // Task is provided so you can schedule new sub-tasks if needed\n        },\n        validate(task) {\n            // optional, verify that the task details match some schema you have\n        },\n        format(detail) {\n            // optional, called before validate\n        },\n    },\n]);\n```\n\nSchedule some tasks:\n\n```js\nconst Task = require('./tasks');\n\nmodule.exports.scheduleTasks = async (event, context) => {\n    // context is passed forward schedule() in each definition\n    await Task.schedule(context, [\n        new Task('foo'),\n        // this would throw, because 'bar' is not defined above\n        new Task('bar', { foo: true }),\n    ]);\n};\n```\n\nThen, in some other code, such as a Lambda hooked up to SQS as an event source:\n\n```js\nmodule.exports.handler = async (event, context) => {\n    const messages = ...\n    const tasks = messages.map(message => {\n        const parsed = JSON.parse(message);\n        return Task.fromJSON(parsed);\n    });\n\n    await Task.execute(context, tasks);\n};\n```\n","readmeFilename":"README.md"}