{"_id":"@aimwhy/transform-data","_rev":"1-29a8ebfd188c9d812119e843f7c7521d","name":"@aimwhy/transform-data","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@aimwhy/transform-data","version":"0.1.0","description":"transform-data","homepage":"https://github.com/AimWhy/transform-data#readme","type":"module","keywords":[],"repository":{"type":"git","url":"git+https://github.com/AimWhy/transform-data.git"},"bugs":{"url":"https://github.com/AimWhy/transform-data/issues"},"license":"MIT","author":{"name":"aimWhy"},"funding":"https://github.com/AimWhy/transform-data","engines":{"node":">= 16"},"main":"dist/transform-data.module.js","module":"dist/transform-data.module.js","types":"dist/transform-data.module.d.ts","sideEffects":false,"dependencies":{"core-js":"^3.26.0"},"devDependencies":{"@babel/eslint-parser":"^7.19.1","@babel/plugin-syntax-import-assertions":"^7.20.0","@rollup/plugin-commonjs":"^23.0.2","@rollup/plugin-image":"^3.0.1","@rollup/plugin-node-resolve":"^15.0.1","@rollup/plugin-replace":"^5.0.1","cross-env":"^7.0.3","del-cli":"^5.0.0","eslint":"^8.26.0","eslint-plugin-jsdoc":"^39.6.2","rollup":"^3.2.5","rollup-plugin-bundle-size":"^1.0.3","rollup-plugin-string":"^3.0.0","terser":"^5.15.1","typescript":"^4.8.4"},"scripts":{"build":"npm run lint && rollup -c --silent","dist":" npm run build && mkdir dist && cp -fR build/*.* dist/ && npm run types","lint":"eslint src/** rollup.config.mjs","prepublishOnly":"npm run clean && npm run dist","clean":"del-cli --force build dist docs","types":"tsc src/index.js --declaration --allowJs --emitDeclarationOnly --outfile dist/transform-data.module.d.ts"},"gitHead":"970f6621bd5a15f9cc4d05905b479c3733036ed5","_id":"@aimwhy/transform-data@0.1.0","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-/ycvFLuG1hV0IOdXHA5mJWUgh6XcAsLWe2XZdDmAZPe9RMe+v3H33fcK54b9U4J+yzlk1XcFjBu08/mRdMtxqQ==","shasum":"7b1bc515ef49919bbc0e66bb15e8819f58c915b9","tarball":"https://registry.npmjs.org/@aimwhy/transform-data/-/transform-data-0.1.0.tgz","fileCount":10,"unpackedSize":14177,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBkzg0VnWY6rG16IH6F05a4q6ANbZDv2XcZ1731/E0JrAiA6X+Dc8m0mUExVqvbI3jM7FeYH5/ZvIdzD7YHeRW8JjA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZUbSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqzig//RambkEq641ChBEE+FyVf8Ti+LGilU9cQlM00fnsHk7s0tGKG\r\njdOiKMAiC2yNE/cxZeOnllIt8tK3mCnOxC+8no/eV/E+MIwQVH0qsgj16vnb\r\n7ecWopQFYVbOrUGOC9FL1Fa5A48p8lLMdhO7PYQtEeMZNeQQs8T53MxUwd6p\r\nPP8OQl845SiixNDhoCSPUQvvXNty5fLfckFAykSdjfvJYlDSZDZfdB41sInK\r\nF+63guGqrdN61QCuK/ezat2zifhWm4N8Tot+xGVTDHQ6BVgUAAp/XYDWrT+H\r\nqX57R4D7vP8HCx3MXaan5g64hd1NGJ1fuml1n4NYEYJ0J/9W2qYOpZHRDNFe\r\nEElVGu53SnAlbokw19qRpIlkqHaMzP7VPjlbb+f83hDFINbhn5HJOvU2IKpR\r\nLAdBIt0wL54dz+2TtfvZ1NrhdBbmyCJVD4k/FTLwjZA+DS+Le540HJtH12R9\r\nReKa3dBWgNp1tzxZzpBvqzXqCqPGvqzOIBkXjtyNlSqCPkiBM49FhBUijg/A\r\nTxU0B+wXLbSTe9LP/XMGuxrXlVlXmHxI9tghA9szQziy/buZDFh73SiGHVqP\r\nasVT9NIeo6oQtQHSebB8ETKCV0RDqMUIQYZM1fLDdaZwePDKa3y0GCq3RmRl\r\nqlaW18FRmWeB+BWF1BARgu1xiieHDAiXCWo=\r\n=fR/u\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aimwhy","email":"aimwhy@qq.com"},"directories":{},"maintainers":[{"name":"aimwhy","email":"aimwhy@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/transform-data_0.1.0_1667581649820_0.5962313589901049"},"_hasShrinkwrap":false},"0.1.1":{"name":"@aimwhy/transform-data","version":"0.1.1","description":"transform-data","homepage":"https://github.com/AimWhy/transform-data#readme","type":"module","keywords":["dataTransform","接口数据","aimwhy","转换"],"repository":{"type":"git","url":"git+https://github.com/AimWhy/transform-data.git"},"bugs":{"url":"https://github.com/AimWhy/transform-data/issues"},"license":"MIT","author":{"name":"aimWhy"},"funding":"https://github.com/AimWhy/transform-data","engines":{"node":">= 16"},"main":"dist/transform-data.module.js","module":"dist/transform-data.module.js","types":"dist/transform-data.module.d.ts","sideEffects":false,"dependencies":{"core-js":"^3.26.0"},"devDependencies":{"@babel/eslint-parser":"^7.19.1","@babel/plugin-syntax-import-assertions":"^7.20.0","@rollup/plugin-commonjs":"^23.0.2","@rollup/plugin-image":"^3.0.1","@rollup/plugin-node-resolve":"^15.0.1","@rollup/plugin-replace":"^5.0.1","cross-env":"^7.0.3","del-cli":"^5.0.0","eslint":"^8.26.0","eslint-plugin-jsdoc":"^39.6.2","rollup":"^3.2.5","rollup-plugin-bundle-size":"^1.0.3","rollup-plugin-string":"^3.0.0","terser":"^5.15.1","typescript":"^4.8.4"},"scripts":{"build":"npm run lint && rollup -c --silent","dist":" npm run build && mkdir dist && cp -fR build/*.* dist/ && npm run types","lint":"eslint src/** rollup.config.mjs","prepublishOnly":"npm run clean && npm run dist","clean":"del-cli --force build dist docs","types":"tsc src/index.js --declaration --allowJs --emitDeclarationOnly --outfile dist/transform-data.module.d.ts"},"gitHead":"ebba76c3361870454e0e70183cd2de63fa7d3fe5","_id":"@aimwhy/transform-data@0.1.1","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-z9wG+WF9CQA+jQMiG734HS1nePwZoPE8sedk323zCswKRkqQkT3za/Q43vhkuyjPReZnMov4hItdTNFFISVsOA==","shasum":"ef981733ff608a4437ad6fc7605be45c60d6d531","tarball":"https://registry.npmjs.org/@aimwhy/transform-data/-/transform-data-0.1.1.tgz","fileCount":10,"unpackedSize":15121,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHp74EZSdkn/Zb4tXotMlu84XrHnEV5TQqR5q6i3jtuwIgbnczECK3nQT505+aXPCChnBVKupOrTnSgZvhzN5wDXA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZ77uACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqBXhAAl4yG4DZeCyfZtPEdsQRgyJIHLhtkVUwJf2lRsB0bjqwf9+Db\r\nAdlR+sLkfCF+Q5uQnIVDB6uZvnCDH50GvnOT3s3DE5uToUWCjZAGSSecdNIN\r\nc+e/OAWyrtxtnQ/JCwqam9P5Y71k8StmqDkd47Ph1+4+fNnCOtHVCzZzaMIC\r\nRN4xBGBzuKDsS6E4AvK6K8Z3yuzNQ6IYbwzgopA3XvMXmVvO0AM8tPexlLcT\r\nwWLSMeWv5a5bvd6JZwEblRK9S5BrmbzViaCKqsuUiOCP34Hj7C++V5UYBwaa\r\n2cAXPsAcid8Bfmy5B70mBkNebkSNAvQepyMFaCzbVWVrO5x+3scaapLn3emt\r\nhAL7iO1zKzZucAJnV2r/AsQpup/I6o6ROl31dMpozBrrfqGqiWD0b5IJn0nI\r\nHx7ptQ3JFKaXhxbOQ2JU03ifn5tGE3hJGVrGns3TYixRZxTTNEk64fDghX/P\r\nP3wdeYV/pyGwSYrnDqXFSUubMV3y0CwglrBXIedtZnj7H6ovwCGwSCt7TIcu\r\nwSwxG6qvBiX34ekGKdgGlgxYgWXp84cRtVZFgtC6tmPsBB5qUtrK/oUsJNzS\r\nSinn+EkyLKK6zOvw69ON/VwYfpeudmKvabRQ9zSI2mZQVsrzKnxGCs1vgkqz\r\nk78zyRHXifqNGU9ZxJO7dIlN/5abfAEPW+s=\r\n=PdbA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aimwhy","email":"aimwhy@qq.com"},"directories":{},"maintainers":[{"name":"aimwhy","email":"aimwhy@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/transform-data_0.1.1_1667743470165_0.9308183804137129"},"_hasShrinkwrap":false}},"time":{"created":"2022-11-04T17:07:29.712Z","0.1.0":"2022-11-04T17:07:29.985Z","modified":"2022-11-06T14:04:30.398Z","0.1.1":"2022-11-06T14:04:30.324Z"},"maintainers":[{"name":"aimwhy","email":"aimwhy@qq.com"}],"description":"transform-data","homepage":"https://github.com/AimWhy/transform-data#readme","keywords":["dataTransform","接口数据","aimwhy","转换"],"repository":{"type":"git","url":"git+https://github.com/AimWhy/transform-data.git"},"author":{"name":"aimWhy"},"bugs":{"url":"https://github.com/AimWhy/transform-data/issues"},"license":"MIT","readme":"## 背景\r\n平时接口返回的数据，可能会有冗余或后期不断迭代与原有字段已改名\r\n\r\n所以想用一种更直观的方式来映射转换数据\r\n\r\n`dataTransform(data, pattern)` 由此由来。 data 为原数据、 pattern 为映射模式，\r\n按照 pattern 的形状进行填充数据, 属性的值为 data 中的 path, 从而拿到 `data[path]` 中的值填充。\r\n\r\n当然有的时候是想填充真正的`字面量`值, 此时只需要用 `Value('aaa')` 就可拿到 `'aaa'` \r\n\r\n当然还有更多的功能，如： `Origin` 、 `Remove`、 `Retain`、 `Value` 来方便映射，\r\n导出的 api 十分简单， 源代码也只有 90 行。\r\n\r\n### 结构提取数组中的值\r\n\r\n```JavaScript\r\nimport { dataTransform, Origin } from \"@aimwhy/transform-data\";\r\n\r\nconsole.log(\r\n  dataTransform(\r\n    {\r\n      a: 44,\r\n      e: [\r\n        { a: 'a', b: 'b' },\r\n        { a: 'a1', b: 'b1' },\r\n        { a: 'a2', b: 'b2' },\r\n      ],\r\n    },\r\n    {\r\n      e2: ['a', Origin, 'e'], // 参考原数据 path 为 'e' 指向的数据\r\n    }\r\n  );\r\n);\r\n\r\n// { e2: [ 'a', 'a1', 'a2' ] }\r\n```\r\n\r\n### 导出的字段\r\n\r\n| export               | description |  type |  dep |\r\n| ------------------- | ----------- | -------- | -----|\r\n| `Origin`    | 指向原数据的 `path` | string | -  |\r\n| `Remove`    | 移除的属性 「参考 Origin 指向的对象」 | string[]  | `Origin` |\r\n| `Retain`    | 保留的属性 「参考 Origin 指向的对象」 | string[]  | `Origin` |\r\n| `Value`     | 直接生成具体值 | function |  - |\r\n| `dataTransform` | 转换函数  | function |  - |\r\n\r\n### 重命名 Key\r\n\r\n```JavaScript\r\nimport { dataTransform } from \"@aimwhy/transform-data\";\r\n\r\nconsole.log(\r\n  dataTransform(\r\n    {\r\n      a: '1',\r\n      b: '2',\r\n      c: '3'\r\n    },\r\n    {\r\n      a1: 'a',\r\n      b1: 'b',\r\n      c1: 'c'\r\n    }\r\n  )\r\n);\r\n// { a1: '1', b1: '2', c1: '3' }\r\n```\r\n\r\n```JavaScript\r\nimport { dataTransform, Retain, Value } from \"@aimwhy/transform-data\";\r\n\r\nconsole.log(\r\n  dataTransform(\r\n    {\r\n      a: '1',\r\n      b: '2',\r\n      c: '3',\r\n      f: [2, 3],\r\n      g: { g1: {g11: 'g11'}, g2: {g22: 'g22'}, g3: {g33: 'g33'} }\r\n    },\r\n    {\r\n      b1: 'b',\r\n      c1: Value('c'), // 使用传入的值作为最终值，而非模式\r\n      x: { [Origin]: 'g', [Retain]: ['g1'], ff: 'g2.g22'}, // 参考 ’g‘ 指向的数据生成\r\n      y: (record) => record['g.g3.g33'] + record['a']  // 用函数自己生成，record 为原数据各层 path 的记录\r\n    }\r\n  )\r\n);\r\n// { b1: '2', c1: 'c', x: { g1: { g11: 'g11' }, ff: 'g22' }, y: 'g331' }\r\n```\r\n\r\n## 让数据映射转换 更直观","readmeFilename":"README.md"}