{"id":13716518,"url":"https://github.com/dimapaloskin/micro-chain","last_synced_at":"2025-10-26T13:15:13.073Z","repository":{"id":57296389,"uuid":"84637349","full_name":"dimapaloskin/micro-chain","owner":"dimapaloskin","description":"🤝  Helps to build chains from your micro services.","archived":false,"fork":false,"pushed_at":"2020-06-03T09:18:47.000Z","size":3449,"stargazers_count":24,"open_issues_count":10,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-27T04:21:58.150Z","etag":null,"topics":["async","await","javascript","micro","microservice","microservices","node"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dimapaloskin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-11T09:07:47.000Z","updated_at":"2023-09-08T17:22:06.000Z","dependencies_parsed_at":"2022-09-07T01:51:21.881Z","dependency_job_id":null,"html_url":"https://github.com/dimapaloskin/micro-chain","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimapaloskin%2Fmicro-chain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimapaloskin%2Fmicro-chain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimapaloskin%2Fmicro-chain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimapaloskin%2Fmicro-chain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dimapaloskin","download_url":"https://codeload.github.com/dimapaloskin/micro-chain/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248589958,"owners_count":21129710,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","await","javascript","micro","microservice","microservices","node"],"created_at":"2024-08-03T00:01:11.281Z","updated_at":"2025-10-07T22:35:39.076Z","avatar_url":"https://github.com/dimapaloskin.png","language":"JavaScript","funding_links":[],"categories":["Modules"],"sub_categories":["Utilities"],"readme":"# micro-chain \n\n\u003e Helps to build chains from your [micro](https://github.com/zeit/micro/) services.\n\n[![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/sindresorhus/xo)\n[![Build Status](https://travis-ci.org/dimapaloskin/micro-chain.svg?branch=master)](https://travis-ci.org/dimapaloskin/micro-chain)\n[![Greenkeeper badge](https://badges.greenkeeper.io/dimapaloskin/micro-chain.svg)](https://greenkeeper.io/)\n\n### Overview\n\nModule provides simple ability to build chains like:\n```\nfirst.api.your-domain.com\n  -\u003e second.api.your-domain.com\n    -\u003e third.api.your-domain.com\n      -\u003e final.api.your-domain.com\n```\n\n### Install\n```bash\nnpm install --save micro-chain\n```\n\n### Example\n\n**index.js**\n```js\n  const chain = require('micro-chain');\n  \n  const options = {\n    micro: 'app.js', // or just your micro async function required before\n    location: /\\/some-path$/, // optional. chain will be executed only if request url matched\n    chain: [{\n      target: 'account.api.your-domain.com',\n      mergeJson: true // response json will be merged with\n                      // request json and will be passed down the chain\n     }, {\n      target: 'storage.api.your-domain.com/s3/save',\n      mergeJson: true,\n      allowedStatuses: [200, 201], // array of allowed statuses. \n                                   // request will rejected if target's response has not included status\n                                   // rejected response will be equal target's response\n\n      // transformRequestBody will modify request data and return result if declared\n      // receive Buffer\n      transformRequestBody: body =\u003e {\n        if (!body || !body.length) return body;\n        body = JSON.parse(body);\n        delete body.secret;\n        return body;\n      },\n\n      // transformReponseBody will modify response body if declared\n      // receive Buffer\n      transformReponseBody: body =\u003e {\n        if (!body || !body.length) return body;\n        body = JSON.parse(body);\n        body.newProp = true;\n        delete body.token;\n        return body;\n      }\n     }, {\n       // if host is not declared will extract host from original request\n       target: '/notify'\n     }, {\n       target: 'some-stuff.api.your-domain.com',\n       sendOriginalBody: true // modifed body passed down the chain.\n                              // use this option if you want send original data\n     }]\n  };\n  \n  module.exports = chain(options);\n```\n\nRun:\n```bash\nmicro index.js\n```\n\n### See in action\n\nClone this repo\n\nInstall dependencies\n```bash\nnpm install\n```\n\nBuild project\n```bash\nnpm run build\n```\n\nRun `npm start`\n\nMake POST request\n```bash\ncurl http://localhost:3000/public -XPOST -d '{\"what\": \"you want\", \"message\": \"ping\"}'\n```\n\n\n### Author\n[Dmitry Pavlovsky](http://palosk.in)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimapaloskin%2Fmicro-chain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdimapaloskin%2Fmicro-chain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimapaloskin%2Fmicro-chain/lists"}