{"_id":"@bruju/automata-composer","_rev":"2-7496de8fc0c6b2e674a9fdef5d4ca546","name":"@bruju/automata-composer","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@bruju/automata-composer","version":"1.0.0","description":"Basic finite state automata building by composition","main":"index.js","types":"index.d.ts","scripts":{"test":"npx mocha -r ts-node/register *.test.ts","nyc":"npx nyc mocha -r ts-node/register *.test.ts","build":"npx tsc --build","prepack":"npm run build"},"keywords":[],"author":{"name":"Julian Bruyat","email":"julian@bruy.at"},"repository":{"type":"git","url":"git+https://github.com/BruJu/automata-composer.git"},"license":"MIT","devDependencies":{"@types/mocha":"^9.1.0","mocha":"^9.2.1","nyc":"^15.1.0","ts-node":"^10.5.0","typescript":"^4.5.5"},"gitHead":"a88e6009b30b7fc06759fa81dee7759d70f62e5c","bugs":{"url":"https://github.com/BruJu/automata-composer/issues"},"homepage":"https://github.com/BruJu/automata-composer#readme","_id":"@bruju/automata-composer@1.0.0","_nodeVersion":"16.6.1","_npmVersion":"7.23.0","dist":{"integrity":"sha512-oKlfuP8xP0SUAtuI5H4REor7bL3ZTneK/sulAAOcyUI8zjgCLrs4mcZu9zcaIDBleYKdJauAJN4UbXfbWvdFNQ==","shasum":"5e1badd20a760227a00c583898dadd4cab96aa94","tarball":"https://registry.npmjs.org/@bruju/automata-composer/-/automata-composer-1.0.0.tgz","fileCount":5,"unpackedSize":19965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFmlaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmobfQ/+MdLS63WXqoWlUR79zS3SyWsd5FYlNCRkMSxq+nThRyXnwmgE\r\nLmNk5GNnCBfB5EgeVCtAUxAwia8AOok9P7OIJ8A8kBoYBpE3YtorYmjxFxSb\r\n84iGNKzsewQ4AXuhtCR4iPa6DNDxY22L6krh3NSGlfW1JjSOG90a32wJV1hM\r\n9YeTofOswZnvw3mTq+RsuGWX4o/CN+PhtHl3hfSteOpB4/ue+9jOOEaYsM2+\r\n1PSs1+Gsn43dCoPitb/mkNYGyhUwN0YKU+GcmYiMF0t8y/8V6EmiRSnv54A2\r\nJFXb2o+20kd/GxcpmX/c+5fE3md3CKhZsdU6OE9H9yh6K+Va5ACAl5xBlGiM\r\nlW4aZkQePPRumXl15SRQV85C6emgn44idN4zqax1W/6j4awj3uBbJqJYTjts\r\nLPU/vMoi0/VfAMeUi2oFmapOI/oifQujBdWmXyuVnM+upAJTFF77l0FJlm2L\r\nMOnlctCnKzE4yC7zaRvO+l8JNwMdH1apgbmPnHHA+EkwwoO52tDr6WxCissG\r\nhEMJM4/Lw5nI9GbCo4u2biDBeLfuUJjhp/U4bgM35tUWNuWMtNqvda6PB6k2\r\nLeywPcQ9tbSVKdwr2+p/k3Q0xdvEIXZBTWU0ThotFfjukhZEAktSmPUwSWQU\r\nOmnkj4I3zOkOaPgP+H6gPt/0eGEt8dTCVN0=\r\n=nrWO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsw/sHAD1kNu8kKOw6CterMcbb+SdkRCIVb6KS0QhhsAIgXqcadpUJ+6f7VwTShCipclx8BMx7lTjfqMHtLXwBU9U="}]},"_npmUser":{"name":"bruju","email":"bruyat.ju@live.fr"},"directories":{},"maintainers":[{"name":"bruju","email":"bruyat.ju@live.fr"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/automata-composer_1.0.0_1645635930421_0.2396526412304174"},"_hasShrinkwrap":false},"1.0.1":{"name":"@bruju/automata-composer","version":"1.0.1","description":"Basic finite state automata building by composition","main":"index.js","types":"index.d.ts","scripts":{"test":"npx mocha -r ts-node/register *.test.ts","nyc":"npx nyc mocha -r ts-node/register *.test.ts","build":"npx tsc --build","prepack":"npm run build"},"keywords":["Automata","FSA"],"author":{"name":"Julian Bruyat","email":"julian@bruy.at"},"repository":{"type":"git","url":"git+https://github.com/BruJu/automata-composer.git"},"license":"MIT","devDependencies":{"@types/mocha":"^9.1.0","mocha":"^9.2.1","nyc":"^15.1.0","ts-node":"^10.5.0","typescript":"^4.5.5"},"gitHead":"20a89c5f1271fba1415968427112f2d2755d886f","bugs":{"url":"https://github.com/BruJu/automata-composer/issues"},"homepage":"https://github.com/BruJu/automata-composer#readme","_id":"@bruju/automata-composer@1.0.1","_nodeVersion":"16.6.1","_npmVersion":"7.23.0","dist":{"integrity":"sha512-9zRGE9tZuKDLDcwEh3ERYtxV/Ko6YkdHramUb+0qCWXBspEl5hyT8UTXqqoecNO1RNNvhU1AYF05rahtM9xR7g==","shasum":"fa40cae7d7c494abd4150a38a02375b46f6f9081","tarball":"https://registry.npmjs.org/@bruju/automata-composer/-/automata-composer-1.0.1.tgz","fileCount":5,"unpackedSize":21193,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEngrztYHoDRf+N3a7kKHysmX2MO2g8bjaMbxl+yngmjAiEAyvqrcXZOdS8LsYMmUX+w0Qus3ErP65Mga7ZNmwDZtWo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJigrA9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrGcQ//QLMGP4OlLm5tqYHKEGIR1N8Al9CjXK/y8Kdw8z7ypZTpgzds\r\n9iV0GP8ffAWEE5ThkY2OLREktRtJy5DpwUrdMhgzFJzDg4NhS868Oi/QSQ6d\r\nCzXB30sCMajwm85bnGjTFa/wI4vEr1tvvD8DVPPo5D3zsII7mLYRKq/heExn\r\nauuHn5p4dKDPHatGlnL8H80UsnFLYHsDF5OupMHFFyiQfIeHVMPkSyTDUUu1\r\n46tmLl+qR6tEDvD0DS8l5JeC6EakmU236aW0SKUFWkw+H14X9BIiTvYp2MIJ\r\nyxQDpRC5OAeiRZqA0T/WBt7oveSqw7uy+fhh6ZMFDUAV65oSWnL5pBcXpYK4\r\nQ3JwGYgzmYAJx+SwAqwsLXDWig5yhB+nI3yEI3zInCqj+tHNGlUVxjYxfJ2G\r\n5fr1JF+QWTSauTD3RrJGzn9dUFq2uJ66x+ARwv3jBajcDLUH/cYoOByEcCIW\r\nWn9JAIbeGd2EXeCBAsZs2xOShf9EOvAxoEMpAdf6NJFF/9xO2wQL+isetnsQ\r\nqIEgzVK8Yk11pAYiIlWPqzDNUSY8Bu9V6AvnoL8K2QJlCcNwAygD6FVhgPQO\r\nGkHD/u0wX+Ob8afrZB/QEWAqfkNnzJ7aFXfBxZjsPi4spLttkoTCIzGbs8dM\r\n77MbiVA5vJO8AG/ZzyiHzIxsPrxzfyheClc=\r\n=LDYq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"bruju","email":"bruyat.ju@live.fr"},"directories":{},"maintainers":[{"name":"bruju","email":"bruyat.ju@live.fr"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/automata-composer_1.0.1_1652731965451_0.9057584164743326"},"_hasShrinkwrap":false}},"time":{"created":"2022-02-23T17:05:30.375Z","1.0.0":"2022-02-23T17:05:30.582Z","modified":"2022-05-16T20:12:45.664Z","1.0.1":"2022-05-16T20:12:45.597Z"},"maintainers":[{"name":"bruju","email":"bruyat.ju@live.fr"}],"description":"Basic finite state automata building by composition","homepage":"https://github.com/BruJu/automata-composer#readme","keywords":["Automata","FSA"],"repository":{"type":"git","url":"git+https://github.com/BruJu/automata-composer.git"},"author":{"name":"Julian Bruyat","email":"julian@bruy.at"},"bugs":{"url":"https://github.com/BruJu/automata-composer/issues"},"license":"MIT","readme":"# Automata Composer\r\n\r\nThis package lets users build finite state automata by composing\r\nautomatas with the operators `chain` (concatenation), `or` (|),\r\n`maybe` (?), `star` (*), `plus` (+) and `inverse` (reverse all transitions).\r\n\r\nTransitions are strings of any length and minimization is automatically applied\r\nwhen the automata is built.\r\n\r\n\r\n## How to use\r\n\r\n### Recognize a word\r\n\r\n```js\r\nimport { unit } from \"@bruju/automata-composer\"; \r\nconst automata = unit(\"hamster\").build();\r\nconsole.log(automata.test([\"hamster\"])); // true\r\nconsole.log(automata.test([\"ham\", \"ster\"])); // false\r\n```\r\n\r\n\r\n### Recognize a known sequence\r\n\r\n```js\r\nimport { chain, unit } from \"@bruju/automata-composer\"; \r\nconst helloWorld = chain(unit(\"Hello\"), unit(\"world\")).build();\r\n\r\nconsole.log(helloWorld.test([\"Hello\", \"world\"])); // true\r\n```\r\n\r\n\r\n### A more complex pattern\r\n\r\n```js\r\nimport { chain, unit, or, plus, maybe } from \"@bruju/automata-composer\"; \r\n\r\nconst theAnimals = chain(\r\n  or(unit(\"Save\"), unit(\"Kill\")),\r\n  unit(\"the\"),\r\n  unit(\"animals\"),\r\n  plus(unit(\"!\")),\r\n  maybe(unit(\"(This is a GDQ reference)\"))\r\n).build();\r\n\r\n// Both true\r\nconsole.log(theAnimals.test([\"Save\", \"the\", \"animals\", \"!\", \"!\", \"!\"]));\r\nconsole.log(theAnimals.test([\r\n  \"Kill\", \"the\", \"animals\", \"!\", \"(This is a GDQ reference)\"\r\n]));\r\n```\r\n\r\n\r\n## Theory\r\n\r\nTheory is partly inspired by :\r\n- https://en.wikipedia.org/wiki/DFA_minimization\r\n- https://www.dcs.ed.ac.uk/home/mic/FiniteStateMachines2-slides.pdf \r\n\r\n\r\n## License\r\n\r\nLicensed under the MIT Licence by Julian Bruyat\r\n","readmeFilename":"README.md"}