{"_id":"2tree","_rev":"3-e716f8e7a93c6ae76d507db5483a4983","name":"2tree","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"2tree","version":"1.0.0","scripts":{"build":"npm run clear && npx tsc","clear":"npx rimraf dist"},"devDependencies":{"rimraf":"^3.0.2","ts-node":"^10.7.0","typescript":"^4.6.4"},"gitHead":"c143911007f93c250c8bccd39ee48b1ed2e6156b","_id":"2tree@1.0.0","_nodeVersion":"17.8.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-0OKPgZM/kaCuzuzkoLl49gJ11d/sf9328nR7uJ8Y2jnPMqm8ockgjvF7Jc/YgnGp7wCBZARck8g711vlDRELHg==","shasum":"25d3f8c289cdfa08d64623404ddc786b147a4218","tarball":"https://registry.npmjs.org/2tree/-/2tree-1.0.0.tgz","fileCount":3,"unpackedSize":2243,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAcYDyNubcvF0qj3c6okKNDzb1fraJ6Rsg/BHFFKAl0nAiA82LsdduLnlPlF7mwWCsL/+4+xLuauiFiAa07d4KC2QQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJic49xACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq+FxAAh/e6z1jgToSkFQp7XVtYtBSPXTk1rjOJUSJE5PeMzqAKVwmh\r\nObn/n/1EsJvM3dYN7fGituPvD0XnXvLW+QZVoHlzg3tyblFg7Xvk7frdd0tz\r\nzRUnSd3obO6vjNslgSrkawIRiL6pnlt1gf13IpR8phxq5Q8DfxTmvn+V01vA\r\ntVZIjRdDqEj+xZM+I5erAVMO8Iaf+wM0V+1zPJdQ/wy+4heOsEy5RDchgaHG\r\nYLljlJJhPq29M65jNzjDy5sK2kOWA4oioJrgE9VDwJoWLdT04BI5NqO1Tt3F\r\n3jGiOTOkRcFCRY8IABlKGaVsSDVtoKyNIkjMSXqoEjQ1yNOgkSmfxzqzCzZT\r\nYJCxhq9pl4QfHz/o4XX4WWCoPaX17mNbbfmTAELBmyrjdbPSt4a3Td5yYpBT\r\nBmXOc76O+bSAWVXKPtJ1wEjGfg3P9005+0Jo0wk2DtDQuDZ1fuNeDE+uehsq\r\n0hwvvKW6wep3j/wNhjEaAqBXa7nD2Wov3xBr6BX60qIzhkmfNNqZV+hZ2kUV\r\nmCOG7AqxvTy6CUbkKgon8q4tx8xqP1K3i4ENMbUIHQXC4mVgU1/glS6GOKbv\r\n5/tioW2LwplPCq70EigU83TJG+ziXUBOL3BOBaj0rsTIAFMVpZDO54DFA2Nk\r\nN6IlxEm/WFa+T78a9JKv1erkiVXZB0OejAA=\r\n=lLUP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cmtv","email":"newpetya@inbox.ru"},"directories":{},"maintainers":[{"name":"cmtv","email":"newpetya@inbox.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/2tree_1.0.0_1651740529531_0.32419923920477767"},"_hasShrinkwrap":false},"1.0.1":{"name":"2tree","version":"1.0.1","main":"dist/index.js","scripts":{"build":"npm run clear && npx tsc","clear":"npx rimraf dist"},"devDependencies":{"rimraf":"^3.0.2","ts-node":"^10.7.0","typescript":"^4.6.4"},"types":"./dist/index.d.ts","gitHead":"8c1ab5d16583be90862b9a2a8f9c9b3e67737585","_id":"2tree@1.0.1","_nodeVersion":"17.8.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-ClAqRJuJo2H6a0Spd34exrU/pq/eulcPlYhMPmpwuYP8eEVOtoAAxLxsUk0FALtMlrXlwXVtf8KotTg7bR05kw==","shasum":"279a0847599f6eb7d25941aeb17c86898feffea7","tarball":"https://registry.npmjs.org/2tree/-/2tree-1.0.1.tgz","fileCount":3,"unpackedSize":2273,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDY1V1wMyK6J/O4htIypsQB44BLBEl38ar1Xxbh2m4QcQIhAK0+SlJvZPLXk5c8yVocFuxoyTW7Cuu8+wKWwTMA65SU"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJic5UCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr72w/9FMMAChvqPhyqQn+1uPTMFdMRe5/+Z/OvoZf59Ng4oIatzfHy\r\nDd/lx99bgNpA/LgxtTCJJnTUEfq19Y4F5f1FDvW3uqWjEvaUkkToFaOHlv24\r\nXparu/DmK9oY5vqrCFHCLlmvHobvQRMsCDR07nm8YRnAJZeCnOFJ+pRxET6c\r\nm4G77rNXRJtimwhpeQt08B8ydRCTiik7hjcULnjWO78+V9cz+VF6rQ+gR9+D\r\nfxR6OU684TbtrYAxwruyA+CjEXrvJhSnS1Rugzxk/xpE3V2aNPuoIdgm0yc2\r\nnE8IfLC+zCFWsFelXSzfLChLqzY9D1u5s3qvM+vqqptgE0pqKH6p7MLd6eRh\r\nVpi5LILfxYXgV4X6qb80lckI/xA5ACeCjURzNX4fchQdNvnF5TKuCR83Nc6c\r\n5n2UDqrbutTbvW6Djiurnwr6h+J3wcEjglxM6zAagpCAMcEHU9WpzMFLPnCi\r\nv1WFxN/uNov9aJob/lmXk4n8izbDdQpPBnNHyUPmaG7Z9z+fKSTwolOWblPe\r\nn3+qBvGVNOl2Q/N2lgVUKO2FHnp7nYTAr5XOnBFVJacyPpWT/QQUCO8Jm/oZ\r\nKVoH2FlEtbUcWPmieceloH1RBEzxj0iUqguu+jfw3lz+NBWPpSXvdod/K3qU\r\nRNSF4JJ0xsW+x7Q2/Lgy/NwMJXlpflO9GLQ=\r\n=38yf\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cmtv","email":"newpetya@inbox.ru"},"directories":{},"maintainers":[{"name":"cmtv","email":"newpetya@inbox.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/2tree_1.0.1_1651741954697_0.19183277842603452"},"_hasShrinkwrap":false},"1.0.2":{"name":"2tree","version":"1.0.2","description":"Easily transform any arrays into trees.","author":{"name":"CMTV","url":"https://github.com/CMTV"},"license":"MIT","keywords":["tree","build","recursive","nested","ts","typescript"],"main":"dist/index.js","scripts":{"build":"npm run clear && npx tsc","clear":"npx rimraf dist"},"devDependencies":{"rimraf":"^3.0.2","ts-node":"^10.7.0","typescript":"^4.6.4"},"types":"./dist/index.d.ts","gitHead":"cdd35454bcfbd4e9eb93db531f704adc91b1b2c6","_id":"2tree@1.0.2","_nodeVersion":"17.8.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-lviMkarNui4HlOceJV91zWi/72138wTLqm1RNS1QcJGYceoz5oT4NGnn9ST3s9/MteyqKEHO8GIksvYTlCk4wg==","shasum":"689a525839d4b7a31f7089e6bc6cf994c5aea945","tarball":"https://registry.npmjs.org/2tree/-/2tree-1.0.2.tgz","fileCount":6,"unpackedSize":5530,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNyvaIASvE9NZl75se50Eoxgc3pcmrS4Dj1DZZEUPrggIgbSOieDpEGE2zs4agSxBGlvVr3ydDoBcgXZYdkOjbklo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJic+NhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpwSxAAnBVLS+p2KFsCgRpox4rOGCViqSrfIu6SC5goBJ5aIgHgqcuA\r\ntKle+cBr7P4mH8j8Xgw8YfWBeHLRFtBY2l+g43ZcDadxRZS5k5/MDVFb1N4A\r\nMLfrDQfhRio5CM/6KBcEJ601os26RQ84eRBtmlOU1H7gJrq8gjz15sBu1nsP\r\nSZ+ZE0XuXHyeaKJfe4ymKTs4VBuwXT9JP/25JrjBx8S+wZuS8B67kic84exW\r\nExJTEebf2/Hu3+B4u4vtBB4veNTlEfp7UOCI0tkGIiJ2U0TnKCSC/dihHih0\r\nl02M4PEZT/046b+73+rJpELUpeYUILFj3oluUgzh7d9DLrs3DiGznj4aJlOq\r\nSq13HF4CqIkvgiYriELtscmvdwsxPwxpEldfyRZqYs/RaZ1aH+ZAzUMSnRH2\r\nq2jJxGcUYiBG8wYmmXy0QzdRiKseKaeLHmKiLCBOs8PbUAxCRWYMg5iJBlrH\r\n1XTMkRgD/awie883B/HQZK11a3jOxM2voRYrIybZbwwSgj9oAaChlOxT9JKW\r\n/+X0/eLiQ14aKTAmvv/kBGRs/1dkx4H9KhpLy1b7LnQg9HfqMnu5pGc5iamq\r\nI6mK+DeD3vcC0iAHhmP9RtkBtg2o/D2q5N4VNRmXFrBeGmj2OkebemRBFphx\r\nZd3A+5bA17e3B6/H+QTKoEgszcoHH3JMShM=\r\n=685I\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cmtv","email":"newpetya@inbox.ru"},"directories":{},"maintainers":[{"name":"cmtv","email":"newpetya@inbox.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/2tree_1.0.2_1651762017235_0.5922878850612412"},"_hasShrinkwrap":false},"1.0.3":{"name":"2tree","version":"1.0.3","description":"Easily transform any arrays into trees.","author":{"name":"CMTV","url":"https://github.com/CMTV"},"repository":{"type":"git","url":"git://github.com/CMTV/2tree.git"},"license":"MIT","keywords":["tree","build","recursive","nested","ts","typescript"],"main":"dist/index.js","scripts":{"build":"npm run clear && npx tsc","clear":"npx rimraf dist"},"devDependencies":{"rimraf":"^3.0.2","ts-node":"^10.7.0","typescript":"^4.6.4"},"types":"./dist/index.d.ts","gitHead":"a6fae9b8d7fd5612d1fe9694acc5d73c41744ad5","bugs":{"url":"https://github.com/CMTV/2tree/issues"},"homepage":"https://github.com/CMTV/2tree#readme","_id":"2tree@1.0.3","_nodeVersion":"17.8.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-ASdkvKr1tyeaKG8WMeYFtnXZPinbASud+hLsQd2qSFDvcLOZqN5lPCjs8rYuZ3gh3Na1PIjWrq5W2ZozHStrXQ==","shasum":"4e49e42cf8045ffba9b0732b0ad151d77f6ed821","tarball":"https://registry.npmjs.org/2tree/-/2tree-1.0.3.tgz","fileCount":6,"unpackedSize":5584,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCumQvMijxFnuyLDe++L7uoTRsH/yYn4nJ2vtl0WnRxLwIhAP0nea7EVDfmPmibo+6mCNhZ9Rh+vp3Odk/jPQ6bTg52"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidLYiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpTFw//SYSDlrXxIUe5EgfNo5p8gEPBO1N+XeAGf1Y1N8Z/g3Ulb7bi\r\n/9z6bEm6KseZGeLzXds5OTaL7eeKr1+3Q4u1KA90L8KueNu1nj6hx4UFjsXG\r\nNmVv8o4s2CLJTJR3q3dSz2OdriNZEh0+vfiQTx/1gevxXdNTrKmdMLUYRZNy\r\nFyLIiq2udfce6CG1QYkwVNruy3jDPFxkDRVKrmmXiWisatZTJx4yFTtPWc8P\r\noDCVkgoA3uRfz+qL0CYoC/KfxzZICGHnvkfzuy9e5dExg0fKBxyPulUke7aX\r\nFPoh5hp8jz5lrnQReJbDQYj6YMlIEKmcFGxocPtGd4J2aClEubA+GF5fe52y\r\nLVLn+vcPtzC3qoZgbrmVVpa9GdUhY86hacq8Wq1a+edP7Q8FLBuTh5S4b1Mq\r\nNHwbTeFQzZVuBlF93R0zhEQPyodN8B4dBSXUI0EznYsbW1y1Xgce5B1xCdyH\r\nAiyte3o4TiUjf5uqj7J0C/hR8OIPoEXJzqVemh4f6NYTJQbseR2PxGklQCML\r\n6Xx1m7qfO83RAAiUwkdH6zNHvdYerWDgP/vlBK5+QFH0mvBSVDpZdnXnCZL1\r\nyCJKTt/yAIJfvfFOq+byyYK71AKiyPbJYZ9E3uVfNlH8fpZ0NFsSwmVJ78UE\r\nsg8rx2UTpy/1iKDqZ6B1EtdnlPgQcrPZfB4=\r\n=tXiX\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cmtv","email":"newpetya@inbox.ru"},"directories":{},"maintainers":[{"name":"cmtv","email":"newpetya@inbox.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/2tree_1.0.3_1651815969960_0.9909106241150325"},"_hasShrinkwrap":false}},"time":{"created":"2022-05-05T08:48:49.530Z","1.0.0":"2022-05-05T08:48:49.784Z","modified":"2022-05-06T05:46:10.194Z","1.0.1":"2022-05-05T09:12:34.897Z","1.0.2":"2022-05-05T14:46:57.421Z","1.0.3":"2022-05-06T05:46:10.123Z"},"maintainers":[{"name":"cmtv","email":"newpetya@inbox.ru"}],"readme":"# 2Tree\r\n\r\nWith this package you can easily transform any arrays into trees.\r\n\r\n## Usage\r\n\r\nYou need to do three thins:\r\n\r\n1. Create a class (\"product\") instances of which will be used as tree items. This call must have a `children` property.\r\n2. Create a class that inherits `TreeMaker` and implement `rawToProduct()`, `isContainer()` and `isChild()` method.\r\n3. Create an instance of your \"maker\" class and call `make()` method.\r\n\r\nThat's all!\r\nYou will get your tree in result!\r\n\r\n## Example\r\n\r\nLet's say we want to make a tree from the following array:\r\n\r\n```json\r\n[\r\n    {\r\n        \"id\": 1,\r\n        \"value\": \"Value 1\"\r\n    },\r\n    {\r\n        \"id\": 2,\r\n        \"value\": \"Value 2\",\r\n        \"parent\": 1\r\n    },\r\n    {\r\n        \"id\": 3,\r\n        \"value\": \"Value 3\"\r\n    }\r\n]\r\n```\r\n\r\nFirstly, we create a class to represent tree items:\r\n\r\n```typescript\r\nclass MyItem\r\n{\r\n    id: number;\r\n    value: string;\r\n    children: MyItem[];\r\n}\r\n```\r\n\r\nSecondly, we need to create a maker class:\r\n\r\n```typescript\r\nimport TreeMaker from \"2tree\";\r\n\r\n// ... MyItem class ...\r\n\r\nclass MyTreeMaker extends TreeMaker<any, MyItem>\r\n{\r\n    rawToProduct(raw: any): MyItem\r\n    {\r\n        let myItem = new MyItem;\r\n            myItem.id = raw.id;\r\n            myItem.value = raw.value;\r\n        \r\n        return myItem;\r\n    }\r\n\r\n    isContainer(raw: any)\r\n    {\r\n        return true;\r\n    }\r\n\r\n    isChild(raw: any, container: any)\r\n    {\r\n        return raw['parent'] === container['id'];\r\n    }\r\n}\r\n```\r\nFinally, let's make a tree:\r\n\r\n```typescript\r\nlet maker = new MyTreeMaker;\r\n\r\nconsole.log(maker.make(json));\r\n```\r\n\r\n## Limitation\r\n\r\nCurrenlty you can only select children consequentially.\r\nReturning `false` in `isChild()` method will close current container.\r\nI looking for a way select children anywhere in raw array.","readmeFilename":"README.md","description":"Easily transform any arrays into trees.","keywords":["tree","build","recursive","nested","ts","typescript"],"author":{"name":"CMTV","url":"https://github.com/CMTV"},"license":"MIT","homepage":"https://github.com/CMTV/2tree#readme","repository":{"type":"git","url":"git://github.com/CMTV/2tree.git"},"bugs":{"url":"https://github.com/CMTV/2tree/issues"}}