{"_id":"@actyx/machine-runner","_rev":"19-63b89fb7fde2fb7fcd4f979da4665fa3","name":"@actyx/machine-runner","dist-tags":{"latest":"0.5.8"},"versions":{"0.1.0":{"name":"@actyx/machine-runner","version":"0.1.0","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.1.0","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"d5796dd3454b98578fb5e50f4f97516f9ad34fff","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.1.0.tgz","fileCount":50,"integrity":"sha512-9yupshTQasyfXc3noK/QSDjLuF874Rspf/EhtpV5vrQ+oci1xxi/NcFG6UbdvZWLIte0tSSRYNsCRanM126qPw==","signatures":[{"sig":"MEQCIAc6DcBRBWiQ3dPa8kgv+6dgk7/qRVxFtCC3qELeW2IVAiBI0hMKAYwv5Ty0SckKYf5do1JqhaaMZxMF+wqACTEelw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLDjGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoxig//XumHPJO5O9xipM0sTUfo4MY74CfhMI1OE37pkJ2G4i/Tsb47\r\nooH8e56zDF5O3y5TbZzpPptAc39kffS/DBapKVit3DGKdxGy6J07w005Hkn5\r\nSID0KPLpAtHu0v2CzIamtuoWelrqLs5FFppeI7rMydzYJyV77Zoeab6/1hYs\r\neZ5ojQESN6c66jrtpvWQeVKq26MJu0eUJeXRcKf0+DTNZoL2Wyp9d+EbVDY+\r\n1TfABDZsYdi+TI0wBtbhyc12TriVgIVkmpuZVSzDfg8xA3EgjA+dUm9L1Kus\r\n8MBGNev1rQkkJ67eYMl69/pYphnfo5fKnD7mcXPhuwM05dOiXlmsUb8qiGv6\r\nsDBoVdlRBIGcSVuoXbeKg3t3HFjNjFaLPBNCL6a2rmi2CtuntoXAJcfPgB8i\r\n+xpXcy65OpTFb3H2U7KxDiWto5sp331mnfP0J8C6IYB0zSBTHK/CypQ11MVN\r\ngVP9tF4XyOWbn2d9QBfpe9DgHcV2xvS5e9CDbesADN8JUNrDvFSy07TdRxVs\r\npSTZ2vGDeAV5Jqj+Z/AT+eTkYpaZApgE/uyzbwZt7OqzuAUBbJJwKc6DZL1a\r\n5TeIvqnSxnHEGccDtZyJZzxkbwSfWJ2zhZ+umhfHfkEimrsU8OcTe946Cxzy\r\nIhd49sjGEcBwZX5uV9yuL4Aezdb2sTOXz0s=\r\n=CZ9V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","gitHead":"96441852a848a6446ecb87231e6940f65437768f","scripts":{"lint":"npx eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf ./lib","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.10.0","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"19.7.0","dependencies":{"events":"^3.3.0","@actyx/sdk":"^0.5.7","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.1.0_1680619717911_0.12635078587720283","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@actyx/machine-runner","version":"0.2.0","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.2.0","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"1f05870d16425dfe168991ebfec1edbe45ee4694","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.2.0.tgz","fileCount":59,"integrity":"sha512-4WnqoD+wVWhjD5dtwDNwJrDgLCs8YS2b+MsPJSaezLomKjYhXcHpbgc8DXg8b4wUfZWj+VUJEN+9V8/DTQNcQw==","signatures":[{"sig":"MEYCIQD2MyNHk8/RHc3QbFZg8rI1tcOq5KetTz8MqcOKN7gI7wIhAKVw0gJHHIFzdAC9mGpRNuPmN+SSf/Ua+nkOZYXS8QtD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":210100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkPklHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmovqA//fHfoCiMV26iCUdfq9J4shaH08dnZykPdIZrb0OD/tuFYkM9M\r\nc3733/qqhBqTf6DmyS0zXv9eGH5BdYTGxABJULFf5HX54keXCnJRXb1jAJ7B\r\nRP1UWSZTqwGD06HSe5FrF0xVkp3XdzWVtqdp8y8JkbAOTbloCwcbbkjHdqCV\r\n7SRiGXVh18jylB5BMCp7NRucLW385HqnDlkMkNQ7QFBesE7EKIUnQZe96VDr\r\nWm2amlszlVecE6mf7SFCTBGH9mMhxF8To/fk0pJ6cZB+jiPbVHn55e8qohuF\r\nfYY04S2tQuG+looJCrA/UW2ppqCwfMv17bzOFjHcNvDDSJIokmcXZNnyhtGD\r\niQWW3M5jKkO4G6SgV8cPi6gqqL4iJJmPZsLEMAXUcQyAj1ecS0t3dqethf34\r\ncbuK9aKBz4P/wjJ+9jeASyWl30KYW+Z2SeAJYcBycMUvTz6XemLUbxU9PPjU\r\nhpQ9Kzmr7TQbSrV1+HFfvKhxmjEv3e1KrVp85PSmgopcDPB9GCpEyNUmoyjA\r\nIfplDL9AJRDJuam05/hsX4IPM8VW5szST5X2fSrUoPsCrQFDobG1grvqD2/R\r\n9ub2grUM96gUkkMOfA/HzaED9/CQ1Y4kgmt1tY+4sqs/QdPyWfwk+Fw6Lt8t\r\nWZgMQ9cO73x2lCJoGYTIX7qHKDFe3wllVrk=\r\n=cnNo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","gitHead":"240026501be20bc5239eb0887d5f87aeab4ff64d","scripts":{"lint":"npx eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf ./lib","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.10.0","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"19.7.0","dependencies":{"events":"^3.3.0","@actyx/sdk":"^0.5.7","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.2.0_1681803591507_0.6902939530325669","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@actyx/machine-runner","version":"0.3.0","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.3.0","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"f1600ad04c48556ea56a72b998526f6b8c3dfe1b","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.3.0.tgz","fileCount":56,"integrity":"sha512-Mxj47hRmmoMLWLZkrShuM2zP6sumL6kKBB1/XzD2F8kVY5LnYPbELv2MqLUpsfRG5w6uTve4j04eAF3zLf+62Q==","signatures":[{"sig":"MEQCIDfhY1v/NTf58dNBqMsrRj7+WjNhir8+/JpqQJ8sMqP8AiBDGCOP890T/UaQd1jLquUYCA51QzeGh8F6EVlUAhd/0g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":136870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkS5MoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmreXxAAgcPr3SK1mzkBK5aXeM1ep9JVYbUq5MAw/TGK2xfNMN+Kp+7d\r\nOWlOQ+tkPlkx5hK4QEa5DC0G8lBq5SLouEA7C+ZayP94nkf8tkwlu8WkWIY5\r\ncB5vBBJCxyh916/If2x3PrQTHE9ppzSLXKY7FqW0pxTDOfOiIvlN2ZlH61Um\r\nz3SKgDj0MPZntXycbuzcWK6deGFmX+8fvRiEUpOqTsIwI0eNGWZMEjcdZPPV\r\n1IDd5d/Xyx+OhCj4HDLSrRiz/0g9VdUJeUkSXZizTUkDnUc0Ol0jgi0kxrO4\r\nVb4fY+Y+zOmv6w0P4QPmIGk9VjIaQttq+1UbYE+OyMFl6rGZ50gUZsAOBmXn\r\nuHbgVAxW5GOio7tw1uvm3X1bhD0aJLa24qG0FPDsDU7IyTINCgCKu2iRR6UO\r\nOdDc2lkXxS7yjz6bw1/UuQItoyEesOde96kw83tVgbKwdKcID8+Q4F2DELnb\r\nU7hUzNaS++hv8TGq0uNSfRZWrOZ27lAHJsUQJwFiSnyYWFF/qcgREOvTZjHx\r\nURLUrqNbzozqPIJrqdFFz8A7/nrNT54PmYmkKn8re6sXCuUHZ5Bn0QoFjEEw\r\n4GtYTRL2u7M8fNS9TQsJaxctkRUNoVddfWwCQRTvZOZqn/Plv/GmxFqerXid\r\nMZWQI3U1uZPzsFqPNKMnWA8XVyLur2o9ZoU=\r\n=APWL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","gitHead":"c9ce7953253611017f4e36ca8b231b97ed2c94d1","scripts":{"lint":"npx eslint src/**/*.ts","test":"cross-env NODE_OPTIONS=--experimental-vm-modules jest","build":"tsc --build tsconfig.build.json","clean":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.10.0","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"19.7.0","dependencies":{"events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.3.0_1682674472125_0.8299640372123891","host":"s3://npm-registry-packages"}},"0.3.1":{"name":"@actyx/machine-runner","version":"0.3.1","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.3.1","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"b9ec579217be61b79f443e4dea71da1dcb2b70b9","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.3.1.tgz","fileCount":56,"integrity":"sha512-c7Mv7DeKygmysFmnJDJWwK0Cck8E6gr5jPmlDVnzaFuTQn74Aoo7BzKsF384QmIP+WzzVgZsAcSK+fJk8i8Xkg==","signatures":[{"sig":"MEUCIDvidEmXukDqW3QmPDao8fasQPsJ36I6qASYimxtE3PSAiEAkvxd2Mk3UPyrSjM1SczGf5DtNygmML01WWDCz54WItI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkU3CYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp3ng//SFqq9Z91Wo5CvlLeNFDk3VxPDcxvq6eopFCXfT+ESpm0XOr1\r\nPaI5nhLNOxZql6rrb3Z5oGvk7EDBbGSDk2nC+ERhDfOUqEQLX1eih9qPz90i\r\n2ypbENhBDOS+9R9zuX6LsdqqGzLaTO8KjKuOIjmd9AoUOFTCwHno0p0LqT37\r\nQDZ1CvwWb3S4uINFWIlFGYm4+mtNNi5HaILFFpu5kvRJq3RmhKL8oIlDaIOD\r\nQR/lRb7Dsp10vUwrUopmRsZS18U8qdOA6CkcHEHvqyrV/MUo1Y/8H6tnjz2x\r\nqoCpZSNuv0NeZkeTNJyrhUfY+Up+PRhAmpqWsZKJiuVsxudEUQk68NyvXOWC\r\nMBUdo113wjgJXJSjJZyP3Z1XnBOzcivf0vr4uIUraLzJts93rIjMZk+SNwpt\r\n++QQQ6rDHaFgjtT1gwtmJMrVTlLuNGstOUWtvZ7CNYlqoi6izl9qkpwa+BZ7\r\nwxAUAHOn64Y6NZH7QjhU6kSukZE39l2+hfj64w4mP2G0UdAYlfi6hdM4qrXc\r\nG2cQhNSYY5jnI52NiES4HCZm9WnnHPiqtq9VudK4wYjvjiM/EuQVS4XAn/Fp\r\nfcAyumiB4jRy2sOp7E8Zq8I8UmlInpycAcm+nZQwRatSFeAODYRbSHd/M1yb\r\nsxqeCrZmRg+blMuQpNruUkhpN/XuPangOMs=\r\n=linC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","gitHead":"7829e9d605125249292ff59344ee52bdfe31136b","scripts":{"lint":"npx eslint src/**/*.ts","test":"cross-env NODE_OPTIONS=--experimental-vm-modules jest","build":"tsc --build tsconfig.build.json","clean":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.10.0","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"19.7.0","dependencies":{"events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.3.1_1683189911930_0.559149782384764","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@actyx/machine-runner","version":"0.4.0","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.4.0","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"44599a0e4f9022a1e43c0e9948b55fa8c430b929","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.4.0.tgz","fileCount":112,"integrity":"sha512-jARo49sS2euYhI2KInTWKBGkYJhy39Oa9DUIb84ZWbFwG9IF7z95R5ugwis9ZfTD4lG/cD7Elq+8Zhxx+OJZHg==","signatures":[{"sig":"MEYCIQCYFxaHdSnOiz7Z7UxLXeJPMU6kFCz7RX93jISSKAxmFgIhAORS0z7+4AnQ0ySDs3+I8VfCSnnAoft/NxDaGnvWhudu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268660},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"2eab71fada39b6a6e75b63b4237b5caf24763dab","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","test:cjs":"npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"tsc --build tsconfig.cjs.json","build:esm":"tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.10.0","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"19.7.0","dependencies":{"events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.4.0_1684867777848_0.4078564314878663","host":"s3://npm-registry-packages"}},"0.4.1":{"name":"@actyx/machine-runner","version":"0.4.1","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.4.1","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"cff746c862655a29714bdb8c13aa616699c34c11","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.4.1.tgz","fileCount":113,"integrity":"sha512-RHkbkw5CAoLKbnsNMtLxJKrZEcAmkbVrFCtSJDh7QE0m7wLmSCqkqKvtTY34KikeKj4Wzom1ERnwhA0C4ZIjKQ==","signatures":[{"sig":"MEUCIQCRBIqllmfDm0q24SXJKJ8iqPeLs4VjjHS0U8kVJ2p6gAIgHcGzQLWXLVHg6Hv1vACr+/j00SqgNsTAUXHKu+WvZBQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":493755},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"62fbda79d27a71260159c2688f0f57ef4c9e13ca","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","test:cjs":"npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"tsc --build tsconfig.cjs.json","build:esm":"tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"roland.kuhn","email":"roland@actyx.io"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.19.3","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"19.2.0","dependencies":{"events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.4.1_1684929386722_0.23298897829450804","host":"s3://npm-registry-packages"}},"0.4.2":{"name":"@actyx/machine-runner","version":"0.4.2","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.4.2","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"8cb38af7a3f4d69df14e950793af8d3ae41d6aba","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.4.2.tgz","fileCount":113,"integrity":"sha512-0iMWnYx+9FmUYifWJnjsTt2GfMjBoryOUHbBb4PZoLQGk7y1+cXdw3Ek6V6D/HmD1ll1VglCiqVRS7t8u34kEA==","signatures":[{"sig":"MEUCIQC4yTO+BRERBRBbziK5Mo0UTplT8yRWz0tVd3DflNTS2QIgWf4Ej9ProsxOazQSUR7AP9P+Mk7pMGaVYpyxmj9dw1o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":495099},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"62a313f7d6d83e5d20e385d423efff125e305aab","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","test:cjs":"npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"tsc --build tsconfig.cjs.json","build:esm":"tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"roland.kuhn","email":"roland@actyx.io"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.19.3","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"19.2.0","dependencies":{"events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.4.2_1684945463628_0.8924295610638819","host":"s3://npm-registry-packages"}},"0.4.3":{"name":"@actyx/machine-runner","version":"0.4.3","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.4.3","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"aa1400abae7581af6fa7413322b24d3023f28252","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.4.3.tgz","fileCount":113,"integrity":"sha512-6jaJ1JV8Xzz6HKFENH7JjjKq9LM2YT/v+vL5eicTRMhg4UNHmRCZv1Gnxgmkue75CZI3VfP7EqBUJg8K9xR2qA==","signatures":[{"sig":"MEUCIDQvm3YachlPAjhoBnWuZiFzxSP33oE0PyhxZFk8lO4hAiEA2LWThqk20gOE8sJdGELyjS8FY9etjarp3fP/SQELIEs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":523013},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"d345432e21471e8c2701fa85d72ff592dde0d2fc","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","test:cjs":"npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"tsc --build tsconfig.cjs.json","build:esm":"tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.10.0","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"19.7.0","dependencies":{"events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.4.3_1686734862650_0.830475880547521","host":"s3://npm-registry-packages"}},"0.4.4":{"name":"@actyx/machine-runner","version":"0.4.4","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.4.4","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"7c6bfd15f6d9e59b0af734040ec8226ef614d3fb","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.4.4.tgz","fileCount":113,"integrity":"sha512-/Z0lQBjqaUJpGiRaT3rgECNrUBK5CjTnqPH2tZc0V09BNctEGykR0TdxAw1lYQn4Tm0jl+QRgKbDvCMsApHtXw==","signatures":[{"sig":"MEUCIBZhw59nRLOaenLTCwLCs0RNmQGF+zpo4Q5cAf12MQBUAiEA3oh4+vJoVBJzFt0wtnyTjkmXZBuBszriZBcPrMZLKN0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":546329},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"e955d3fa10c4e8ff91e38115d49bde9a29c27dc5","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","test:cjs":"npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"tsc --build tsconfig.cjs.json","build:esm":"tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.10.0","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"19.7.0","dependencies":{"zod":"^3.21.4","events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","fast-equals":"^5.0.1","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"optionalDependencies":{"zod":"^3.21.4"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.4.4_1690890371703_0.2415308377837735","host":"s3://npm-registry-packages"}},"0.4.5":{"name":"@actyx/machine-runner","version":"0.4.5","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.4.5","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"13862eef3120cedb3e15fb935b83ec4e50326c02","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.4.5.tgz","fileCount":125,"integrity":"sha512-k9ObmSxU0jTiPCz9ir6haHvrCLWzfiEHFMRmNtbTQ6VqRulNZcQmhqqlWc5Hy+3cRC16YYI5ElkfiUCY0nUs+Q==","signatures":[{"sig":"MEUCIQCcwzLi8BwBhPAfMUyH8tVQ8/FVzVO3M5sDzjVeQpik7gIgbQqEVqD18FnEBuoSKskhLm7uCF1h+2Be3TprIGSdDC8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":571117},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"a3f57efd573d7c48508a69e6ab436ebaeec92e35","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","lint:fix":"npm run lint -- --fix","test:cjs":"npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"tsc --build tsconfig.cjs.json","build:esm":"tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.10.0","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"19.7.0","dependencies":{"zod":"^3.21.4","events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","fast-equals":"^5.0.1","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"optionalDependencies":{"zod":"^3.21.4"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.4.5_1693914683399_0.9728055365437644","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"@actyx/machine-runner","version":"0.5.0","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.5.0","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"3a37f53e208a3e3be51b8d9daee4796f43414d48","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.5.0.tgz","fileCount":125,"integrity":"sha512-4F8alfLkdhyLEx/lf8VUhF4Hho5JEu6GJyAlZliMrOe2DwzcqZVDfFdrZvG2KknzMnTptqT8sfdiHYlPp8CbSw==","signatures":[{"sig":"MEUCICGZ4fdMoJ8sHPJmJLsvNj+Ezo0Thur2meaqaZcBO7WuAiEAuyEnvWOjKk9lDfqZa5ahg56RzMPTuBbGT5j7QrQQ3tw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":578485},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"bec9d898a9e5ecea4543e57182a152b48364a788","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","lint:fix":"npm run lint -- --fix","test:cjs":"npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"tsc --build tsconfig.cjs.json","build:esm":"tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"9.5.1","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"18.16.0","dependencies":{"zod":"^3.21.4","events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","fast-equals":"^5.0.1","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"optionalDependencies":{"zod":"^3.21.4"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.5.0_1695122896153_0.6116899646478646","host":"s3://npm-registry-packages"}},"0.5.1":{"name":"@actyx/machine-runner","version":"0.5.1","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.5.1","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"1a97ce43a0671c11f5ada2d75b8b6c422e62c5a2","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.5.1.tgz","fileCount":125,"integrity":"sha512-2K0QSYzlCaBdURwBOGYIl60VCGSLksNZF2pVrcAYrQRl1U0V630pzgo9M+DQsU6OIx2/T3Y/xG2nHumjf/6xuw==","signatures":[{"sig":"MEQCIE2UO5RkkLbYvOwkHuDV1jsmZ9l4UGqDsDdHOPbrzyxMAiBTPGBD0Oq0wDelprvmX7qQ8dSzjeG2+6vzYOuH+eYKpA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":600008},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"1a9ba2cc804350818cc95f390d3021cf7e37d27b","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","lint:fix":"npm run lint -- --fix","test:cjs":"npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"tsc --build tsconfig.cjs.json","build:esm":"tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"9.5.1","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"18.16.0","dependencies":{"zod":"^3.21.4","events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","fast-equals":"^5.0.1","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"optionalDependencies":{"zod":"^3.21.4"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.5.1_1696852472655_0.17064900779214676","host":"s3://npm-registry-packages"}},"0.5.2":{"name":"@actyx/machine-runner","version":"0.5.2","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.5.2","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"f582cbd468a29620017046e3323259a4f8255099","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.5.2.tgz","fileCount":125,"integrity":"sha512-mIsn/AH5iVKYcBr4NCZvQWUdj4HTwcnvf+K7mcz22LoR+Fso8f2Feo6ET9PnxQa6m5B6+BOyRqCCUKtyukA9Hg==","signatures":[{"sig":"MEYCIQCJU7qEVBvlN5UUfOnRoUqU3veTLtCI+Lpa00EZRbDx4QIhANT3AOtHiDnprRRJNMMm6yvAAmUY1eY1oWtcB9CfZovT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":606930},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"4d04e691545e1d9a6e50a5b05a897ce6b7d7f2dd","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","lint:fix":"npm run lint -- --fix","test:cjs":"npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"tsc --build tsconfig.cjs.json","build:esm":"tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.10.0","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"16.20.2","dependencies":{"zod":"^3.21.4","events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","fast-equals":"^5.0.1","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"optionalDependencies":{"zod":"^3.21.4"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.5.2_1700749018726_0.2501118072907498","host":"s3://npm-registry-packages"}},"0.5.3":{"name":"@actyx/machine-runner","version":"0.5.3","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.5.3","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"1050de54efd8becfb142e2d5fbf893dbf6bdbcb6","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.5.3.tgz","fileCount":125,"integrity":"sha512-NcXtuNs7C5oa45NpIGmlIUzO/t2vLmLlixK7zB2zYzt6rHQ8twiEqLjWXKXjxWR19HprMC1UU9VBfdr1LS3Q3w==","signatures":[{"sig":"MEUCIQDUrXpFNHEIoDx3XjBcfb/z/csIkKUBYVVyQ9ZGWywBdwIgUKHoRbHxKSADINgMZ3w1EAV9ohHRhE6ZLNq3KlhXHHs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":607924},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"a0910592c55e86a25085cf994a023a8e3462a7d3","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","lint:fix":"npm run lint -- --fix","test:cjs":"npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"tsc --build tsconfig.cjs.json","build:esm":"tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.10.0","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"16.20.2","dependencies":{"zod":"^3.21.4","events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","fast-equals":"^5.0.1","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"optionalDependencies":{"zod":"^3.21.4"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.5.3_1701427806403_0.26481749772991403","host":"s3://npm-registry-packages"}},"0.5.4":{"name":"@actyx/machine-runner","version":"0.5.4","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.5.4","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"eb72e2dd1d7162193c97f29e58f1eb5a2a50bd47","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.5.4.tgz","fileCount":125,"integrity":"sha512-seMDWF3PxcrJrl+4viYayxCtAhfY45bOvKSKy2YCZGeb9ja3ZgC/9Z9brwSoZY5Y6fGMACpbitf6zelpkWWUJA==","signatures":[{"sig":"MEQCIFEN6mS2OGjhfw+gqptdkicbkSWTyKeVWuH1nGjNqsD9AiBdFHJJSZTpVKsQK1K0S/bg3jSF/ofjHkdBCBEsiatEyw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":617928},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"f51bde400a65faceada94774a0728658d81a533b","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","lint:fix":"npm run lint -- --fix","test:cjs":"npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"tsc --build tsconfig.cjs.json","build:esm":"tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.10.0","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"18.18.2","dependencies":{"zod":"^3.21.4","events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","fast-equals":"^5.0.1","@types/events":"^3.0.0","typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"optionalDependencies":{"zod":"^3.21.4"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.5.4_1706073774120_0.9778125022859228","host":"s3://npm-registry-packages"}},"0.5.5":{"name":"@actyx/machine-runner","version":"0.5.5","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.5.5","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"2b8a81505f3de412b04af499ce6b2729661c84f7","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.5.5.tgz","fileCount":131,"integrity":"sha512-yAN6DdjnKbb34g+LubTri2TwwCydQ87fvFG/z2FcqmIwESBSLyxHeqri9TovvkPZ6nhTN3qvUCPILddzaMfi8Q==","signatures":[{"sig":"MEQCIHJgYzLIBKOjSTsgubh7EgCAHFUQqBGVj773UloxVlZcAiBvS+xxT61Cl/RDtNlesBpOwHeH55gyNN8YoD8TN33Few==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":624011},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"3f9b5b4de9a3e2d01bc1be2d77787d4bf815352e","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","copy:cjs":"ts-node-esm scripts/build/copy-cjs-esm.ts cjs","copy:esm":"ts-node-esm scripts/build/copy-cjs-esm.ts esm","lint:fix":"npm run lint -- --fix","test:cjs":"npm run build:cjs && npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"npm run build:esm && cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"npm run copy:cjs && tsc --build tsconfig.cjs.json","build:esm":"npm run copy:esm && tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"roland.kuhn","email":"roland@actyx.io"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.19.3","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"19.2.0","dependencies":{"zod":"^3.21.4","events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","fast-equals":"^5.0.1","@types/events":"^3.0.0","typed-emitter":"^2.1.0","zod-validation-error":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"optionalDependencies":{"zod":"^3.21.4","zod-validation-error":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.5.5_1706206092145_0.7316985609897475","host":"s3://npm-registry-packages"}},"0.5.6":{"name":"@actyx/machine-runner","version":"0.5.6","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.5.6","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"acad972f26463740c138aad327677d5b755a831d","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.5.6.tgz","fileCount":131,"integrity":"sha512-WoxnsT3eBqdUd0v4LC0wyRJWcCtbXqUBha/vmEOnDfqP9DMoqvg/UBENPf7FffAWiHeqV3RfhJzITEmGdlVW6w==","signatures":[{"sig":"MEQCICZDsmJA+X13VUrTGJQogdZ3MRIKF1zXV5YBg9shWhErAiBzCWpc5xTKc/TDos2nYHYnQTPkdMASHHLioea6wiTO8A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":624563},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"f743b62e58d31b4a029db742776ab67701193a63","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","copy:cjs":"ts-node-esm scripts/build/copy-cjs-esm.ts cjs","copy:esm":"ts-node-esm scripts/build/copy-cjs-esm.ts esm","lint:fix":"npm run lint -- --fix","test:cjs":"npm run build:cjs && npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"npm run build:esm && cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"npm run copy:cjs && tsc --build tsconfig.cjs.json","build:esm":"npm run copy:esm && tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"roland.kuhn","email":"roland@actyx.io"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.19.3","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"19.2.0","dependencies":{"zod":"^3.21.4","events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","fast-equals":"^5.0.1","@types/events":"^3.0.0","typed-emitter":"^2.1.0","zod-validation-error":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"optionalDependencies":{"zod":"^3.21.4","zod-validation-error":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.5.6_1706207317686_0.5073739897297878","host":"s3://npm-registry-packages"}},"0.5.7":{"name":"@actyx/machine-runner","version":"0.5.7","keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","_id":"@actyx/machine-runner@0.5.7","maintainers":[{"name":"kelerchian","email":"kelerchian@gmail.com"},{"name":"roland.kuhn","email":"roland@actyx.io"},{"name":"ostollmann","email":"oliver@alithia.net"}],"homepage":"https://github.com/Actyx/machines#readme","bugs":{"url":"https://github.com/Actyx/machines/issues"},"dist":{"shasum":"9c6b630983316451c093b62adee88f56eb134205","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.5.7.tgz","fileCount":131,"integrity":"sha512-Cv4cfYyU64tnlTEcpu/gstknUgZ4lpFiHuJiSkoxT7gTFO/gZDnzQ0CH83k/WNU0NVZd3PFdC9SlUtANZ76xmA==","signatures":[{"sig":"MEQCIDCSgnrpFAl80hA4Ed923a63QtTSHxRdzuQfjlL2dMHvAiAJ2lvz14JjWhZmwhjCyA20+3OUT55/GfWMi5UuvoqRWA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":635211},"main":"./lib/cjs/index.js","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"gitHead":"6b2dd4b3947bb3d80cb5e11ec725196ad42894df","scripts":{"lint":"npx eslint src/**/*.ts","test":"npm run test:esm && npm run test:cjs","build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","clean":"npm run clean:lib && npm run test:cjs:clean","copy:cjs":"ts-node-esm scripts/build/copy-cjs-esm.ts cjs","copy:esm":"ts-node-esm scripts/build/copy-cjs-esm.ts esm","lint:fix":"npm run lint -- --fix","test:cjs":"npm run build:cjs && npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:esm":"npm run build:esm && cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","build:cjs":"npm run copy:cjs && tsc --build tsconfig.cjs.json","build:esm":"npm run copy:esm && tsc --build tsconfig.esm.json","clean:lib":"rimraf ./lib","lint:strict":"npm run lint -- --max-warnings 0","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts"},"_npmUser":{"name":"kelerchian","email":"kelerchian@gmail.com"},"repository":{"url":"git+https://github.com/Actyx/machines.git","type":"git"},"_npmVersion":"8.10.0","description":"asymmetric replicated state machines: runtime support","directories":{},"_nodeVersion":"18.18.2","dependencies":{"zod":"^3.21.4","events":"^3.3.0","ts-node":"^10.9.1","@actyx/sdk":"^0.5.7","typescript":"^4.9.5","fast-equals":"^5.0.1","@types/events":"^3.0.0","typed-emitter":"^2.1.0","zod-validation-error":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^10.2.6","jest":"^29.4.2","eslint":"^8.28.0","rimraf":"^4.4.0","ts-jest":"^29.0.5","prettier":"^2.8.0","cross-env":"^7.0.3","@types/glob":"^8.1.0","@jest/globals":"^29.4.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@typescript-eslint/parser":"^5.45.0","@typescript-eslint/eslint-plugin":"^5.45.0"},"optionalDependencies":{"zod":"^3.21.4","zod-validation-error":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/machine-runner_0.5.7_1708070346091_0.8549896368023358","host":"s3://npm-registry-packages"}},"0.5.8":{"name":"@actyx/machine-runner","version":"0.5.8","description":"asymmetric replicated state machines: runtime support","type":"module","types":"./lib/esm/index.d.ts","module":"./lib/esm/index.js","main":"./lib/cjs/index.js","exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"./test-utils":{"import":"./lib/esm/test-utils/index.js","require":"./lib/cjs/test-utils/index.js"}},"repository":{"type":"git","url":"git+https://github.com/Actyx/machines.git"},"scripts":{"build":"npm run build:esm && npm run build:cjs && npm run build:copy-package-json","copy:esm":"ts-node-esm scripts/build/copy-cjs-esm.ts esm","build:esm":"npm run copy:esm && tsc --build tsconfig.esm.json","copy:cjs":"ts-node-esm scripts/build/copy-cjs-esm.ts cjs","build:cjs":"npm run copy:cjs && tsc --build tsconfig.cjs.json","build:copy-package-json":"ts-node-esm scripts/build/copy-package-json.ts","clean":"npm run clean:lib && npm run test:cjs:clean","clean:lib":"rimraf ./lib","test":"npm run test:esm && npm run test:cjs","test:esm":"npm run build:esm && cross-env NODE_OPTIONS=--experimental-vm-modules jest --config=tests/esm/jest.config.ts","test:cjs":"npm run build:cjs && npm run test:cjs:clean && npm run test:cjs:copy && jest --config=tests/cjs/jest.config.ts","test:cjs:copy":"ts-node-esm scripts/test/cjs-copy.ts","test:cjs:clean":"ts-node-esm scripts/test/cjs-remove.ts","lint":"npx eslint src/**/*.ts","lint:strict":"npm run lint -- --max-warnings 0","lint:fix":"npm run lint -- --fix","prepublishOnly":"npm run clean && npm run build && npm run test && npm run lint"},"keywords":["local-first"],"author":{"name":"Actyx AG"},"license":"Apache-2.0","devDependencies":{"@jest/globals":"^29.4.2","@types/glob":"^8.1.0","@typescript-eslint/eslint-plugin":"^5.45.0","@typescript-eslint/parser":"^5.45.0","cross-env":"^7.0.3","eslint":"^8.28.0","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","glob":"^10.2.6","jest":"^29.4.2","prettier":"^2.8.0","rimraf":"^4.4.0","ts-jest":"^29.0.5"},"dependencies":{"@actyx/sdk":"^0.5.11","@types/events":"^3.0.0","events":"^3.3.0","fast-equals":"^5.0.1","ts-node":"^10.9.1","typed-emitter":"^2.1.0","typescript":"^4.9.5","zod":"^3.21.4","zod-validation-error":"^3.0.0"},"optionalDependencies":{"zod":"^3.21.4","zod-validation-error":"^3.0.0"},"gitHead":"f3a8c317304616f95b31d13335375cf1929d81b1","bugs":{"url":"https://github.com/Actyx/machines/issues"},"homepage":"https://github.com/Actyx/machines#readme","_id":"@actyx/machine-runner@0.5.8","_nodeVersion":"19.2.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-JnWQ9v7IsHQ111RBmfoFxam+sHBDbF8yr+f/NbdD+g6sKwm8sXA6uZ3NryZdJxc/6b3bOH+TGpN5KqLBvPe9kQ==","shasum":"58ab429af8a17d63d5dece8e2c2053c9447bc665","tarball":"https://registry.npmjs.org/@actyx/machine-runner/-/machine-runner-0.5.8.tgz","fileCount":131,"unpackedSize":628684,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCuoSqsb+Ik3atT/b/SKS++kWM4hRcRqyteTY47yWxVuAIgUvaW512B1F/RGeT6NT7+ztvFpaxkYbC20ASZ74HAJrI="}]},"_npmUser":{"name":"roland.kuhn","email":"info@rolandkuhn.com"},"directories":{},"maintainers":[{"name":"roland.kuhn","email":"info@rolandkuhn.com"},{"name":"ostollmann","email":"oliver@alithia.net"},{"name":"kelerchian","email":"kelerchian@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/machine-runner_0.5.8_1779215549265_0.5677290449135699"},"_hasShrinkwrap":false}},"time":{"created":"2023-04-04T14:48:37.782Z","modified":"2026-05-19T18:32:29.601Z","0.1.0":"2023-04-04T14:48:38.127Z","0.2.0":"2023-04-18T07:39:51.657Z","0.3.0":"2023-04-28T09:34:32.273Z","0.3.1":"2023-05-04T08:45:12.119Z","0.4.0":"2023-05-23T18:49:38.068Z","0.4.1":"2023-05-24T11:56:26.983Z","0.4.2":"2023-05-24T16:24:23.866Z","0.4.3":"2023-06-14T09:27:42.880Z","0.4.4":"2023-08-01T11:46:11.900Z","0.4.5":"2023-09-05T11:51:23.725Z","0.5.0":"2023-09-19T11:28:16.391Z","0.5.1":"2023-10-09T11:54:32.895Z","0.5.2":"2023-11-23T14:16:58.988Z","0.5.3":"2023-12-01T10:50:06.636Z","0.5.4":"2024-01-24T05:22:54.308Z","0.5.5":"2024-01-25T18:08:12.499Z","0.5.6":"2024-01-25T18:28:37.959Z","0.5.7":"2024-02-16T07:59:06.289Z","0.5.8":"2026-05-19T18:32:29.447Z"},"bugs":{"url":"https://github.com/Actyx/machines/issues"},"author":{"name":"Actyx AG"},"license":"Apache-2.0","homepage":"https://github.com/Actyx/machines#readme","keywords":["local-first"],"repository":{"type":"git","url":"git+https://github.com/Actyx/machines.git"},"description":"asymmetric replicated state machines: runtime support","maintainers":[{"name":"roland.kuhn","email":"info@rolandkuhn.com"},{"name":"ostollmann","email":"oliver@alithia.net"},{"name":"kelerchian","email":"kelerchian@gmail.com"}],"readme":"# Machine Runner\n\nThis library offers a TypeScript DSL for writing state machines and executing them in a fully decentralised fashion using the [Actyx](https://developer.actyx.com/) peer-to-peer event stream database.\nFor an overview of the project this library is part of please refer to [the GitHub repository](https://github.com/Actyx/machines).\n\nThe detailed documentation of this library is provided in its JsDoc comments.\n\n## Example usage\n\n[More detailed tutorial can be found here](../docs/swarm-workflow)\n\nWe demonstrate the usage of our decentralized state machines on an example from manufacturing automation, i.e. the factory shop floor: a warehouse requests the fleet of logistics robots to pick something up and bring it somewhere else.\nOur task is to write the logic for the warehouse and for each of the robots so that the job will eventually be done.\nSince there are many robots we use an auction to settle who will do it.\n\n### Declaring the machines\n\nFirst we define our set of events:\n\n```typescript\n// sent by the warehouse to get things started\nconst requested = Event.design('requested')\n  .withPayload<{ id: string; from: string; to: string }>()\n// sent by each available candidate robot to register interest\nconst bid = Event.design('bid')\n  .withPayload<{ robot: string; delay: number }>()\n// sent by the robots\nconst selected = Event.design('selected')\n  .withPayload<{ winner: string }>()\n\n// declare a precisely typed tuple of all events we can now choose from\nconst transportOrderEvents = [requested, bid, selected] as const\n```\n\nThen we can declare a swarm protocol using these events:\n\n```typescript\nconst transportOrder = SwarmProtocol.make('transportOrder', transportOrderEvents)\n```\n\nNow we build two machines that participate in this protocol: the `warehouse` will request the material transport, while the fleet of `robot` will figure out who does it.\nThe `warehouse` is much simpler in this initial part of the workflow since it has no further role after making the request — in a real implementation the protocol would go on to include the actual delivery.\n\n```typescript\n// initialize the state machine builder for the `warehouse` role\nconst TransportOrderForWarehouse =\n  transportOrder.makeMachine('warehouse')\n\n// add initial state with command to request the transport\nexport const InitialWarehouse = TransportOrderForWarehouse\n  .designState('Initial')\n  .withPayload<{ id: string }>()\n  .command('request', [requested], (ctx, from: string, to: string) =>\n                                   [{ id: ctx.self.id, from, to }])\n  .finish()\n\nexport const DoneWarehouse = TransportOrderForWarehouse.designEmpty('Done').finish()\n\n// describe the transition into the `Done` state after request has been made\nInitialWarehouse.react([requested], DoneWarehouse, (_ctx, _r) => [{}])\n```\n\nThe `robot` state machine is constructed in the same way, albeit with more commands and state transitions:\n\n```typescript\nconst TransportOrderForRobot = transportOrder.makeMachine('robot')\n\ntype Score = { robot: string; delay: number }\ntype AuctionPayload =\n  { id: string; from: string; to: string; robot: string; scores: Score[] }\n\nexport const Initial = TransportOrderForRobot.designState('Initial')\n  .withPayload<{ robot: string }>()\n  .finish()\nexport const Auction = TransportOrderForRobot.designState('Auction')\n  .withPayload<AuctionPayload>()\n  .command('bid', [bid], (ctx, delay: number) =>\n                         [{ robot: ctx.self.robot, delay }])\n  .command('select', [selected], (_ctx, winner: string) => [{ winner }])\n  .finish()\nexport const DoIt = TransportOrderForRobot.designState('DoIt')\n  .withPayload<{ robot: string; winner: string }>()\n  .finish()\n\n// ingest the request from the `warehouse`\nInitial.react([requested], Auction, (ctx, r) => ({\n  ...ctx.self,\n  ...r.payload,\n  scores: [],\n}))\n\n// accumulate bids from all `robot`\nAuction.react([bid], Auction, (ctx, b) => {\n  ctx.self.scores.push(b.payload)\n  return ctx.self\n})\n\n// end the auction when a selection has happened\nAuction.react([selected], DoIt, (ctx, s) =>\n  ({ robot: ctx.self.robot, winner: s.payload.winner }))\n```\n\n### Checking the machines\n\n<img src=\"https://raw.githubusercontent.com/Actyx/machines/62fbda79d27a71260159c2688f0f57ef4c9e13ca/machine-runner/example-workflow.png\" alt=\"workflow\" width=\"300\" />\n\nThe part of the transport order workflow implemented in the previous section is visualized above as a UML state diagram.\nWith the `@actyx/machine-check` library we can check that this workflow makes sense (i.e. it achieves eventual consensus, which is the same kind of consensus used by the bitcoin network to settle transactions), and we can also check that our state machines written down in code implement this workflow correctly.\n\nTo this end, we first need to declare the graph in JSON notation:\n\n```typescript\nconst proto: SwarmProtocolType = {\n  initial: 'initial',\n  transitions: [\n    { source: 'initial', target: 'auction',\n      label: { cmd: 'request', logType: ['requested'], role: 'warehouse' } },\n    { source: 'auction', target: 'auction',\n      label: { cmd: 'bid', logType: ['bid'], role: 'robot' } },\n    { source: 'auction', target: 'doIt',\n      label: { cmd: 'select', logType: ['selected'], role: 'robot' } },\n  ]\n}\n```\n\nThe naming of states does not need to be the same as in our code, but the event type names and the commands need to match.\nWith this preparation, we can perform the behavioral type checking as follows:\n\n```typescript\nimport { SwarmProtocolType, checkProjection, checkSwarmProtocol } from '@actyx/machine-check'\n\nconst robotJSON =\n  TransportOrderForRobot.createJSONForAnalysis(Initial)\nconst warehouseJSON =\n  TransportOrderForWarehouse.createJSONForAnalysis(InitialWarehouse)\nconst subscriptions = {\n  robot: robotJSON.subscriptions,\n  warehouse: warehouseJSON.subscriptions,\n}\n\n// these should all print `{ type: 'OK' }`, otherwise there’s a mistake in\n// the code (you would normally verify this using your favorite unit\n// testing framework)\nconsole.log(\n  checkSwarmProtocol(proto, subscriptions),\n  checkProjection(proto, subscriptions, 'robot', robotJSON),\n  checkProjection(proto, subscriptions, 'warehouse', warehouseJSON),\n)\n```\n\n### Running the machines\n\n`@actyx/machine-runner` relies upon [Actyx](https://developer.actyx.com) for storing/retrieving events and sending them to other nodes in the swarm.\nIn other words, Actyx is the middleware that allows the `warehouse` and `robot` programs on different computers to talk to each other, in a fully decentralized peer-to-peer fashion and without further coordination — for maximum resilience and availability.\nTherefore, before we can run our machines we need to use the Actyx SDK to connect to the local Actyx service:\n\n```typescript\nconst actyx = await Actyx.of(\n  { appId: 'com.example.acm', displayName: 'example', version: '0.0.1' })\nconst tags = transportOrder.tagWithEntityId('4711')\nconst robot1 = createMachineRunner(actyx, tags, Initial, { robot: 'agv1' })\nconst warehouse = createMachineRunner(actyx, tags, InitialWarehouse,\n                                      { id: '4711' })\n```\n\nThe `tags` can be thought of as the name of a [dedicated pub–sub channel](https://developer.actyx.com/docs/conceptual/tags) for this particular workflow instance.\nWe demonstrate how to create both a robot and the warehouse, even though you probably won’t do that on the same computer in the real world.\n\nGetting the process started means interacting with the state machines:\n\n```typescript\nfor await (const state of warehouse) {\n  if (state.is(InitialWarehouse)) {\n    await state.cast().commands()?.request('from', 'to')\n  } else {\n    // this role is done\n    break\n  }\n}\n```\n\nThe `warehouse` machine implements the [async iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols) JavaScript protocol, which makes it conveniently consumable using a `for await (...)` loop.\nExiting this loop, e.g. using `break` as shown, will destroy the `warehouse` running machine, including cancelling the underlying Actyx event subscription for live updates.\n\nUsing the `robot` role we demonstrate a few more features of the machine runner:\n\n```typescript\nlet IamWinner = false\n\nfor await (const state of robot1) {\n  if (state.is(Auction)) {\n    const open = state.cast()\n    if (!open.payload.scores.find((s) => s.robot === open.payload.robot)) {\n      await open.commands()?.bid(1)\n      setTimeout(() => {\n        const open = robot1.get()?.as(Auction)\n        open && open.commands()?.select(bestRobot(open.payload.scores))\n      }, 5000)\n    }\n  } else if (state.is(DoIt)) {\n    const assigned = state.cast()\n    IamWinner = assigned.payload.winner === assigned.payload.robot\n    if (!IamWinner) break\n    // now we have the order and can start the mission\n  }\n}\n```\n\nThe first one is that the accumulated state is inspected in the `state.is(Auction)` case to see whether this particular robot has already provided its bid for the auction.\nIf not, it will do so by invoking a command, which will subsequently lead to the emission of a `bid` event and consequently to a new state being emitted from the machine, so a new round through the `for await` loop — this time we’ll find our bid in the list, though.\n\nThe second part is that upon registering our bid, we also set a timer to expire after 5sec.\nWhen that happens we synchronously check the _current_ state of the workflow (since it will have changed, and if some other robot got to this part first, the auction may already be over).\nIf the workflow still is in the `Auction` state, we compute the best robot bid (the logic in `bestRobot` is where _your expertise_ would go) and run the `select()` command to emit the corresponding event and end the auction.\n\nThe third feature becomes relevant once the auction has ended: we check if our robot is indeed the winner and record that in a variable `IamWinner`, i.e. in the current application in-memory state.\nThen we can use this information in all following states as well.\n\n### Change detection on for-await loop\n\nWhen using a for-await loop with the machine runner, the loop iterates only if all of the following criteria are met:\n\n- A 'caughtUp' event is emitted; It happens when the machine runner receives the latest event published in Actyx;\n- An event between the current `caughtUp` and the previous one triggers a change to the machine's state; The state change is determined by comparing the name and payload between the state before and after the `caughtUp` event. The comparison uses the `deepEqual` function provided by the [fast-equal package](https://www.npmjs.com/package/fast-equals).\n\n### The consequences of Eventual Consensus\n\nThe design goal of Actyx and the machine runner is to provide uncompromising resilience and availability, meaning that if a device is capable of computation it shall be able to make progress, independent of the network.\nThis implies that two devices that are not currently connected (which also includes the brief time lag introduced by ping times between them!) can make contradicting choices in a workflow.\n\nIn the example above, we deliberately didn’t use a `manager` or `referee` role to select the winner in the auction, since that decision maker would be a single-point-of-failure in the whole process.\nInstead, each robot independently ensures that after at five seconds a decision will be made — even if two robots concurrently come to different conclusions and both emit a `selected` event.\n\nMachine runner resolves this conflict by using only the `selected` event that comes first in the Actyx event sort order; in other words, Actyx arbitrarily picks a winner and the losing event is discarded.\nIf a robot saw itself winning, started the mission, and then discovers that its win turned out to be invalid, it will have to stop the mission and pick a new one.\n\n### Errors\n\nThe following section describes various unavoidable errors that can arise due to the language design of JavaScript and TypeScript combined with the library's inherent distributed and asynchronous nature.\n\n#### Errors Emittable On Command Calls\n\nA command call returns a promise. The promise's resolution marks the success of the events' publication to Actyx.\n\n```typescript\nconst whenParticularState = state.as(ParticularState)\nif (whenParticularState) {\n  // awaits the promise, which consequently may break the control flow if there is a thrown exception / promise rejection\n  await whenParticularState.commands()?.someCommand()\n}\n```\n\nHowever, certain scenarios can result in async errors (i.e. a rejected promise) which will be explained momentarily.\n\nTo avoid errors, the general best practice is to not stash commands in an external variable and defer the call.\nThe `commands()` will return undefined when possible errors are detected.\nThe passing of time might have invalidated the detection result, which is the stashed value.\n\n```typescript\n// Good\nawait whenParticularState.commands()?.someCommand()\n\n// Bad\nconst commands = whenParticularState.commands()\nawait someLongRunningTask() // this may have invalidated the error detection when finished executing\nawait commands?.someCommand()\n```\n\nAvoid accidentally not issuing commands by using state objects produced by `next`,\n`peek`, and `for-await` loop, as opposed to the `get` method. These methods\nensure the newly retrieved state objects are not expired. It is recommended to\nonly use `get` method when it is necessary to retrieve state objects immediately\n(without waiting for the machine to finish processing the next event batch) at\nthe cost of possibly getting expired, locked, or non-caught-up state objects,\nsuch as when observing a machine runner's state passively.\n\n```typescript\n// Guaranteed working, assuming there's no other\nconst whenOn = (await r.machine.peek()).value?.as(On)\nif (whenOn) {\n  await whenOn.commands()?.toggle() // returns promise\n}\n\n// There's a chance that commands is not available\nconst whenOn = r.machine.get().value?.as(On)\nif (whenOn) {\n  await whenOn.commands()?.toggle() // may be undefined\n}\n```\n\nThe list of errors that may arise is as follows.\n\n- `MachineRunnerErrorCommandFiredAfterExpired`:\n\n  This error results from a command call to an expired state or a machine-runner with a non-empty event queue.\n\n  An \"Expired\" state object is a state object that does not match its machine-runner's current state object. An expired state object can be obtained by means of storing a state object's reference in a variable and using it at a later time when the machine-runner has transitioned to another state.\n\n  The non-empty event queue condition happens when a machine-runner is waiting for the completion of a multi-events transition. In a multi-events transition, different parts of this ordered events chain can arrive at different points in time. The queue is not empty in the period between the first and the last arrival.\n\n- `MachineRunnerErrorCommandFiredAfterLocked`:\n\n  This error results from a command call to a locked state object/machine-runner. It is generally avoidable by not having a command being called twice in a concurrent fashion in the same state.\n\n  \"Locked\" is a transitionary state object/machine-runner between the time a command is called and it receives a rejection. When a command results in a failed publication, the source state objects are unlocked, thus subsequent commands will be available. When a command results in a successful publication, the machine-runner is unlocked, but the issuing state object is kept locked to prevent subsequent command calls. The machine-runner will immediately produce a new state object with commands enabled, accessible via `next`, `peek`, and `for-await` loop.\n\n- `MachineRunnerErrorCommandFiredAfterDestroyed`:\n\n  This error results from a command call to a state object of a destroyed machine.\n\n  \"Destroyed\" is the status of a machine-runner that has been destroyed, either by explicitly calling its `.destroy()` method or by breaking out of the `for-await` that is applied to the runner.\n\n- `MachineRunnerErrorCommandFiredWhenNotCaughtUp`:\n\n  This error results from a command call to a state object whose machine is not caught up.\n\n  \"Caught up\" is a state where a machine-runner has processed all published events in a subscription stream. Actyx sends events in batches. During the processing of a batch, the machine-runner is not caught up.\n\n## Features\n\n### Observe Changes and Errors\n\nAn alternative use case of a machine runner is to listen to its events.\n\nThe `next` event emits states whenever a new state is calculated.\nWhen not using the machine, calling `destroy` is required to close the connection to Actyx.\n\n```typescript\nconst warehouse = createMachineRunner(actyx, tags, InitialWarehouse, { id: '4711' })\n\nwarehouse.events.on('next', (state) => {\n  if (state.is(InitialWarehouse)) {\n    // ...\n  }\n})\n\nawait untilWareHouseIsNotUsedAnymore()\n\nwarehouse.destroy()\n```\n\n`error` event can be used to capture errors from machine-runner.\n\n```\nimport {\n  MachineRunnerErrorCommandFiredAfterLocked,\n  MachineRunnerErrorCommandFiredAfterDestroyed,\n  MachineRunnerErrorCommandFiredAfterExpired,\n} from \"@actyx/machine-runner\"\n\nwarehouse.events.on('error', (error) => {\n  if (error instanceof MachineRunnerErrorCommandFiredAfterLocked) {\n    //\n  }\n  \n  if (error instanceof MachineRunnerErrorCommandFiredAfterDestroyed) {\n    //\n  }\n\n  if (error instanceof MachineRunnerErrorCommandFiredAfterExpired) {\n    //\n  }\n})\n```\n\n#### Event List\n\n##### `next`\n\nA `next` event is emitted when a state transition happens and the machine runner has processed all events matching the supplied tag.\n\nThe payload is `StateOpaque`, similar to the value produced in the `for-await` loop. \n\n##### `error`\n\nAn `error` event is emitted when an error happened inside the runner. Currently this is the list of the errors:\n\n- A command is called when locked i.e. another command is being issued in the same machine\n- A command is called when the corresponding state is expired i.e. another command has been successfully issued from that state\n- A command is called on a destroyed machine\n\nThe payload has an error subtype.\n\n##### `change`\n\nA `change` event is emitted when a `next` event is emitted, a command is issued, a command’s event has been published, or a subscription error happened due to losing a connection to Actyx.\nThis event is particularly useful in UI code where not only state changes are tracked, but also command availability and errors.\n\nThe payload is of type `StateOpaque`, like the value produced in the `for-await` loop. \n\n##### `debug.bootTime`\n\nA `debug.bootTime` event is emitted when a machine runner has caught up with its Actyx subscription (i.e. finished processing its events until the latest one) for the first time.\n\nThe payload includes information on the duration of the booting, the number of events processed, and the identity containing the swarm name, machine name, and tags.\n\n```typescript\n// Logs every time a machine booting takes more than 100 milliseconds or processed more than 100 events\nmachine.events.on(\n  'debug.bootTime',\n  ({ durationMs, eventCount, identity: { machineName, swarmProtocolName, tags } }) => {\n    if (durationMs > 100 || eventCount > 100) {\n      console.warn(\n        `Boot of \"${swarmProtocolName}-${machineName}\" tagged \"${tags.toString()}\" takes longer than usual (${durationMs} milliseconds of to process ${eventCount} events)`,\n      )\n    }\n  },\n)\n```\n\n### Zod on MachineEvent\n\n[Zod](https://zod.dev/) can be used to define and validate MachineEvents. On designing an event, use `withZod` instead of `withPayload`.\n\n```typescript\nexport const requested = MachineEvent.design('requested').withPayload<{\n  id: string\n  from: string\n  to: string\n}>()\n```\n\nThe above code can be converted into:\n\n```typescript\nimport * as z from 'zod'\n\nexport const requested = MachineEvent.design('requested').withZod(\n  z.object({\n    id: z.string(),\n    from: z.string(),\n    to: z.string(),\n  }),\n)\n```\n\nA zod-enabled event factory will have these additional features enabled:\n\n- When receiving events from Actyx, a `MachineRunner` will compare the event payload to the embedded `ZodType`, in addition to the mandatory event type checking. Events that don't match the defined `MachineEvent` on the reaction will be ignored by the `MachineRunner`. For example, see the reaction definition below:\n  ```typescript\n  InitialWarehouse.react([requested], DoneWarehouse, (_ctx, _r) => [{}])\n  ```\n  In a scenario where an incorrectly created event comes from Actyx `{ \"type\": \"requested\", id: \"some_id\" }`, the said event will not be regarded as valid and will be ignored.\n- When creating an event via the factory, which would be `requested.make` for the example above, an extra step will be taken to validate the payload. When the `make` method is called with an incorrect value, an exception will be thrown because internally `ZodType.parse` is used to validate the payload. For example:\n\n  ```typescript\n  // Will throw because `{}` is not a valid value for the previously provided zod schema\n  // But it takes `as any` to bypass TypeScript compiler in order to do this\n  const singleEvent = requested.make({} as any)\n  ```\n\n  An extra care must be taken when the `ZodType` is [refined](https://zod.dev/?id=refine). In contrast to a mismatch in schema, a refined `ZodType` is not caught at compile-time. Therefore, a compilation process and IDE warnings is not sufficient to catch these errors. For example:\n\n  ```typescript\n  export const requested = MachineEvent.design('requested').withZod(\n    z\n      .object({\n        id: z.string(),\n        from: z.string(),\n        to: z.string(),\n      })\n      .refine((payload) => {\n        return payload.from == payload.to\n      }),\n  )\n\n  // Will throw exception because `from` is same with `to`.\n  // This mistake can't be caught by TypeScript compiler\n  requested.make({\n    id: 'some_id',\n    from: 'some_location',\n    to: 'some_location',\n  })\n  ```\n\n### Global Event Emitter\n\nSome global event emitters are provided.\nThese event emitters will emit events from all machine runners in the same process.\n\n```typescript\nimport { globals as machineRunnerGlobals } from \"@actyx/machine-runner\";\n\nglobals.emitter.addListener(\"debug.bootTime\", ({ identity, durationMs, eventCount }) => {\n  if (durationMs > 100) {\n    console.warn(`${identity} boot time takes more than 100ms (${durationMs}ms) processing ${eventCount} events`);\n  }\n});\n\nglobals.emitter.addListener(\"error\", console.error);\n```\n\n### Extra Tags\n\nIn the case extra tags are required to be attached in events when invoking commands, extra tags can be registered on a command definition. These extra tags will always be attached when the command is invoked.\n\n```typescript\n// State definition\nexport const InitialWarehouse = TransportOrderForWarehouse.designState('Initial')\n  .withPayload<{ id: string }>()\n  .command('request', [requested], (ctx, from: string, to: string) => {\n    return [\n      ctx.withTags(\n        [`transport-order-from:${from}`, `transport-order-to:${to}`],\n        { id: ctx.self.id, from, to }\n      )\n    ]\n  })\n  .finish()\n\n// Command call\n// The resulting events will include the extra tags\n// `transport-order-from:${from}`,\n// `transport-order-to:${to}`\nconst stateAsInitialWarehouse = state\n  .as(InitialWarehouse)?\n  .commands()?\n  .request(from: `source`, to: `destination`);\n```\n\n### `refineStateType`\n\nA `MachineRunner` instance now has a new method available: `refineStateType` which return a new aliasing machine.\nState payload produced by the returned machine is typed as the **union of all possible payload types** instead of `unknown`.\nThe union is useful to be used in combination with [type-narrowing](https://www.typescriptlang.org/docs/handbook/2/narrowing.html).\n\nUsage example:\n\n```typescript\n// States defined in previous examples\nconst allStates = [Initial, Auction, DoIt] as const\nconst machine = createMachineRunner(actyx, tags, Initial, { robot: 'agv1' }).refineStateType(\n  allStates,\n)\n\nconst state = machine.get()\nif (state) {\n  const payload = state.payload\n\n  // Equals to:\n  //  | { robot: string }\n  //  | { id: string; from: string; to: string; robot: string; scores: Score[] }\n  //  | { robot: string; winner: string }\n  type PayloadType = typeof state.payload\n\n  // 'robot' property is accessible directly because it is available in all variants\n  const robot = payload.robot\n\n  // Used with type-narrowing\n  if ('winner' in payload) {\n    // here the type of payload is narrowed to { robot: string; winner: string }\n  } else if ('id' in payload) {\n    // here the type of payload is narrowed to { id: string; from: string; to: string; robot: string; scores: Score[] }\n  } else {\n    // here the type of payload is narrowed to { robot: string }\n  }\n}\n```\n\nThe argument to `.refineStateType` must be an array containing all previously defined states.\nAny other argument will throw an error.\n\nThe aliasing machine shares the original machine's internal state.\nAll method calls, such as `.destroy`, create the same effect as when enacted on the original machine.\n\n## Developer support\n\nIf you have any questions, suggestions, or just want to chat with other interested folks, you’re welcome to join our discord chat. Please find a current invitation link on [the top right of the Actyx docs page](https://developer.actyx.com/).\n","readmeFilename":"README.md"}