{"id":18251735,"url":"https://github.com/moqada/dacho","last_synced_at":"2025-09-02T15:02:16.772Z","repository":{"id":57211349,"uuid":"44978912","full_name":"moqada/dacho","owner":"moqada","description":"Utility of generating key/value object with a prefixed value","archived":false,"fork":false,"pushed_at":"2024-04-02T23:25:29.000Z","size":207,"stargazers_count":2,"open_issues_count":6,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-16T23:06:49.599Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://moqada.github.io/dacho","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moqada.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-10-26T15:46:17.000Z","updated_at":"2019-09-11T04:39:26.000Z","dependencies_parsed_at":"2024-11-05T09:49:18.571Z","dependency_job_id":"7d61a9c5-49ed-4ce4-82fa-40b17c301440","html_url":"https://github.com/moqada/dacho","commit_stats":{"total_commits":86,"total_committers":2,"mean_commits":43.0,"dds":0.4534883720930233,"last_synced_commit":"f3eb9c20457f3593621a3e86227222dd1f317e52"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moqada%2Fdacho","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moqada%2Fdacho/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moqada%2Fdacho/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moqada%2Fdacho/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moqada","download_url":"https://codeload.github.com/moqada/dacho/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247927040,"owners_count":21019504,"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":[],"created_at":"2024-11-05T09:48:22.461Z","updated_at":"2025-04-08T20:46:43.619Z","avatar_url":"https://github.com/moqada.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dacho\n\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][npm-download-image]][npm-download-url]\n[![Build Status][travis-image]][travis-url]\n[![Coverage Status][codecov-image]][codecov-url]\n[![Dependency Status][daviddm-image]][daviddm-url]\n[![DevDependency Status][daviddm-dev-image]][daviddm-dev-url]\n[![License][license-image]][license-url]\n\nUtility of generating key/value object with a prefixed value.\n\nFor example, it is convenient to define ActionTypes for Flux, Redux and the like.\nBesides, it prevent from defining same value. It throws Error if you registered already defined value.\n\n\u003e dacho is named after [Dacho Club](https://ja.wikipedia.org/wiki/%E3%83%80%E3%83%81%E3%83%A7%E3%82%A6%E5%80%B6%E6%A5%BD%E9%83%A8) that is Japanese comedy group.\n\u003e They perform patterned reaction by the simple rules every time, but it is unique...\n\n\n## Installation\n\n```\nnpm install --save dacho\n```\n\n\n## Usage\n\n### Basic\n\nIt generate key/value object with a prefixed value.\n\n```javascript\n// constants/nettoActionTypes.js\nimport {reaction} from 'dacho';\n\nexport default reaction([\n  'IN',\n  'OUT',\n  'PUSH'\n], 'NETTO/')\n\n// OR using Object.\n//\n// export default reaction({\n//   IN: null,\n//   OUT: null,\n//   PUSH: null\n// }, 'NETTO/');\n```\n\n```javascript\n// constants/odenActionTypes.js\nimport {reaction} from 'dacho';\n\nexport default reaction([\n  'IN',\n  'OUT',\n  'PUSH',\n  'SHOWER',\n], 'ODEN/')\n\n// OR using Object.\n//\n// export default reaction({\n//   IN: null,\n//   OUT: null,\n//   PUSH: null\n//   SHOWER: null\n// }, 'ODEN/');\n```\n\n```javascript\n// actionCreator.js\nimport nettoActionTypes from './constants/nettoActionTypes';\nimport odenActionTypes from './constants/odenActionTypes';\n\n\nfunction rejectBathing() {\n  return {\n    type: nettoActionTypes.PUSH,  // 'NETTO/PUSH'\n    payload: {member: 'UESHIMA'}\n  };\n}\n\nfunction rejectEating() {\n  return {\n    type: odenActionTypes.PUSH,  // 'ODEN/PUSH'\n    payload: {member: 'UESHIMA'}\n  };\n}\n\n// assert.deepEqual(nettoActionTypes, {\n//   IN: 'NETTO/IN',\n//   OUT: 'NETTO/OUT',\n//   PUSH: 'NETTO/PUSH'\n// });\n\n// assert.deepEqual(odenActionTypes, {\n//   IN: 'ODEN/IN',\n//   OUT: 'ODEN/OUT',\n//   PUSH: 'ODEN/PUSH'\n//   SHOWER: 'ODEN/SHOWER'\n// });\n```\n\nIt throws Error when you create same value object.\n\n```javascript\n// ./constants/nettoActionTypes2.js\nimport {reaction} from 'dacho';\n\nexport default reaction([\n  'IN'\n], 'NETTO/');\n\n// -\u003e throw Error because 'NETTO/IN' is already defined.\n```\n\n### With Global Prefix\n\nIt generate object with global prefix.\n\n```javascript\n// ./singletons/reaction.js\nimport {createReaction} from 'dacho';\n\nexport default createReaction('DEGAWA/')\n```\n\n```javascript\n// ./constants/degawaNettoActionTypes.js\nimport reaction from './singletons/reaction';\n\nexport default reaction([\n  'IN',\n  'OUT',\n  'PUSH'\n], 'NETTO/');\n\n// import degawaNettoActionTypes from './constants/degawaNettoActionTypes';\n//\n// assert.deepEqual(degawaNettoActionTypes, {\n//   IN: 'DEGAWA/NETTO/IN',\n//   OUT: 'DEGAWA/NETTO/OUT',\n//   PUSH: 'DEGAWA/NETTO/PUSH'\n// });\n```\n\n## Tips\n\n### Testing\n\nDespite collect values, It may raise Errors (`key is already registered`) when executing unit tests.\nOne of solution of this problem is to use [clear-require](https://github.com/sindresorhus/clear-require).\n\nExample is [here](https://github.com/moqada/dacho/blob/master/example/test/constants-spec.js).\n\n### Flow\n\n`dacho` can use together with Flow annotation.\nBut, Flow version is 0.19 or higher.\n\n\n[npm-url]: https://www.npmjs.com/package/dacho\n[npm-image]: https://img.shields.io/npm/v/dacho.svg?style=flat-square\n[npm-download-url]: https://www.npmjs.com/package/dacho\n[npm-download-image]: https://img.shields.io/npm/dt/dacho.svg?style=flat-square\n[travis-url]: https://travis-ci.org/moqada/dacho\n[travis-image]: https://img.shields.io/travis/moqada/dacho.svg?style=flat-square\n[daviddm-url]: https://david-dm.org/moqada/dacho\n[daviddm-image]: https://img.shields.io/david/moqada/dacho.svg?style=flat-square\n[daviddm-dev-url]: https://david-dm.org/moqada/dacho#info=devDependencies\n[daviddm-dev-image]: https://img.shields.io/david/dev/moqada/dacho.svg?style=flat-square\n[codecov-url]: https://codecov.io/github/moqada/dacho\n[codecov-image]: https://img.shields.io/codecov/c/github/moqada/dacho.svg?style=flat-square\n[license-url]: http://opensource.org/licenses/MIT\n[license-image]: https://img.shields.io/npm/l/dacho.svg?style=flat-square\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoqada%2Fdacho","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoqada%2Fdacho","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoqada%2Fdacho/lists"}