{"_id":"@cureous/redux-elm-middleware","_rev":"3-894501aa772f3cc2b254101826f832be","name":"@cureous/redux-elm-middleware","dist-tags":{"latest":"6.1.0"},"versions":{"5.1.0":{"name":"@cureous/redux-elm-middleware","version":"5.1.0","description":"Elm middleware for redux. Forked from [stoeffel/redux-elm-middleware](https://github.com/stoeffel/redux-elm-middleware)","main":"index.js","scripts":{"test":"nyc --r html mocha --require babel-core/register","build":"babel src --out-dir .","codecov":"nyc report --reporter=text-lcov > coverage.lcov && codecov","release:major":"npm run build && xyz --repo git@github.com:cureous/redux-elm-middleware.git --increment major","release:minor":"npm run build && xyz --repo git@github.com:cureous/redux-elm-middleware.git --increment minor","release:patch":"npm run build && xyz --repo git@github.com:cureous/redux-elm-middleware.git --increment patch","example":"npm-run-all --parallel serve elm","serve":"cd examples && webpack-dev-server","elm":"cd examples && npm run elm:install && elm-live src/Reducer.elm --output build/elm.js","elm:install":"elm-package install -y && cd examples && elm-package install -y"},"babel":{"presets":["es2015","stage-0","react"]},"standard":{"ignore":["/build/"],"globals":["__DEV__","__TESTING__"],"rules":{"arrow-parens":0,"babel/arrow-parens":0},"parser":"babel-eslint"},"repository":{"type":"git","url":"git+https://github.com/cureous/redux-elm-middleware.git"},"author":{"name":"Christoph Hermann"},"license":"MIT","bugs":{"url":"https://github.com/cureous/redux-elm-middleware/issues"},"private":false,"homepage":"https://github.com/cureous/redux-elm-middleware#readme","dependencies":{"camelcase":"3.0.0"},"devDependencies":{"ava":"^0.15.2","babel":"^6.23.0","babel-cli":"^6.24.1","babel-core":"^6.7.7","babel-eslint":"^6.0.3","babel-loader":"^6.2.4","babel-polyfill":"^6.7.4","babel-preset-es2015":"^6.6.0","babel-preset-react":"^6.5.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.7.2","codecov":"^1.0.1","elm":"^0.18.0","elm-live":"^2.2.1","jsdom-test-browser":"^4.0.2","mocha":"^2.4.5","npm-run-all":"^3.0.0","nyc":"^8.4.0","ramda":"^0.21.0","react":"^15.0.1","react-dom":"^15.0.1","react-redux":"^4.4.5","react-router":"^2.4.0","react-router-redux":"^4.0.4","redux":"^3.5.2","redux-actions":"^0.11.0","redux-mock-store":"^1.0.2","redux-test-reducer":"^0.1.0","sinon":"^1.17.4","standard":"^8.1.0","standard-format":"^2.1.1","webpack":"^1.13.0","webpack-dev-server":"^1.14.1","xyz":"^1.0.1"},"files":["index.js","src/index.js","src/Redux.elm","src/Native/Redux.js","elm-package.json"],"gitHead":"861ad168f4c19b553b4d54ffb294e922f3090d50","_id":"@cureous/redux-elm-middleware@5.1.0","_npmVersion":"6.2.0","_nodeVersion":"10.7.0","_npmUser":{"name":"kuzzmi","email":"igor@kuzzmi.com"},"dist":{"integrity":"sha512-T0ktlAYLEl+drJO3wRCx8pOVKkqoyPF5Z5oKWIXVWyftbW2t6QpdXrZDJFdNYMo4d+Y8yeM9CmbOphv+RAQJrQ==","shasum":"c3a53b5e135d440ba7e04df9c64b6b882bf9d2bb","tarball":"https://registry.npmjs.org/@cureous/redux-elm-middleware/-/redux-elm-middleware-5.1.0.tgz","fileCount":7,"unpackedSize":15760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWi/1CRA9TVsSAnZWagAA0PQP/RlXxHDnCOHPBAh04Elo\nSWJsBl2LiCGMqAItFF9UA6QpQKEVZtzd5IwxL2GJc2jUYfH6u1G9iLDIbOT5\neoNhrQWdzsrT32amEn7zmgHSd8z/3L+dj4QOI49r4zpMpovnzTyK75pbzoD6\nH6gfDTeoQQZJyLgTpuH3Xb8hmzNngdmagdYiGS0oSs0hZU8IBfsEKUNkV4lE\ncNhk5qK+1dKZZUd91dMABmhu7ihTaMe7lyTBxRmnrKZk8Zq19HD7+laN1nIJ\niypZW5VgSeJCYu7dLxiROGq9FG6e95yOXpV+EtmQ9dPFTHckMWKf5nt6N/EO\n7LpPJTof37oFYPnNFUjfmqYy6mPMAA00chZ6MKfpr5x1+kAS//gJyCvuZcbU\nyHD0q08cmuKoGM7TrSH5xeWU6AkSdWq9AZacqykXaxN5PVQzrHFKnHwOOE7/\n6fEL4IGUdEUQE3B/HlYQh/h5c9Tp71hpeqnmee+6WuI5AP57msCQlL0FGCkW\nkW+7VL5VTSdvX/XM44R9T8ZoGjZRVLFT1GYRGh2VJP4Hyf9ZubhVl9rsqSqE\nUv7LoP4/a72v1CmFWP6SyZJbq3l9dyftnQ13gGPgwuADtKPAQZ2DfdnUqVlR\n6h0Jaee1hqh0nA/R8UEw5OxmTxuEPfFMLc3LavsqmK4R/lxuLIAtm/YIgdKw\nDz5C\r\n=LFjJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSTBKI9XSITaj15b7SefyEGcl3pR17TAcg+rGn7yLozwIgTBNOlyraoqNDBCfNLQaJiwwyv5ybs0DozDyRBvzhSLo="}]},"maintainers":[{"name":"etienne_cureous","email":"etienne@cureous.life"},{"name":"kuzzmi","email":"igor@kuzzmi.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-elm-middleware_5.1.0_1532637173354_0.24512179895958242"},"_hasShrinkwrap":false},"6.0.0":{"name":"@cureous/redux-elm-middleware","version":"6.0.0","description":"Elm middleware for redux. Forked from [stoeffel/redux-elm-middleware](https://github.com/stoeffel/redux-elm-middleware)","main":"index.js","scripts":{"test":"nyc --r html mocha --require babel-core/register","build":"babel src --out-dir .","codecov":"nyc report --reporter=text-lcov > coverage.lcov && codecov","release:major":"npm run build && xyz --repo git@github.com:cureous/redux-elm-middleware.git --increment major","release:minor":"npm run build && xyz --repo git@github.com:cureous/redux-elm-middleware.git --increment minor","release:patch":"npm run build && xyz --repo git@github.com:cureous/redux-elm-middleware.git --increment patch","example":"npm-run-all --parallel serve elm","serve":"cd examples && webpack-dev-server","elm":"cd examples && npm run elm:install && elm-live src/Reducer.elm --output build/elm.js","elm:install":"elm-package install -y && cd examples && elm-package install -y"},"babel":{"presets":["es2015","stage-0","react"]},"standard":{"ignore":["/build/"],"globals":["__DEV__","__TESTING__"],"rules":{"arrow-parens":0,"babel/arrow-parens":0},"parser":"babel-eslint"},"repository":{"type":"git","url":"git+https://github.com/cureous/redux-elm-middleware.git"},"author":{"name":"Christoph Hermann"},"license":"MIT","bugs":{"url":"https://github.com/cureous/redux-elm-middleware/issues"},"private":false,"homepage":"https://github.com/cureous/redux-elm-middleware#readme","dependencies":{"casex":"^1.0.1"},"devDependencies":{"ava":"^0.15.2","babel":"^6.23.0","babel-cli":"^6.24.1","babel-core":"^6.7.7","babel-eslint":"^6.0.3","babel-loader":"^6.2.4","babel-polyfill":"^6.7.4","babel-preset-es2015":"^6.6.0","babel-preset-react":"^6.5.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.7.2","codecov":"^1.0.1","elm":"^0.18.0","elm-live":"^2.2.1","jsdom-test-browser":"^4.0.2","mocha":"^2.4.5","npm-run-all":"^3.0.0","nyc":"^8.4.0","ramda":"^0.21.0","react":"^15.0.1","react-dom":"^15.0.1","react-redux":"^4.4.5","react-router":"^2.4.0","react-router-redux":"^4.0.4","redux":"^3.5.2","redux-actions":"^0.11.0","redux-mock-store":"^1.0.2","redux-test-reducer":"^0.1.0","sinon":"^1.17.4","standard":"^8.1.0","standard-format":"^2.1.1","webpack":"^1.13.0","webpack-dev-server":"^1.14.1","xyz":"^1.0.1"},"files":["index.js","src/index.js","src/Redux.elm","src/Native/Redux.js","elm-package.json"],"gitHead":"d1a8a698814770eadde2a07ed9f0a5957244656a","_id":"@cureous/redux-elm-middleware@6.0.0","_npmVersion":"6.2.0","_nodeVersion":"10.7.0","_npmUser":{"name":"kuzzmi","email":"igor@kuzzmi.com"},"dist":{"integrity":"sha512-TibYeoZ4aYAKQrgnind2VJli2GwUcCvSCuSvVqzrz70FA8y+A+qHW71vy0k3awaR3LnWC8lxrKu3xrhIWt21IQ==","shasum":"318f943e09ef7c002e0d1f788a77430b3c42235f","tarball":"https://registry.npmjs.org/@cureous/redux-elm-middleware/-/redux-elm-middleware-6.0.0.tgz","fileCount":7,"unpackedSize":18319,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbXL+BCRA9TVsSAnZWagAAusQP/j5yVJuKvI0TCK2uMXQX\npdBM3Jk+gQw2vaMSDY+Kp3Gz34uYStdGCx1Pe1KtPOm0zEuQeFzHdMN6kAcq\nWxNeg5n9eNayrsK4RvCA04hxEc5aNPeToWbS5CVL377TtN/dbyEQ0CxWUq7k\nj/Zy3Ww/DUxJI1V56zbqASSkbEyzhG45U5HjJn3yUfWIbIStEUUNugIRC8n7\nkwWGW5JHi1sD4G98Wu108+tJj4KiuUNJ6ZmfBdnGIUts0DOkskBekOOerLtW\nQtAtyry96m3i//yWKcm7/Dsjismb3sqivj9GyG+o/hqYJ4CVun6p9sbjQ9PB\nYKUhqcDDkOF7iK91yZa7uSO38zkLCUxGcMOinIrn8cNTWXZ6NDl9qpIQY3J7\n/j2ZV9TsL0Fh2SS6t9ingCgXvEU9wLLh1z86glKve0a0fBAsyn+mJ/3uQH9R\nU+JTr/xMCeUQo511f07tcuW1fJv8SkT8LdZplEBz0QNW3wSK6rgvOv55D9kR\nPcW0SVbRxoqQVhYL3C63+2mSW4j5eKiZ7Rk970NMyUJb62lOa52tkNFqUNVW\ntfGccK3CAhiJSTGuGZbkjsG3lJfemdLo9Gf6/G/5qtrYpUYmgD9KfawvaldW\nYrz1xMcv6v9EXWX5t4WH6cUMWUdJjKD40ryBtWfKR15fBHq0K4D9iRzL5TGn\nzO1q\r\n=fRnf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbHuq5LxVghcjBD2O7crYlQQAUOBFjU8M0IGIBg0nQ9QIhAPoPVBAah0J9eO6OEk9vbpsfLpseesW0zw9DtlE90iO/"}]},"maintainers":[{"name":"etienne_cureous","email":"etienne@cureous.life"},{"name":"kuzzmi","email":"igor@kuzzmi.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-elm-middleware_6.0.0_1532804993047_0.7461046042898756"},"_hasShrinkwrap":false},"6.1.0":{"name":"@cureous/redux-elm-middleware","version":"6.1.0","description":"Elm middleware for redux. Forked from [stoeffel/redux-elm-middleware](https://github.com/stoeffel/redux-elm-middleware)","main":"index.js","scripts":{"test":"nyc --r html mocha --require babel-core/register","build":"babel src --out-dir .","codecov":"nyc report --reporter=text-lcov > coverage.lcov && codecov","release:major":"npm run build && xyz --repo git@github.com:cureous/redux-elm-middleware.git --increment major","release:minor":"npm run build && xyz --repo git@github.com:cureous/redux-elm-middleware.git --increment minor","release:patch":"npm run build && xyz --repo git@github.com:cureous/redux-elm-middleware.git --increment patch","example":"npm-run-all --parallel serve elm","serve":"cd examples && webpack-dev-server","elm":"cd examples && npm run elm:install && elm-live src/Reducer.elm --output build/elm.js","elm:install":"elm-package install -y && cd examples && elm-package install -y"},"babel":{"presets":["es2015","stage-0","react"]},"standard":{"ignore":["/build/"],"globals":["__DEV__","__TESTING__"],"rules":{"arrow-parens":0,"babel/arrow-parens":0},"parser":"babel-eslint"},"repository":{"type":"git","url":"git+https://github.com/cureous/redux-elm-middleware.git"},"author":{"name":"Christoph Hermann"},"license":"MIT","bugs":{"url":"https://github.com/cureous/redux-elm-middleware/issues"},"private":false,"homepage":"https://github.com/cureous/redux-elm-middleware#readme","dependencies":{"casex":"^1.0.1"},"devDependencies":{"ava":"^0.15.2","babel":"^6.23.0","babel-cli":"^6.24.1","babel-core":"^6.7.7","babel-eslint":"^6.0.3","babel-loader":"^6.2.4","babel-polyfill":"^6.7.4","babel-preset-es2015":"^6.6.0","babel-preset-react":"^6.5.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.7.2","codecov":"^1.0.1","elm":"^0.18.0","elm-live":"^2.2.1","jsdom-test-browser":"^4.0.2","mocha":"^2.4.5","npm-run-all":"^3.0.0","nyc":"^8.4.0","ramda":"^0.21.0","react":"^15.0.1","react-dom":"^15.0.1","react-redux":"^4.4.5","react-router":"^2.4.0","react-router-redux":"^4.0.4","redux":"^3.5.2","redux-actions":"^0.11.0","redux-mock-store":"^1.0.2","redux-test-reducer":"^0.1.0","sinon":"^1.17.4","standard":"^8.1.0","standard-format":"^2.1.1","webpack":"^1.13.0","webpack-dev-server":"^1.14.1","xyz":"^1.0.1"},"gitHead":"444c221b15bc5d5c62c605c625fc495df08a5c99","_id":"@cureous/redux-elm-middleware@6.1.0","_nodeVersion":"12.8.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-fkJImflzAtnf7c0TDRVN/GGML7wBgow84Gkpv0oioMgXhp2NsD7i4WWfFCSoU/W4PQybsEUrJY5fAoQT6EZ1dw==","shasum":"13aaa859ee508502b1e2b4e03b3f9680389fc8b2","tarball":"https://registry.npmjs.org/@cureous/redux-elm-middleware/-/redux-elm-middleware-6.1.0.tgz","fileCount":7,"unpackedSize":20180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaOGPCRA9TVsSAnZWagAAKssP/iLODFa24SZO7cctbbBF\nIiaYsupI71Oef/baAk5iazJEfvZ3ltwLWZJViSNUGHFTw4NlZVyHPnMiYYm0\nlBNaBxHcVnA8ET+Kv97G3Q+KmwCbuMaV92WBqE9S0wsR4lUvk+f6PpSOrtrX\nMMhG9zi2euKbx0LRGf3+6TgUKzwr9v3EoQ8vukpTXPbhku1+Q5Lw9YaH1S0h\ncpbUyj2U04WbRE/HvkTB2OXf89onRKDx+etIJ7f9kudOxh0le1gir47CH/RN\nu41FeghKXY2eNl6hGhRAzWMa05qa9T9p6VmHcFFnW8u3wdA2OkTB05rAHfN4\nC3LCACxu5FjPnuQ9UQETuMAD9OiUYCPXuDapPFoOqXuS8hEkPhb7zNk7mRqx\nyLQxX9pOBev8FsLHLaF6HZNaVODLfGu3VO3ZHNwVVW5LTydsXNT8GtHQXFDU\nCKMPPgh8Zvxg27PzgOY/ZGmVoX6vKOmQt/hmzpKCm8c1/z+XNrbl7yc2ZzsW\n+mbFfKS4UPEEwouWs2kqVdW2qoyHq4IpQbPnmdVK3H7J9sGltfqntiaFos8O\niIoDmtYcKOL6oTBJ9Uh8P6NAWVoTZA1nFQuHodksAdlAfIKQp3/kXXIX32BK\naRzcX881YyIi/JezpDd1MhqYnr0rBZ+MOhf1BGvnEZgbZ5Y9k6fipfMrIucd\n1m6e\r\n=PfEl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD70WUQUnYGrMSz7KqI8mKnCIGtgaHry+Ym/6T2dSwJdgIhAIQMNL4cWmomxyre+dXynhdbTFC7xY009dJXIynfwUA2"}]},"maintainers":[{"name":"etienne_cureous","email":"etienne@cureous.life"},{"name":"kuzzmi","email":"igor@kuzzmi.com"}],"_npmUser":{"name":"kuzzmi","email":"igor@kuzzmi.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-elm-middleware_6.1.0_1567154575073_0.5373051491653984"},"_hasShrinkwrap":false}},"time":{"created":"2018-07-26T20:32:53.135Z","5.1.0":"2018-07-26T20:32:53.438Z","modified":"2022-04-05T02:18:48.677Z","6.0.0":"2018-07-28T19:09:53.118Z","6.1.0":"2019-08-30T08:42:55.185Z"},"maintainers":[{"name":"etienne_cureous","email":"etienne@cureous.life"},{"name":"kuzzmi","email":"igor@kuzzmi.com"}],"description":"Elm middleware for redux. Forked from [stoeffel/redux-elm-middleware](https://github.com/stoeffel/redux-elm-middleware)","homepage":"https://github.com/cureous/redux-elm-middleware#readme","repository":{"type":"git","url":"git+https://github.com/cureous/redux-elm-middleware.git"},"author":{"name":"Christoph Hermann"},"bugs":{"url":"https://github.com/cureous/redux-elm-middleware/issues"},"license":"MIT","readme":"# redux-elm-middleware\n\n> Elm middleware for redux :sparkles:\n\n> **NOTE**: This is a forked version of the original package. The reason behind forking is to provide better and faster support for this package, including bug fixes and improvements.\n\n## Installation\n\nYou need to install `redux-elm-middleware` for JS and Elm.\n\n```bash\n$ npm i -S @cureous/redux-elm-middleware\n```\n\n`redux-elm-middleware` is currently only published to npm. You will need to add\nthe following to your `elm-package.json`:\n\n```json\n  \"source-directories\": [\n    \".\",\n    \"node_modules/@cureous/redux-elm-middleware/src\",\n    ...\n  ]\n```\n\n## Usage\n\n### Setup Redux Middleware\n\n```js\nimport createElmMiddleware, { reducer as elmReducer } from '@cureous/redux-elm-middleware';\n\n// Import your Elm Reducer\nimport Elm from './Reducer.elm';\n\nconst reducer = combineReducers({\n  elm: elmReducer\n  // ...reducers\n});\n\n// create a worker of your Elm reducer\nconst elmStore = Elm.Reducer.worker();\n\n// create the middleware\nconst { run, elmMiddleware } = createElmMiddleware(elmStore);\n\n// create the Redux store and pass the elmMiddleware\nconst store = createStore(reducer, {}, compose(\n  applyMiddleware(elmMiddleware),\n  window.devToolsExtension ? window.devToolsExtension() : f => f\n));\n\n// you need to run the elm middleware and pass the Redux store\nrun(store)\n```\n\nSince v6.0.0, `redux-elm-middleware` will dispatch actions that correspond to\nexternal ports.\n\nExample:\n\nUsing such a port in Reducer:\n\n```elm\nport externalCmd : String -> Cmd msg\n```\n\nWill result in dispatching the following action:\n\n```json\n{\n    \"type\": \"@@elm.out/EXTERNAL_CMD\",\n    \"payload\": \"\"\n}\n```\n\n#### Elm root reducer\n\nThe root reducer from `redux-elm-middleware` simply takes all actions from your\nelm reducers and returns the payload as the next state.\n\nThe new model returned in your elm reducers update function is dispatched as a\nnew action to the Redux store.\n\nE.g.\n\n```js\n{\n  type: '@@elm.in/Increment',\n  payload: {\n    counter: 3\n  }\n}\n```\n\n\n### Creating a Reducer in Elm\n\nA reducer in Elm looks like a normal [TEA](https://github.com/evancz/elm-architecture-tutorial) module without the view.\n\n```elm\nport module Reducer exposing (Model, Msg, init, update, subscriptions) -- Name of the module must match the worker\n\n\nimport Redux\n\n-- define ports for all actions which should be handled by the elm reducer\nport increment : ({} -> msg) -> Sub msg\n\n-- define all subscriptions of your reducer\nsubscriptions : Model -> Sub Msg\nsubscriptions _ =\n    Sub.batch\n        [ increment <| always Increment\n        -- ...\n        ]\n\n-- In order for the Elm model to cross the border safely it must be encoded as a JSON value.\nencode : Model -> Json.Encode.Value\nencode model =\n    ...\n\n-- MODEL\n-- UPDATE\n\n-- START THE REDUCER\nmain =\n    Redux.program\n        { init = init\n        , update = update\n        , encode = encode\n        , subscriptions = subscriptions\n        }\n```\n\n#### Flags support\n\nIn 5.0.0 `programWithFlags` was added and now you can pass down needed flags from JavaScript to your Elm reducer. `programWithFlags` works the same way as Elm works with flags.\n\nUpdated version from the example above will be the following:\n\n```js\n// create a worker of your elm reducer\n// and pass flags to it\nconst elmStore = Elm.Reducer.worker({\n    bar: 'baz'\n});\n```\n\n```elm\ntype alias Flags =\n    { bar : String }\n\ntype alias Model =\n    { foo: String }\n\ninit : Flags -> ( Model, Cmd Msg )\ninit { bar } =\n    ({ foo = bar }, Cmd.none)\n\nmain =\n    Redux.programWithFlags\n        { init = init\n        , update = update\n        , encode = encode\n        , subscriptions = subscriptions\n        }\n```\n\n## Running the Example\n\n> **NOTE**: Example is not fully updated to show all features of the forked\nversion.\n\n* `npm install`\n* `npm run example`\n* open 127.0.0.1:8080\n\n\n## Feedback and contributons welcome!\n","readmeFilename":"README.md"}