{"id":13601977,"url":"https://github.com/DynamicMapper/DynamicMapper","last_synced_at":"2025-04-11T04:32:11.963Z","repository":{"id":57110269,"uuid":"209064112","full_name":"DynamicMapper/DynamicMapper","owner":"DynamicMapper","description":"Object to object mapping in JavaScript","archived":false,"fork":false,"pushed_at":"2023-11-10T20:15:37.000Z","size":171,"stargazers_count":25,"open_issues_count":1,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-05T19:47:33.081Z","etag":null,"topics":["angular","javascript","javascript-library","mapper","mapping","typescript"],"latest_commit_sha":null,"homepage":"https://dynamic-mapper.gitbook.io","language":"TypeScript","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/DynamicMapper.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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":"2019-09-17T13:39:06.000Z","updated_at":"2024-10-25T15:34:36.000Z","dependencies_parsed_at":"2024-06-21T05:43:06.858Z","dependency_job_id":"5f3a13cc-b9c2-42c5-b06d-3ef7b2973504","html_url":"https://github.com/DynamicMapper/DynamicMapper","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DynamicMapper%2FDynamicMapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DynamicMapper%2FDynamicMapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DynamicMapper%2FDynamicMapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DynamicMapper%2FDynamicMapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DynamicMapper","download_url":"https://codeload.github.com/DynamicMapper/DynamicMapper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248345111,"owners_count":21088231,"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":["angular","javascript","javascript-library","mapper","mapping","typescript"],"created_at":"2024-08-01T18:01:11.022Z","updated_at":"2025-04-11T04:32:11.480Z","avatar_url":"https://github.com/DynamicMapper.png","language":"TypeScript","readme":"# [DynamicMapper](https://dynamic-mapper.gitbook.io)\n \n[![npm version](https://badge.fury.io/js/%40dynamic-mapper%2Fmapper.svg)](https://badge.fury.io/js/%40dynamic-mapper%2Fmapper)\n[![CircleCI](https://circleci.com/gh/DynamicMapper/DynamicMapper/tree/master.svg?style=shield)](https://circleci.com/gh/DynamicMapper/DynamicMapper/tree/master)\n\nDynamicMapper is a dependency free library that provides support for object to object mapping to JavaScript\nfor both browser and node.js environment. Inspired by [AutoMapper](http://docs.automapper.org/en/stable/index.html).\n\nFor best experience, use DynamicMapper together with [TypeScript](https://github.com/microsoft/TypeScript).\n\n## Installation\n\n`npm i @dynamic-mapper/mapper --save`\n\n## Documentation\n\nComplete documentation available [here](https://dynamic-mapper.gitbook.io).\n\n## Motivation\n\nTake a UI application where data are consumed in a form of `Response DTO` interface that needs to be transformed to `Domain` interface that is \nlater transformed into a UI view (i.e. Angular Reactive Form value). Modified view then needs to be transformed back to `Domain` and\nthis updated domain object should be send back to the server in form of `Request DTO`. Pretty tedious to write those mapping in an imperative \nway for each individual domain object.\n\n![Example](https://raw.githubusercontent.com/DynamicMapper/DynamicMapper/master/docs/diagram.png)\n\n## Usage \n\n```typescript\nimport { MappingPair, MapperConfiguration } from '@dynamic-mapper/mapper';\n\ninterface CustomerDto {\n    firstName: string;\n    lastName: string;\n}\n\ninterface Customer {\n    firstName: string;\n    lastName: string;\n    fullName: string;\n}\n\nconst CustomerDtoToCustomer = new MappingPair\u003cCustomerDto, Customer\u003e();\n\nconst configuration = new MapperConfiguration(cfg =\u003e {\n    cfg.createAutoMap(CustomerDtoToCustomer, {\n        fullName: opt =\u003e opt.mapFrom(src =\u003e `${src.firstName} ${src.lastName}`)\n    });\n});\n\nconst mapper = configuration.createMapper();\n\nconst customerDto: CustomerDto = {\n    firstName: 'John',\n    lastName: 'Doe'\n};\n\nconst customer = mapper.map(CustomerDtoToCustomer, customerDto);\n// {\n//      firstName: 'John',\n//      lastName: 'Doe',\n//      fullName: 'John Doe'\n// }\n```\n\n## Integrations\n\n- [Angular](https://github.com/DynamicMapper/DynamicMapper.Angular)\n\n## License\n[MIT](https://choosealicense.com/licenses/mit/)\n","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDynamicMapper%2FDynamicMapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDynamicMapper%2FDynamicMapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDynamicMapper%2FDynamicMapper/lists"}