{"_id":"@altcrm/altexpress","_rev":"18-c234add349154592f0ee0a828d94da32","name":"@altcrm/altexpress","dist-tags":{"latest":"1.0.18"},"versions":{"0.0.1":{"name":"@altcrm/altexpress","version":"0.0.1","description":"NodeJs Express based backend engine","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["node","nodejs","express","engine","framework","backend"],"author":{"name":"Alt CRM Software"},"license":"Apache License 2.0","dependencies":{"express":"^4.17.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"gitHead":"9644cc2f9a96a55508fe63b2e5388595027cfb07","_id":"@altcrm/altexpress@0.0.1","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-j+EKwBuotsq17nSnJnWGyrbHqZc3GwR0oAjaxL4JSp/I/FOySobP8tSxOArSKVYW5DuKd4Iq3uYM/hEpkbPaAQ==","shasum":"9bb45b80961d52bcb128948cdc29e2ef881ea8ba","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.1.tgz","fileCount":14,"unpackedSize":26151,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhL/w/CRA9TVsSAnZWagAAcxYP/jry0mJPXOQslfBSwWmc\nsXILvCMp0E1IxHn/2aQjZUSdtNzbghA5kuJfNKl5KPRGvwduZ5s8QSr9mPmV\nFBLmd3oo2JKEk1O7H0Z0rJ/KcW2uVvKgFliEM9b2Fth5p4kcr3O8Eh0PW20m\nJKlb2ihEHvuTvTf0zZKAduMdmY6AmeKE9YcjvGGRQ7qn5aWiZohOZB1hWBbR\nA9Y2qxpg38u4L2wNaNYOEBsLa3Jhrs2ExsFGF1d2COeDb11i0OjFnRu9x5iO\n5UsUMMZpmS9uTFHwjCGp/DI5TEAWBf25Ei/sDJIKM12Nhc6begddIXLrscMr\ncUhqEpOejPoctyi1sHGIhUSRK7M86BkmplNqi9LQ1rncCqLjBXagTCRSvVRB\n0xx436WI0h4r1TNVXRzyFrkNji8/IpSM1u9LojqgPkCbsiU+7lWMzErWfzCT\ntYb0LTXxKVmqgLPBeZeyEFCtQ1zQe4Z3OlQwGd759PNuL+HJ9sx5JcgCRxCT\ns0flYcYzOmdeLnJHNKkr/PLAWXsHnxQbL1qb2SgDASyh8FrfvMxbRF0Dzvlh\n7Bur/TA9HXXSMONwwTa0UizkuUvA7cZWRJN4jUn3NwnPV2ahTHJOka4ue0QZ\nfi4hwn59BsgA51Ih5OSfC5AjgS4ZIQLZk5ozbTLRol1OXoqqicYKgLJoPl0n\nXQ4t\r\n=5+2N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+yTqh33kPPlk64MC72S7w+2XZv4dx5jXLBIePvV2uHAIgU3ixAAINZVZWIex7RDUo30kPTnbKdFvOVBr8eTH9/bU="}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.1_1630534719336_0.27620924834195515"},"_hasShrinkwrap":false},"0.0.2":{"name":"@altcrm/altexpress","version":"0.0.2","description":"NodeJs Express based backend engine","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["node","nodejs","express","engine","framework","backend"],"author":{"name":"Alt CRM Software"},"license":"Apache License 2.0","dependencies":{"express":"^4.17.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"gitHead":"9644cc2f9a96a55508fe63b2e5388595027cfb07","_id":"@altcrm/altexpress@0.0.2","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-Lq0F/jtfk+FiN+mAD/6Dvj/jqI3q1kAvJpATC6S+iXx6FBhkEFYgBxbJ2pHQm1+03SRjruCXmlxMbNe7+D075g==","shasum":"0e213984e277b746f5a8b5926379bea6180baf02","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.2.tgz","fileCount":15,"unpackedSize":26262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhL/55CRA9TVsSAnZWagAAlS4QAKSVLpsqtlcUaCQ1Mrqk\ncemKS00xyqXypa+J26qh42vIKwyvh7unPtVe3sh9ZnDWxJ9urtMUjNxdhKtq\n2fvrZ4OjhV3iObmrGV7a2Y9KT3x6sIJZFjr6ByXJhIMcxNdrQWx1YE0fIYgk\ncEPwFTJe/y/mPe6BcuZdgGmzCzPqP5cOHG56psBRuva4GiIm9/w+9z3/8yd8\nNq/mgxvlhkd9LOotOIpXopYTQuetIt6oBbzcNLNVnTKDcjmOuXlGfPuIrC32\nq+ZP3uUsVDzQzoggoaphlfcyFtMMTTq2Qc50O0T5xDYWuyZdXCn664KubBuL\nrmWMB4qbDVsO2tPHiSNmFi9lR+uA/FYBXRoY5uXlcHoFpTtdkJWP52Whdw9X\nu0PsJAloM8Y64k+/tFkalUOZ3e97DIC6vs7NLUkeeFKgJxASncDz7euv6WeM\nMZMzm3zIGBqmRrVqR1y+OUtjx0bZ+UNt7krLID6DilihD9trQntdJ9vvrIFl\nwFgXyjojCsDgNKK8NA8bgpUQDCxcAd7M3FwXoghlRXNiRdy/SLj80VLQGsW0\n9h6z2Bq7rbUDJRdCl8hZ1hhrNWc23QUM/RQSI6UJXP65iXPtRNXcfXNhYeYK\nI7iX09OIz6iA8I1awpH8xaYhVlsQrCrDaV/RnSxBNHPmI/lZC/6D1TmvPeTv\n97GK\r\n=Kh80\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwOBmOGdDhQ2nJpbXpXdK1pLTMbYd+8Q6wlw8ssYZ3QAIhAK3p5RdyXl3LU6XQUZDD9EyQZ5twRXUtTG4zTzwFPkX/"}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.2_1630535289471_0.42275037438617247"},"_hasShrinkwrap":false},"0.0.3":{"name":"@altcrm/altexpress","version":"0.0.3","description":"NodeJs Express based backend engine","scripts":{"build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["node","nodejs","express","engine","framework","backend"],"author":{"name":"Alt CRM Software"},"license":"Apache License 2.0","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"gitHead":"9644cc2f9a96a55508fe63b2e5388595027cfb07","_id":"@altcrm/altexpress@0.0.3","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-9StsMQB9hJg0APDXxBAizhvsGyQYSTlTI/5UVhan3b4CXwtx0UTxG7ftQA91y35S3dy/VK58FknIET7Xau0txA==","shasum":"05d60be08e49622cac321242c31928fede48f08c","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.3.tgz","fileCount":37,"unpackedSize":40775,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMAXiCRA9TVsSAnZWagAAtpQQAJ4xV9PUqQAi7KC0xSST\n1mO9v3qw+p7PrXDMGmis+o8zxFqUCzdtZM34EtF/2o2bAXQtxBnnC5vlE+Ld\nNX4pBeITpS8sj0Cz+Qtqy6UVPqK2srul2wlggPqM9NULCrv69buNsJe6OQZK\nO8CoajTuGI5a7RizjHlL6khzOkZXGG1a1nr2yOKs/f7ksazBXnrh0SmlZl4F\n/m2pVJQfvTmMGkgHCtZS2EbE6uD7gqZTdbse1xUtGRA8FAbdJtY5DX8GSw2M\nFxM4Cq2BF17hDSmDphLGMsEiqcQnz+fzMesGhDcSQhDorir+ufDsuJX6icFt\nL7OTaiWzPKhmkraCkRquGHjhRK/HErworcdCMwSNy2ofgaGynzpOXEpJtl3I\npGI7mCV0TrfWTXV5aQZIigMXoJqlgeSCsNZqAsmSWqOV+tQ2uKw8E6G6wGw6\nCry1eW9RZ5BzGMO5ndVsxMjc8iR96+OS/nuXvWo8Y7C4wq4kvdbQl/eFYkmQ\nWp/7tDvEebwm6AgLB0hcrB5M3gx0ZsPnUMZ86xkfJogZfUWb7wK5JvBv73gK\nSffLJeRqE7Bl2v0bmmiIpMTCWRkfT6hZD2ySvhv8UvAloIIuLfGjy+x19spJ\nzXPFjXYh/JjTL9G8QNXvQsKjEkCQZHzC3nNCk+SRXP7MF1FmAhzXj+gQBG2F\nGAbw\r\n=Iw39\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuE9SDCe3Kn+EeuMkgPFPJcJsWEau4pLhH0Cwn/EIMlwIgc9B81aLYKaoMmP6ar8l31F8uy8UbdLMVSL+WylRYg58="}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.3_1630537186449_0.6139909487343733"},"_hasShrinkwrap":false},"0.0.4":{"name":"@altcrm/altexpress","version":"0.0.4","description":"NodeJs Express based backend engine","scripts":{"build":"tsc"},"keywords":["node","nodejs","express","engine","framework","backend"],"author":{"name":"Alt CRM Software"},"license":"Apache License 2.0","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"gitHead":"369845306e0fb0b612b81589822ad1239a53be50","_id":"@altcrm/altexpress@0.0.4","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-KatjHP4qUUshLRPqzAUBm1gZwYTRrpgxhvVrrKWALK0YwmztEyVqCTJCygvZmNezTSc8yWRWR7TKVeOSsYthJA==","shasum":"5c27009c4adbd1729ecd933a5e82bd0b2ca9b2f3","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.4.tgz","fileCount":37,"unpackedSize":41009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMNuZCRA9TVsSAnZWagAAkUYP/i3EyPs70fZerZwfvhGf\nuZ8xpatLLHE6ve7uLiRwCJVOZo2/8ZOLELGNrDUjH9D3C7Elu+03iKGJ0Nfn\nl7d1fEh/2jOSsKwy8QATo6l2zFMPbG4Wd3I+9g39O/I/2FGXoAJT/PZx9Z5S\nyEWaxAUtOnT693yv343H3sl762q4CAyaOekU/s3QcnDwI/bcM6Co9a1LCQIF\nXG/KeeUhFS0aaGmqAbVC1X9862tDgGwSQHHi6xQjhBi9y0wxjpyizBBUiLdw\nZ0AyAI0bwIeMLDJ/G4evCeIZc39HKkMX28Km5bSkCB65y6TxA9i/m41zGvXD\nOAruRsDTWTE8AMF1BDSE3tlzcb9AhlPAnsCJy+UeicjrbAudHxQnfA9RdF5o\nVVlRSrGQCHN7GL2G8D3jBy7ZVIFD1t5ESrp+hscfSI0DgBCjjIrloQB+SAi2\nT5IMw7zVeo9uLtahlzwBNvwlBCwTNXRncPEjhuBux9XDKT/10JhEdjtrno48\nR3vgzbLl5+uy9Yfa6Y9nYS8lInSwScuhQ2AMl/3S85hCkts4FKJ4neSG2Ptq\nVga4M7FNDvRosjnY49wnCWFbfDtotBJNqxU50x0ldlaLwva1HYbrd+djfSVI\n6RwQjZzVIbzhSGJVz+ACfINHc6wACMhPGeJAHJbEsVOzC3JJA4FNudCR9wT9\nucH8\r\n=VzqM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQT8Lz/dd97cP95GXlslUB4dYj6PSJz5TlP1ugw9oihAIgbEXpMSlOUCsdV7FqxqX0SvtvYklsfTMAC56qJK3p1Ok="}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.4_1630591897292_0.04585292641389649"},"_hasShrinkwrap":false},"0.0.5":{"name":"@altcrm/altexpress","version":"0.0.5","description":"NodeJs Express based backend engine","scripts":{"build":"tsc"},"keywords":["node","nodejs","express","engine","framework","backend"],"author":{"name":"Alt CRM Software"},"license":"Apache License 2.0","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"gitHead":"03230e2691869e07b3ae308839633c6252ba690c","_id":"@altcrm/altexpress@0.0.5","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-L86KbZjHOTylDmJU936T5Fsh28gXB9bdQqxQNll89rvZnRS4gAyjeG4T2APSmULpIjqGO4shjKFWv4eCeroN1w==","shasum":"c1f04219b9989791aac2e18ed1c9f3bfbffa1bd6","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.5.tgz","fileCount":37,"unpackedSize":42201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPoOmCRA9TVsSAnZWagAAS6YP/0oIOs60lH9IwC8Tkuaf\nr6QTO9fJXcWFoFFYK+gBSG5c83s1Lr6QHX4IDah87O+NKZM+by7SmFU/Lrrp\n2WBIt9zblzYTS3LsyA6DkCR/q9tkFXEDCQQdbs3W23JFlUwFfw2q5k8oMTwu\nQW1o+OMC2qwCk5ef3s4z/lmuYbPft9JOkh/2qpVL9x+A+eZP/UFiTZhuBvX9\nzo+4l+/KCpOtGHoCXb/ixHtBGRz50h9q0oWPz4vOV2hy1YT+577J0WkH+YKX\nfrZuKsm42zlJK5bCzGlNhg8ID48bBiV5kBekoFmMZAPOgVZ+mr8AMDPaotcZ\nxCR4R1S8DrAZcmOoZ2qHyDfL4oXDgyO9FOC8hJMnKXtxVXUlcx7MueCh0+Ms\nrLkoOsz2tod7FklU1FH+3pYWnUq6MB5AiM2KBMmYEOjiE/+chUOeOoYIM49a\nhvEkgn/2G0yCnd2gPL2kWkwfNgSK28SVJsWSo1tOEd4yYR8KbxyhoXdv074Q\nQTkQpJBFiTZhvD/JPuKudosd+g5MXsFhp3s1yLuxc6TF3fXmhRFu8gQO58on\n46dOtiN26zrAHPIzEpoT5j4BGQCoRVEgYjH9N9Yj2tmuDYHI4QeW9jIcZdlg\ndZwE+r8AN1xTrKlli4DlhqiMEdNjybljZdCunBGCji8k05hEv7XIoqEGqguc\npP5Y\r\n=gw+P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFywNSvXjLBsaKwxxvxH07EgJn9MT909LErLItFHtKcrAiAYLyRcUaxZO8FBMDV86OkYffcGIiMsRUWeM4JltI9u6A=="}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.5_1631486885936_0.18783010570072944"},"_hasShrinkwrap":false},"0.0.6":{"name":"@altcrm/altexpress","version":"0.0.6","description":"NodeJs Express based backend engine","scripts":{"build":"tsc"},"keywords":["node","nodejs","express","engine","framework","backend"],"author":{"name":"Alt CRM Software"},"license":"Apache License 2.0","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1","express-validator":"^6.12.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"gitHead":"03230e2691869e07b3ae308839633c6252ba690c","_id":"@altcrm/altexpress@0.0.6","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-VCWheY/+yK50uXnC/ROORn0lK3kZLvM5IrPf78w0/A+vtt3SRL4P050P8AWfGCi0iJEuuSY0WbPNQN6+QzpLRA==","shasum":"4a4f35be9d8d263ee7198894fd8df691e6ee8ba4","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.6.tgz","fileCount":43,"unpackedSize":45115,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhP01UCRA9TVsSAnZWagAACQcP/j8fOMq9auy5Rgd9Fb4h\n5X8ZFGA1sOwrbS8zgkqqtRepbHIAT/Q8moAXHAWP+Lgi3FTFZ4M2eyi11ixL\nOvKEuG0OzRJMccSInJex1wvQhljHQrBSFb2pVfooWTEG3SBAlWJlyiP5K6Lj\n8wz8rLT10rgLFWwKwtkkC9+lO+mRguAa4n8b4OLNT3ZghtHDV02S7/aRCUD4\ndrkRA4+IPoQOXPaRqjD168/hecXWO9wJ+g92nAor8Rrn/M4QFaymkA0Z6dB8\nW+/h7A1ocG5Itm8lGvUSq6P4OppBtTnYq46N1vf/u0dVd33q0lFK1ZIfj5Kd\nlVrhJzE0AKaOBqLVzQ/BY0bGo+TlF6+VQNdqqv97litXY672tVZcrCk8xaoK\nUePUyEOqZi/mr0bzwpV53P0KvpkHvg17JoTbM5wLsk06dQK3vwLvbP9aqcfj\nvjJIumsObdsjmEfrIyYPaX/Mi+g8SaqoxKrWg8rWOwwEziFEyGFsvdhu4G4o\nJARpjFI4yGmFUQvZ19Irrbzzh6pi2zrp+JOChHobrrQ3xnNh7RbzFZd/YM58\nii2V3NL40hikdDfgE+wq8o5CE7TH9dMhAQ2kUrV4MXkbknBkttaSwkLjWDKm\nrJ+QCy5qTQ2uYDwMDB9uiU00kd+CofZP5ahoTPXPqsU/xy/jSGGRYJBged2o\nHVw6\r\n=PAY+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHnqItbgP9awGVEUfA6X/meXza7ii2MGBI761AB5/p8UAiAOdHLC+xvF4LJOMRkE4ndQAQaai9BxgdbIE9XCtjl66Q=="}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.6_1631538516562_0.27763693297728187"},"_hasShrinkwrap":false},"0.0.7":{"name":"@altcrm/altexpress","version":"0.0.7","description":"NodeJs Express based backend engine","scripts":{"build":"tsc"},"keywords":["node","nodejs","express","engine","framework","backend"],"author":{"name":"Alt CRM Software"},"license":"Apache License 2.0","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1","express-validator":"^6.12.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"gitHead":"03230e2691869e07b3ae308839633c6252ba690c","_id":"@altcrm/altexpress@0.0.7","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-Nk/Vw9CnXbs7gdQgBUpqZsUSuvznEajHa4VCPoYfis6li8FZukgfK9fubKH0hR7ZKC8vcZMR4Z/ClI67EtThwg==","shasum":"68adad33bce4f83d537d37409da6df42553fe00b","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.7.tgz","fileCount":43,"unpackedSize":46449,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhP34/CRA9TVsSAnZWagAAvFgP/jS1Laazr0J4Qji5Jhq1\na8rttd7WBtQcfPvo1tMEr+kK9SnTHm96kwQMq6mrPcyv6JstlqrwGYwEQgXX\nuuWdsSRq+59jp+AF1dX7t1ljMcs26v3ud39HboKByA8G/AZAM77MOLCFvzm5\nv9PvB64buwNcRlrVJFVdIzKqT5z7rebVR74bG8yUzGoMjOXHqKJUeF/X0b2H\nsXCLFC438VhyFIYJ46l+XVAx/VVN9mOx4KTV/pVbuosNMGl/gekhsfq3IlIV\nOOauZ7hD4OAV7bkLmgP+ZNeCgF6LrDsgdnuDP7B3H81CLewTEVLNimXREXYq\n3NvPNz/NigJbiNfTn9i7WLpWC9okvNKXQbDFUMx23QYigWKAZQTWpKk2HD/k\n6oeyZR8uKsEzvF2BCfVpisFoyfB7AGaHE0m7fM8D+NE4bcHYzgMLFflZ4JBt\nNpwiAnvXUqP7h6GM76ETiC0aCauA/pJExWKKkyNsLmPmlzXXd2QQLxuI5TSi\nDCc7oRYWIcjh3HGpkNAR8TrN+EYjKUP9iIke2NBIIUTB7qVQgStDsl/yxK6J\nAZRES498fq8FVndYx0IypAEVtjscblT5kxi8pW0k0EJyytTXcLKXCUe3H50m\nbU+ZpmMGcY5jb7TxrQezsUyB0i2Z8xUIxmJSX9+LMHIHqQeloLNcWNsTM464\nygmo\r\n=Iv+C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHzHlVqWp8OJp20SmRsrD05+vIEzWReCQHIg1LaW/LugIgUUb/O21H2ZuCmErQmmz2MX67hGh2rnnUoCrjiILORkA="}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.7_1631551038743_0.5284863374600175"},"_hasShrinkwrap":false},"0.0.8":{"name":"@altcrm/altexpress","version":"0.0.8","description":"NodeJs Express based backend engine","scripts":{"build":"tsc"},"keywords":["node","nodejs","express","engine","framework","backend"],"author":{"name":"Alt CRM Software"},"license":"Apache License 2.0","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1","express-validator":"^6.12.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"_id":"@altcrm/altexpress@0.0.8","_nodeVersion":"14.17.6","_npmVersion":"7.22.0","dist":{"integrity":"sha512-eRMMj9dNp5eKWXSRb9FUYcaPomNEyoDz6/zibQD5oxDC1x/j03BD+W3TnHs4Sdr/7f0wJBJOhp4f6Jqv5cjWvQ==","shasum":"ac8b894289a4447bff52edca02cbec1675000adf","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.8.tgz","fileCount":17,"unpackedSize":31392,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyPWhSkNs0pO0sBzo9twnRJewO35ROenGtwzUPZ5yVYwIgJ+uZLGT8FczDMnWGqqQIMLr/TUFg95KMJ7IZt/IwkbE="}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.8_1632312892280_0.2770466442202699"},"_hasShrinkwrap":false},"0.0.9":{"name":"@altcrm/altexpress","version":"0.0.9","description":"NodeJs Express based backend engine","scripts":{"build":"tsc"},"keywords":["node","nodejs","express","engine","framework","backend"],"author":{"name":"Alt CRM Software"},"license":"Apache License 2.0","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1","express-validator":"^6.12.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"_id":"@altcrm/altexpress@0.0.9","_nodeVersion":"14.17.6","_npmVersion":"7.22.0","dist":{"integrity":"sha512-kWYYrrJgaWxQX4nLvPrjlb+Q94+TWEpbElucLZP9FZLcm+29a3S1JBpHiW2/8geLIUMRYYb1si4c4BELGvxEQg==","shasum":"24315e0e9b83f904a3fe7f67a9391478957e7b8c","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.9.tgz","fileCount":43,"unpackedSize":50880,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG1iH709Eo8mvSNh8yR1MKzeHkWxLOn2BZMwdURmBnMGAiEAxBrzi39rJesY+Hv5iGGk9Zg25knnL1lOCe2Su2+POYM="}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.9_1632313493491_0.5572901883825354"},"_hasShrinkwrap":false},"0.0.10":{"name":"@altcrm/altexpress","version":"0.0.10","description":"NodeJs Express based backend engine","scripts":{"build":"tsc"},"keywords":["node","nodejs","express","engine","framework","backend"],"author":{"name":"Alt CRM Software"},"license":"Apache License 2.0","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1","express-validator":"^6.12.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"_id":"@altcrm/altexpress@0.0.10","_nodeVersion":"14.17.6","_npmVersion":"7.22.0","dist":{"integrity":"sha512-VAwK6DxwPiky/pby3vClu0jIepJRJN2HT4RrZ+f93BfCHu/2l+ALmM4ngN+XDOBAi5xnwvOsiwlSr09AgmllDg==","shasum":"5e4bc66ad625f473b14daaa36144a80928c0be4d","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.10.tgz","fileCount":43,"unpackedSize":50885,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrFB1v7wzCliCotbOYjTDW3rH+d29Zbb9vcBBZptfSqQIhAO9gS6ByKHMPIblBIKPUrQ9Lnj5IzAsc5mDCKMWu5cf4"}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.10_1632313938800_0.9502507270221134"},"_hasShrinkwrap":false},"0.0.11":{"name":"@altcrm/altexpress","version":"0.0.11","description":"NodeJs Express based backend engine","scripts":{"build":"tsc","publish":"npm run build && npm publish"},"keywords":["node","nodejs","express","engine","framework","backend"],"author":{"name":"Alt CRM Software"},"license":"Apache License 2.0","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1","express-validator":"^6.12.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"_id":"@altcrm/altexpress@0.0.11","_nodeVersion":"14.17.6","_npmVersion":"7.22.0","dist":{"integrity":"sha512-Ugw25rTB0Asr8t+TLnnQeFlebJQYrPnSKhgsqDssGhJgRqhh0GAMFo4zeDqVh8kWz6rIyv24s5zklJA9IyUP2w==","shasum":"3aa13cc08dd737836c450f5c51ec00515f0ada4e","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.11.tgz","fileCount":43,"unpackedSize":51883,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID0oeQ4DGVcoD8Ioe4N00QZ8PS8ws0VYsVaLWIozIMB2AiEAzeTTJhCjWpd2Sf8Qx3IMKBOklcKhoW0VewCCJAR62Xs="}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.11_1632316051731_0.9372165319456449"},"_hasShrinkwrap":false},"0.0.12":{"name":"@altcrm/altexpress","version":"0.0.12","description":"NodeJs Express based backend engine","homepage":"https://github.com/ipoddubnyi/altexpress","author":{"name":"ipoddubnyi"},"license":"Apache License 2.0","scripts":{"build":"tsc"},"keywords":["node","nodejs","express","engine","framework","backend"],"main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1","express-validator":"^6.12.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"gitHead":"f36219d3130353c6df3b8253720614db38d6d54f","_id":"@altcrm/altexpress@0.0.12","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-QhZIsqmSRTlz4CycpsO/goB2iS+Y8O04hReh7WiOEm30to+UG1jEHp7FKUfGtiGNfxFrNQ+3IIV93Uzoc/Bgow==","shasum":"8cc5a1f67a65abf23681c25aa94a702bbc94bac5","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.12.tgz","fileCount":43,"unpackedSize":51940,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHQKuneCmZkS0dR88AKimnPLKIeHCZbNRzQVDWHJjvbDAiEAtSyO78OwVeJ6zpRnmUCgDFx/AE4vRLV+JYxZE6enFe0="}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.12_1632342228322_0.16926121105541525"},"_hasShrinkwrap":false},"0.0.13":{"name":"@altcrm/altexpress","version":"0.0.13","description":"NodeJs Express based backend engine","homepage":"https://github.com/ipoddubnyi/altexpress","author":{"name":"ipoddubnyi"},"license":"Apache License 2.0","scripts":{"build":"tsc"},"keywords":["node","nodejs","express","engine","framework","backend"],"main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1","express-validator":"^6.12.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"gitHead":"8f5433df2acf281fccc4224125ebfdc6fdceda40","_id":"@altcrm/altexpress@0.0.13","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-8qHbZupWMhdiHUgJGkVLCB2ldkksQPmg7Nowy5JNt0yAL8Fq0ioIBblfssTG8wHADLNUIBvYaAkJS0OJpNee2g==","shasum":"9263381a5121d37c85003aa054fe5acc82f364f2","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.13.tgz","fileCount":43,"unpackedSize":51988,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUPomT4PUDbaWZJrPcIn2/SLbtSQpNoDRfUXJqGUZ+wQIhALDPCimYRa7A8k2qL4sh9diOuiTofrFpDxa5S4yAb8cG"}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.13_1632516120773_0.25819137559151417"},"_hasShrinkwrap":false},"0.0.15":{"name":"@altcrm/altexpress","version":"0.0.15","description":"NodeJs Express based backend engine","homepage":"https://github.com/ipoddubnyi/altexpress","author":{"name":"ipoddubnyi"},"license":"Apache License 2.0","scripts":{"build":"tsc"},"keywords":["node","nodejs","express","engine","framework","backend"],"main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1","express-validator":"^6.12.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"gitHead":"8f5433df2acf281fccc4224125ebfdc6fdceda40","_id":"@altcrm/altexpress@0.0.15","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-FcCCcuxonw9pA5ADDfyLVsuoo1ehzi1lrCNSeCzUtqyvQdXWC1BEbRKgWFQljXs2WSyTy1DJ0PajPs29DN+/ZA==","shasum":"325e2a46e2e9e89586a71a72809bb271a7162b06","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.15.tgz","fileCount":46,"unpackedSize":56284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzFGDCRA9TVsSAnZWagAAXFMP/j8LgrUTx/jzczuoXfCL\n8JP04WOvi3mr+fKUAB7WEKqLiGnYzy9r3lnaDD5wXmirqaqQ9YQNvg2GRXyJ\nFfwYtwS1LiMwDGjc35NWGqtOF3dfdARzPB3aamUQnYTW1UZfndV/1QiRgvqI\nqNk31jrOU6mANaF39ypnZNCXz9ZSwfTBXJDYdNFHp9DRnO5RZejsHvErmBEm\nz3ZQ+cmwNa4KTNrw1fw3Ku5uMyBJ3vzvNEM7ophGMUm0ZgoHaDWAcII5p4Cp\n8gmAshD69gyD8mud9C9n3g9qaxa8GFZcmJdnpOhHVex44teYANZZ8cflq4Ob\ngYXjhNfJC1zEAkdEr6oSpTI1TkxfqMKt4VsB16m4mLbLVNLYhbVH30y3h51g\n+i6uIUFHmKVbq9VlnxNdurIIrjeYuLa8AdzfiSsHt8jR/xC3Bmy7mc5GD8DJ\nj2oUmA/l1LXlFmriaWKqylFo5sn2MrG6+raa9Y2y6cBV7z2CsciJ+/+Yvwe8\ntLVZhw+w39hOxcEUjXnrYcLLDfbDNu2FQTB7W64ECKcJc1OMAPmsoW8z0B4v\nu884v4W2j90zApCR2DBjBIYYxYQKjD8U6AnlDnQLPoXZQT97T+Vo+zT8GOtA\nY4hO4blpdzF2S+9MXYAGXlmL1S1aFzTo6hcjd9uUCV6cwsRPeIKBasXiM/zy\nr1b5\r\n=kW80\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjrYm74r8KyhKIJ2e9nmdetvwjgR4IyF0OrlBrM2XV3gIhAK67uyRd9yQp6TF6j3vAcptkv6x1VVXZM7/+omOYnz7t"}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.15_1636670582718_0.5306873810624146"},"_hasShrinkwrap":false},"0.0.16":{"name":"@altcrm/altexpress","version":"0.0.16","description":"NodeJs Express based backend engine","homepage":"https://github.com/ipoddubnyi/altexpress","author":{"name":"ipoddubnyi"},"license":"Apache License 2.0","scripts":{"build":"tsc"},"keywords":["node","nodejs","express","engine","framework","backend"],"main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1","express-validator":"^6.12.1"},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.4.2"},"gitHead":"27085d905ea49f42fcccd4e1a873689d8662954d","_id":"@altcrm/altexpress@0.0.16","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-QYBMw7v/wJraQYTnTu+6by2xmEGdXSMNZO1b+difphbv2Lwzl8vw66EzERkqBD/77j+kDwzYRiocUCGtSlqU4g==","shasum":"410ac46d3c56886ee19c1c1ff4685de33f613f80","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.0.16.tgz","fileCount":46,"unpackedSize":56560,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJ4tEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpLQA/5AN0k9Zw2wwpR/cTF6ssvSiNOEO8huxX8sYyXIj1J6EScC4qo\r\nZ3i6mQ4I/4Gj0FyyNPcnCEHg6O12A2+muuKSKxsPFl+JhcUoqDOziZvYoTHi\r\ncRzq4v0VDgcHLpVsp/60fwYy/uKxj076ia7pdkFIaMIN2ZHSMuVO7OjBR434\r\nppPi0vnFziyXwEOAjA0BG5jO+mvdq9rs/ERONxBiL8oQZlAna2uEWsqgpthU\r\nVI3VjsAfacl8WltE6KGZWgTLh5cPd075IJUCOoltMpOZ2xvxElbWelYZOOs3\r\nwuSkFGl00+E5JzikvnE+CSb3jdTCnfkx1bv9p2KaSg6QdBFGCXJliRYrQmKy\r\nw9RBpaZ83Cr+sYfKnPBU0i4Xr3s9M6pHJCSjRLYIB62BkN3/stTk1AEEd+9H\r\nbNH9ZXXTUZpWEiXFhggPpUuknodf2JMppicRfLpYWKrB7tVGEUqjlgnOkbpA\r\nik+F/4xY4kohBCKWpKYHKt6+urYCSuRaxNDZYkH6lsBhCDA/Ae/IGUuH7qUT\r\nOJfNAiz2unM+E8TjdoVrzjNUxyC3hph7qvaLLSSapNrCi1BBHjhC+zugHp2h\r\nkSZKlUL4xhr5HlKGI9N1vNqW8d71iWvLq55HvWVnE70+xxKEywFo75547vFL\r\n7Ggve3O8NDMUFW9uE08D5SX8jsx8fUyHUFs=\r\n=g8hz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQpRKfudvSqUPcUaqqEXl3F9Rrvx+9E/6QoXFQA4/MVAIgAS6QeOTeHZO/qgedP/tJH/zFsYlBQIo5HSnILquki+A="}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.0.16_1646758724320_0.29482344003479466"},"_hasShrinkwrap":false},"0.1.17":{"name":"@altcrm/altexpress","version":"0.1.17","description":"NodeJs Express based backend engine","homepage":"https://github.com/ipoddubnyi/altexpress","author":{"name":"ipoddubnyi"},"license":"Apache License 2.0","scripts":{"build":"tsc --build tsconfig.build.json","start:example":"tsnd --respawn -r tsconfig-paths/register ./example/main.server.ts"},"keywords":["node","nodejs","express","engine","framework","backend"],"main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1","express-validator":"^6.12.1"},"devDependencies":{"@types/express":"^4.17.13","ts-node-dev":"^2.0.0","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"gitHead":"4ce24ceedcd6f439bd45a35f74b56c0e9c5e1b2c","_id":"@altcrm/altexpress@0.1.17","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-zi2ssUQbIIE6dQ5GHFMSePq2Z2/vIwyIFUkjn6qBvNPKvsDVBPfGuGsFbQ5El4cIMm9KZl2AqFB5JvmSmDRVuQ==","shasum":"1ccb85d0ffe3aababc9469a9579b31234b7b4398","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-0.1.17.tgz","fileCount":41,"unpackedSize":71424,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0+QxBiWahqHGarouAZslE8Twh0VmOL3z1ZeRYnd4KxwIgZ+TAHVAc04UiVIt/pJUrbiPVfNu9hMQUE2QFG0J1SyE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0J0OACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrM2w//R10zRD70irev8zU/HeIrO04MK1kotM7VC01sKSATh8YUzNzT\r\nxSCjSwNX86HMuxwMdH6sIfc1bkMCvK85/VyRiMciaT3cEKoeAFY3JB712uMn\r\nJ7qlBK65Xx+r94hspTB7w+ApKQ1Zoh2RfMGcqpgEA3IBpT3mcRwqOh5WMz7W\r\nAfDKGrHYW61v4lnjjqj6V+g6DP9SITRsvCLQOkXVBNuke6IyiKVx4GEuDooG\r\n45AdA5XO647iAKWWsq27R9lRwRjBZNFZmRhiaUsinEqah9STjmQqF2VvG7GM\r\nVfRbbDjeTNRvJaOgQQia5vHTWiOwsunaC28gI94EKPMijp44nVsaiGZBPevC\r\nredrExCfJ1nMLO3P7lpJTYdjLSKgLyB9X2e5+E2oU8XQRyPLNVoJFlFHS90L\r\nAMeSDYv97G3xq3/gDP6MIv+rEmVBcquHsaX/CF3F5IBH5RRVhQ/2GoPQrpXB\r\nr6JOPZXw/emPPUIwXuMD0iFYA/2aG5PqR7l9NQtqtTTiNellD0XRLuWNrgtN\r\nSmSqCtJff9W5XpRVu0BlxPSEDhEtMm1OmGELBN0O7kbSaC0sjSmVhR2xu5gS\r\nCGY0szz2HVVHlpk0vY4hagdK9ZMQHHlmk0KgDoNgoZ0YEbBTz68u7pJAj7TX\r\nWYw6tJHGMq1k5BC62zqvr9jsnoZCkpU8hzU=\r\n=P0Iw\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_0.1.17_1657838861797_0.9353160977333987"},"_hasShrinkwrap":false},"1.0.18":{"name":"@altcrm/altexpress","version":"1.0.18","description":"NodeJs Express based backend engine","homepage":"https://github.com/ipoddubnyi/altexpress","author":{"name":"ipoddubnyi"},"license":"Apache License 2.0","scripts":{"build":"tsc --build tsconfig.build.json","start:example":"tsnd --respawn -r tsconfig-paths/register ./example/main.server.ts"},"keywords":["node","nodejs","express","engine","framework","backend"],"main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"express":"^4.17.1","express-validator":"^6.12.1"},"devDependencies":{"@types/express":"^4.17.13","ts-node-dev":"^2.0.0","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"gitHead":"4147464b880756afadfe2345c7e3a8b0c71bc3a8","_id":"@altcrm/altexpress@1.0.18","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-zYMSfaqhMaLgBII7bWzzesoKQtedUVDBOGrrj7ttoRYJstrIOCHetcrCRa4H+6EcGR4JiZazFMSilOWo5wRqyA==","shasum":"adda9082cbbe2f8897f9786540271004d142f69e","tarball":"https://registry.npmjs.org/@altcrm/altexpress/-/altexpress-1.0.18.tgz","fileCount":42,"unpackedSize":51988,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqxvrDAY6jjpDzRRVIqolLm0jVJ/g0eFhc5cQGWpPhoAIhAOnv12C+6rxpZre1/2DvPJjYJuDpKc3koTMnlOj9YWIE"}]},"_npmUser":{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"},"directories":{},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/altexpress_1.0.18_1691962871565_0.6809750747537584"},"_hasShrinkwrap":false}},"time":{"created":"2021-09-01T22:18:39.271Z","0.0.1":"2021-09-01T22:18:39.498Z","modified":"2023-08-13T21:41:11.974Z","0.0.2":"2021-09-01T22:28:09.591Z","0.0.3":"2021-09-01T22:59:46.558Z","0.0.4":"2021-09-02T14:11:37.512Z","0.0.5":"2021-09-12T22:48:06.060Z","0.0.6":"2021-09-13T13:08:36.681Z","0.0.7":"2021-09-13T16:37:18.999Z","0.0.8":"2021-09-22T12:14:52.417Z","0.0.9":"2021-09-22T12:24:53.640Z","0.0.10":"2021-09-22T12:32:19.037Z","0.0.11":"2021-09-22T13:07:31.881Z","0.0.12":"2021-09-22T20:23:48.436Z","0.0.13":"2021-09-24T20:42:00.942Z","0.0.15":"2021-11-11T22:43:03.238Z","0.0.16":"2022-03-08T16:58:44.531Z","0.1.17":"2022-07-14T22:47:42.062Z","1.0.18":"2023-08-13T21:41:11.806Z"},"maintainers":[{"name":"ipoddubnyi","email":"ipodd.tvorec@gmail.com"}],"description":"NodeJs Express based backend engine","keywords":["node","nodejs","express","engine","framework","backend"],"author":{"name":"ipoddubnyi"},"license":"Apache License 2.0","readme":"# ALTEXPRESS Backend Engine\r\n\r\n! Attention ! The engine is in development. Functionality can be changed.\r\n\r\n## Get started\r\n\r\n1. Create a controller: \r\n\r\n``` ts\r\nimport { Request, Response, Controller, Get, Post, Put, Delete } from \"@altcrm/altexpress\";\r\n\r\n@Controller(\"/clients\")\r\nexport class ClientController {\r\n\r\n    @Get(\"/:id\")\r\n    public async get(req: Request, res: Response): Promise<any> {\r\n        const client = await service.findById(req.params.id);\r\n        return { client };\r\n    }\r\n}\r\n```\r\n\r\n2. Create a module:\r\n\r\n``` ts\r\nimport { Module } from \"@altcrm/altexpress\";\r\n\r\n@Module({\r\n    controllers: [ClientController]\r\n})\r\nexport class ApplicationModule {}\r\n```\r\n\r\n3. Create an application:\r\n\r\n``` ts\r\nimport { Application } from \"@altcrm/altexpress\";\r\nimport { ApplicationModule } from \"./application.module\";\r\n\r\nasync function startServer(port: number): Promise<void> {\r\n    try {\r\n        // create application and specify main module\r\n        const app = new Application(ApplicationModule);\r\n\r\n        // - !!! DO NOT USE !!! \"express.urlencoded\", \"express.json\" -\r\n        // - already defined inside the \"Application\":\r\n        // app.use(express.urlencoded({ extended: true }));\r\n        // app.use(express.json());\r\n        \r\n        // - to specify global API prefix:\r\n        // app.setGlobalPrefix(\"/api/v1\");\r\n\r\n        // - to specify middlewares:\r\n        // app.use(morgan(\"dev\"));\r\n        // app.use(cors());\r\n\r\n        console.log(\"Starting API...\");\r\n        await app.listen(port);\r\n        console.log(`Server is running on port ${port}`);\r\n    } catch (e) {\r\n        console.error(e);\r\n    }\r\n}\r\n\r\n// start the server\r\nstartServer(3000);\r\n```\r\n\r\n## Tricks\r\n\r\n### Returning Method Result\r\n\r\n1. Simple. Just return a body (http status is `200` by default):\r\n\r\n``` ts\r\nimport { Request, Response, Controller, Post } from \"@altcrm/altexpress\";\r\n\r\n@Controller(\"/clients\")\r\nexport class ClientController {\r\n\r\n    @Post(\"/\")\r\n    public async create(req: Request, res: Response): Promise<any> {\r\n        const client = await service.create(req.body.dto);\r\n        return { client };\r\n    }\r\n}\r\n```\r\n\r\n2. Custom status and body. Return `HttpResponse` object:\r\n\r\n``` ts\r\nimport { Request, Response, Controller, Post, HttpResponse } from \"@altcrm/altexpress\";\r\n\r\n@Controller(\"/clients\")\r\nexport class ClientController {\r\n\r\n    @Post(\"/\")\r\n    public async create(req: Request, res: Response): Promise<any> {\r\n        const client = await service.create(req.body.dto);\r\n        return new HttpResponse(201, { client });\r\n\r\n        // or\r\n        // return HttpResponse.successCreated({ client });\r\n    }\r\n}\r\n```\r\n\r\n3. Error handling:\r\n\r\n``` ts\r\nimport { Request, Response, Controller, Post, HttpResponse, HttpException } from \"@altcrm/altexpress\";\r\n\r\n@Controller(\"/clients\")\r\nexport class ClientController {\r\n\r\n    @Post(\"/\")\r\n    public async create(req: Request, res: Response): Promise<any> {\r\n        try {\r\n            // ...\r\n        } catch (e: any) {\r\n            return HttpResponse.error(e);\r\n\r\n            // or\r\n            // const err = new HttpException(400, e.message);\r\n            // return HttpResponse.error(err);\r\n        }\r\n    }\r\n}\r\n```\r\n\r\n4. Error handling by engine. Application will catch and handle exceptions:\r\n\r\n``` ts\r\nimport { Request, Response, Controller, Post, HttpResponse, HttpException } from \"@altcrm/altexpress\";\r\n\r\n@Controller(\"/clients\")\r\nexport class ClientController {\r\n\r\n    @Post(\"/\")\r\n    public async create(req: Request, res: Response): Promise<any> {\r\n        // ...\r\n        throw new HttpException(403, \"Forbidden\");\r\n\r\n        // or\r\n        // throw new Error(\"Custom error.\");\r\n    }\r\n}\r\n```\r\n\r\n### API Versioning\r\n\r\n1. Create controllers and modules for your business logic:\r\n\r\n``` ts\r\n@Controller(\"/clients\")\r\nexport class ClientControllerV1 {\r\n\r\n    @Get(\"/:id\")\r\n    public async get(req: Request, res: Response): Promise<any> {\r\n        // ...\r\n    }\r\n}\r\n\r\n@Controller(\"/clients\")\r\nexport class ClientControllerV2 {\r\n\r\n    @Get(\"/:id\")\r\n    public async get(req: Request, res: Response): Promise<any> {\r\n        // ...\r\n    }\r\n}\r\n\r\n@Module({\r\n    controllers: [ClientControllerV1]\r\n})\r\nexport class ClientModuleV1 {}\r\n\r\n@Module({\r\n    controllers: [ClientControllerV2]\r\n})\r\nexport class ClientModuleV2 {}\r\n```\r\n\r\n2. Create modules for different API versions with prefix specified:\r\n\r\n``` ts\r\n@Module({\r\n    prefix: \"/api/v1\",\r\n    modules: [ClientModuleV1]\r\n})\r\nexport class ApiModuleV1 {}\r\n\r\n@Module({\r\n    prefix: \"/api/v2\",\r\n    modules: [ClientModuleV2]\r\n})\r\nexport class ApiModuleV2 {}\r\n```\r\n\r\n3. Add modules to main application module:\r\n\r\n``` ts\r\n@Module({\r\n    modules: [ApiModuleV1, ApiModuleV3]\r\n})\r\nexport class ApplicationModule {}\r\n\r\n```\r\n\r\nNow the both routes are available:\r\n\r\n```\r\n/api/v1/clients/11111\r\n/api/v2/clients/22222\r\n```\r\n\r\n### Middlewares\r\n\r\n1. Create a middleware (for example, guard for authentication):\r\n\r\n``` ts\r\nimport passport from \"passport\";\r\n\r\nexport default class Guard {\r\n    public static Auth = passport.authenticate(\"jwt\", { session: false });\r\n}\r\n\r\n```\r\n\r\n2. Add middleware to method decorator:\r\n\r\n``` ts\r\n@Controller(\"/clients\")\r\nexport class ClientController {\r\n\r\n    @Get(\"/:id\", Guard.Auth)\r\n    public async get(req: Request, res: Response): Promise<any> {\r\n        // ...\r\n    }\r\n}\r\n```\r\n\r\n### Argument decorators\r\n\r\nYou can also use argument decorators to make your code cleaner:\r\n\r\n``` ts\r\n@Controller(\"/clients\")\r\nexport class ClientController {\r\n\r\n    @Get(\"/search\", Guard.Auth)\r\n    public async search(\r\n        @Query(\"search\") search: string\r\n    ): Promise<Client[]> {\r\n        return await this.clientService.search(search);\r\n    }\r\n\r\n    @Get(\"/:id\", Guard.Auth)\r\n    public async get(\r\n        @Params(\"id\") id: string\r\n    ): Promise<Client> {\r\n        return await this.clientService.get(id);\r\n    }\r\n\r\n    @Put(\"/:id\", Guard.Auth)\r\n    public async update(\r\n        @Params(\"id\") id: string,\r\n        @Body() dto: ClientUpdateDto\r\n    ): Promise<Client> {\r\n        return await this.clientService.update(id, dto);\r\n    }\r\n\r\n    @Patch(\"/:id\", Guard.Auth)\r\n    public async updatePhone(\r\n        @Params(\"id\") id: string,\r\n        @Body(\"phone\") phone: string\r\n    ): Promise<Client> {\r\n        return await this.clientService.updatePhone(id, phone);\r\n    }\r\n}\r\n```\r\n\r\n### Use request and response objects\r\n\r\nThe controller is instantiated at each request.  The instance has properties `request`, `response`, which can be accessed from every method. You can extends `ControllerBase` class to access this properties from every method.\r\n\r\n``` ts\r\n@Controller(\"/clients\")\r\nexport class ClientController extends ControllerBase {\r\n    @Get(\"/:id\", Guard.Auth)\r\n    public async get(): Promise<Client> {\r\n        const id = this.request.params.id // here\r\n        return await this.clientService.get(id);\r\n    }\r\n}\r\n```\r\n\r\n### Use dependency injection\r\n\r\nYou can use the dependency injection for controllers:\r\n\r\n``` ts\r\n@Controller(\"/orders\")\r\nexport class OrderController extends ControllerBase {\r\n    public constructor(\r\n        @Inject(OrderService) private readonly orderService: OrderService,\r\n        @Inject(ClientService) private readonly clientService: ClientService,\r\n        @Inject(DateTimeService) private readonly dateTimeService: DateTimeService,\r\n    ) {\r\n        super();\r\n    }\r\n}\r\n```\r\n\r\nor services:\r\n\r\n``` ts\r\nexport class OrderService {\r\n    public constructor(\r\n        @Inject(DateTimeService) private readonly dateTimeService: DateTimeService,\r\n    ) { }\r\n}\r\n```\r\n\r\nDependencied should be registered in module's `services` section:\r\n\r\n``` ts\r\n@Module({\r\n    controllers: [\r\n        OrderController,\r\n        ClientController,\r\n    ],\r\n    services: [\r\n        // Provide only the type for injection:\r\n        OrderService,\r\n\r\n        // It is an equivalent to:\r\n        { type: ClientService, lifetime: ServiceLifetime.Scoped },\r\n\r\n        // You can provide concrete implementation for injection:\r\n        { type: DateTimeService, concrete: DateTimeServiceFake, lifetime: ServiceLifetime.Singleton },\r\n    ],\r\n})\r\nexport class OrderModule {}\r\n```\r\n\r\nService lifetime could be one of the next values:\r\n\r\n- `Scoped` (default) - Service is instantiated once for every request.\r\n- `Transient` - Service is instantiated once for every call.\r\n- `Singleton` - Service is instantiated once for the entire module lifetime.\r\n","readmeFilename":"README.md","homepage":"https://github.com/ipoddubnyi/altexpress"}