{"_id":"@andyln/mof","_rev":"6-5986e49f4fa7c78ac49126bbb9926e80","name":"@andyln/mof","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"@andyln/mof","version":"0.1.0","description":"","main":"index.js","scripts":{"test":"jest","lint":"eslint . --ext .ts","format":"prettier --write ."},"repository":{"type":"git","url":"git+https://github.com/NguyenAndrew/mof-typescript.git"},"author":"","license":"MIT","bugs":{"url":"https://github.com/NguyenAndrew/mof-typescript/issues"},"homepage":"https://github.com/NguyenAndrew/mof-typescript#readme","devDependencies":{"@types/jest":"^27.4.1","@typescript-eslint/eslint-plugin":"^5.16.0","@typescript-eslint/parser":"^5.16.0","eslint":"^8.12.0","eslint-config-prettier":"^8.5.0","jest":"^27.5.1","prettier":"2.6.1","ts-jest":"^27.1.4","typescript":"^4.6.3"},"gitHead":"6c35e1dda09cd6083ca7b49e1ec96dc370df7fce","_id":"@andyln/mof@0.1.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-JY84DaW1r9GLHteIyXONnIbQoCD5s58VHZm3Au9/j6rGDjLzgqzMBDDG46J1vLGdWTEIXOAeMTmcofP07vmxQQ==","shasum":"97e33cc6d0f439ee2d2ac677253362bc71f6d9c5","tarball":"https://registry.npmjs.org/@andyln/mof/-/mof-0.1.0.tgz","fileCount":13,"unpackedSize":205715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRAVXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoNxA/9FLSLt9scQwy/oOn2rUn7vJs7weC5qwl12Ad5JlLA2rTwkHVc\r\n2vnVfkpQ6HJPf0YRUpr3A4XfuVbamltcdYWKb02gTuZv6VaZxh8Packh/x7p\r\nVsP/xT22ZqbM/gPjCOgujXuq8t2Y7gR1WSFcijEhPUHJSBbtdw3EFbJrFaKp\r\nDpFxYYGXY4jl2fqDd+51QYPHvkkSvQCer4anT7g9wesIh5ZxnOXISseih9uO\r\niej/hFsZ+LT6FNtqxxNTveDDFK3vgLj+/Fzo2gz4rzNNlpmGn7ClP+YBj0Fz\r\nVE0ukxRWTgGEmIq52ulg1/0F7Qbqg+awF/F8FY6ETWiObHSkgv1hXvFrbaCn\r\nKPzrB9HHR8hTvBhSKz0RY4B8uQr4/cPma6HwG3j+IMl2wgzN7AiDe3CerOKz\r\nbaxV5SFOCXv/k/ZU7G6uHEIoYWXXBqotDhVksFGJJf/7TEo3K7Rllj8DFc3j\r\nbbHEzNLoJ5ceohXMolQRaHKiamAJII1zNpezthlh7iS4SKIMS2rmJege/E79\r\nZRgqlgy3PEoJ549NF7DMbTvaTef4fxyTUv3drDGK0t5ppjbliC/ylXlcRzRn\r\nQRUEFy+Mhp0bqmp8pwCJ3UxXx2xiuUd1da/YY8WludUKFJ1larvr/7aijEnT\r\n0n6H4D27rcs/O8v3oQgGsHOWV7AO2Z/EjfY=\r\n=Wsb+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTltZBJAOM81YPFRkhisl4ymX+GUriXGhYOjsItWCoVAIhAMKPjXPFUNTUIG9HCsX0ocfV9J0q3v9JfCEBy9FoYsRo"}]},"_npmUser":{"name":"andyln","email":"andylnmore@gmail.com"},"directories":{},"maintainers":[{"name":"andyln","email":"andylnmore@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mof_0.1.0_1648624983327_0.6767860161404318"},"_hasShrinkwrap":false},"0.2.0":{"name":"@andyln/mof","version":"0.2.0","description":"Readme in progress! Refer to https://github.com/NguyenAndrew/mof-java for more details about this library.","main":"index.js","scripts":{"test":"jest","lint":"eslint . --ext .ts","format":"prettier --write ."},"repository":{"type":"git","url":"git+https://github.com/NguyenAndrew/mof-typescript.git"},"author":"","license":"MIT","bugs":{"url":"https://github.com/NguyenAndrew/mof-typescript/issues"},"homepage":"https://github.com/NguyenAndrew/mof-typescript#readme","devDependencies":{"@types/jest":"^27.4.1","@typescript-eslint/eslint-plugin":"^5.16.0","@typescript-eslint/parser":"^5.16.0","eslint":"^8.12.0","eslint-config-prettier":"^8.5.0","jest":"^27.5.1","prettier":"2.6.1","ts-jest":"^27.1.4","typescript":"^4.6.3"},"gitHead":"755915f7ff5cf98cd84dcef2f0c0a268efdf7221","_id":"@andyln/mof@0.2.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-/1BxziANhKe44ohicRnO3NHlgCMLTgpI8kIP0riVYfzVDgVKci+YXOU1q39f82/AnaVO6MExBD1cRkwY9gGciQ==","shasum":"7d6b17d951176ebd06f83ef8b8029d1cee6013e1","tarball":"https://registry.npmjs.org/@andyln/mof/-/mof-0.2.0.tgz","fileCount":14,"unpackedSize":205844,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRAb3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr1/RAAjbSUHiplk0fIdu7s/FMxFN+pdwXrwZw5nNJNgIZJancupTZv\r\n2dVT7tr/K0HrdAxow9z/mH0dWPwdURTaXLAVQOgz5/T7Bj/Od2OhlGEkt0WI\r\nGB8rfWpkHxMeJT8atgHLJMEm4fDy862vTWAUzZAbtAdBCC1W7NWrNtGRoSqo\r\nERM5QOH29yx34e0Xvz0lMLS7NfO8itG3Hx+cNwv2b/5azWXqwwkHkuaC1lL6\r\nUYWPJ5KUG8nHI7uXCcHIJMEHeYn2hdTbP122QQtrHOfBWPMOT3bEJvizly6e\r\nUtfoOUHWoyPoJJ9SJ/4t43++xrwkuLBnN79Nxe4lQfxmDkQRx+86mB3zaCqj\r\nFafjdEznDOR9a1edFooCUaW2i+drvZOpT7I3JPeuaVJOkMytpQ9ieVw6iUGa\r\nPc4o1JENxB6lL8RgX7AjG6dqDOH9y+zjDntIatxqG4koLzP/45NC20YgonJq\r\noqGdAB7hT+hHyLlApbNaxJz3BgkkylIgsbeMUNi18ysHN7UFj5/kedl0JBb2\r\n2h982BdbthjPeinXKcs5O9JWQrW0MyUb12+lXxvGI0IKSuGlBh2h+rwEh5w9\r\n5aJBrD5GvlP/rmHUnXu2ekZiw07nPXUJ8GugNgBFqrjt6lMFON88KnzXJQCs\r\nmd6Z4CvpQNdYFhaFr1h8mDUB5wgWb1He6qc=\r\n=MNX8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBbLGpindy4dEJpqWlKbmFc9/5daNQQoBZXLwdu/uOojAiARI34ox3OmhuRLrXWL0eWCss6rlutxkzH9Yz37P2LgiQ=="}]},"_npmUser":{"name":"andyln","email":"andylnmore@gmail.com"},"directories":{},"maintainers":[{"name":"andyln","email":"andylnmore@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mof_0.2.0_1648625399023_0.4981364822333576"},"_hasShrinkwrap":false},"0.3.0":{"name":"@andyln/mof","version":"0.3.0","description":"The TypeScript (and JavaScript) library used to implement the Mock Orchestration Framework. Used in tests to reduce complex logic and boilerplate code in overall codebase.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"compile":"tsc","test":"jest","lint":"eslint . --ext .ts","format":"prettier --write ."},"repository":{"type":"git","url":"git+https://github.com/NguyenAndrew/mof-typescript.git"},"author":"","license":"MIT","bugs":{"url":"https://github.com/NguyenAndrew/mof-typescript/issues"},"homepage":"https://github.com/NguyenAndrew/mof-typescript#readme","devDependencies":{"@types/jest":"^27.4.1","@typescript-eslint/eslint-plugin":"^5.17.0","@typescript-eslint/parser":"^5.17.0","eslint":"^8.12.0","eslint-config-prettier":"^8.5.0","jest":"^27.5.1","prettier":"2.6.1","ts-jest":"^27.1.4","typescript":"^4.6.3"},"gitHead":"071f0cce9138c9468c2f662b5261a556e0c9ca9e","_id":"@andyln/mof@0.3.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-sKgQ5ZxJUGa58swBFGruG7nlbb4BVQBWHXoAzTgcp5dT8YXPkfhD3lUCHWOoH7u+jEKbB5PH4FMnJeqBwihuYA==","shasum":"e065f60180efb0d1371ecda57e7270aa56ea8ae9","tarball":"https://registry.npmjs.org/@andyln/mof/-/mof-0.3.0.tgz","fileCount":13,"unpackedSize":201712,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEojSfETvVEdTFGJAKB/WggMMyJLodt5f0fSfFFE9VwgIhAIyrma5r7iy84P4g2zUBFLCGQnJ6WvSaesf3wCzHOEZ0"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRTKcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqvTg//aq/NncUOTgs+hli0SZeNwt3ZKwOwJDA8Mjy3EPMy/lEyElW2\r\nhcPgd16VxeNJIjpynU8XzRx3obhtZhG+1kAE+ruFU1nXS9g4m3r4r/P+V7El\r\n3oQlfkDimc+lXI96knnu92o98wb8ez0QV8txp5LOGGXSwwJZZxrJhAiZvzko\r\ncJhIJ7tdC/GjxnG+8/dS/MeMZBaLEykp29pWmEjoNCQjj3KRaglHUzz2h9Ii\r\nrNVif/1rmN7ZNNt5GaClutoq8p5GYQnf6OA/EWAWYvK11Jc8iGPRV8mK/umy\r\nHC4PvbK1U01a2SkPTzghnu1Z/EzzMfnag3x8oLq2MbQJ81lEQZVEi3WJ7y37\r\neoSqFaCK1nnxJqMwY9WFFJKFgYCvZsgz+3CHkd6u6OKYfJCiNn52js5S6UX8\r\nTHMRQJVCIHgb03ystMWjoVGcgdj53coacK3dGgyKu2yzn0p7crQmlUCwQXMp\r\nqDIXjoT4ddbWi03evwWIVhknXthS943vaj/Y0N4ulYXLL4NWv3J7J1XMzapZ\r\np+QGYV9mFPzWDJ2Km7eX7na2qkrsT2quCIKlWq74qstI70GVRBQb6lty5F3K\r\neEUOeTpZmiODuNW7wtCXX0gXfoqbPadvu4TPmOy+Nkq3NTcld5MCFaN94szy\r\nG1KCzANWDNcGIGctq2apwmJtSvSBKcQ/FyI=\r\n=5toi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"andyln","email":"andylnmore@gmail.com"},"directories":{},"maintainers":[{"name":"andyln","email":"andylnmore@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mof_0.3.0_1648702107906_0.6450833180231934"},"_hasShrinkwrap":false},"0.4.0":{"name":"@andyln/mof","version":"0.4.0","description":"The TypeScript (and JavaScript) library used to implement the Mock Orchestration Framework. Used in tests to reduce complex logic and boilerplate code in overall codebase.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"compile":"tsc && typedoc src/index.ts","test":"jest","lint":"eslint . --ext .ts","format":"prettier --write ."},"repository":{"type":"git","url":"git+https://github.com/NguyenAndrew/mof-typescript.git"},"author":"","license":"MIT","bugs":{"url":"https://github.com/NguyenAndrew/mof-typescript/issues"},"homepage":"https://github.com/NguyenAndrew/mof-typescript#readme","devDependencies":{"@types/jest":"^27.4.1","@typescript-eslint/eslint-plugin":"^5.17.0","@typescript-eslint/parser":"^5.17.0","eslint":"^8.12.0","eslint-config-prettier":"^8.5.0","jest":"^27.5.1","prettier":"2.6.1","ts-jest":"^27.1.4","typedoc":"^0.22.13","typescript":"^4.6.3"},"gitHead":"07c090db2d6537735d7c668f7a14d871eeca7e5a","_id":"@andyln/mof@0.4.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-owHlSTs7tWHtgzDE4ddGjSP3zKQDRgMeOcTsqiqfBFn64bgltbGZnJTKYm24vfU/qprwZ4ucgfE6iGLX9x5JVA==","shasum":"04e58b830491e39b4a2c22f55485b24b141b74f4","tarball":"https://registry.npmjs.org/@andyln/mof/-/mof-0.4.0.tgz","fileCount":13,"unpackedSize":201456,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFWSs7xk9BoXlvstnMI/sejE49gk/R1ag33oUuQLfob3AiAzU2eJSs0lToehX2oZhz1l7kNcbZkV/Fk7M0OnkN7gjQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRUK4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqhKg/8CYox+W+owp6TofW1DNKvRlNCEtaM0qXIc8ESvLOnwNwBeJHr\r\nYDhp5YwU3ZVNbuZ/uW7j2/UCqnziQUb7ZYOm9OScfNLH8LHXLKG22TVQ37Ly\r\njYuYKKO6zR4cW+9j4Hi9zhWVW36N80njwzXJlOodv+XoxSjf6cio5XR4ZUGp\r\nnL691XG4EaFZF7XBM4AScIAPGRGgsx4OlPb8S+ca4ZMYWa77LYQ2uzIsgfLa\r\nxEtJliLKSyTwpPPzDWs22w3Vxf3UjRas5Z20fcY+FTlyP6QdP4/SQuGcCnQS\r\nOj94mCNUufqMXqNF9wmlinPBEjI/bPv8weGnLMmmYMACpkfEC3rL1U2aZ+hO\r\nujcqk1JoAw1kIVhcxanvu3dpd5JiqhN7iu0VQEv6DXqwiO/1F6xrG4HuSFq6\r\nohCvUMrkIr4/Bxxp4jAh9VA9tQS6KOyyw/mL2Iw6j8MWR7WaFVw5hasInuan\r\nxbkuzlKCeJkpwZvtBvSXoVqzRA91IAuPnBwbyqLF7OSGL0xTSAKhhQSrmgCr\r\ngNyveLxzAYF9bnKrM2H5xuW3hGsNDhTFXY9SpoPLsZy052kieuYdJi9jfe5i\r\nSeSkCF262mzbdgBiPjTpHKyXT09TPb8dQLHiCqswPKr0oGRBaR6oXKPyPHi6\r\nK2BI35I/q8RmWWvWn7y6Adep0SBtPp2DkME=\r\n=6uoP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"andyln","email":"andylnmore@gmail.com"},"directories":{},"maintainers":[{"name":"andyln","email":"andylnmore@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mof_0.4.0_1648706232124_0.12717643517619126"},"_hasShrinkwrap":false},"0.5.0":{"name":"@andyln/mof","version":"0.5.0","description":"The TypeScript (and JavaScript) library used to implement the Mock Orchestration Framework. Used in tests to reduce complex logic and boilerplate code in overall codebase.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"compile":"tsc && typedoc src/index.ts","test":"jest","lint":"eslint . --ext .ts","format":"prettier --write ."},"repository":{"type":"git","url":"git+https://github.com/NguyenAndrew/mof-typescript.git"},"author":"","license":"MIT","bugs":{"url":"https://github.com/NguyenAndrew/mof-typescript/issues"},"homepage":"https://github.com/NguyenAndrew/mof-typescript#readme","devDependencies":{"@types/jest":"^27.4.1","@typescript-eslint/eslint-plugin":"^5.17.0","@typescript-eslint/parser":"^5.17.0","eslint":"^8.12.0","eslint-config-prettier":"^8.5.0","jest":"^27.5.1","prettier":"2.6.1","ts-jest":"^27.1.4","typedoc":"^0.22.13","typescript":"^4.6.3"},"gitHead":"fab4911bdbc3d4b336600c4a0e0f44e6fe72a756","_id":"@andyln/mof@0.5.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-AqOKdqT4JFFWbQlmVCy2GktZOibT/2qE9n3wcdiS3WQTgnWXsqVtF7a+UJAhoEeimaFBfGo/JGO5D2YU6vl4mA==","shasum":"792012e649e225d33a125625f50f3d596e9b3417","tarball":"https://registry.npmjs.org/@andyln/mof/-/mof-0.5.0.tgz","fileCount":13,"unpackedSize":212858,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICzOyPOaHI/HehUmvNYVovU9cJl5AQvviaRn4utZrRx2AiAwPbBlmeMUAqWUoiZmHSNzFwb9ju409+JqAcE95fziLA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRqfaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpaThAAgqiDvSg37R98g6C6MN74ZWYhf3pgSW9nZDdbxAVAgdjqSaJ0\r\nTCn7oTNDzdajEzAf/RaLssIqHnfbUCj9Kd4ovdx2pMhifrTHerSNm2v137xF\r\nvyTEC+gsHHnrZ+6Ihlhh3AHvc7owIbt2at0hJZ0HUZgln1zIVQcSswzQBkRu\r\nnYzO1tYULx5zaihLLcR9bgxdGWDzyc6c/K4VNYy4o6hF6iprXMvoNbbixROt\r\n0BTnIlqgk41Ipr8JOV659lTqbsg5J2e4sUCI0npVY6fCILYP5VVnEyA/YFid\r\n0cSA7MJwCGy67EgEwc7LwRmuZ9A/m9A6fxDVY8RCcBnsK/MbPjauHfqgkc44\r\nPVB4uR0/lRSouGy0Qlxwb7efZMgaxnikNNo1oiBM9grpr4Kt5rE0iwkUm4vH\r\nSbUcj+WTy8umyU6bL/19YSGPLDO7dvIGe140VDkXAQyFN2apvDeMKPUEN8UK\r\nQ1WputS8Nf3/jRtWQPl5GLnrQOOW3cwU5+2T1r+2GYupfXXf9oYwuDQRikk+\r\ntMshkWpWkql5tUqvQ1y+I6+4ajXe10da6IzCGqFwzpNoauUtu7NdsEidR4w9\r\nNFWSgPsrfU6wDA/iRKTE09larwp2oP4sxzda3jcoU8HX7iGInF8oMwgu9+8q\r\nf0hoXfE51r/ZhNjppIXESgz1nfglneOxcRo=\r\n=O2H9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"andyln","email":"andylnmore@gmail.com"},"directories":{},"maintainers":[{"name":"andyln","email":"andylnmore@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mof_0.5.0_1648797658454_0.03710591907411698"},"_hasShrinkwrap":false},"0.6.0":{"name":"@andyln/mof","version":"0.6.0","description":"The TypeScript (and JavaScript) library used to implement the Mock Orchestration Framework. Used in tests to reduce complex logic and boilerplate code in overall codebase.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"compile":"tsc && typedoc src/index.ts","test":"jest","lint":"eslint . --ext .ts","format":"prettier --write ."},"repository":{"type":"git","url":"git+https://github.com/NguyenAndrew/mof-typescript.git"},"author":"","license":"MIT","bugs":{"url":"https://github.com/NguyenAndrew/mof-typescript/issues"},"homepage":"https://github.com/NguyenAndrew/mof-typescript#readme","devDependencies":{"@types/jest":"^27.4.1","@typescript-eslint/eslint-plugin":"^5.17.0","@typescript-eslint/parser":"^5.17.0","eslint":"^8.12.0","eslint-config-prettier":"^8.5.0","jest":"^27.5.1","prettier":"2.6.1","ts-jest":"^27.1.4","typedoc":"^0.22.13","typescript":"^4.6.3"},"gitHead":"7a33efe0cd4957e6b648e886c658220071787b8b","_id":"@andyln/mof@0.6.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-G40BUbjpLPqZsvCclsDnL8K9wtbqna1C7mZSwt+OlW2q+k4R1W6vRAfUFw9jg+giswSQF1Sh7JryfoUHYBbe5Q==","shasum":"8832bfc9b3e2138c15c2e452553edfb6ee61df61","tarball":"https://registry.npmjs.org/@andyln/mof/-/mof-0.6.0.tgz","fileCount":13,"unpackedSize":214916,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID2N5f7wh5yFUXmtDkAQCi0y2nQJJGSD3XzXgMaT0SEjAiBRnxzW0I4VRSk52i5CoLoYLbCffX0/1vCZ8yRY9gDkMw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJia1mGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo86g//RSmeP0kaPf6LOJ6e+3E9kRIGUQGAFoeOPnEH7c3DS2LlENSz\r\n7DB7QeTQodoU4GG7m7EyaC1FKb6toLtZeWhgQ8ABXjJQuQeuGpetJ+3A1r5g\r\noVcrAOkXe+zw+x2jYsvrjGK082RE3mrgG4WWelET2sK0RZIX6dNqmQ7LAUbC\r\ndYscwFat2Me3q8QTWqtGbC4bmC9PkQB+U3TfLgLGOfgY1jh0PyQn12wiwyUe\r\nEvrBMP+BVmWdEC7+p3tGl/tHq5y19CUp8W9ghaYeJM4z2PjBt/72UtTPjZk5\r\nQz/yWeC4YfnfPaHCuQq/jeau0QFHQ9WKAtWe0h9ncD/d7eTBAFKPtI3m/Km0\r\nqrxgIi1orYu+BXOBrqpjaE++HrqIa9hiDJbokdUedXgpco+WVprL3V+l7ZdA\r\n8WmA2U1h153f7OLkGZfdAFZg35t6+auvTxM5Ynodw9E+sW8KQbz9Zgn7L5Xz\r\nY0JdtsHe7hBaKx/KuQ5cqBsJmoQIW+D253rKlGG2aagKbdYvDoIaVsfjC98F\r\nWRG6MZXUm8DVmB/YKICFLEv28t5quYeFEDwP+L3nPTQBGXdZNGZ0ohEadJSs\r\nUq5rf6kBEMOueV6DEDSC8N3YgqpoJDAgboyh4VQySyCES5L2TkgXZykNbYlJ\r\nc85Zu2voHAR44RrbwyCydpQSvWRimu2+i0E=\r\n=YlnI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"andyln","email":"andylnmore@gmail.com"},"directories":{},"maintainers":[{"name":"andyln","email":"andylnmore@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mof_0.6.0_1651202437992_0.32865521916396867"},"_hasShrinkwrap":false}},"time":{"created":"2022-03-30T07:23:03.264Z","0.1.0":"2022-03-30T07:23:03.498Z","modified":"2022-04-29T03:20:38.204Z","0.2.0":"2022-03-30T07:29:59.229Z","0.3.0":"2022-03-31T04:48:28.094Z","0.4.0":"2022-03-31T05:57:12.271Z","0.5.0":"2022-04-01T07:20:58.601Z","0.6.0":"2022-04-29T03:20:38.140Z"},"maintainers":[{"name":"andyln","email":"andylnmore@gmail.com"}],"homepage":"https://github.com/NguyenAndrew/mof-typescript#readme","repository":{"type":"git","url":"git+https://github.com/NguyenAndrew/mof-typescript.git"},"bugs":{"url":"https://github.com/NguyenAndrew/mof-typescript/issues"},"license":"MIT","readme":"# Mock Orchestration Framework (Mof) (TypeScript / JavaScript)\n\n![GitHub](https://img.shields.io/github/license/NguyenAndrew/mof-typescript)\n[![npm (scoped)](https://img.shields.io/npm/v/@andyln/mof)](https://www.npmjs.com/package/@andyln/mof)\n[![typedoc](https://img.shields.io/badge/typedoc-0.6.0-green)](https://nguyenandrew.github.io/mof-typescript)\n\nThe TypeScript (and JavaScript) library implementing the Mock Orchestration Framework (Mof). Used in tests to reduce complex logic and boilerplate code in overall codebase.\n\n_Looking for the Java library, click here: https://github.com/NguyenAndrew/mof-java_\n\n([Install Instructions](#how-to-install), [Usage](#example-usages), and [FAQ](#faq) below)\n\n**Can reduce hours and days of writing unit tests into minutes!**\n\nMof orchestrates all the mocks used within a method, allowing you to only write setup and verification code relevant for each unit test.\n\n- **Q:** Why Mof? **A:** Without it, each unit test needs to maintain the state and verification of its own mocks, and may become brittle when there are multiple units tests for a method. In other words, **mock orchestration helps prevent initial and ongoing tech debt within unit tests**.\n\n**Mof is compatible with both TDD and non-TDD approaches**. This library helps augment the testing process, while letting the user choose \"when\" and \"how often\" to test.\n\n## Simple Programming Paradigm (Explaining how Mof works with Simple Curves and Non-Simple Curves)\n\nFor testing methods and creating new business logic, Mof helps encourage writing business logic using the Simple Programming Paradigm: Using Simple Curves over Non-Simple Curves.\n\n- Link that describes Simple Programming: https://github.com/NguyenAndrew/Simple-Programming\n\n- For the below description, \"Service\" refers to any object that is @Autorwired, injected, or constructor injected into the object-under-test.\n\nExamples of Simple Curves:\n\nA -> B -> C\n\nA -> B -> C -> D -> E\n\nA -> B -> C -> A (Note: A Simple Curve that starts and ends with the same service is also called a Simple Closed Curve)\n\nExample of Non-Simple Curves:\n\nA -> B -> C -> B -> D -> E\n\nA -> B -> C -> D -> E -> F -> ... -> X -> B -> Y -> Z\n\nA -> B -> C -> B -> ... -> B -> C\n\nA -> B -> C -> D -> C -> B -> A (Note: A Non-Simple Curve that starts and ends with the same service is also called a Non-Simple Closed Curve)\n\nSimple Curves are recommended in most cases over Non-Simple Curves, because it is faster to understand and work with code when services are used in order one-by-one compared to when service usage is intertwined (both in business logic and in tests).\n\nIf the method you are testing happens to be a Non-Simple Curve, you can **Refactor using sample suggestions**:\n\n1. A -> B -> C -> B -> D -> E can be converted to A -> N -> D -> E (where N internally calls B -> C -> B).\n2. A -> B -> C -> D -> E -> F -> ... -> X -> B -> Y -> Z can be coverted to A -> N -> Y -> Z (where N internally calls B -> ... -> B)\n3. A -> B -> C -> B -> ... -> B -> C can be coverted to A -> N (where N internally calls B -> C)\n4. A -> B -> C -> D -> C -> B -> A can be converted in the following ways:\n   1. A -> N -> A (where N internally calls B -> C, D -> C, B as separate method calls). Useful if you want to create stricter boundaries between service layers, at the cost of creating more methods.\n   2. A -> N -> D -> C -> B -> A (where N internally calls B -> C -> D). Useful if you want to reduce amount of methods, at the cost of using services between multiple service layers.\n\n## How to Install\n\nRun the following command in your terminal\n\n```\nnpm install --save-dev @andyln/mof\n```\n\nThis library is on npm: https://www.npmjs.com/package/@andyln/mof\n\n## Example Usages\n\n### Creating Mof\n\n```\n// Filename: microwave.test.ts\n// ... Make imports and jest.mock(...) calls here\n\nconst timer = jest.mocked(Timer);             // Works with Object mocks (from jest)\nconst motor = jest.mocked(Motor.prototype));  // Works with Class Mocks (from jest)\nconst magnetron = mock<Magnetron>();          // Works with Interface mocks (from jest-mock-extended)\n\nconst mof = new Mof.Builder()\n    .add(\n        timer,\n        () => timer.makeNoise.mockReturnValue(SAMPLE_TIMER_OUTPUT), // Sync Example\n        () => {\n            expect(timer.makeNoise).toBeCalledTimes(1);\n            expect(timer.makeNoise).nthCalledWith(1, SAMPLE_TIMER_INPUT);\n        }\n    )\n    .add(\n        motor,\n        () => motor.spinTurntable.mockResolvedValue(SAMPLE_SPINNING_TURNTABLE), // Async Example\n        () => {\n            expect(timer.makeNoise).toBeCalledTimes(1);\n            expect(timer.makeNoise).nthCalledWith(1, SAMPLE_MOTOR_INPUT);\n        }\n    )\n    .add(\n        magnetron,\n        () => magnetron.heatFood.mockResolvedValue(SAMPLE_COOKED_FOOD),\n        () => {\n            expect(magnetron.heatFood).toBeCalledTimes(1);\n            expect(magnetron.heatFood).nthCalledWith(1, SAMPLE_UNCOOKED_FOOD);\n        }\n    )\n    .enableVerifyNoInteractions((mock) => expect(mock).not.toHaveBeenCalled())\n    .build();\n```\n\n### Unit Testing - Base Success Case\n\n```\n// ...\n\ntest('success', async () => {\n    // Given (Setup data)\n    const expected: Food = SAMPLE_HOT_FOOD;\n\n    // Given (Setup processors)\n    mof.when(ALL);\n\n    // When (Run the thing that you want to test)\n    const actual: Food = await microwave.heatFood(SAMPLE_COLD_FOOD, SAMPLE_SECONDS);\n\n    // Then (Asserting what you want to be true, is actually true)\n    expect(actual).toEqual(expected);\n\n    // Verify (Asserting the processors are called in the way you want)\n    mof.verify(ALL);\n});\n```\n\n### Unit Testing - An Exception Case\n\n```\n// ...\n\ntest('whenMotorFails_ThenThrowAnException', async () => {\n    // Given (Setup data)\n    // No data to setup\n\n    // Given (Setup processors)\n    mof.whenBefore(motor);\n    motor.spinTurntable.mockResolvedValue(new Error());\n\n    // When (Run the thing that you want to test)\n    // Then (Asserting what you want to be true, is actually true)\n    await expect(microwave.heatFood(SAMPLE_COLD_FOOD, SAMPLE_SECONDS)).rejects.toThrow(SAMPLE_ERROR_MESSAGE);\n\n    // Verify (Asserting the processors are called in the way you want)\n    mof.verifyThrough(motor);\n    mof.verifyNoInteractions(REMAINING);\n});\n```\n\nTypeDoc documentation can be found here: https://nguyenandrew.github.io/mof-typescript\n\n## FAQ\n\n**Q:** What problem(s) does this library solve.\n\n**A:** This library solves the problem of delivering production code faster. By using an explicit when/verify structure it helps solve problems 3-6 from the [Unit Testing Guidelines](https://github.com/NguyenAndrew/Unit-Testing-Guidelines).\n\n---\n\n**Q:** Why should I use this dependency instead of making my own private methods to setup mocks?\n\n**A:** Private methods can help abstract method call over mocks (such as abstracting whens and verifies), but doesn't help coordinate how your tests interacts with these mocks (which can be a major time sink). This library solves this problem.\n\n---\n\n**Q:** Won't this dependency create an additional maintance cost on my project?\n\n**A:** This library is MIT licensed and deployed out to npm. The source code is fully available and is fully unit tested to help provide developer confidence. Also, this library is easy to seperate and remove, as mentioned later in the FAQ.\n\n---\n\n**Q:** Wont this cause confusion with developers that are not familiar on how to use this library?\n\n**A:** While there may be additional costs upfront to learn this library, it will save much time when creating new features to your code. This depedency has been shown to save many hours on business production code.\n\n---\n\n**Q:** I don't believe it is a good practice to couple a default set of verifies with whens. Doesn't this seem like an anti-pattern?\n\n**A:** Your test code is already doing this coupling implicity. This dependency defines this structure explicitly, through the construction of the Mof object(s), and takes advantage of this defined structure to achieve testing intelligence capabilities.\n\n---\n\n**Q:** What are these \"testing intelligence capabilities\"?\n\n**A:** Intelligence capabilities include:\n\n- Encouraging code to become more straightforward through the Simple Programming paradigm\n- Avoiding under and overmocking through the usage of a framework (Mock Orchestration Framework)\n- Reusable code by reducing the amount of one-off private methods, and only needing to create the whens and verifies for a specific test.\n\n---\n\n**Q:** Does this library support TDD?\n\n**A:** Yes. You can use this library using both TDD, and not TDD. After learning the library, it should make both TDD and non-TDD faster in the short term and long term.\n\n---\n\n**Q:** Should I made one Mof per class, or one Mof per method-under-test?\n\n**A:** This library both styles. I have seen this library works best by making a Mof object for each method-under-test, where that method has multiple unit tests.\n\n---\n\n**Q:** Shouldn't you have all methods in a class reuse the same predefined mocks and whens?\n\n**A:** It should. This dependency allows for that use case, and additionally also allows for the case where methods may have different initial mock state depending on which method is called.\n\n---\n\n**Q:** Why not create separate whens and verifies objects to construct Mof?\n\n**A:** This separate objected implementation was tested in initial POC, but there were auto-formatting issues with IDEs to construct these objects in a human readable format.\n\n---\n\n**Q:** In the above \"Unit Testing - An Exception Case example\", by using `verifyThrough(REMAINING)`, are you forgetting to verify that the magnetron is not running? I think you should add code for noVerifyInteractions on the magnetron, so that we can guarantee it doesn't run and cover all of the test cases.\n\n**A:** This test case (and other similar combinations) are explicitly covered when you create the Mof object, as you are stating that the timer (methods runs first) -> motor (methods run second) -> magnetron (methods run third).\n\n---\n\n**Q:** Following up on the previous question, what if I accidentally constructed the Mof object in the wrong order (such as timer -> magnetron -> motor)? Wouldn't that miss verifying unexpected behavior?\n\n**A:** You would be notified by your unit tests, and you would be able to fix the misorder. Mof prevents overmocking and verifies all methods that need to be verified.\n\nIn the test case where you ran `mof.whenBefore(magnetron); ... mof.verifyBefore(magnetron); ... mof.verifyNoInteractions(REMAINING)`, and the business logic has the motor running before magnetron, then an exception would be thrown.\n\nThe reason is that motor would have been called, but by stating `mof.verifyNoInteractions(REMAINING)`, the test would state something like: \"Expected no calls to this method, but this method is called 1 time\".\n\nIn summary: The combination of your business logic, Mof, and your unit tests, ensures your tests are testing what they need to, and helps keep your business logic and unit tests up-to-date with each other.\n\n---\n\n**Q:** I want to remove this library (Didn't like the user experience, found a better library, etc). How difficult is it to do so?\n\n**A:** Using Mof replaces the implicit whens and verifies between your different unit tests with explicit code. The process of removing the library is simple: Remove the explicit structure by copying and paste those extra whens and verifies back into each of your unit tests.\n","readmeFilename":"README.md","description":"The TypeScript (and JavaScript) library used to implement the Mock Orchestration Framework. Used in tests to reduce complex logic and boilerplate code in overall codebase."}