@nathapp/na-cli 1.0.0-rc.10 → 1.0.0-rc.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.npm/_cacache/index-v5/05/34/1929926becc54c1f69c0921ab74c461c1777ab3d43213900acd4779dbf27 +1 -1
- package/.npm/_cacache/index-v5/0b/57/19385728919a097d1777ef98285f6cdfca14b66511276b641ec4a3af64bc +1 -1
- package/.npm/_cacache/index-v5/0b/90/c147816be94e86ed9bbb4b9e20409e4791a8991fcfd41d7a44489dedd29b +1 -1
- package/.npm/_cacache/index-v5/0b/ac/1bc19a224468b5a9e4382b946d33bb4c236306c2cefe190e5e2db1ded98a +1 -1
- package/.npm/_cacache/index-v5/12/6d/f094b1c476935fbda8814b43ee001b439b1f793c265ee5bd97d566143fb4 +1 -1
- package/.npm/_cacache/index-v5/12/80/c192e66daf6ba49f528ae81b986857735e6d257bdf4b0b1758eb795cae9b +1 -1
- package/.npm/_cacache/index-v5/13/32/a5865acd35ae515cde972c2d6cbff2863e694975883870de78b62a80f30e +1 -1
- package/.npm/_cacache/index-v5/14/33/be443b6e6c3ef0ff8f09987bc62d5ef9e61259f3331c422182f6bb74fdeb +1 -1
- package/.npm/_cacache/index-v5/14/f7/87042931e5944467d47331c350feb4384bf9143ab6ceebf7108a55905843 +1 -1
- package/.npm/_cacache/index-v5/14/fa/f87baceab26935686548c742091e7014930673bc1f077574c54c4c6c2d2d +1 -1
- package/.npm/_cacache/index-v5/15/26/abf1072208668be6e34a4311ad25f34fc908c21abc17ef01b5836cef1879 +1 -1
- package/.npm/_cacache/index-v5/1a/fd/532a4c7bf52c908d567ded2bb11b0f3282f0733d0d079a5291c2f72e0077 +1 -1
- package/.npm/_cacache/index-v5/1b/15/2ed036cc76081b7f1bfb3aa59d491eb3b3602c9381ec8d81435ceecf56b5 +1 -1
- package/.npm/_cacache/index-v5/27/b7/7f36d855e73b72c900bef7ba44a2a553de3d77b218493b4ddb6ae6fce516 +1 -1
- package/.npm/_cacache/index-v5/27/cc/afd4aa090b087c509f17e75196209f498c916da50ee4e9f26bd8424fd6f7 +1 -1
- package/.npm/_cacache/index-v5/2d/80/b5e9ca2e40744e7fa089861626d2a29c62363c01729964f4cf0c3e8ee632 +1 -1
- package/.npm/_cacache/index-v5/2d/ed/7f785cb92982f557fdc81aec4081952ce428eb449dd91fa0867b6676fa17 +1 -1
- package/.npm/_cacache/index-v5/2e/30/64338ba8469bd5c48ab7843f9d06a83992a346cfd592194af9c6d4d6dc48 +1 -1
- package/.npm/_cacache/index-v5/2e/a8/503d5f11e5dcde5786e3973ff160d2acc4736af22f9cd5a883c26adc7824 +1 -1
- package/.npm/_cacache/index-v5/30/98/41b0d8db0052e964e4843260ec8a0b12f2541721317cd5ee90b07b6a4d59 +1 -1
- package/.npm/_cacache/index-v5/31/64/15cefe5f3b923ebb9c684b37db7451ccf335632aab377fa3c730ec2e79cd +1 -1
- package/.npm/_cacache/index-v5/31/ac/4d241faeb3fea9ec8318fd93dd55eb70a87cc8a6e3f849ccef9863882b4b +3 -3
- package/.npm/_cacache/index-v5/31/ca/a8c3ab0670811a3887ede187dcd3856d14272349a18f6844f7c8007cc05e +1 -1
- package/.npm/_cacache/index-v5/34/a0/f70f68dcf9baef2ff21f29fdd206513fe5b10736be36ddd2f65a654a8f23 +1 -1
- package/.npm/_cacache/index-v5/34/f7/8879c3cd1412a0890461590276aa13d0344cb4e09494a4b3d854a7c7660a +1 -1
- package/.npm/_cacache/index-v5/35/e5/adb97753b463aa67dc9f26f39e8a52f68bf467cf1187509be7da174c057d +1 -1
- package/.npm/_cacache/index-v5/37/53/b5dccfb634beb6de718b268b6434849f27d3cf60d426dc19472a642a3f01 +1 -1
- package/.npm/_cacache/index-v5/38/2e/fe53691fa43d2f5ac447c8a2431535ec49118be55bf483c6362d4f72c79b +1 -1
- package/.npm/_cacache/index-v5/3c/f6/26a7f7dccb969c764b8bdecb3667023c64bc1159e674fbeeca633c54964c +1 -1
- package/.npm/_cacache/index-v5/3d/dd/3e8c6b6c875addf2057fb5fa152fff0fab217f78a8e51c0aa457a925bf12 +1 -1
- package/.npm/_cacache/index-v5/3e/77/916dd3c99bb6e83a0217305b0a2a541f122d977edcb92fa6b58eed796c17 +1 -1
- package/.npm/_cacache/index-v5/40/62/d04e75208dec117f72a95a5989f81fac7565a530fd22f70ea5e3abc377c3 +2 -2
- package/.npm/_cacache/index-v5/42/89/e110619623b1c9111a6392de4b1a62a904fb08d0601f87b9c8e1d493f5d6 +1 -1
- package/.npm/_cacache/index-v5/46/5b/f3ce50d3f54a5d65ac316d3c71ef8a8f8bdb072b6dfabc2c69018c3e942a +1 -1
- package/.npm/_cacache/index-v5/48/17/0ecf04bc0839b23c609ec7bfea9d339fa2cc3ee5982716cf7465ffaea675 +1 -1
- package/.npm/_cacache/index-v5/53/aa/b41f4759346e1d3b6651322d78c7983a4a546cdd6c18c3eb56c944571e4b +1 -1
- package/.npm/_cacache/index-v5/57/4d/cdafdfd03e43ca95652cbbb0b23bbbbeef3e16fa307726cb2ae8a5658531 +1 -1
- package/.npm/_cacache/index-v5/58/c9/9f8c27572bf3034e8fa9cc74fc00878e45fa7d75d4570d4430e82bfb5ef3 +1 -1
- package/.npm/_cacache/index-v5/5a/8c/47e273da29b52c911f59eca44c62faa84be4bb59b1de259ba100ff968559 +1 -1
- package/.npm/_cacache/index-v5/5e/89/be4afbbaa5c56c070a74790be14bd112b9e1b3f251324d766264b2c5f880 +1 -1
- package/.npm/_cacache/index-v5/5e/e7/453bd89145eccf9d67f5797fb09e5a017b5b13f1ac45cb7b70bda45940ec +2 -2
- package/.npm/_cacache/index-v5/5f/57/67c3b0c63ea4198903509c050bb99de2eabd6a2fba583067c4f587dc25f7 +1 -1
- package/.npm/_cacache/index-v5/60/8c/b74a2ae1c6978d635a1a21438c553d956a762176742b2749d09db964bf4d +1 -1
- package/.npm/_cacache/index-v5/68/6b/1f834b2ea43c7a9d1ffd80eb09f9d44af0895dc31dc3955d4b4c797ea825 +1 -1
- package/.npm/_cacache/index-v5/6d/61/c9e7e8446341cea439547eb023fbf47c954ba932e6944a3fd50413c1e861 +1 -1
- package/.npm/_cacache/index-v5/6d/b3/82949bd186224f1f51cb3fabdad6a93aa6a64c685b395a36f0a34af15119 +1 -1
- package/.npm/_cacache/index-v5/6f/d8/170c71ac7185da1b8040f10243c7294ff9a667a27fffc3479ba2f222f014 +1 -1
- package/.npm/_cacache/index-v5/74/d3/f9a4984e5548c5f72b3dc858046781cc3a892b34b6b7e7c353fbc93aa060 +1 -1
- package/.npm/_cacache/index-v5/75/ec/5dd4c902abf3f9ae589620cd4fd5b6ccfe045b8abdfbfa050d1a5ba8c01e +1 -1
- package/.npm/_cacache/index-v5/77/be/4d3f23909fd5905444d34cb0ce78d5bf6ce157670ae6ed614389a2027d18 +1 -1
- package/.npm/_cacache/index-v5/7d/8f/423d7e791f7fedd6bef784f0f467761c619f209ce9c788f08b63e968a880 +1 -1
- package/.npm/_cacache/index-v5/80/da/c34ca077ec2051cad25b3313e4e75ff4ad2dc2b12a9c250cb9545c0adc4b +1 -1
- package/.npm/_cacache/index-v5/84/d7/a5acf52705a1beb66603196f4bc44e583052d0f1d5a23dfb5316da1811d3 +1 -1
- package/.npm/_cacache/index-v5/86/7a/c59a43ec4985d34346e5714968f7220d176ea3a61b55464a7fecae01ac47 +1 -1
- package/.npm/_cacache/index-v5/87/55/e56d34b37c3170079064597cabb288d076b0d0468eaba3b8a0cf8686ce1f +1 -1
- package/.npm/_cacache/index-v5/8a/c9/c10bf71d66461aba0899e81d7a146332c45dbbacb1693c38fc2e4e578e39 +3 -3
- package/.npm/_cacache/index-v5/8a/ee/e3e86b627c10a9fc4ed610c15792507293ba1c14e7ba839e22aec609f1e0 +1 -1
- package/.npm/_cacache/index-v5/8b/ee/c2ea22c4bf9c5ddcd0333850e543442de3364478847c7ebc382b1ff3a70d +2 -2
- package/.npm/_cacache/index-v5/8c/2d/fc95c0f3896963b4fe4b745b6d2bbc04a2a75f31f108ff740215559617f0 +1 -1
- package/.npm/_cacache/index-v5/8e/95/715914a073e3319f22dfec7ffac9df9f293d150c0d6723a60ce08ab7f735 +1 -1
- package/.npm/_cacache/index-v5/92/a4/7b5bd924b74993fc2b0de1a458842881545ca2cc22f6bc104a0db4fafdab +1 -1
- package/.npm/_cacache/index-v5/96/3a/a15f6c4dc3aeb3fd89c0b7a8c3ba58cb31a9b72c98e3b11a8ef1647b537f +1 -1
- package/.npm/_cacache/index-v5/96/b2/def9b882b950a49a7096d71afd5fce3a6a9454795fc060b1901e41d44620 +1 -1
- package/.npm/_cacache/index-v5/98/64/01faddae5e2bf199c5f8953942897841c5634b1800e246226ea5489f4584 +1 -1
- package/.npm/_cacache/index-v5/99/a9/8e746181ef13bc400da207da412881206f4d2004d75453373f6ee7b25ffa +1 -1
- package/.npm/_cacache/index-v5/9a/fc/baddd71f459a50b3c710a007fa7d59fa62febef98033b7331374bf02db64 +1 -1
- package/.npm/_cacache/index-v5/9b/55/1bc87872916d09156d5c7056d7ac2b245e7a7638b817eb3dbeafa9d33be8 +1 -1
- package/.npm/_cacache/index-v5/9b/b8/d45062af43674e433f967d20768d308ed6ce195be6acadfb7cfd21d11e67 +1 -1
- package/.npm/_cacache/index-v5/9c/0e/3faaf557a9613fb7f09b5cecc63ebe78da10371a1f2f58b636f8dcb9a914 +1 -1
- package/.npm/_cacache/index-v5/9c/b1/fff150691ce095677426e98bb894621ce4a88097d4b2c5c342224e1852ae +1 -1
- package/.npm/_cacache/index-v5/9d/eb/0927bbd589e18b447a3726f591019d6728da728f603e77a1ded3f78dc6eb +1 -1
- package/.npm/_cacache/index-v5/9f/43/3636172cbc03abf2262c921f9f71572e6b049aa3db8c65d166bcfe5aca5f +1 -1
- package/.npm/_cacache/index-v5/a0/9e/5b7b95cdee86846e4fbe92c9e16e0e7f337c77d2c12de9778522b15bed2e +1 -1
- package/.npm/_cacache/index-v5/a1/ff/6532bc014331c9b572482a4bd805bf54a7ff8b4ca179b1c811aff3dec690 +1 -1
- package/.npm/_cacache/index-v5/a7/11/13f3c5864a7e9d12ca50a19b99d77d88fbcebb1ceb7455eb7ff77f158b64 +1 -1
- package/.npm/_cacache/index-v5/aa/9b/8b6d9e0f45dde1c6af2a4fc211f9b3a74f14041dc04a8a20490a478660b2 +1 -1
- package/.npm/_cacache/index-v5/aa/c4/489c0e6a9e4cbd64a8acd4fbfda113e9dfdd114f464830471fda53fff0cd +1 -1
- package/.npm/_cacache/index-v5/ab/47/d7a88d46cb8996b726bc7ed9280b5eea26889ab7c848149032a6e8911e4b +1 -1
- package/.npm/_cacache/index-v5/ac/4c/71e880f5d5c742e0e3807e7f3c398e920dd019bbf723586f0a7342715580 +1 -1
- package/.npm/_cacache/index-v5/ac/86/c0732592365d753d382502d91754a3c88f8b20e22cc25a0327beb9429687 +1 -1
- package/.npm/_cacache/index-v5/b0/9b/1a1d76c3ad82dd54353bb8ac8397667df4c5db97e42abf0de3fab68065bb +1 -1
- package/.npm/_cacache/index-v5/b3/b3/05a8af0a671c32b41850c1223429fe74449cfcb4c7cac54a9c7c213dfcae +3 -3
- package/.npm/_cacache/index-v5/b3/ba/fbf7da5c8eb06d9cc72143e3d36d7f701447b4e0a221c40d4960e06c7296 +1 -1
- package/.npm/_cacache/index-v5/b5/5f/1a200e91b7580c5893016e1b1397b6a076ff51cc7c5d382c3b1f1e52edd5 +1 -1
- package/.npm/_cacache/index-v5/b6/a8/3bf06da815e92239da2bd4ef7322819b458ee23ae8db9f02dc9a3dca722f +1 -1
- package/.npm/_cacache/index-v5/b7/38/992d3e6c01fc9098d137f7dbccfcaa5f5124ba9c487e582e6e0d83f99d30 +1 -1
- package/.npm/_cacache/index-v5/b7/d6/b5986a5f5d44d726090a94a22a8dff7a7c391df4a4fa4862bb50b1da196b +1 -1
- package/.npm/_cacache/index-v5/ba/d5/f7d95a8e3571758f8b5d095a21909a8f6cdfe7fd2349f7f72b2801eef079 +1 -1
- package/.npm/_cacache/index-v5/bb/8a/9c0052bb21f628e48a1e8d25084ee4adb402eba28c747d0299ebf4c3185d +1 -1
- package/.npm/_cacache/index-v5/be/a3/c0779c8e0be92c748c91a7dad4e6f0fe57ba0158b6bb1bcfddd8fc56c934 +1 -1
- package/.npm/_cacache/index-v5/be/c2/aa68eca6cebd477430ae24727732ec08ee9fc9ef2482df77932eb2f413d9 +1 -1
- package/.npm/_cacache/index-v5/bf/7c/375aec77f76404d91225e72006a0105b2a6ec04bb02cfa365ebcd4a0232b +1 -1
- package/.npm/_cacache/index-v5/c0/15/8b360dbe06b62052f2a43702140af0bca66e2e4064d7d2016efb4a2a149a +1 -1
- package/.npm/_cacache/index-v5/c2/a4/488f71f39bc65742422faf2c74e3b330852ef2192dbb3198fed044e60c20 +1 -1
- package/.npm/_cacache/index-v5/c4/89/38b2ab5b89326ead12dbed7a2076caa44d1207dd6cdb3f9f93273843dcf5 +1 -1
- package/.npm/_cacache/index-v5/c4/ac/4511be3eecea50ee9cadc09a612f9be8598d7b29d5c8b1253c75fa283cc5 +1 -1
- package/.npm/_cacache/index-v5/c5/2d/90031096314e15f4fcc35c804c2180f88214a7851b531aa27bd64064f740 +1 -1
- package/.npm/_cacache/index-v5/c7/5e/2acc90bb8fd9d3150354ec8b2f7e7cc2c8e0e59efd575a1963f1ca66cbed +1 -1
- package/.npm/_cacache/index-v5/c9/f5/c4a24d8834c4e9523cc24e10c6db63876e3eecdb2cf33762b159e3a1e92f +1 -1
- package/.npm/_cacache/index-v5/cc/2d/3cc1e00b73d00c921b8f8c92faaae480a160fc63637ba7b098518db79e02 +1 -1
- package/.npm/_cacache/index-v5/cf/56/427919eefb09afe942b12902069325293191afa7d59ff0f2b016c402b4ec +1 -1
- package/.npm/_cacache/index-v5/d3/ba/564670f99cd2d757d1ac6209834faf1ce9a94ed856243cf090249d9b2b38 +1 -1
- package/.npm/_cacache/index-v5/d5/f4/0913a74f5e223a4fe6108493dd3b03c2d47259df459926160659513c9ad3 +1 -1
- package/.npm/_cacache/index-v5/dd/03/456ce7d8bffee20c3acf7e18ef6501b637d59a6fa3fa7bac5ed160b6be3f +1 -1
- package/.npm/_cacache/index-v5/e3/6a/b90e45414a9e52cdf1e4a96698065357795b9400d7af079b0a75ee8fd76d +1 -1
- package/.npm/_cacache/index-v5/e7/16/c0952e37a6a02b506441a59ee6b0e7fa873a515247763df9dddd162bbcf0 +1 -1
- package/.npm/_cacache/index-v5/e8/50/601e38974398787a5a8a8b8d835e29447814cd68ff6fe2e9629738e124c6 +1 -1
- package/.npm/_cacache/index-v5/ee/47/02714e9e61ca394444a92772fe85340de8bd216b58f59e1af25d5618303f +1 -1
- package/.npm/_cacache/index-v5/ef/74/026f830458505ca7ae44dac678900360af24ed6e76521eb12df5fadcf26f +1 -1
- package/.npm/_cacache/index-v5/f1/75/91238e32e2ac4d9c4976deec39a2e6ca85c0c678a4466a50ca4412272a7c +1 -1
- package/.npm/_cacache/index-v5/f2/1f/c662626ec8eafafa54476678b9f71799a74ee368f2b7845a6ec9f9174a4d +3 -3
- package/.npm/_cacache/index-v5/f5/a4/ca599571c5bcfc5351ca53c418a6cd9d162539528b1ed87a692a1677020e +1 -1
- package/.npm/_cacache/index-v5/f6/18/16e565c66306149a0b31bb2af01babb55bd65ef7cb85a8a11d486d933b60 +1 -1
- package/.npm/_cacache/index-v5/f8/f5/f04b833fa130e113a9093088ad108d8cf9b2b1d5a0336e48cbf0916b8686 +1 -1
- package/.npm/_cacache/index-v5/fa/88/31cbd6ca584e75edf3642c6f8b079c1f2b5eca1d7b2780ce2e86c24f1e84 +1 -1
- package/.npm/_cacache/index-v5/fb/ae/46c38299837b3b4dcee9dc45854a6901355864326b4e64c730727ca1c88a +1 -1
- package/.npm/_cacache/index-v5/fc/1c/958fc085ebdc42fa37d4985cba976a5cca21f678c751c968f8fe9b259455 +1 -1
- package/.npm/_cacache/index-v5/fd/2e/6ead8880f4d02a536a570e21b13b4e7c9700082833e556cd53e9e92bfd1b +1 -1
- package/.npm/_cacache/index-v5/fd/46/fa56121e15b7f090f8050d0c954bbc9452e4c7ddde82777b2e00552c4220 +1 -1
- package/README.md +3 -2
- package/dist/templates/mxw-base-api-express/.dockerignore +2 -0
- package/dist/templates/mxw-base-api-express/.env +10 -0
- package/dist/templates/mxw-base-api-express/.gitlab-ci.yml +155 -0
- package/dist/templates/mxw-base-api-express/.nvmrc +1 -0
- package/dist/templates/mxw-base-api-express/Dockerfile +14 -0
- package/dist/templates/mxw-base-api-express/Makefile +84 -0
- package/dist/templates/mxw-base-api-express/README.md +71 -0
- package/dist/templates/mxw-base-api-express/package.json +55 -0
- package/dist/templates/mxw-base-api-express/src/app-service.test.ts +94 -0
- package/dist/templates/mxw-base-api-express/src/app-service.ts +498 -0
- package/dist/templates/mxw-base-api-express/src/auth/auth-user.test.ts +215 -0
- package/dist/templates/mxw-base-api-express/src/auth/auth-user.ts +86 -0
- package/dist/templates/mxw-base-api-express/src/auth/auth.ts +81 -0
- package/dist/templates/mxw-base-api-express/src/core-service.ts +72 -0
- package/dist/templates/mxw-base-api-express/src/crud.ts +84 -0
- package/dist/templates/mxw-base-api-express/src/http-handler.ts +71 -0
- package/dist/templates/mxw-base-api-express/src/server.ts +54 -0
- package/dist/templates/mxw-base-api-express/src/test.ts +38 -0
- package/dist/templates/mxw-base-api-express/src/utils/api-utilities.ts +52 -0
- package/dist/templates/mxw-base-api-express/src/utils/file-utilities.ts +55 -0
- package/dist/templates/mxw-base-api-express/tsconfig.json +32 -0
- package/package.json +1 -1
- package/templates/mxw-base-api-express/.dockerignore +2 -0
- package/templates/mxw-base-api-express/.env +10 -0
- package/templates/mxw-base-api-express/.gitlab-ci.yml +155 -0
- package/templates/mxw-base-api-express/.nvmrc +1 -0
- package/templates/mxw-base-api-express/Dockerfile +14 -0
- package/templates/mxw-base-api-express/Makefile +84 -0
- package/templates/mxw-base-api-express/README.md +71 -0
- package/templates/mxw-base-api-express/package.json +55 -0
- package/templates/mxw-base-api-express/src/app-service.test.ts +94 -0
- package/templates/mxw-base-api-express/src/app-service.ts +498 -0
- package/templates/mxw-base-api-express/src/auth/auth-user.test.ts +215 -0
- package/templates/mxw-base-api-express/src/auth/auth-user.ts +86 -0
- package/templates/mxw-base-api-express/src/auth/auth.ts +81 -0
- package/templates/mxw-base-api-express/src/core-service.ts +72 -0
- package/templates/mxw-base-api-express/src/crud.ts +84 -0
- package/templates/mxw-base-api-express/src/http-handler.ts +71 -0
- package/templates/mxw-base-api-express/src/server.ts +54 -0
- package/templates/mxw-base-api-express/src/test.ts +38 -0
- package/templates/mxw-base-api-express/src/utils/api-utilities.ts +52 -0
- package/templates/mxw-base-api-express/src/utils/file-utilities.ts +55 -0
- package/templates/mxw-base-api-express/tsconfig.json +32 -0
package/.npm/_cacache/index-v5/fb/ae/46c38299837b3b4dcee9dc45854a6901355864326b4e64c730727ca1c88a
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
2
|
+
ff4d1b783e8ef3b69dd098ac719cd2e76e47d661 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz","integrity":"sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==","time":1673964129873,"size":57485,"metadata":{"url":"https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz","reqHeaders":{"user-agent":["npm/7.15.1 node/v16.3.0 linux x64 workspaces/false ci/gitlab"],"pacote-version":["11.3.3"],"pacote-req-type":["tarball"],"pacote-pkg-id":["remote:shelljs@https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz"],"pacote-integrity":["sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow=="],"npm-command":["ci"],"connection":["keep-alive"]},"resHeaders":{"date":["Tue, 17 Jan 2023 14:02:07 GMT"],"content-type":["application/octet-stream"],"content-length":["57485"],"connection":["keep-alive"],"accept-ranges":["bytes"],"access-control-allow-origin":["*"],"age":["2292659"],"cache-control":["public, immutable, max-age=31557600"],"etag":["\"ff3f1bc09a257edcf3de6d7ca5f69943\""],"last-modified":["Fri, 07 Jan 2022 05:31:50 GMT"],"vary":["Accept-Encoding"],"x-amz-replication-status":["COMPLETED"],"server":["cloudflare"]}}}
|
package/.npm/_cacache/index-v5/fc/1c/958fc085ebdc42fa37d4985cba976a5cca21f678c751c968f8fe9b259455
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
2
|
+
9a95593615f3df935a38de6f0a60a25b905e9893 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz","integrity":"sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==","time":1673964128622,"size":3776,"metadata":{"url":"https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz","reqHeaders":{"user-agent":["npm/7.15.1 node/v16.3.0 linux x64 workspaces/false ci/gitlab"],"pacote-version":["11.3.3"],"pacote-req-type":["tarball"],"pacote-pkg-id":["remote:rechoir@https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz"],"pacote-integrity":["sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw=="],"npm-command":["ci"],"connection":["keep-alive"]},"resHeaders":{"date":["Tue, 17 Jan 2023 14:02:07 GMT"],"content-type":["application/octet-stream"],"content-length":["3776"],"connection":["keep-alive"],"accept-ranges":["bytes"],"access-control-allow-origin":["*"],"age":["2293469"],"cache-control":["public, immutable, max-age=31557600"],"etag":["\"9a0aa4db2a887a452ef08921160c7eb4\""],"last-modified":["Sun, 27 May 2018 15:30:14 GMT"],"vary":["Accept-Encoding"],"server":["cloudflare"]}}}
|
package/.npm/_cacache/index-v5/fd/2e/6ead8880f4d02a536a570e21b13b4e7c9700082833e556cd53e9e92bfd1b
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
2
|
+
9ac6afdcbcdb2dc84f566f246de6a24c4a5bba68 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz","integrity":"sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==","time":1673964128469,"size":1751,"metadata":{"url":"https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz","reqHeaders":{"user-agent":["npm/7.15.1 node/v16.3.0 linux x64 workspaces/false ci/gitlab"],"pacote-version":["11.3.3"],"pacote-req-type":["tarball"],"pacote-pkg-id":["remote:has-flag@https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"],"pacote-integrity":["sha1-tdRU3CGZriJWmfNGfloH87lVuv0=sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="],"npm-command":["ci"],"connection":["keep-alive"]},"resHeaders":{"date":["Tue, 17 Jan 2023 14:02:07 GMT"],"content-type":["application/octet-stream"],"content-length":["1751"],"connection":["keep-alive"],"accept-ranges":["bytes"],"access-control-allow-origin":["*"],"age":["2293673"],"cache-control":["public, immutable, max-age=31557600"],"etag":["\"1fa1fa951639c7058277abcecca86922\""],"last-modified":["Sun, 27 May 2018 03:34:16 GMT"],"vary":["Accept-Encoding"],"server":["cloudflare"]}}}
|
package/.npm/_cacache/index-v5/fd/46/fa56121e15b7f090f8050d0c954bbc9452e4c7ddde82777b2e00552c4220
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
2
|
+
7433c7a708851c27c042fe48463180a723a021ab {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz","integrity":"sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==","time":1673964129013,"size":4975,"metadata":{"url":"https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz","reqHeaders":{"user-agent":["npm/7.15.1 node/v16.3.0 linux x64 workspaces/false ci/gitlab"],"pacote-version":["11.3.3"],"pacote-req-type":["tarball"],"pacote-pkg-id":["remote:es6-object-assign@https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz"],"pacote-integrity":["sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw=="],"npm-command":["ci"],"connection":["keep-alive"]},"resHeaders":{"date":["Tue, 17 Jan 2023 14:02:08 GMT"],"content-type":["application/octet-stream"],"content-length":["4975"],"connection":["keep-alive"],"accept-ranges":["bytes"],"access-control-allow-origin":["*"],"age":["2292305"],"cache-control":["public, immutable, max-age=31557600"],"etag":["\"84776ff526114e20ca0f10b9bfc12a42\""],"last-modified":["Sat, 26 May 2018 23:42:08 GMT"],"vary":["Accept-Encoding"],"server":["cloudflare"]}}}
|
package/README.md
CHANGED
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Command line for create a project with your own templates
|
|
4
4
|
|
|
5
|
-
1. Note
|
|
5
|
+
1. Note: when `npm publish`, npm will ignore files inside .npmignore which will cause missing files on generated projects, so please rename .npmignore to .npmignore-rename, template engine will auto rename .npmignore-rename back .npmignore
|
|
6
6
|
|
|
7
7
|
## Version 1.0.0
|
|
8
8
|
|
|
9
|
-
1.
|
|
9
|
+
1. ts-library template 1.0.0
|
|
10
|
+
2. mxw-base-api-express template 1.0.0
|
|
10
11
|
|
|
11
12
|
## Inspired by https://github.com/pongsatt/mycli
|
|
12
13
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
JWT_SECRET="JWT_SECRET"
|
|
2
|
+
WHITELIST="*"
|
|
3
|
+
CORS="*"
|
|
4
|
+
|
|
5
|
+
SERVICE_DOMAIN="DOMAIN"
|
|
6
|
+
SERVICE_SESSION_TIMEOUT="60000"
|
|
7
|
+
SERVICE_WALLET_JSON={"address":"mxw1pv3lfk3s0mp0nw9sftv95s5tfzwqu26qqw3d2s","id":"99ddd9b3-23aa-4dbf-a8cc-d89e885121d2","version":3,"Crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"1fd9e58278c96fd902b334e4a3b16838"},"ciphertext":"fa5ea57bdae0a4dffb997d2c09c93f9a472b2a881c42c486cbd6ba001d112dcd","kdf":"scrypt","kdfparams":{"salt":"f03e572526d9f6fc204f7061d4766cd8eda9760a78f91803783c441879efc5ac","n":131072,"dklen":32,"p":1,"r":8},"mac":"770b8ba60c1167ffaeaace160341d6868437fd4992b772951cc217025082b1f8"},"x-mxw":{"client":"mxw-sdk","filename":"UTC--2019-07-25T11-49-57.0Z--mxw1pv3lfk3s0mp0nw9sftv95s5tfzwqu26qqw3d2s","mnemonicCounter":"d04f8666f6b894af7f4ef90bb568d7b0","mnemonicCiphertext":"0af223d5975c3466b0e2aecd30cdeab0","path":"m/44'/376'/0'/0/0","version":"0.1"}}
|
|
8
|
+
SERVICE_WALLET_PASSWORD=any strong password
|
|
9
|
+
|
|
10
|
+
MYSQL_URL="mysql://user:password@db/db"
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Project must implement Makefile for commands (test, version-prerelease, version-patch, name, version, image)
|
|
2
|
+
# command:
|
|
3
|
+
# - test: run project test cases
|
|
4
|
+
# - version-prerelease: bump prerelease version
|
|
5
|
+
# - version-patch: bump release version
|
|
6
|
+
# - name: display project name
|
|
7
|
+
# - version: display project version
|
|
8
|
+
# - image: display project name and version (e.g. hello-world:1.0.0)
|
|
9
|
+
#
|
|
10
|
+
stages:
|
|
11
|
+
# run test cases
|
|
12
|
+
- test
|
|
13
|
+
# build container image and push to registry
|
|
14
|
+
- prepare
|
|
15
|
+
- build-init
|
|
16
|
+
- build
|
|
17
|
+
- build-commit
|
|
18
|
+
# mark release commit as verified
|
|
19
|
+
- release
|
|
20
|
+
|
|
21
|
+
run-test:
|
|
22
|
+
stage: test
|
|
23
|
+
image: registry-intl.cn-hongkong.aliyuncs.com/d_mxw/docker:18-ci
|
|
24
|
+
services:
|
|
25
|
+
- docker:18-dind
|
|
26
|
+
script:
|
|
27
|
+
- make test
|
|
28
|
+
rules:
|
|
29
|
+
# NOT triggerred by bot and NOT commit message contains `run-without-release` keyword and NOT tag was created
|
|
30
|
+
- if: '$CI_COMMIT_MESSAGE =~ /release-by-bot/ || $CI_COMMIT_MESSAGE =~ /run-without-release/ || $CI_COMMIT_TAG != null'
|
|
31
|
+
when: never
|
|
32
|
+
# Merge request
|
|
33
|
+
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
34
|
+
# Commit to protected branch or commit branch is default branch (master)
|
|
35
|
+
- if: '$CI_COMMIT_REF_PROTECTED == "true" || $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
|
36
|
+
# Commit message contains `run-test` keyword
|
|
37
|
+
- if: '$CI_COMMIT_MESSAGE =~ /run-test/'
|
|
38
|
+
# Commit message contains `run-prerelease` keyword and commit branch is not default branch (master)
|
|
39
|
+
- if: '$CI_COMMIT_MESSAGE =~ /run-prerelease/ && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
|
|
40
|
+
|
|
41
|
+
run-pre-prepare:
|
|
42
|
+
stage: prepare
|
|
43
|
+
image: registry-intl.cn-hongkong.aliyuncs.com/d_mxw/node:10.20.0-alpine-ci-1
|
|
44
|
+
artifacts:
|
|
45
|
+
paths:
|
|
46
|
+
- package.json
|
|
47
|
+
- package-lock.json
|
|
48
|
+
- image-tag.txt
|
|
49
|
+
- postman-collection.json
|
|
50
|
+
script:
|
|
51
|
+
- make spec
|
|
52
|
+
- make version-prerelease
|
|
53
|
+
- make image | awk '{ printf("%s/%s/%s", ENVIRON["CONTAINER_REGISTRY_URL"], ENVIRON["CONTAINER_REGISTRY_NAMESPACE"], $0)}' > image-tag.txt
|
|
54
|
+
rules:
|
|
55
|
+
# NOT triggerred by bot and NOT commit message contains `run-without-release` keyword and NOT merge request and NOT tag was created
|
|
56
|
+
- if: '$CI_COMMIT_MESSAGE =~ /release-by-bot/ || $CI_COMMIT_MESSAGE =~ /run-without-release/ || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_TAG != null'
|
|
57
|
+
when: never
|
|
58
|
+
# Commit message contains `run-prerelease` keyword and commit branch is not default branch (master)
|
|
59
|
+
- if: '$CI_COMMIT_MESSAGE =~ /run-prerelease/ && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
|
|
60
|
+
|
|
61
|
+
run-prepare:
|
|
62
|
+
stage: prepare
|
|
63
|
+
image: registry-intl.cn-hongkong.aliyuncs.com/d_mxw/node:10.20.0-alpine-ci-1
|
|
64
|
+
artifacts:
|
|
65
|
+
paths:
|
|
66
|
+
- package.json
|
|
67
|
+
- package-lock.json
|
|
68
|
+
- image-tag.txt
|
|
69
|
+
- postman-collection.json
|
|
70
|
+
script:
|
|
71
|
+
- make spec
|
|
72
|
+
- make version-patch
|
|
73
|
+
- make image | awk '{ printf("%s/%s/%s", ENVIRON["CONTAINER_REGISTRY_URL"], ENVIRON["CONTAINER_REGISTRY_NAMESPACE"], $0)}' > image-tag.txt
|
|
74
|
+
rules:
|
|
75
|
+
# NOT triggerred by bot and NOT commit message contains `run-without-release` keyword and NOT merge request and NOT tag was created
|
|
76
|
+
- if: '$CI_COMMIT_MESSAGE =~ /release-by-bot/ || $CI_COMMIT_MESSAGE =~ /run-without-release/ || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_TAG != null'
|
|
77
|
+
when: never
|
|
78
|
+
# Commit into default branch (master)
|
|
79
|
+
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
|
80
|
+
|
|
81
|
+
run-build-warmer:
|
|
82
|
+
stage: build-init
|
|
83
|
+
image:
|
|
84
|
+
name: registry-intl.cn-hongkong.aliyuncs.com/d_mxw/kaniko-warmer:debug
|
|
85
|
+
entrypoint: [""]
|
|
86
|
+
before_script:
|
|
87
|
+
- echo "$DOCKER_AUTH_CONFIG" > /kaniko/.docker/config.json
|
|
88
|
+
script:
|
|
89
|
+
- warmer `cat $CI_PROJECT_DIR/Dockerfile | grep FROM | awk -F" " '{ printf("--image=%s ", $2) }'`
|
|
90
|
+
rules:
|
|
91
|
+
# NOT triggerred by bot and NOT commit message contains `run-without-release` keyword and NOT merge request and NOT tag was created
|
|
92
|
+
- if: '$CI_COMMIT_MESSAGE =~ /release-by-bot/ || $CI_COMMIT_MESSAGE =~ /run-without-release/ || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_TAG != null'
|
|
93
|
+
when: never
|
|
94
|
+
# Commit message contains `run-prerelease` keyword and commit branch is not default branch (master)
|
|
95
|
+
- if: '$CI_COMMIT_MESSAGE =~ /run-prerelease/ && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
|
|
96
|
+
# Commit into default branch (master)
|
|
97
|
+
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
|
98
|
+
|
|
99
|
+
run-build:
|
|
100
|
+
stage: build
|
|
101
|
+
image:
|
|
102
|
+
name: registry-intl.cn-hongkong.aliyuncs.com/d_mxw/kaniko-executor:debug
|
|
103
|
+
entrypoint: [""]
|
|
104
|
+
artifacts:
|
|
105
|
+
paths:
|
|
106
|
+
- image-digest.txt
|
|
107
|
+
before_script:
|
|
108
|
+
- echo "$DOCKER_AUTH_CONFIG" > /kaniko/.docker/config.json
|
|
109
|
+
script:
|
|
110
|
+
- echo "BUILDING... `cat $CI_PROJECT_DIR/image-tag.txt`"
|
|
111
|
+
- if [ -f $CI_PROJECT_DIR/dependency.txt ] && ! [ -z "`cat $CI_PROJECT_DIR/dependency.txt`" ]; then cat $CI_PROJECT_DIR/dependency.txt | awk '{$1=$1;print;exit}' > $CI_PROJECT_DIR/dep.txt; else echo > $CI_PROJECT_DIR/dep.txt; fi
|
|
112
|
+
- echo -n 'LABEL DEPENDENCY='; cat $CI_PROJECT_DIR/dep.txt
|
|
113
|
+
- executor --cache=true --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --digest-file $CI_PROJECT_DIR/image-digest.txt --destination "`cat $CI_PROJECT_DIR/image-tag.txt`" --label "dependency=`cat $CI_PROJECT_DIR/dep.txt`"
|
|
114
|
+
- echo "PUSHED `cat $CI_PROJECT_DIR/image-tag.txt` (`cat $CI_PROJECT_DIR/image-digest.txt`)"
|
|
115
|
+
rules:
|
|
116
|
+
# NOT triggerred by bot and NOT commit message contains `run-without-release` keyword and NOT merge request and NOT tag was created
|
|
117
|
+
- if: '$CI_COMMIT_MESSAGE =~ /release-by-bot/ || $CI_COMMIT_MESSAGE =~ /run-without-release/ || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_TAG != null'
|
|
118
|
+
when: never
|
|
119
|
+
# Commit message contains `run-prerelease` keyword and commit branch is not default branch (master)
|
|
120
|
+
- if: '$CI_COMMIT_MESSAGE =~ /run-prerelease/ && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
|
|
121
|
+
# Commit into default branch (master)
|
|
122
|
+
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
|
123
|
+
|
|
124
|
+
run-build-commit:
|
|
125
|
+
stage: build-commit
|
|
126
|
+
image: registry-intl.cn-hongkong.aliyuncs.com/d_mxw/node:10.20.0-alpine-ci-1
|
|
127
|
+
before_script:
|
|
128
|
+
- git config --global user.name "$GITLAB_USER_NAME"
|
|
129
|
+
- git config --global user.email "$GITLAB_USER_EMAIL"
|
|
130
|
+
script:
|
|
131
|
+
- git add -A
|
|
132
|
+
- git commit -m "$(make version)" -m "== release-by-bot ($CI_COMMIT_SHA) =="
|
|
133
|
+
- git tag -a "$(make version)" -m "$(cat image-tag.txt) ($(cat image-digest.txt))"
|
|
134
|
+
- git push "https://${GITLAB_USER_NAME}:${CI_GIT_TOKEN}@${CI_REPOSITORY_URL#*@}" "HEAD:${CI_COMMIT_BRANCH}"
|
|
135
|
+
- git push "https://${GITLAB_USER_NAME}:${CI_GIT_TOKEN}@${CI_REPOSITORY_URL#*@}" --tags
|
|
136
|
+
rules:
|
|
137
|
+
# NOT triggerred by bot and NOT commit message contains `run-without-release` keyword and NOT merge request and NOT tag was created
|
|
138
|
+
- if: '$CI_COMMIT_MESSAGE =~ /release-by-bot/ || $CI_COMMIT_MESSAGE =~ /run-without-release/ || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_TAG != null'
|
|
139
|
+
when: never
|
|
140
|
+
# Commit message contains `run-prerelease` keyword and commit branch is not default branch (master)
|
|
141
|
+
- if: '$CI_COMMIT_MESSAGE =~ /run-prerelease/ && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
|
|
142
|
+
# Commit into default branch (master)
|
|
143
|
+
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
|
144
|
+
|
|
145
|
+
run-release:
|
|
146
|
+
stage: release
|
|
147
|
+
image: registry-intl.cn-hongkong.aliyuncs.com/d_mxw/node:10.20.0-alpine-ci-1
|
|
148
|
+
script:
|
|
149
|
+
- echo "Bumped version $(make version)"
|
|
150
|
+
rules:
|
|
151
|
+
# NOT commit message contains `run-without-release` keyword and NOT merge request
|
|
152
|
+
- if: '$CI_COMMIT_MESSAGE =~ /run-without-release/ || $CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
153
|
+
when: never
|
|
154
|
+
# Tag was created
|
|
155
|
+
- if: '$CI_COMMIT_TAG != null'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
v14.18.2
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
FROM node:14.15.5-buster as builder
|
|
2
|
+
WORKDIR /backend/
|
|
3
|
+
ADD ./package.json /backend/
|
|
4
|
+
ADD ./package-lock.json /backend/
|
|
5
|
+
ADD ./tsconfig.json /backend/
|
|
6
|
+
ADD ./src /backend/src
|
|
7
|
+
RUN npm ci --production && npm cache clean --force
|
|
8
|
+
RUN npm run build
|
|
9
|
+
|
|
10
|
+
FROM node:14.15.5-alpine3.13
|
|
11
|
+
WORKDIR /backend/
|
|
12
|
+
COPY --chown=node:node --from=builder /backend /backend/
|
|
13
|
+
USER node
|
|
14
|
+
CMD [ "node", "dist/server.js" ]
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
MAKEFILE := $(abspath $(lastword $(MAKEFILE_LIST)))
|
|
2
|
+
ROOT_PATH := $(shell pwd)
|
|
3
|
+
SERVICE_NAME := <%= projectName %>
|
|
4
|
+
|
|
5
|
+
.PHONY: version name image
|
|
6
|
+
|
|
7
|
+
version-major: version-sync
|
|
8
|
+
@npm -s version major --no-git-tag-version
|
|
9
|
+
|
|
10
|
+
version-minor: version-sync
|
|
11
|
+
@npm -s version minor --no-git-tag-version
|
|
12
|
+
|
|
13
|
+
version-patch: version-sync
|
|
14
|
+
@npm -s version patch --no-git-tag-version
|
|
15
|
+
|
|
16
|
+
version-prerelease: version-sync
|
|
17
|
+
@npm -s version prerelease --preid=rc --no-git-tag-version
|
|
18
|
+
|
|
19
|
+
version-latest:
|
|
20
|
+
@(git tag --sort=-creatordate || echo) | awk 'NR==1 { \
|
|
21
|
+
split($$0, n, "-"); \
|
|
22
|
+
if (n[1] != "") { \
|
|
23
|
+
split(n[1], v, "."); \
|
|
24
|
+
if (v[1] ~ /^[0-9]+$$/ && v[2] ~ /^[0-9]+$$/ && v[3] ~ /^[0-9]+$$/) { \
|
|
25
|
+
print $$0; \
|
|
26
|
+
exit 0; \
|
|
27
|
+
} \
|
|
28
|
+
} \
|
|
29
|
+
print "1.0.0-rc.0"; \
|
|
30
|
+
} \
|
|
31
|
+
END { \
|
|
32
|
+
if (NR == 0) { \
|
|
33
|
+
print "1.0.0-rc.0"; \
|
|
34
|
+
} \
|
|
35
|
+
}'
|
|
36
|
+
|
|
37
|
+
version-sync:
|
|
38
|
+
@git checkout $(CI_COMMIT_BRANCH)
|
|
39
|
+
@git pull --tags 2&>/dev/null || true
|
|
40
|
+
@git tag --sort=-creatordate | head -10
|
|
41
|
+
@cat package.json | jq -r --arg PKG_VERSION `make --no-print-directory -f$(MAKEFILE) version-latest` '.version=$$PKG_VERSION' > package.json;
|
|
42
|
+
@echo -n "Current Git tag: "; cat package.json | jq -r '.version'
|
|
43
|
+
|
|
44
|
+
version:
|
|
45
|
+
@echo $(shell node -p "require('$(ROOT_PATH)/package.json').version")
|
|
46
|
+
|
|
47
|
+
name:
|
|
48
|
+
@echo $(SERVICE_NAME)
|
|
49
|
+
|
|
50
|
+
image:
|
|
51
|
+
@echo $(SERVICE_NAME):$(shell node -p "require('$(ROOT_PATH)/package.json').version")
|
|
52
|
+
|
|
53
|
+
test:
|
|
54
|
+
@npm i
|
|
55
|
+
@npm run -s test
|
|
56
|
+
|
|
57
|
+
spec:
|
|
58
|
+
@set -e -o pipefail; \
|
|
59
|
+
if [ -f "$(ROOT_PATH)/spec.yaml" ]; then \
|
|
60
|
+
make --no-print-directory -f$(MAKEFILE) spec-file > $(ROOT_PATH)/all-spec.yaml; \
|
|
61
|
+
openapi2postmanv2 -s $(ROOT_PATH)/all-spec.yaml -o postman-collection.json | \
|
|
62
|
+
awk ' \
|
|
63
|
+
BEGIN{ result = 0; error = "" } \
|
|
64
|
+
{ \
|
|
65
|
+
if (0 < index($$0, "Conversion successful, collection written to file")) { \
|
|
66
|
+
result = 1; \
|
|
67
|
+
} \
|
|
68
|
+
error = error $$0; \
|
|
69
|
+
} \
|
|
70
|
+
END{ \
|
|
71
|
+
if (result != 1) { \
|
|
72
|
+
print error; \
|
|
73
|
+
exit(-1); \
|
|
74
|
+
} \
|
|
75
|
+
}'; \
|
|
76
|
+
rm -f $(ROOT_PATH)/all-spec.yaml; \
|
|
77
|
+
fi;
|
|
78
|
+
|
|
79
|
+
spec-file:
|
|
80
|
+
@cat $(ROOT_PATH)/spec.yaml;
|
|
81
|
+
@for file in `find $(ROOT_PATH)/src -iname "*-spec.yaml"`; do \
|
|
82
|
+
echo ""; \
|
|
83
|
+
cat $$file; \
|
|
84
|
+
done;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# <%= projectName %>
|
|
2
|
+
|
|
3
|
+
### Getting Started
|
|
4
|
+
|
|
5
|
+
The service provides API endpoints for digital signature.
|
|
6
|
+
|
|
7
|
+
### How to setup environment?
|
|
8
|
+
|
|
9
|
+
1. Clone this repository.
|
|
10
|
+
|
|
11
|
+
2. Change directory to the repository.
|
|
12
|
+
|
|
13
|
+
3. Install package dependencies.
|
|
14
|
+
```
|
|
15
|
+
npm install
|
|
16
|
+
```
|
|
17
|
+
4. Allow `direnv` to populate environment variables from the `.envrc` file. The `direnv` command is required to be installed.
|
|
18
|
+
```
|
|
19
|
+
direnv allow .
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### How to run unit-test?
|
|
23
|
+
|
|
24
|
+
1. Write test cases in a `*.test.ts` file under the same folder with the actual module file. For example, module file `src/app-service.ts`, unit-test file `src/app-service.test.ts`.
|
|
25
|
+
|
|
26
|
+
2. Run unit-test command.
|
|
27
|
+
|
|
28
|
+
- To run single module unit-test.
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
npm run test-this src/app-service.test.ts
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
- To run all unit-test.
|
|
35
|
+
```
|
|
36
|
+
npm run test
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### How to debug?
|
|
40
|
+
|
|
41
|
+
Please use unit-test method for debugging.
|
|
42
|
+
|
|
43
|
+
1. Set breakpoint on the source code by pressing `F9` key.
|
|
44
|
+
|
|
45
|
+
2. Run unit-test command with debugging.
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
npm run debug-this src/app-service.test.ts
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
3. Start debugging by pressing `F5` key.
|
|
52
|
+
|
|
53
|
+
### How to release version?
|
|
54
|
+
|
|
55
|
+
Git pipeline will perform unit-test, build container image and push to the container registry.
|
|
56
|
+
|
|
57
|
+
- Bump a `prerelease` version (E.g. `1.0.0-rc.0`).
|
|
58
|
+
|
|
59
|
+
- Write commit message that contain `run-prerelease` keyword to `feature` branch.
|
|
60
|
+
|
|
61
|
+
- Bump a `release` version (E.g. `1.0.0`).
|
|
62
|
+
|
|
63
|
+
- Merge into `default` branch (main/master) with any commit message.
|
|
64
|
+
|
|
65
|
+
> Note: **Code review** process should be perform before merge into `default` branch or release version.
|
|
66
|
+
|
|
67
|
+
### Merge into default branch without trigger pipeline
|
|
68
|
+
|
|
69
|
+
If you want to merge into `default` branch without triggering the pipeline, write commit message that contain `run-without-release`.
|
|
70
|
+
|
|
71
|
+
chatbot: 0
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "<%= projectName %>",
|
|
3
|
+
"version": "1.0.0-rc.0",
|
|
4
|
+
"description": "API Description",
|
|
5
|
+
"repository": {},
|
|
6
|
+
"devDependencies": {
|
|
7
|
+
"@types/chai": "^4.3.0",
|
|
8
|
+
"@types/sinon": "^10.0.6",
|
|
9
|
+
"chai": "^4.3.4",
|
|
10
|
+
"dotenv": "^8.2.0",
|
|
11
|
+
"mocha": "^9.1.3",
|
|
12
|
+
"sinon": "^12.0.1",
|
|
13
|
+
"ts-node": "^10.4.0",
|
|
14
|
+
"tsconfig-paths": "^3.12.0"
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@types/body-parser": "^1.19.2",
|
|
18
|
+
"@types/cors": "^2.8.12",
|
|
19
|
+
"@types/express": "^4.17.13",
|
|
20
|
+
"@types/jsonwebtoken": "^9.0.0",
|
|
21
|
+
"@types/multer": "^1.4.7",
|
|
22
|
+
"@types/node": "^14.18.2",
|
|
23
|
+
"@types/response-time": "^2.3.5",
|
|
24
|
+
"body-parser": "^1.19.1",
|
|
25
|
+
"cors": "^2.8.5",
|
|
26
|
+
"express": "^4.17.2",
|
|
27
|
+
"form-data": "^3.0.1",
|
|
28
|
+
"jsonwebtoken": "^9.0.0",
|
|
29
|
+
"multer": "1.4.4-lts.1",
|
|
30
|
+
"mxw-libs-api-token": "^1.0.13",
|
|
31
|
+
"mxw-libs-clogger": "^1.0.0",
|
|
32
|
+
"mxw-libs-database": "^1.0.19",
|
|
33
|
+
"mxw-libs-email-notify": "^1.0.6",
|
|
34
|
+
"mxw-libs-errors": "^1.0.5",
|
|
35
|
+
"mxw-libs-push-notify": "^1.0.5",
|
|
36
|
+
"mxw-libs-utils": "^1.0.35",
|
|
37
|
+
"process": "^0.11.10",
|
|
38
|
+
"response-time": "^2.3.2",
|
|
39
|
+
"streamifier": "^0.1.1",
|
|
40
|
+
"typescript": "^4.5.4"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"build": "npm run build-ts",
|
|
44
|
+
"build-ts": "tsc",
|
|
45
|
+
"dev": "npm run build && NODE_ENV=local node dist/server.js",
|
|
46
|
+
"start": "node dist/server.js",
|
|
47
|
+
"test": "mocha --recursive --timeout 30000 -r tsconfig-paths/register -r ts-node/register src/**/*.test.ts src/**/**/*.test.ts src/**/**/**/*.test.ts",
|
|
48
|
+
"test-this": "mocha --recursive --timeout 30000 -r tsconfig-paths/register -r ts-node/register",
|
|
49
|
+
"debug": "tsc && node --inspect-brk=0.0.0.0:9229 dist/server.js",
|
|
50
|
+
"debug-this": "npm run build && mocha --inspect-brk=0.0.0.0:9229 --timeout 3000000 -r ts-node/register"
|
|
51
|
+
},
|
|
52
|
+
"keywords": [],
|
|
53
|
+
"author": "",
|
|
54
|
+
"license": "ISC"
|
|
55
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import { describe, it, beforeEach, afterEach } from 'mocha';
|
|
4
|
+
import { expect } from 'chai';
|
|
5
|
+
import Sinon from "sinon";
|
|
6
|
+
import AppService from './app-service';
|
|
7
|
+
|
|
8
|
+
let sandbox: Sinon.SinonSandbox;
|
|
9
|
+
|
|
10
|
+
describe('Suite: Endpoint - App Service', () => {
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
sandbox = Sinon.createSandbox();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
if (sandbox) {
|
|
17
|
+
sandbox.restore();
|
|
18
|
+
sandbox = undefined;
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
describe("Initialization", async () => {
|
|
23
|
+
it("Initialize service", async () => {
|
|
24
|
+
sandbox.stub(process, "env").get(() => {
|
|
25
|
+
return {
|
|
26
|
+
JWT_SECRET: "secret",
|
|
27
|
+
|
|
28
|
+
SERVICE_DOMAIN: "default",
|
|
29
|
+
SERVICE_SESSION_TIMEOUT: 6000,
|
|
30
|
+
SERVICE_WALLET_JSON: "hello",
|
|
31
|
+
SERVICE_WALLET_PASSWORD: "world",
|
|
32
|
+
|
|
33
|
+
MYSQL_URL: "hello mysql",
|
|
34
|
+
|
|
35
|
+
CACHE_DIR: null,
|
|
36
|
+
MAX_FILE_SIZE: null,
|
|
37
|
+
|
|
38
|
+
MAX_REQUEST: 100
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const instance = await AppService.init();
|
|
43
|
+
|
|
44
|
+
expect(instance).is.instanceOf(AppService);
|
|
45
|
+
expect(AppService.Instance).is.instanceOf(AppService);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
describe("GET /readiness", async () => {
|
|
50
|
+
it("Service is ready", async () => {
|
|
51
|
+
const req: any = {
|
|
52
|
+
query: {}
|
|
53
|
+
};
|
|
54
|
+
const res: any = {
|
|
55
|
+
json: () => { }
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const stubRes = sandbox.stub(res, "json").callsFake((body: any) => {
|
|
59
|
+
// console.log(JSON.stringify(body, null, 2));
|
|
60
|
+
expect(body).is.undefined;
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
await AppService.Instance["onReadiness"](req, res);
|
|
64
|
+
|
|
65
|
+
Sinon.assert.calledOnce(stubRes);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
describe("GET /liveness", async () => {
|
|
70
|
+
it("Service is alive", async () => {
|
|
71
|
+
const req: any = {
|
|
72
|
+
query: {}
|
|
73
|
+
};
|
|
74
|
+
const res: any = {
|
|
75
|
+
json: () => { }
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const stubRes = sandbox.stub(res, "json").callsFake((body: any) => {
|
|
79
|
+
// console.log(JSON.stringify(body, null, 2));
|
|
80
|
+
expect(body).is.undefined;
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
await AppService.Instance["onLiveness"](req, res);
|
|
84
|
+
|
|
85
|
+
Sinon.assert.calledOnce(stubRes);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
describe("Termination", async () => {
|
|
90
|
+
it("Terminate service", async () => {
|
|
91
|
+
await AppService.term();
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
});
|