{"_id":"neutrino-preset-melody","_rev":"77-87c14c8abac85d5711da19bf8b6b42eb","name":"neutrino-preset-melody","description":"Neutrino preset for building melody web applications","dist-tags":{"latest":"1.7.5","canary":"1.2.0-commit.10cb706c","next":"1.2.0-commit.142c3d91","bugfix/87-element-recycling-without-attributes":"1.2.0-e395b88.5","prerelease":"1.2.0-alpha.12","fix-combineRefs-unsubscribe":"1.2.0-b923d09.5","attachEventWithElement":"1.2.0-77ef7ea.6","bugfix/123-ensure-binary-concat-converts-to-string":"1.2.0-42f95e8.8","remove-prefetch-for-async-components":"1.2.0-6717b8a.11","bugfix/string-literal-preserve-backslashes":"1.5.1-ed89a02.5"},"versions":{"1.0.3":{"name":"neutrino-preset-melody","version":"1.0.3","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.0.3","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"198eca460de9080181a93ca2f5b63e04a6437605","_id":"neutrino-preset-melody@1.0.3","_npmVersion":"5.4.2","_nodeVersion":"8.7.0","_npmUser":{"name":"jamesbell","email":"james.bell@trivago.com"},"dist":{"integrity":"sha512-tIdl0MvDUzS3YIpPrjMPJl2jQea2pwjEIxCf//9YezieGekW53cLE4SpgOdHsD6kCIOUYOFVuLsfeUuEE58BMA==","shasum":"42f8ac2684f502ecc61e3352b660b3d5e3d8c2eb","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.0.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICrgkKZ+f8/zyYwVtI1EyMLXConR+40E2ZHEILsvch2EAiEAtdmY+5CxY/i+gSUgJhYPpyBmC0r2llR6uYsi7Qpa49E="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody-1.0.3.tgz_1517481344222_0.16007037903182209"},"directories":{}},"1.2.0-commit.e09ceb68":{"name":"neutrino-preset-melody","version":"1.2.0-commit.e09ceb68","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.e09ceb68","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.e09ceb68","dist":{"shasum":"79226b92191f31ab250fd9bc4ea61c9496ced53e","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.e09ceb68.tgz","integrity":"sha512-NtrOUdf1EH713D41HeIOQrRotv2KIRq1XUylj7BaNNWZAX2+x/gcUAZozbw8KaUdYkH44b/7hvNYfWPKYzMXiQ==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboMtmCRA9TVsSAnZWagAA5YAQAJlhMWRbiKouqs8zhFfO\nGp27qmpUilJvyvQwdnRksYzuoRr6ivizmXa1eN+zL2B6l3E9LVKZAJor4z4D\ndD4FWWLSobDIPW48Pby+Ym7lpR9ikFO0woo7YeX2kx7sL2TQuE411uY7zDnB\n1rM6ZbQm9LIFO2qwxDGMjH0GiXiUFZOPey5Tw1cIFLLQ4DwZ0+nn+aBHrySW\n8X1mr/FGQ2m74dBb9O/w3rzDbMYHhPx+FNnoxPzPiiV8JYqtfzzNlzzO3ta6\n3TWH9OpoJTsW+FdiGDxV9zw3BW93QC0aU5T+7JgSquKaWos47Glm1pmtYTlB\no+o3CrmUd7nYtgYT6Q04+Dr3ZdMptbIUlLWVCoHQMiNlse9iFwMXe5wvSqo0\nAGlfh4uC0Fl0wyhS9HE4vb8RtLtRr8X+RmqH88mt5sMPj18dl7iEKfwooXYG\n1Q+WbSL3DkjnzF5e8MEcJYVTYEbdPXnOHDXFEfyytnfFYncZxEzGnuSzTS0F\nxIt99SoOj/g9aYFF9PqYr72JPLGBOU0p7nSmW9Pjv4ZPfoVupWOWAT8ufHei\nu5OslrzQDp2X0obHZr96LNYLY5I1VPBqcfwrOK+AAEQjeQP6zBgf0jUy6IxY\n5e6f6G2LIl9kcIuTfWIw8Z5W71z/XOgnzDqHWEXr+xh2vL4Ff3B6/sGreSnR\ndRNW\r\n=f3y0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcf4VJbRSGXjAOkX77RFGhj4elui3wps/duC7y5OtQFQIgZ/bZul8SWq5h5NZajDWEfmMvZhredcO1gpVAmSdyg4Q="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.e09ceb68_1537264486268_0.1260069425164405"},"_hasShrinkwrap":false},"1.2.0-commit.e725f50a":{"name":"neutrino-preset-melody","version":"1.2.0-commit.e725f50a","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.e725f50a","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.e725f50a","dist":{"shasum":"8c0e9a7bfba11c9766ed7d0c61ea43f7ff960119","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.e725f50a.tgz","integrity":"sha512-ygafVMEpGfB5HfXE9LwagZ0YHjSDcWIcqy1MUuZhvZWfC1NNUDI3m9mGl2xNs7+VHPeo7xUagqQLsB91UgSt4g==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboMuSCRA9TVsSAnZWagAAdPkP/1Y0oCgdd8U9f0qkpPhM\n/ZaJownKZEpOOH1w+wW8n473KZgPlZi2zOLkwgigmMpzF4Uxl4x/+Cs9kC7E\ny9F7/VOlYuTklNn0oItfwKkvA+fC//BgtG6zHIkvCYBWlitGP3LPjqaCtV6X\nMMTd9b8Un+bhD6V/euP5HxFnZSG9IjzvdrdNlkTFCc8A2VbCHNYfO1Sm9U33\nwfeNwZayBa05Um7IKtQMeqHE5giUqxoYqvnRc3UPj0iZXEMWthD/HbII2BHb\nqFpMspDUUE4UgVETlrNSWPr7Wv3nEhcnzCGjfucuMj+uaMQZwJZop84vRM2V\nQQL4uc9HWa6kHdyKMkyO3ZOGxCbBmJqpwEZODI3PmFiBTZvGy59YIM9Y7pwU\nSn+nxDjF5Q/g1QxgLlm9reR5ntGZAolaxIJZbIuw3WCf4uI5CMPVLcg9XMNV\n4W87t9xOGwUkmthDZ4FDsGNReXksRX6of5V54ZceZbJ21gkRc/tOr50amkL1\n1yQV4e1DTzjgq3DIbytYOOLwB9f7wEJPFfYPcKefZMvXn3NthMsVsXb1cK2O\nPjMMWqx4DdCuX1R349Y9wiTadFEBrqnshkCsaRl5tjc2BqRTC+LFz5Oz9n0/\nlJgzrXlfYJO3KysKal4j/koekrgT+YtH3BsY6Mq1ziPXTX+i9FksYm6rMoze\nkDG4\r\n=0Zxx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDomZzBijh9U1GNXe7+cQGUAWS9R69uqzWCrArYyoYzVAIgPQDOpfDgVqj2uak57GUsm+x2kHswhhDH+h0Ao3vTX/g="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.e725f50a_1537264529575_0.04374847123443559"},"_hasShrinkwrap":false},"1.2.0-commit.549dcb61":{"name":"neutrino-preset-melody","version":"1.2.0-commit.549dcb61","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.549dcb61","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.549dcb61","dist":{"shasum":"8f08ce980f3f147966ed10da688323ea4ae5b120","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.549dcb61.tgz","integrity":"sha512-UgI4KdKha1qWqF1FmNlsB4Z2gM8jskw7NgcBhF1W9n8AcOMMddJ5QqTGwjYtEx8nCIV/muzgJ0WHxeaSD4PnPw==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboNFWCRA9TVsSAnZWagAAb8cP/jgZg8uAGQfs/mtxF/vH\nXXyRfJGk7ZV2a0pfLryVsINWCPqpCkI5lZe7W73MIm6p+8RDrE3e0XEocz8Y\ntdx0Yk7al3OFSJbHUZ4n/7IHXG5mJTZSqD0TQaSo6UWR9rjXgb/Uc5ls/ifm\nRNkj/sdVnlZ3xHsm1HkqiNWO1iQbDgEcm/ezvOXp/NCOQkfkIk7nvdBOWrrc\nxrS4d6McEJCFM9a36YRWUktuT32/T2JQFZMQdP4Ujjc4hNB/9MgnTHIOdZgN\nmT9/YCMIjaZTpHTSUz2Q0hCUAoKnDEGcpbwFhT2XPb13LJMWUp1KmDio59yW\nz+05gIH9zChZedO0oBljKrswUn5nz0sa99L/L90XOhhF5Mw5e4VpJsaeI0d5\n9rd5vnv45P+StqJ9AeqToEnKAquPXxGP1LnVAWDKWXwde+1NxmfCfttER15s\nAzulXiIOmdCFc2CH4B9xWgp5kynyMxrNLuU9PyqlviOT0yK70P5uPwengZCv\nTuO4cu3I4VwThL+a4LDdux/XN3ZjKg+1WZ5NWffJ2UawIIInOwWAdsmiWV33\nTm9o0lz79RhvB9E78l+OZ2EFaBSaBCcPz7wuloR8hM+X9hA6KhJ/Pq2drgWD\nwBVXmu6ymheU2F81cunrcWZR/4jPmKhuOFQEM1RVL5ZnC8jQfrpERLQYOFFM\nCaC8\r\n=1zE9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUUIts0WLsVC+wM5Dx15eArH1Yaz+WIrkrPNyS7gksAAIgD6tfmBQhhbaTeWy2ay7fxPYUQXAaJj/O2YP1+VTm+hA="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.549dcb61_1537266006099_0.6772568122216658"},"_hasShrinkwrap":false},"1.2.0-commit.2a331e9d":{"name":"neutrino-preset-melody","version":"1.2.0-commit.2a331e9d","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.2a331e9d","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.2a331e9d","dist":{"shasum":"e3081549819cfe2214f8f6673abd9d9e7f42dcda","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.2a331e9d.tgz","integrity":"sha512-WNXWE9spk90GpM82ImQ+uZ3LTEodYfvAPigC5R2KXvR+VdlmbhymvroOsJJlqhApcuLkSo7FN9utznPXdYLpcQ==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboNw9CRA9TVsSAnZWagAARdAP+gODjvqDhjQ8jO/I+ZGL\ngUMGrNOL1Sd6XLCvezLwbHHNz2FoBD0b80HVqFuy0pVHG8GrNLh+jR5SfKTI\nk5kBoMBUd7bw/HrYXiWWejT+4YMRxLwWOkq9EAZkQ3e7mgXBZXNSffKailBi\nRWL3w4kGya5JrQVuA4fIXn5frdheqerUXDp3DZfw888vh0j9lGsPoQuBPgoH\nPdvit8OE4Ag4FLUY32lR4mPmxWBLkdlz5EAAS4DFjAQysiaM59PfmsCAemuz\nk0gIPyFiS1e6pVxuuEPpzGI+AlsoRJv3n/AzAft1wYRZKysFK0Nx/bTeT/l4\nLfl/bWQye2ahkcJtO3e9DuiLrowmtK4nmSJi6FdlumiHgG5RD0OTQw8Tw62Y\nxKMj7auSCSK0pNjlaaNztVuuQHdE4Aa3c9SMGF7CNitSCTTvpLOsIeFe7DUc\neV8RmEM+vGgt4nFzG2wqOsIwFcEXgqUBH8snzm7+ixtsKoIie+4j5D0HFtHr\nMGnNqXGuC1iYefCTP3LG38eUtrSzqr3r8ykYq27OzAcgUw4q4vBM/t4J09eM\nDAuBVdYaWrpe7KXyEB5XfpPFPy2pdxQ/G9YwQIkrS7JVS9ITQ8kB0VsTO4XC\nnSoCdKb09xSHCdi+QowjIZGYIzGwTzLtf0q2m4xKgCFlGOlCbHGospWbrzsM\nowGd\r\n=xJIf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF/MHFas5neDuS8zOa57uK3Ko6L6kfhO/IKtmoHhMFcqAiActBB0lzV8MAW4YjBwq8Ts6YLrp5lemN36uraOCealjA=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.2a331e9d_1537268796559_0.40725366830439236"},"_hasShrinkwrap":false},"1.2.0-commit.3de5e8de":{"name":"neutrino-preset-melody","version":"1.2.0-commit.3de5e8de","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.3de5e8de","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.3de5e8de","dist":{"shasum":"d4ca517f470cf9395d2a1b6f6fe9271dc201f8cd","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.3de5e8de.tgz","integrity":"sha512-j1nA4yOoQLeIhaoPPF2ROyXxct53gQzgIZPtX42lrwFcKonLrnBlVCrgSfLNczl39PxqL0RooVIg4IDi1aqUtw==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboNzLCRA9TVsSAnZWagAA83kP/3ideddsqMlM+pXvD3s/\n2BpBHymtu2vtTVBvihvQSSglt8x8sEttnZihRNkl4mnvwHj72WVoEKwnPUbQ\n0Lwi5x6lyexY+JaGy4rODMrdHu2f4CJ/v3QLoSKvuk5ktTyHD3zh2iwFi0TU\nmLyWX4+b68QxHn+rMFfYRGarGhldNOVZziBvQ1/GQ2nBRCJTQoGRS1ynG806\nRXL98fi6OpR7q72aHtt5Gb7ytLhBvbT9+N2agIJq1KsbjIHEkiJpO9KURNkK\nrV11/Cn2yBUElo1gWTMDlL7CqhdtWOxV7m8WIAwo5e3QEfqS5/inZLVgLjDQ\nzaSCnCOyrGB/HEAqFv5XOhQIh3HD3uNwmFDLSogkCW5Z29J1jm9JcyehluWQ\neN7PqQHNs0GYA8uMVMLPSgaOy8D9tdDwg0Vy0wxyOAovd/QArEq8t14NdTkx\njYtszwv2e82h7VV+I0tuyKyqVFk05QO0+kIhXeh0MMhtEYn6P/r+3ZaJo8Tm\nOF77HLrJpugtCPRr8O+KcTqk84sc0K6UNjKK3feojxajIYOh/qud85VouGa5\nfWXRJmDmj2jV8xekx0xo0Zimf9MltRQ3CcD1T7HjUj/vKB/m4aulWsBq6hQe\naYT2p4dY75tJ8yDBx+ZbTZsTi2MEpzYZc3a6523XX5uEWKTr2AglWkBUrtMC\nPk4w\r\n=5gTj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGh5FKzxH8EP3py9jZCOPgTJqUEUAV6mz3nmzp/lU7R2AiEA0UlaDQv4OCWEt+YZAoq0MuQqHCPyAxCET1Mr3VQ53nQ="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.3de5e8de_1537268938456_0.649128085820597"},"_hasShrinkwrap":false},"1.2.0-commit.10cb706c":{"name":"neutrino-preset-melody","version":"1.2.0-commit.10cb706c","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.10cb706c","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.10cb706c","dist":{"shasum":"ac75cbdedf1bd47287c5106c6fe37fd6a612d12f","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.10cb706c.tgz","integrity":"sha512-gMVafKxvgSY2IEz69mUXswg3fucxbfDfTsG2l6GTGB/vQ8kaswp9mDqLu5bFggNRiHPmTwwthsnBDOyr/2+lFA==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4I4CCRA9TVsSAnZWagAAIDkP/20H6MXHissKgBFx2U/4\nt3FKHb7wgkc+c4zkBbGmU8T3EQojljTmHnZ8X4mHvWCakLXTFfzQtnoyp8dr\nAZ92PnI6Ry5oRK02pll6XGRy3U1kU4oQT4WAHubsi3m8YfT3jEfD4+P3kJpi\nn7KkINwWydsuLKd/KMVkuNriefFk7tnCqyxb1pIsPd4Z2NrlP1C5hRluQkxl\n3HgP1KL6gjySKEtFTHyJZf93YxI7uHsJyUxvBwbHLzFm8D9Dp/mWl0KO+ZUa\nkhAjDUUjsi9qqdXR+V4VA3qOxxREKQwbngenSfGX16j6vV3x+/Ib7P9y4OQF\ncjmlVJfH7RKp3pyL5tXjewdNTFTbQfltq6zXTTyp5dFq+HbcPBku//7/q+lZ\nn/SeqP+sUO325pCpj3+tXmofxXCIaI14poPp3y+IrwYAkwplccHHiip2ioDB\njAhmtBws/Db6eLjn5liZq5CVj1WOzeKxDzhEUhpw4fjvBMXVpGB7yQWlN9BB\nBDBH6Qf0Sc6n94wdhydIILNouMvx0TA1ccbcwcx9DUPTG7jcM9uP9hmlHgsk\nuJieTUJkxwiOXF2KEvHpTsN8SDmfq0VA8us7mstoq/cEflv+1K5TYteehvw4\nPHTVH7mmts8jPvNSB/ltJ2B5CaYgZW3Idkoelp+c0nMJNFW2fCrvbHCw5ebJ\niBUl\r\n=Vg5d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAYjVfEu5elAyHpV0boH8fyuP8dk/ER7bNDegWYf3gTrAiABJY4r/z7QSEQHbWWYo9HNdHym32Ey82cecQOOxgIouA=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.10cb706c_1541443073818_0.9866551443595815"},"_hasShrinkwrap":false},"1.2.0-commit.465bada5":{"name":"neutrino-preset-melody","version":"1.2.0-commit.465bada5","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.465bada5","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.465bada5","dist":{"shasum":"99a717501f4f2a3a182d881c78494643050b380a","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.465bada5.tgz","integrity":"sha512-+JA2wLsjwawVmrEnyotiT5LkhOplkUgZhgwtCksgBtFV5BGn6xZ5Jc+XVMn4BNvBxb/YWgNJP/+R9kSIhkpM1Q==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4I8sCRA9TVsSAnZWagAARXAP/08eRCiRi/0MEmqd4siG\nsr1me0XL4Ktvzxsc8B8+fQomb2mNdpU7ux1HJtSVWRyZ0Unch8itwAv6v4Er\n64UFu0JJGkc0jRyYMYKhq3Te0ddrayym5VlDnZRpvAMXCzQczEB7lIbX8z71\nAfBYJFL4YKyV665SQAx8Y+VoAzrrkYShb7J/5WCu6CXVOZ8/9P7HHhPgLMf/\ngvR1AEeUecbPiWJmXCdVRODyYvBZVB+0ck0ew6zJnKDxD1y6VBOmKOTXozdS\nkR+bRM3qkrYQs/PvNlgsxuUZ/osOdGIMZuOXAGBVNFnRRppbVtJH63Y41r+h\nfQdPYWJH9bEO49CwnsHd+QJdvgIzfe42mCTJgG/BVB2pdhsKxVpMFAO3oCAK\nF30xKyk/mTjt+u58hee7jnj63cOqf/TJUVq1rS7PnRSKdfmWo2D2mogXamvy\nvOI6LLDBadnKR2g34/9HVnThz8xb7ozMFsdpiqEXU0T1GzC8vvN6NuKc09tO\nqtCPCxkRPMYOQTRsAeqgmjIgKG7vS1mUyhBZXJX5H8bh6ri8cu/asKZOQjdG\na67q+SyXcP6TiLwHdbR2dL13H9fz7C1l+B4DzIB1iCY1Gg8W7On9Vy5UnZMe\nGapPCC9LoDV3Du6XUtY2oU2NR2P91Vwsf2Lc5Btzy//7EQtzeDTxEFowscjl\naWvN\r\n=k/t3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqOxFyPUsyC/PSPMQzxjrF5TJ1tLApyYtcs1Yvm2KBRgIhAKWMmQbOLVpGRpNvHUmisbB3PZLGrAPw6yhk+fhkKA0Y"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.465bada5_1541443371517_0.35553405005870276"},"_hasShrinkwrap":false},"1.2.0-commit.05c42290":{"name":"neutrino-preset-melody","version":"1.2.0-commit.05c42290","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.05c42290","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.05c42290","dist":{"shasum":"1b64d3faf17d0401cd8aa644f49360e9272a656b","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.05c42290.tgz","integrity":"sha512-FYtHmXBdIn76DDqyJIW5qE5hUMekEjHwAUbyYVA7b7AI3kAUlfYKzfF2UP6js+F4HQ0I2p9d64VZ/gRvUo3T8Q==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4XVpCRA9TVsSAnZWagAAsnYP/0ToGpznQuCTtOEl4bTL\nnumfQz0IsNvF9e98VBuBJEstwOHaFLfJoFmtDszotk91tcp0zY77+Eldynmg\nAj4fRgxnV4ld6ehx6bEfL6NUcOG1SlZ6dHUSw9HFGvRRdJkXDkv9ZiIVn+1K\nxuobw4IEFc/rEc+ouU73GQ2NhhRnxv0uFH8j1oT4xpiJH2YrACOLJ1v3p0td\n0JvU1d5hYAu8PfepZJTNsmyuiwiGd+wWm9aAgACrzGeqM+M7VeDOBXwiO4+Q\nwYHh0eXGFltNSdlJ3C8a7++jHPXurMV0vjkdXGeteUr7YPtJH5HXL3ZAtAig\ncmykFKSckO0yAAvQj8+xXQFqZ42+tFnNCrgii66rGs9iK7mdjoHj3I5fqhrF\nVxU2dEmbE/eQNdrTlnq/Vfp2UuzvJwJxW6kAcZSxLlu2GqSpyjE3ToJBZlfN\ntf4Y/TF82vnt2H1UsHkC8/hXGbJZoBRwWrSUK9L5GcRviRxHD3pF1Tq6fluH\nWKnOEfRxBeWxGfEtDWw2FyBUwI8AUNtbX489i+CiP7eGz5RH9eu7X9eLJ2Hu\nCjZ2AdSch/Y62gTvyuuCjCQzNcT96/gpxiJZKQWQxQHBCSsYe2EG30goFdt1\nuoONJsASX219eo9KpO+yZqcDk6Rz3r01GCMZ+NhxZzTjgICYbgMChp3Vr+DP\n7nqZ\r\n=H+w1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFBG3xbhgzdaoIma3/fxbdF07KtCp6uRDCJSPbBD43AZAiBmNnfFyLDhT8bF31rViS60gDtlOYiHBYVs3Ct6avG9Ig=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.05c42290_1541502312698_0.6002574084944896"},"_hasShrinkwrap":false},"1.2.0-commit.6a9d8668":{"name":"neutrino-preset-melody","version":"1.2.0-commit.6a9d8668","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.6a9d8668","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.6a9d8668","dist":{"shasum":"caa64da4c90c20dabf8e831ba963066fef4c45a6","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.6a9d8668.tgz","integrity":"sha512-sAdOtxND4ssrjxiLBuhpgcXDIwPHBhIkpae8KDWNijX9+I4awy8c6biDfLc/qmjfqOVevNiE79rJ+g3BJ5Sa/Q==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGcy5CRA9TVsSAnZWagAA6a4P/ji18Bfz8HgF+U7W6f6W\nURsvj09AryaO3liXF9ms9eP3miUe2paQybvWAfNgkgffSm8KLSBc4xXW6tp+\nTPFUVcoGeGEqR92yPHfXsovYmsjqi8UM9RG6Zuf0E+QcBHbIZwCbNwAZ2HYT\ncgye1wRkiu8RIrbg1gorz7trGuVa8kfM0+m+5u38iqbFdZRJB9r/gAc5HsEY\n/BuC/3iwaWLoshKSjsi09lGPFdg24b5SDCb19VBbmZMObBgPM9gquX45HVTw\nsB9V968cojgdoZ3+cj+hHPz/a23y19KbBWh+P694iVxymsFMNXD/UBUGRr/b\n0+HtMlvCNI/3Yq3KZ6wZRcqhVX8ZfAu7JlLIBPC94fHoaESNCUIFT0HhyYMC\nZY3gmG73y745coEy7XQM/DLC+l42c6ZqZeSjm0MWAguZLPPgonGGjNvYQTDj\np/fhLpb7hmiLgaUAkRK0mmgH5JeVY0A5ljvUIpBkWjMMMiKNFu8MtX+GlxjS\nXHtcOUT/Jzv/H8GDDDVo87MvxVGfgsHDPvXSFLak7UZELL67Or1fNrrDBn0p\nei8RBkf5exIJUY6knK3qKMoWgYm9a9idFIEpcccmpdS/5lrWKRSurWc4pfBU\nZc3xonNr4EtjKG2odjQyKQ1VSJzgy9y2kvgBkICZON6Zy/2k4QoL5SUJNaF6\nYnqY\r\n=U/8K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvgTbFzSGJrKk6BDLQaPiIsnYbZgM4sdgW5ISn8UKBuQIhAIknxB4RZgr3cWTPlhk8ebFi81x79Y+KB6TCA0h0NHwq"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.6a9d8668_1545194680489_0.35541601486846175"},"_hasShrinkwrap":false},"1.2.0-commit.cd6a9bf1":{"name":"neutrino-preset-melody","version":"1.2.0-commit.cd6a9bf1","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.cd6a9bf1","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.cd6a9bf1","dist":{"shasum":"774a3812f5ce72c8e2e5c263f912312af1d5ef2f","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.cd6a9bf1.tgz","integrity":"sha512-opwQ4m/vZe9a2I6sEcWhRr3JOKQ60S5tMqQnSmPt/D5mHvr/pRfnxdAyaLIqZOOyZEBQ8TpwyteyJ+Y/J/Nw8A==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcG32JCRA9TVsSAnZWagAAUlYP/0NGSDx5lLZckDprJwMe\neyglmiMvgfYoE5yjV3lraFWtCVYUYmUEeT+DyAITOVImUD180b6ZEv45cKs5\navlkhoC1rhj7m6y0qlsf3XNcRQjbk3wr2HNIZnvSYDgAe6P9ZAMrKxQm6Tp/\nKhgOi2hNeF2R/Rr5gvDbUrlONrrSNObohWJsETcg58fbakDJE8QN29Wd9K+3\nsGWt5y+kO2lvKXbkIZsRENU/6CWfER+TkoJzLGJ/MgqyfRJJ4Iomzd3ZpJG7\nJgDOsDbPuw31ZpKLWJqEBSC+sD5tfMlR9l8UDkEPFHEdhD2M7zd/kRdsLWEn\n/IRmbz1+Mz+D1b76PyG+EUUdOTQ0Erj9xG06oj/6QdXnxvPrJeVWC3w1yiIK\nwQUTejN+weABmVv+0odkCz+rGZPOnv+DMmALZNWNjTUKw48PhMX5OzKzYYa4\n3IDUzkzBoADAba0on47UHQ0l/s6rqfVBfPBI3j400MIwijd8P8sYBuDFSqEo\nLBjm+jZWH5uo6Yohvidl9Jp1390s7TUxRDmegDvrRvno7WrheI2PG72zAqMU\nbzOPaU2WrA0hW6sM6jwm3cuBR7ryCG9kBO/OAFxYfdMr9RJwlYAbWrayISdm\nGtlmJgv///CR5bk0G1iZ629tg0IY2uV6vg2LwSNLnnaaiCBa8IPkLgkYvJHt\nrUUr\r\n=9FPJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0atlZQof4izBiK8Gqjvy6trQav2NcEWXthTTiCGdzkAIhANmTY8ZGL1F+LUHFQpDM0q+3PxJ6StjQZnmdgwVTn3Cz"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.cd6a9bf1_1545305480789_0.6698511056882404"},"_hasShrinkwrap":false},"1.2.0-commit.82e60495":{"name":"neutrino-preset-melody","version":"1.2.0-commit.82e60495","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.82e60495","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.82e60495","dist":{"shasum":"cb47b77a2265703c6103d366b85c3cd69a792a6b","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.82e60495.tgz","integrity":"sha512-NlwFJncuRiPUTRG29TWZ2CHPdnTQQOs0uTDLg2qP1Yskqv/qV450fHvoM6W+bvWTxNw+dSJqyvtCQSNCbWFqmQ==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcL0b1CRA9TVsSAnZWagAA46YP/iESontK1uOcpDPAQffr\n95QAlxIMJoDH5IG7rRXcL3CiTBM92p39cCBo/c8vMZOtJgFVFjXfwfSmX1IA\nYsuP/VQ/4ORTjykJVeNr+RVqgppC1RjsBjnfvocA3abjYjKO8WU0m6qNeXA1\nColCwVoMCvHNafx9Q7GcnaeAkrn10Duq1FF2G+92hzXEvgTcz/b7GJaY8OzD\nSc8j17kRnMUA0g+VTjiy3PxllUQWymod8M+1CI8RV19bQpu2jNQbpMg4oEfV\nJp6AxUs9n9MXiWfZAOHNTynixD2KkMc8TYkT1H9TG5H/II2iqtNEdzfK5VtB\nZBbXWsroRznQTpTvyXaVag235x6VIxfi9Qfa6vRxvoN7/al9t26vPrQFtOsJ\nr5hdESQa+0ZDNDHD/AHTG198m2REXhdBVieviBn60UtYAoLMaZdS7s29fDhk\ndKjE1xeLzzgDHy0bPKDgT/ZLdAObOOfzkNfu0/ULZmlXUe8XRD971WyuGbXS\nIqP7kJZ6j/NQCeDK3uAB6Bn8NVQ1LfZGPxD4vjLtgrlJIIqtauG6JDIx/nsI\nboVxwbJWcqd5IokFLZ2ptwVFppzoT8NLO3AhxuNN2qDvdC9/K1G8l0AAswda\nTUe0jpaguKNp6O/zsnAMo5jiA2sMlggrRUd1dcHfB99R57yHLb5xpzVkEmjZ\nZjNZ\r\n=Qn2+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAZQiM0T+KvDQRmtJ1E4Ak0f04FKqV8RamvHzCrc7q+jAiEA7x+zPkiWWz5qmwsS3mP+Yv7MegRl76m/x3b3WV/JLa0="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.82e60495_1546602229138_0.5030787542034403"},"_hasShrinkwrap":false},"1.2.0-commit.bcdafc7e":{"name":"neutrino-preset-melody","version":"1.2.0-commit.bcdafc7e","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.bcdafc7e","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.bcdafc7e","dist":{"shasum":"ee75999241c4252a3638ae6a4a86d8f4f63aca45","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.bcdafc7e.tgz","integrity":"sha512-IrjmQv7egEuuRg42jTwBY92S9slh5lAPMiWtVW7RDv4KGRrXs8TU/XEqiglegb/owpQOF2lVRjtUrf59znuRpA==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcL2M9CRA9TVsSAnZWagAA41EP/R4Dv28OVuNWnw4pz58d\nRn3tnFt4kjL4b5Vk//bbV0Dx+/AT909wRHX8tp03yKAQ1UksTaV8R9qriFYj\n2urfKrZVUf4fFCBfEY/+jiYyurLeIZMIs6FQvaKXIct4vmFCt8Ur+VlTgik8\n3ldHvuYt0L6Tx1G7MPAxoVfq13X0xGYxBRMQaoX6O73AkkDmkfRnh0IVQsms\nhn34Y2xGOUqWSpRmjeGa2d0rPsx/5AQwGL1mWbrLJ2thq/F3j2CvSssWueYU\nv/gHn4wqWAOkBcf9W/Y56YgfNvjUV40ozjOKsTRIN86SsqaD68poz84M/cSg\nHHsG5TfM2gM3fHvLSfqGqk6ZIjVG9rz1+pwuhpHFiqC3gynCREdOJNseKmzj\nP7JB8AH9lbugS7LLKavAtHSk4+ZwWGOfUuPg4Big8FVGOcsx4whOiJDDHvVp\nRqk+PzyXcGx6x9VJTJ79OxkN0GZFh3j7/gqLWq8lblDyg+9x/tvQMFHEnhES\nJux1Vd6hIoZ8HXOD7/izQHEqM3YVFPj4i/bBq+eAXMjyQutt2sjCG1RlXCzU\nUzyfiR9X/X7XZWjRxG4QikStLvL0YX6wDGW2WjtXMAcL0+8ax4PUIDEizLbk\nUPhf3s9NthJlDULziONRrAR9JzPwzaFBTzJRR8nXxhQ8kPQHwpeuuctY0qcm\nVfPM\r\n=g3Aj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChqfzWg9xovtL9as3i71/36Vr/nayTUyH5qoJzIX4XsAIgabWQh8iO6M38h3xeJK3n1Zqb9gbPxyZFVv0ZpbJXI+s="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.bcdafc7e_1546609468608_0.8295302382429637"},"_hasShrinkwrap":false},"1.2.0-commit.a5749702":{"name":"neutrino-preset-melody","version":"1.2.0-commit.a5749702","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.a5749702","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.a5749702","dist":{"shasum":"f30ab1563dd69e8ddb5778d8c13578ebd50dd6d5","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.a5749702.tgz","integrity":"sha512-Ep8FE22s/JwFE+Z8nTSDZXHBWikaeePMgSs+qKXyqnFv3WVsaMxrimaQBCOE2cQgHI2tDk+IwW6V3PgAtI2FbQ==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcM0FMCRA9TVsSAnZWagAAg4IQAKQM0TkT73RleIkIwIUk\naqDwNAOSVAQTllGVUJjZHNyaHOSIAx+26qKHEFxZzZaPU+KrFjRmeYke/guI\n89iWXmdPzqvkCGaLsx1XX4nRdjigImz7gmpwEbgGKRwqohueHMKwY/J8oDdx\nBl2HKWCKildkMhbiIzwvgVVF4rT7xWeN66Lg+z7bCSOMWhIl1qv0kzL1xdXn\n4eT5Aa7Zpczhacr8sZMUYKvwKhyCPXlbdo6oswdI+yb5GgbtzixnPhp2eTrq\nMPQZOXTuaHuEhbVTBF3t430zpCWxVGXbwlQkLGgqrtnPdODdIUZPlSNlfarf\n/lu0pJ32s/1J7AXZwaVirNTa4lxUrrSTDlSOGqVy25AWsFeRHM6i9G+ctt0j\ndocWlyZl2xXkYH9ynCfezpKRAwtNYaHvBS9SfWNT6acDSbYbufQ52oYkUEkM\nYYZDpvmqF7gvG9CMMnu5/mW01YRWEMWduUoq5OJHtvzB8OYZ5/fnLAPA4Oqc\ns6Gc4UhbUon47QZY6+NU5L5zvpTq/HuuIwdrIDcE4KpbK2GQF6QjwQ2G+ZlP\nmzisdC6dLOUNmyFWIKJkroaGTDbzShk/w6795nF03ULtA+z4ziAFX5ML+v6m\no7We9VB42TGdGfbCriTLVYPnwdYFoBIIpT+dIKmrfGIuGYf4KemTJzZeXkfj\n8yNx\r\n=OFEK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDFQ0dm0n7uJID5+GYip5DlqG+gT4X6wUT7WCmDG13vOAiEAtLrkf0InxTBAIWMNElEcZgpagzsbobFzkZt1lZsXJKk="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.a5749702_1546862924356_0.4759621300483199"},"_hasShrinkwrap":false},"1.2.0-commit.8f7c241d":{"name":"neutrino-preset-melody","version":"1.2.0-commit.8f7c241d","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.8f7c241d","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.8f7c241d","dist":{"shasum":"5ca4af49fb9dd036e240dd89db9e70c3ffeb189d","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.8f7c241d.tgz","integrity":"sha512-HFHbyi7vMYYkvpZ8YL/TvTvkirCl/KDUpP2EGjrfQaS/1QxufCUCXxZHiA8lWEFN8oMMj7z04TTIbn92x49uBg==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNaEhCRA9TVsSAnZWagAAAm4P+QEPvsRSFvNzrxYh1jgm\nkT/yKPZSM4TD/FKZeMuRFjuRPjHQMklTmYUe+VdMDWj/U7I43GY2cPN7sE0v\nfkXwUDvVauwirD+b+bSkRAOAhLNIFqCPqT2GA4nlPVGnQEd0sgRh1rKOAXX0\njXDfvim0nJiCAtDhRpAJqtSo930bLqOUoaXdMeysdDhujCAZESoqRNLdwVMY\nl45T/SxhmCvPKYZWsv4fqABFJmx6oiGSOirIbXBPljCdgFfahvBVUDv3MpU/\ntqocMNW08A2n1/5RJjeWwqJd0dOaUcci+geoC96uFS3hzPDXBgHJh6Wizgpf\nu+ahfpc0o1bnCM/yhapZs8RxyGkXOPgWfFv+kaoHXrlMQuUHXDrfAfe8a78B\neMWgS0rOMTqAMYz+BkezDQjLuhXkS1185Oo1L0VZA/O0KySgkEiQYEpDW1Xi\nzl+cMI7M+HTmYhxDd+fHiUDO18R44Cx6nACNfZo/5tlmP4dfxPLye6NtqnyH\nL+rfUh33X9AczsN4szwe5b/YMQt5rRTh4G5fC0B4haqLlckdI09AHaloFSHT\nVZ2MIP/duQddhR73R9shSgn6SmK0ilE/C8KZIrrfCXDkAwqgUIAKOIlzhlxO\n3bCQGCfFf3iWjOVJ2ySJCywC4aHuR+AiiNY/QVlE2x8tG/XglIKlxJBJSaS6\n/gFb\r\n=eVM1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnOl7LrRdtBbnZfvDKJ36EgpElGcO2gGsHzgcFt1ZlZQIgfbeC3rf16jlgn8dmJEhYSLOBOGhuQN37ImZH9gRL5cw="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.8f7c241d_1547018528831_0.0022749670979536063"},"_hasShrinkwrap":false},"1.2.0-commit.e2b2efe2":{"name":"neutrino-preset-melody","version":"1.2.0-commit.e2b2efe2","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.e2b2efe2","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.e2b2efe2","dist":{"shasum":"45d0c8694c1cefd6ac67779ece186dccfb9d3af1","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.e2b2efe2.tgz","integrity":"sha512-nfvTIaIZcZAA1OE6p0VOjxK6EHKkWFI/xqist1qZP0D+DZ4fGm+BTg0O65uv3uufLk/yuyxDUVULRcQnU1h+Qw==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNdeqCRA9TVsSAnZWagAAHDIP/jrSy2NIC+8y6pRdLdUN\nHxk/NHPaykYhvmFcSjXswxc3QQKms/wR5cYQ4ZjflLJxwWGxZSdof2EvipJz\njJqS9BfOItbK6ysxG/OcBxUg3c6bLDHgl7pZFBc9qsPFNzQmdNO1lgoqe+Sw\nQFTyCsOs5XxV+hevCc3VYQAHH8fMPQUc5k5miFr5dxfJQXxag7cnyBkn0wKe\nYMi6oMD8KAT9C8ND1mYNwrLLIxG9HoLQ3SJqP3PAcs/d75lKrhajEBbVVzND\nCqmg58OcDiDaVxNkAKx8E4NUinKF2pnwvZl2BybTlg/F83Ni+i6Nue6uPz8c\nm9W84VassxJ0cC0ISSFjqJeelEiWgkCmbR4qib6BZmnNBJtG+3pFogd/c9tn\nTXdtPrt7A0iHygRD4BWd+axnvyxOBAzq3/FP+Q+dLunULk55Z1d4O3ciuc0s\nEnMi6xNnDit3ZDDUAfd0ZsCU0ck4tb/Xf3Q44dZIFpPC7MCIrxZCSfQEsIxa\nw/oqOQ1e9oRe7Ofm64AE0In1qUkh50t2BzL5Y+Snwc//fFkF+whBdkjVT5Uh\nlo6leFeBsTZh5paYphFbgjA2IHKZCbrKdcQDwCzexcn+xJVw97Tz3req00i/\nz4xaXjmBwx88CdTr0Fq7ZqarIa8agCrOTLYnLgGJpK81l9FM4DAeNQ+jQYIA\nA9V9\r\n=TNet\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkTkTbccQexTDuc0ZpSU3UmqBUiA8lXUNWiwmdRDjSIAIhANf5rjbGM8t6GELKf8HHDWFt3ybmokpbgLDMh/djL4Ga"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.e2b2efe2_1547032489489_0.9772020089537297"},"_hasShrinkwrap":false},"1.2.0-commit.70fd6f3b":{"name":"neutrino-preset-melody","version":"1.2.0-commit.70fd6f3b","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.70fd6f3b","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.70fd6f3b","dist":{"shasum":"308ada1b9900a4e5756bd01718ac181f17d15826","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.70fd6f3b.tgz","integrity":"sha512-4tUKRvDDYQ5seAcmghmnDEh4pkU9lUt4HgClag2voqxkIFLisJ4Vm0CHeiMqV3Jbrqz8HLqOnitlVa6R0dkv5Q==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOIzeCRA9TVsSAnZWagAAiPkP/399ZlRIpLHIMmltsxCB\nReQiwDghDBxeqktsEaXrCCYRDmEP1+uaucNPLl0rRob99J/cZ+TaviaIxJuw\nIGA3NvWJeiTBRFgZHHvdUehBTRk+m2uK8vvYZ5ukYowEeJXAh8Vw15Y5iWdj\nHAUNkC4GzcjyK5dsoPko7e+fY0PUN9e6+LmN6938RSXvijL9+k28tCMfHehL\nHQbG3RwwHEV+oOUqyNg+JcGa6Ngnwdq3Lml/UnB8zVzkuy5rJYJlPxVXZu8X\nonudukpxMaeCThTvQs1vTlSivCjEVGDQVCo9kdexG3clUlCV4tHwokdcIWXf\nI3WdTqoeQLhyHiapoDJcDaHDqOho9vTrSHO5i+pFfTwOi8FPAb/MhTLUAfWc\nF/zd/dGdxh3ok35Bmz9AVbog9FgJ2rkvISF2nIxYOIzkNff/OQG9zehcP8qg\nGAcU512+HqjfKSguC1cAQvob/s5EcNImGi/LIFJPU28b3PdU5J/P1v3wF2/f\nPXaGVjbMheeuuXnOefxKSmybdwDLgBUhDikY4ilOvOt8SapDn3hTHzKx8Zi7\nWvQ/3YcnOCL1E8Lrr4pewxzU6ocH2hWjT9uwIU/9Wf3mIYG5i3Y3as5cSWSD\n+3uWYgnk/WQtOOqyu9EWty93bG9PgsFugKs6iTyihMHfBc8mY/HzQI7Iofhl\nuL04\r\n=p5la\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCq4oYBZy/YqM9zv7iraB/V4pdi74aiAEq1fDyn/Nh/SQIhAJJWtxipXf/0MInJA/TMDMjj1OoxlPndoJT1RBalU1Py"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.70fd6f3b_1547209949722_0.5200843302246121"},"_hasShrinkwrap":false},"1.2.0-commit.6fbb2485":{"name":"neutrino-preset-melody","version":"1.2.0-commit.6fbb2485","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.6fbb2485","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.6fbb2485","dist":{"shasum":"4e5a125a38b878ffca7a28cbad001d885ceb8a61","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.6fbb2485.tgz","integrity":"sha512-LORvSS1OhCWpgIoeivtudEr2fDeGWN4Kaw2gBjHq+7UCHJZQWfw4006xiTcqTxWmiRybgLKCogMVwg6vPGEE4g==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcO41ZCRA9TVsSAnZWagAAH+YP/0l8FvLnqxX4dMRpd0K9\nKtiN26GQ1uhaPXLJjaimDqZ+NDjo3lKhox0CrNEAd9xXnQhp4B0CKbt7fGLW\npwB/bMUcEGgAeB6SRwwVBV97Ddqg/B4r9pPWt6LErc9+MqyEvUAQuYIQkTa5\nqJUA3LXYH8YDRPmOQpHnVg+pQlrWLzH3NJ3kSuWcEHolauaEOZ42WmrfkNlP\nTgPbmtt3hblIxrj3CGZhpmcaIWWfFenhz+HQvlWl1tQjT9sw9JLDuBGZwQhl\nnV6RmK+JdoUf5oX/Sfgr+SVsTd68VsgtYqt9kJfKd+0wdaLEL9YDYiKY7g9L\nPPKRhxRNvgAzcH5UIlq3jPqAVVHr4OrD+09VI1thOcy8cA7Nvsz3kmBG0Zac\n4BkOz/IMzd8+//6WhWuhleMkLSP7SwfbeGc8XIPvjG2+IHvGDFjifKkp5gnv\nq1LEF1O+wyi9K9rCHW8D/ehg8KwBWyNn7cMj0AOf5aegnQ7JcJM2f8o6pmmf\nESPiDJtIhLhsZaEnLS3POErnckMY/S5j1WKub2sI6wwL1VkMHSi6Qkal8CV1\ny+pCbxiZZdkvVfEbVEwjq3l8fSZB1Xna6F3de+hMCXAJVMWVdUpbtVcuFroB\nsvkFrADkN+9KWIBjlfTC9rJ45FzZizqJMLEGmQZryAHmD6wFfdS+38plfDOk\nFlhI\r\n=UtN7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICxB4t8KOPZa8EsphAfBOeBrg/t2C/ApARh36mH8nF0bAiEAwz1gN59gdsbvYu0VYzfuaDNKI4PVhVN+e/sr0DZo4ss="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.6fbb2485_1547406680853_0.1318953669802545"},"_hasShrinkwrap":false},"1.2.0-commit.ce0b6d24":{"name":"neutrino-preset-melody","version":"1.2.0-commit.ce0b6d24","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.ce0b6d24","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.ce0b6d24","dist":{"shasum":"becbbea68c75ab513b874af008ac1bbecd7c6cc6","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.ce0b6d24.tgz","integrity":"sha512-0EvJOEdLpcZkXb+o4uLoxGpOcGCcS0uVRtgua/jhk3F64rZ7WyBBlKEpDTTc1ivQNgqW8REZAkVIEChTlsr/uA==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPzG+CRA9TVsSAnZWagAAXiQP/RvmfXY7KSM59JXWK1J9\nrYFoToY1MvPLH9uETOFI3yU5A3lC29GJvI146lXJ3JGKMxxZo4nx0Kqf8TAN\neHu2A4wHmUnAn7sNSpyE/9KoK/hbBxWkgxmd2k7c/REBAgsO0r4l2WpaaCs8\nbwr3WTRJiCY4um5vLiIfhazjGFK+bA9xxTvj4oPhFz3KMIbSbYmfl/ksBbeD\n5nKpiRoEw+rJisc0sB6R5Z8MAeomAq9LREA+J/IJ7LxpIHs4OH9R2ju5XPag\n5MtFXxetjJjcxDZ2RopIxusF+o6AOQbQkG/llvRwommHsf1kMR60HwpcQik2\nmHAgju9kLJS/2SAhWi3vd+vcvw74QuQJaosdm6fE/gmOTX9ERI9dcF6jHPlV\ng9xpQVln8wi0nezHXFOfjZ95HgzKD6G1a7JiD3e8LmKYW79Z57PJa3shDKeH\nQPFbsPSMN3PMBUtuTXwWgJPKJxBUhphcmpFN2ZfUNN72WJhbIqNix0F1i6Cb\n9+mKD43ttcUWC8PkfRpe8ua6ty9w9sjJ4K4vFuvgjrfGZsxAKyxCnV9daQlx\npdMjJEAuepKFQCSj9t1REVnWs4gD67bS6g6RXEGSZ9Ay0LcArA+xaVfFryra\nbmw0tjqvHK60qfliPuYdCX9VQNb+XQbveSIuHAUw3zqbMFM6pb0a55piImTo\ngLJV\r\n=Lm3Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsH3Pa0s/MlTuYqLZWLzWUgwFoFKRghhZG6nB7VRI8ngIhAKCYBCsb4LdVnAnnjWav8yuqlBwJA8IzKNRpDIyOH+Xd"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.ce0b6d24_1547645373994_0.08329079544701368"},"_hasShrinkwrap":false},"1.2.0-1":{"name":"neutrino-preset-melody","version":"1.2.0-1","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-1","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"_id":"neutrino-preset-melody@1.2.0-1","dist":{"shasum":"695d49a6aa492a909b25d8f8cf1569b55d06c9e3","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-1.tgz","integrity":"sha512-8K1hxq5vG4LBfuL/hMnP7C6F4f5acBI7aQQM6SGR271GkWrD4IBzNNfqoTCLHCpxCH/ILQQ+/iR7+APqqo20Uw==","fileCount":4,"unpackedSize":11116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWREfCRA9TVsSAnZWagAAlDkP/0FHP4zlpq1oe0zHl70Q\n1OIvxWe/md9btjkZ1bEFHuA1wOlIeLFwalMzl+8+MyXMMDIaJQkCRzFysBCP\n12SYXr3obJe0Y6haNs5adguG7rXpoOa0WFOQdqAuM2e0x1D182Q6yz9ooynu\ngCi7dQPHsZniOhBzF3CSk3Tt2cnQ6X6rQgOl1tFjpwiYV4f4X7994BveQzhJ\ntCRIDqWbiuUDMw9dZoow6hmnOwYM0oMVfpfXwT2lxGRyHosxmHWYXFkRfsm0\nL8pvJx19gPxdsl1RXKzF/zlg1LfcV/HQhDvp+9HcnvswcW26/y41HgVn/Gce\nSWgMV0MMHzVJZWoLFmWqmGKbMOcd6JsjTuqsafPmhuLI9ajkW4xT4XL6DtYf\n8zXcjTEQWofLrQxQoJMV8cSSGwW5aCvQBsn9/U/qHYDhGW4cRFsa7gVofGKo\n2AGUSCzr8n+/7edHocN/3qdkhrBpv4nokizJ8AbLMuMtHDzcNgg9C3VvhaWL\n6avR+yjMv4x0Xg0LAXrBwr7DWZUpid7dI+qQmqYbtyARTo/cZPx5QV1cqa+e\ny9nnQtg+i3lJBNTGUwG9KaLI7fINkahcYRXyYbysyqqwOB02eKGNBpXAISSa\nQGBgJmljhWxI1SivJab+mLr5jRCzgRVN/BL8nHJ0PljjN3uYlSIjiu5OWQ8N\nsjyn\r\n=B0j7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCt+gkQkAMHOOD44Km3u+7D0BLYiYLiSIrBamBnV9q8oAIgK1kk9SiF+7Q5PKgIa6D/Lt2VvNFJ9nYKJg9708EcymQ="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-1_1549340959150_0.6740256663640589"},"_hasShrinkwrap":false},"1.2.0-commit.60c4cb49":{"name":"neutrino-preset-melody","version":"1.2.0-commit.60c4cb49","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.60c4cb49","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.60c4cb49","dist":{"shasum":"31decebc99e5e63158db066b54d5063c786020ac","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.60c4cb49.tgz","integrity":"sha512-nQjQ9FkCsqdSULBlkQIlPY0CGiXL44Wxu/sYxUS8a1iCPeR9s2+Bx5JX2iYvfpGvjQ3ve7F93tRAY/nN8lPaaQ==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWsZXCRA9TVsSAnZWagAADOkP/A4WtykauAjSUnQxIO9I\nn/outpFR7zVRIZpXbfIymEg4YA2K2687/i7pXtF/VZmzS8Vbf6tlNrwF4+kE\n0VKhmeRX77xsy738ms15rfPldF+3BIsZWyulR1xj61HYRET7tsKCe8h3CTPB\nnB/oyQnKTdW+hlGz490xm6t/0aL5M8Ejt0++VDQnL1es1xO3No0aIk7MjUDE\nwfrLCqPC/xVtJxr9gJK4C1ElHozreI70tlQXx4AxRFQxFm9Dw1DtsCRUlu36\newXHCS8SSQCpri2U0MhfrdLmAXu9RSTQYj0e3ti5A9n1tanib1ctS7b0iZv6\nVcM69nb1DoEbJyk9VeNuZ1nSnzWFOnJAsDWaXQH06Z958FoLzzssuyyRK5nI\nukL2kOlZXIPbf2NF0ohUdWrCABoDQX2KJAlBaVBhFSB66aUfxrm1NIY7+yqz\n+RbaTeZB9jVAjtu5mcRSyFJz8hV7uV4G3cbRBzgJR21FXqsTf0kn9XkAyCbn\ng/w17amrWPVlhoZiXLhlNPWq8Bcw89UW4mw90/1DmwOXvCIXB+s/v7ZRbRRr\nugDBnnrW2U4idd8tm8avqtPVvgeNCjJ+HWmHMqg2zlkW85roLOUql/6VG/xY\n9UnBcsTLy1c5edP/8PidlJjifDwaODOkCwCfuCUa04/HWHrRuT/zbyUcAPWI\nZcC6\r\n=kH3F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFPRIEnNGWX2vLegYzaMx2tNPwxWc6KnKuXgIheTVoxFAiEAuMgyIvUyO7k2Kpbd/rSBbp2Of0YbDsqXfr/9qSLuZqw="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.60c4cb49_1549452886989_0.7751298357079457"},"_hasShrinkwrap":false},"1.2.0-3":{"name":"neutrino-preset-melody","version":"1.2.0-3","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-3","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"_id":"neutrino-preset-melody@1.2.0-3","dist":{"shasum":"742aecc9a7b363c52d897144abc45ca505d1b201","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-3.tgz","integrity":"sha512-5EteI+JWa2G+hLN81YtSg8QEsUVSYEuTzAbYVO8qqcDW+AUppeVCJnILLYSXTK3TXiCdPwTyL6ZaQNjwBfmXkg==","fileCount":4,"unpackedSize":11116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXF5iCRA9TVsSAnZWagAAzcUQAJeLWeK0uD01ap9AjfQy\nQmGSbapYXYEP8CEi9rz8+qnWundpOcNisilxJXE4eHkI0w7NVOo6XavWsTca\njL2FRUdKvXZlnpUZXRi1vX8Jqa2nomDBgNK9TIOzlDaUphVosO4JV0ZqUTG4\ndWslTTPMuzFF0LtzrX9/fh0vakY6WK9y0Uu9j2k5pks9SgiM1gDcL2s3c+kE\nYwBH7hWEMcLqclGm/WwuwgJJ5tdJHL1yDBnMTxS9Lk0xBcto2iDJu5/ESrjV\nc31BLbJfm/Mxyoe3PVV1TImlNWcAmK7D5239EC6lu1WUTK0CZXftnTr6sMkQ\nYY3DwYR0R17QUmduePRZtqrClIXOEcI1N7yO98ZjAk2JHakrttxVkAPSNboO\nIJ1RNGueI3ffc7zJT7hihgBLLyfy/LgnHfpX1j/dU/7GkQTPdSC4pf6MbM3a\nEg4SAguB2j7voMomAiAheF2R6g42Ar+BxPBIoLOplkbdnS3l+9MgXmgVF9Hb\nGwATn8SjWZLTwq0MgQonoR1ya5wJtq7gBSUGNJCWqRF8fMEF39C17mV9eFgk\nnIaxR18ooonx7xnE5j287UjqwFwwapm00CtIgs0eyp7mwz9knrT+Ck9aIjSk\nrylHLFyKOUtvyqjcIxWQc6N5tpDyk0Fu9gmQn7Yb+EnC7Jm9WplF8/Fnj5kn\n2/Kp\r\n=S+ap\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBIIh5twA10kwwARtNe9tcVCc2EuepKK1Dp8Fo854ReWAiB4baoMQp5QSBl0rSLpgnInD3lREYxWmvIdK2Ln/1RYuw=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-3_1549557346124_0.5418093458740643"},"_hasShrinkwrap":false},"1.2.0-alpha.10":{"name":"neutrino-preset-melody","version":"1.2.0-alpha.10","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-alpha.10+c933622","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"c9336225fae7c2f3e13ab5e0b260065eefe15e4f","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-alpha.10","_nodeVersion":"8.15.1","_npmVersion":"lerna/3.13.1/node@v8.15.1+x64 (linux)","dist":{"integrity":"sha512-Yb5npXTWjabPsQMe9KhjyOy0GZIxOJN+Im01795ms9B2Dd9Xxpa7xJ08OgttWFfyhZuTt/Yu7lvoB2qxe7fVAw==","shasum":"b486192ff76ae213c010f4bee6374319fa62f7f8","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-alpha.10.tgz","fileCount":4,"unpackedSize":20783,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJckNsSCRA9TVsSAnZWagAAEzUQAJXwPszUWUEfK9KyD1uG\nbHq+Crr50fx20x13zppKuUT0LcDlSAuOb643oeQOsmSE9EmL6IK4h79CtTZn\nJFb18DnJD7Xv7WE8mgpf5XwEO0JeWY4XZznPWeWRHe43Ha2HBOSZJJdTQWRg\n8ah7CnvdRb3cz5pbhdAM4H/4Vvc20GjOTJBvYHMH1rMUP6n2rna85dSsghLs\nzYIJSp0iKufAiBEsKSlL+bLm1KocIFfEXCz1FftrRqSINzO44fS5yBakjQi4\npLOliKOYXJh5B68/hrY8guSylUDLELPLu3n4FhkNhF/aZvdJssjGhRyqeJkN\nlZaQbZRP6c8tub2pjLkZ3XauBwabWs9HNoUWO3TVCRshK45o8NwEVP/OS2QP\nyluJnmEw7gdK969EYwXlJKZ5ULVDiKXWlB/43SikO8ZTSxK3bDvCshNVluaO\njBJ8nSQOc0keyiqGWpP4yGoJeDmhiKvDUehR5FurziLxfFELMnHTPRShV35k\n1asHERMoEyXBjbvh/xxDPhd+rJK5ek7XnLFFdqfyC+otSsMzzw9mM/4ZEDG9\nJK0P0xdsLzUtL2Pp9ZmIa3OE6xAa8+5RXp/BwckEE2AWW9yarrNLZvAxXgCn\niMQzYPAJUAevnIMUhkVudf8X+0qPaQeuXoV0aJz880+7VuVEifHx6KrkwO4l\nySsZ\r\n=8aOM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEkZQOdina+qRKlStpqfZpwemAp0vL7qyVv9jyRzSfJZAiA9G8MLeaGGZvLo+05YDG+upl9hzvjiiIFoi0sIRCp9FA=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-alpha.10_1552997138028_0.9762021359278876"},"_hasShrinkwrap":false},"1.2.0-update-deps.10":{"name":"neutrino-preset-melody","version":"1.2.0-update-deps.10","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-update-deps.10+3539fd3","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"3539fd36498728ca09182b84c89205c88968389a","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-update-deps.10","_nodeVersion":"8.15.1","_npmVersion":"lerna/3.13.1/node@v8.15.1+x64 (linux)","dist":{"integrity":"sha512-xqMGWv0AG+q5QfdJWOxWgNEx0Bm1MD3Zz6LbotTS++xDRg5J6BpNTGONG9ed7+3g/796IBdrbpcvBaWkUnlIhA==","shasum":"dcf2147a05d1a1591aa74c69be8331653387c63c","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-update-deps.10.tgz","fileCount":4,"unpackedSize":20848,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJckRS+CRA9TVsSAnZWagAA/doP/0h2GzCKLTtlvNWy3kDP\nXmbQ+qHoaXd3gw71GZAvU3Oidx8V0fAnWXK9c9tWRz9Aw4+rnxSnWO9km5qJ\n7/UuL1uU/+LZ+CVD6uGz8+PKNwt0erCOPGUDQ2Sg3V1IoCrHDjqyBkM7oIHv\nTnJFdrcKwSd7HNBPfntD46yDmIblucs0qm9s1pyGOFnzafFi8kzHLM7hKcqB\nBzmoYKRkn5qOddIBqOGfQ0jH6KWuKl5hd/UmEcrQwruepgx7kaXbZbnjnR54\n9dwdN4X1tDA4d08WL6nsG6Hvc2JPOZsSOyf79K/CnE4danJeAtdcRMMdbkBm\nMF0n9HN5fX+qevG+rqs4f6QWGG/yeSbq6ykHr6Ky78m4MKP8pjwWUQb+kj7N\nDaGT83vA0ksDrddJIu5bS1tLN3ggUHWiGq6eofFlYucrSEx14FTZxd+0xUUj\n7fnoOcvSbEJiQdRPGQRMwwaWqg9FJV1vJTE+Aues4kdWQkQ6dTJ1sEVoErgY\no9bM8mwmnkmtCfLJ1EqHfFcI281NtAxKFfVNoh9soimWmDquDzjMDywKwkEa\nNJBsCEU7JnUZ81MeRRn64mT8MsPSzhjgxU2v0ux6QJAys6u9BINOtcJSPd3W\nobyQu6c1OnuFxgWEjGxWMWx2pvVEQNJCizVdE7ELjpRqjUV/ZzHspxRzsRVp\nKVdg\r\n=k459\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHoWvE+lyNQy9vuYaErdZFZXXMuPUVYgKHVv4zbDHp5jAiEAyQnBNBZcnhvsnRP90za+qs2Pke6HKwdND1V8RAVT1lQ="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-update-deps.10_1553011901285_0.28410731687141033"},"_hasShrinkwrap":false},"1.1.1-github-actions.46":{"name":"neutrino-preset-melody","version":"1.1.1-github-actions.46","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.1.1-github-actions.46+ef996b4","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"ef996b419d24a00a5f204de24274a121ef3af27e","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.1.1-github-actions.46","_nodeVersion":"8.15.1","_npmVersion":"lerna/3.13.1/node@v8.15.1+x64 (linux)","dist":{"integrity":"sha512-U1NkbtYjzrceEUaCCYRTxEqHyEhRTaVoyE5R48jp+3wpFFNoD7aZB8UxXure1CiChEKkocqr/BkMGaS2W4DzAA==","shasum":"91eb7aa84ae95caeed5b35bd2d157654e0b4f091","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.1.1-github-actions.46.tgz","fileCount":4,"unpackedSize":20854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcloMWCRA9TVsSAnZWagAAJxsP/3LHx8S9QkzEulP8Tv06\nfD/9ALj7bCNGLiWSd3GXlPlooP/B39NzS/VOyqwfNx7mgrLwgNaBmynVW15A\noJoYMiHcA0oufBqixWgvJwXiZoR+6ElrWnFWLywjPG+gBJY+AzC/2Yd528qa\nhIYJayR+mlNHQG8K6i4sMZ4Y+Ub7c5jt3B2VBESfkTc+J+T70I9AtGm65/Tt\n/wNvv7GCZ9SyMQjlgMGhdfc/faxbVszEG17HhFCnFioaeKKqa9GfEZTHmWPQ\nuaLIOEFdjk9XDmXZ+v52ysfyRwhyG5RMY2vIEQ5+XkAfD1p4Qp1pUXgYn0Fv\nBAoWUvXuP09F5RqSKoPrLGK9xjfDe1myV0NWlWkIrjTiYBHLtsx357DRZE7+\nX4PwAXf1JuTfV83dwN6FH/IxRI4YCZh+cmphMsXvik2lbSZl5c8D35SF22E1\nI77i8WU1WYAT55KRo9Vg7PVGz58stvjVAwWHWbIkUJScgp8m+I/hycHIPNzL\n7BDH9Ct+IbP9WtLtwqGpjC/vZ5xnxkt1w3BOMxgRbPL2EodnN6u7ozUYn5J0\nKClV9KLs5LfdW9jLO+xClCk6pYZ7r+8x3u7htIBUXUVHIXodWFtZ7PUffY2H\ncfSACf+1b5dUyt/KzLaiFvfxbSaKTvbeDORIPqGTkTfsTj0VEENR1helF/Qq\nVQEy\r\n=s9T6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjjWIr0brcl4vWSq+DvhnXLfB2LX7vTOdbC160nAft4QIgHoHUR9S8lyqB8dLmlBgGIFlv5f47Ko89smX74Vq5VeM="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.1.1-github-actions.46_1553367830323_0.6692495113407622"},"_hasShrinkwrap":false},"1.2.0-commit.39e381df":{"name":"neutrino-preset-melody","version":"1.2.0-commit.39e381df","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.39e381df","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.39e381df","dist":{"shasum":"bfdbca2fe0d04047ff17cb1924b494240b29d013","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.39e381df.tgz","integrity":"sha512-SaSVUAsCPaowngZB74xcLIERzsVz/czeuDdiM56YPu8WcEvK5uq2zWzt3vWnzkKXWwoP0jPAf6K635b54QiCfg==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcmlAKCRA9TVsSAnZWagAAB34QAKDNh2fmyN+sWc8uFJNB\n2TVoBgYbnNddlAj2XT9LwRClu9WR70XcYUPTxNWO25NWwjsycV/uTURpFVY4\nh5j46SZS8+rpSHrECj8BO58BUftc11w7WQZo8EFKusJmB5OaOzVW/bKr0rna\njgMk4FimTef3U3YWRBVbeZLsDnMvCjf1+OEDpSvAeYqqLn9rpsWpB5YPUCXY\nayAZoG8PZtzIPJWQsON5oDeQnLX0fJWwJtxZ6lyXokrGO/FhXG5ANyiC77xS\n+dxbCuDDnJ3R483tkZ/4/sQcLQYg+sILIuDqjq8x/OcGJbMMDTUQqTrjf2cA\nwg0tfAitZ7KvgDv3mqEnK4rB/Bu38mFppuD0y+uB0NIZZEQ9RYTbMo6XJopj\n4K/+Uu8jYRm2lUSkGCTv7QpPZI+wA1c33Uy23tGPKKcm8GGUq8h2SF1atEco\nZhOf4N2mcyHdnarpRD0Gavp1vXYyz0OIqfPlOYjbs1bQyeJSoZkoJM/RdF5b\n6L7q1vFUSea9oQyCrbzJ80haN7o3XV1dqbdcCye1Id3VBfrAOKsrqI47IQFa\n9Y/cQQG6J5jJlPsYdsMHcC9xj2lryX3x22Ek/hcCyBnpZwWIKvolxnWh47tT\ne2Fj/cferKvBSQS7/8g1x4c6JPeD2LGsvNk9WiIHKbixBPO44JX3Jx8+QgAk\nOcn2\r\n=Szug\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE9HrVHfQTb1Bnfqx18ShXRdFB5SnfQscqzxB4FfdDgaAiEA4SgA+CVZIZ9jjPRJKulN11LswedtoI1ljbV570v4J5E="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.39e381df_1553616905786_0.6095183325774947"},"_hasShrinkwrap":false},"1.2.0-commit.66d6630f":{"name":"neutrino-preset-melody","version":"1.2.0-commit.66d6630f","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.66d6630f","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.66d6630f","dist":{"shasum":"c96502a2103c98c41d403e37199192a23a0aca3c","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.66d6630f.tgz","integrity":"sha512-KSIBqC7fz4ikAq/dy2r8coiOEqtxmIj1IFAuQeDgFn4zBxekDpnIxaKfu+5O/OEI/gv/Bw9XjeDKicTZXUXWHw==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnOYcCRA9TVsSAnZWagAAxM8P+gIo/BzhtlKWqA4thlJY\nkLnSUt/fNljBN8YGykeKQcmC8XIGfJgsEj8gBUm9ZhortZ5ZZn5XmC1W2toI\nvG+WFuhp+wtsF/Oh0hXHAhK/8cmzKGM8xny0PMK/G/mCgTDHGFMUqKCiF9jP\nuz8yMdLZ4lCralMoCA5spHSOYqhdqzi99uffLHaSNKuh9Aiet0DdvVe45dmx\n90BE9Il1RtI41/sN12veibwIbOmO0zJ8Pro0o4XAl62HB5xOwxzo70vyYm9m\naCSMRfKiENLzQ+s3u5L/n86GCRCs3YsPau1e3HBywNZCwQHRHRlv0lkzoRtq\nQHaLZE71Xz9YsHEjKhFjlqsekfCcaBKTkY6tobYoqry0kTmxnWCujKBO12as\niL1KAxXif/dU0cui9Ve1P6GBfIjZakm7A/KUA4tF4mIf24sS6O+4nO0tLhCI\nZnfspadyhSziapxfxIln7YAP/4tpy3VKdbh8F7NF7TP8v/kwRbQepf3XU2Nc\nWNh8QARM7sFhUokXRLP6EiuHkd74VKcDFq9KlQe0wxkR0Dh1PaeCwvMV5jJ+\nK2I3Jy+6KgEA1dyhp8mP0tCDFvYye6YtfBHa317JlVkWUMsR5VJPQ35N8AXu\nPO7tXRs0KBSQmq33SDsE2OZzemlOaW6e2zYbxDbE9U2CvzCDVgncLhL3Ed8p\nNeZ5\r\n=rMhk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0AB6DEXHPzqT4vhhC/M+r0NIHN2bx9zaDQ9E7oONJXQIgQ59JAXB8EeUTVm4e8bZBKcpAy29ZKPbLVnw/Hpvm0sE="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.66d6630f_1553786395860_0.7903718681828573"},"_hasShrinkwrap":false},"1.2.0-commit.7c030141":{"name":"neutrino-preset-melody","version":"1.2.0-commit.7c030141","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.7c030141","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.7c030141","dist":{"shasum":"bb83f25a43fea6f3a60f9acc555cabd117f5a120","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.7c030141.tgz","integrity":"sha512-Vh4duc7QJh7X0wFSgj7f4d6U+ltHGm/vRZ/2JwHPoKM2KjlxFSwkWF7gBo9uu9H9og3yo4SsihKyvOTsfjQb8w==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnd8BCRA9TVsSAnZWagAAECAQAJcMeSS6aCKiWsa7boWq\nILboK86jEP8gdto8+FZTiW88Hh7Qs2x3LVe/PNdSG65gQm70Y2HHoR1mR6Su\n+IFSOkrZUnyZgp64gxNYhIy1PxwDfFk2Kj5LU8MsBAgXY9BYiowJwqu4YFOh\nCYDuQXktqAP4xu+OUv2vvRJU+kbVV1uJBg8mXe6E+rZhWf0Na/K2Gy5kPYyI\n50x/1H6bAtgwzCyvj5fcF/hgs38jRABFDIztgl4MzxBkI6rBUzHfefNzRbr+\n3zswftKLbKvRNpCr/4irFM+NawcxewedEXJMZ4fpWX+Akt9R8Av1CKu3WmCL\nIwd9F2u6V5iZdOO/9hul7Q2ay2NFS+eroWcjGOn65pPzCIBDVOAQtdeGlIjA\nx4DEaSD7/5kV85rCFWJMz8Is1T4Q0MRtWxqvkEF9lPhQ7xr8wHYuQh7kzOHI\nydtCTIy8SbZb/dpYn4TIml4Csg/htV9N6UVfduKf3+bFZunTE8h0IinAL6in\nRoYZiIdfi982VYNDP0GNG8wltP4tPrTDu2UHh0OMELbNFAY3MztXkrYPxNSB\ncb6OBcyLhsSHuyhKyt9SUxXWLK7YShrbzgqaas6OEr6drXtTxzpD/i2Ul1Tl\ncsawRpqFmNAGuzkx4jwu/lsaDN32LZ0up/e8bUqScS6KvusnWlMoskhLa3C9\nXkdQ\r\n=ot/V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5Dji6WPOG5vShFemzCVMHxGLkNgwwQBWr3zLZkOpVmQIhALuuESCQhXKAdzPfVqxbDQdnjGZFN4+aE2lY4VKWlKaB"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.7c030141_1553850112396_0.38019256830303094"},"_hasShrinkwrap":false},"1.2.0-commit.088eeea3":{"name":"neutrino-preset-melody","version":"1.2.0-commit.088eeea3","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.088eeea3","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.088eeea3","dist":{"shasum":"fa5e48311693667d5f6e1c1f25e1edb6ff0f1f65","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.088eeea3.tgz","integrity":"sha512-wJxaAxgot1+/KLKaK88nDXNBsHr91Jpq+15hB9g1g/A0HI6DqHaij0gAddGmYtiR4Q6afDNxL4PsizJ8wzdkwA==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcngrQCRA9TVsSAnZWagAAWEcQAJVW0XIB7jnBHb5NHxRW\nmeujd2C4TQFqWwmDQI2+3L6XQDMPEEEjkwIcnp6SCqliT3DavBlU2HNsxeaE\nbDTQZ+lKfDv9SKSP5nwYPrMmyHktEByQYmQ7PdVAnqVGSeFRUJf1d9YCfS9g\nltQidaG2VO/oN5hFP/nBtZH1y3/rZqtcHQmVQygEch6vlj229+1cQEVyWiou\nTyQIO2XBPqNlYBy4oyenzJPtwdpj3kodyfkwlHh/D8d/4SI4TBtOIZ1pZtyz\nSOkjYlx9MeDWTKIZsnflhl/EoQh3etMEUSqQEqrTpRSRbrvC7woVbteHKjRK\nrw8axmOT7C5yEgQRf1Ud/K7/cQjskBpGljfQNfzQ9MifOX2fvkknoI2P/J47\nyPENJh3kC7GJbrNjBKEz5epNpkUsp2XkvBhqwSme/WC9GDsn5OCfBoHNSOC/\nRomiMJbTdVnjF6mkvgGEr1YAGmQcXx5pSD5q/yGr4GknULzI5EcxICKoR3WI\ni7Ktc2T9su8T3R2R1SvqaBLNp2U+GCvSYGiG3Mr3v8StZQThx+BwDhiy4+GD\ntEwETq6HpMTjBgKcpi4VSSAQ+VwF7VbCCJanOVbQwIjIFfLKYA1hxMIM+r7c\nqWLwFOa/Iqpn4jx+xm1c0UzzTByZklzuYxTzFb7KKT3gnmK46bWnZlJRsOTg\nWJkv\r\n=IOKg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDgUHKswtfrmSm1rm18ZmhjUDvyVtILNfTvh/Uut4TGFAiEAxuzmnp6gux3AIsfuXcovbYZSnXPUXETaf8JI0cSBLmI="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.088eeea3_1553861328058_0.5032138163637274"},"_hasShrinkwrap":false},"1.2.0-commit.4acb2b43":{"name":"neutrino-preset-melody","version":"1.2.0-commit.4acb2b43","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.4acb2b43","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.4acb2b43","dist":{"shasum":"d653c69fa5c1df1811ada86ce7ef5beb542c6123","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.4acb2b43.tgz","integrity":"sha512-kKdrnpnS6NBSN+Ogd5M4JgKxplKrUMqdDHgR8WcwqjCFX8/WipfEdc60RqCyQbH806W4dzLzp9rPHBckkSLaFQ==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpG9zCRA9TVsSAnZWagAAySYP/2dWHb7tSJQ4qBimUnM+\n43XCl7F6H6iW6Db2wBAZ6yXPD29a9VOO0s37KDGZ+9q6t0Itg2O/BSk1y7jl\nK2RnU2bh7YA8A+RTiA+RxIF8lpd9pf4Ksfb1A1jDDnFupupUrzA9SjTeCsAi\n/cPYv9aextGGM+SPiUtHPwaxKhkxc623uHHvfB+4wemV8Gq51ehOIZlHBwVu\n4nlBH4uPGjXMeCKYNtaBk2cvZfYjUnnXiJH3qIU+g8N5YadXnpTa22N0vHBp\nANSkDUpwCT4IqYE3Ra5w6GiDxCdleMhtUmyM/uuVvHaMkEDThLRQhttPiX8T\nJ6ORHDn+b1lRD4/dN+IGdUyjeUmQfYWIdRryHcarXqua2oCeYUwoGPfwrvgJ\ni2piE4JVxPqFx5dOnQdeaj04axRfhpEdU9Eh7bb5d0GUTmiYQRID7AoK5nLy\nFlq2KPMw5wF5IN5ySdXx7btJ0I/TbpCJxJCTO2NifvEAXoZF/yKbJCqK+nyP\nijvBPcpkPPf6u/gYv8o2OxFuH+R73eAiv5hR9HrTyA5KwEsiVg++CLcMQHYw\nlEud4BJXmlNPXuvz+Vb/KZu5dvPAZVaUzKSDyz/bK3KUdXjyTaug1lM2V1C1\nxfsYJECVL9/7Pze8cRgrNjvxZk+3tWHI9TboueK2PzoapfUpOwg06KOKT5TJ\n7Hdi\r\n=Yjqf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHgDgyC54VS+EhNJh/FjGNvKZUS9y7dgNRzJmy3/AML1AiEAw2W1DsagJaS/fN+lLwuuszSMzB5QnjU08ceZAJ0AGjs="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.4acb2b43_1554280306626_0.7287690684240498"},"_hasShrinkwrap":false},"1.2.0-21.2":{"name":"neutrino-preset-melody","version":"1.2.0-21.2","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-21.2","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"_id":"neutrino-preset-melody@1.2.0-21.2","dist":{"shasum":"60f339bebd2876e0706162cbec81ead31a34ac4a","integrity":"sha512-xjIKk3TfP+C3kHGhpuFAVdSPjXkMK8/uDftWug8jwxUwL0k1jB7ShYCzMoShGZsIDSHVCr4O+9K6wdkCmpBJ7Q==","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-21.2.tgz","fileCount":4,"unpackedSize":11122,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpID6CRA9TVsSAnZWagAAUqMP/inueq1AxdgTqz2nOKd7\nWHsxWJa7sSx+uthfyFjeKPw9z5aPnaPXy4Ar5X/0zOEeXN7IQgqlEobICGDX\n0bUCwZp0C2tkcFoLCJApFr61G7VFMzrX5h4hoU7tepDkE+qNCUZTL/1DEXkc\nV21mNJN8NGkubMUqcBl2KRt4tu8TSR5GZNG3HRO1RzdmeCCFRuAyMQdlraeU\nviESC38+fxXHK56BkcrW0bFEubu3K8gOdJpPorEz+dK+hkNSVy14RvFwbfu3\nasAEwfXROD+/FmFZHNYVaQ4TSg8TU0qxl89wwh2QmYDtfxx/F22p3YsaI8EX\nhPJPzjBRu0XUEXhUI1WPrUvaitnreG3Yw1NYtIF9cNYSK+t7nlkI9aQkjmd5\n00dWyWd6jMiyPbDqCL224jFyBFOfEDFwXCg4v2gt7aIdXVR9bBA8zt/1N+iA\naJk8b9ousBw00oQ4bo3J9/BfZk8mLShmr5K6Os5Nd0C1RDagZWlBKJI09INw\nF2t29s6ph4FUaIqtpZg3J4+SzL+3a1xXAqvGnoqKCqMd6YfDdnkg5T2qiUwf\nj0dZbbJMIP7uEVQNhtemUSEL25QOi875NJGX1Exd9w8rX3Vwxap7goxABIiW\nZebh0Av2lHrP4XzwXbC9uFT+OxRtjmFnZA4vWgGMkJZhWmsIybRW564pXY5V\nSjeh\r\n=rfMY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBxbEwu8mYkV1kOplkpGTPh4h9TtQSULJ/crJC/mZ1oAIhANGH+xgcTf/D3CGVnIquiZLTRWApm+QmwLPMjOXhnzK4"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-21.2_1554284793236_0.681060914304036"},"_hasShrinkwrap":false},"1.2.0-commit.a347d3ed":{"name":"neutrino-preset-melody","version":"1.2.0-commit.a347d3ed","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.a347d3ed","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.a347d3ed","dist":{"shasum":"e1855b1e5a603f9c88cc56ad8d08a91d35ecef4c","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.a347d3ed.tgz","integrity":"sha512-Dskt42jqYkultI44D4gtQCgifqPlkQs/Sg3KJ+kAgLz2L5dqUw8rhp4nd2H19DDwjrmGA4bdwWR+ttapc3eUGw==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpf5lCRA9TVsSAnZWagAAYGcQAJVvfhGzwzIrm2kLS6Qs\nuLuYEzwM9jlDBCxNGgQ1WM+WKbUdn/rDtSs5mGuXggP7Q3s7V2JPzVAG/eqa\n8lbqsOlmNAwm6CqWcCPkefrFulnijUH7Tn/yGLk2iwFk4I93UWJ7dZn/A460\nkKOzyw1IQSS9esanhpyYLjXJIaL1MeOBhfPiq9tEXehdGMIlVqK8LsbpfOGH\n3KKtDN/55EA6tiqSIL6Mo73xOokMxnQK6ePShuJCaMDtG93gsUD5x6Vip/Z0\nu/9VOCAJ/ev8c7yijvXKvigg9ve+DtaKgjmpyVV5qONFHf4xFK5atl5uybDt\n+1VBpfdbHBAsclY8nAEJVm9XAmkTrUPWt3/uXBVzZCJYU/pUivnDohzZeFw6\n7xm0poOUinFf8U3x7w3ablaPtBSC3yQDr79xgpGzJDVRAkHW1w1IGD5x8/F/\npdpMC+OewrzrC7ohgcoMugyN4A8a8f6sOI78C044JAw7Wbrwua3vktYEv1BF\nbjvhxpykZuYldiGM6shT+PF39Jg1S79GHAIaBAiLQtf86A4vmitGrlmJxR+7\nZHjqm70Ln3iVFhw1q7cDvSyBv4f/9BqnblsfkinHrTDd1A7DAq348HfIELau\nlX/MBlUKwSJVM2Z7hwOU02gboX+W3TstjBCGbe7xBJyhExzperxfuzLmNHXK\ncKGL\r\n=L/Bo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC93+TWCdDetQaXEkTwLLpDrzoIDp5KbKHfJBj6tY3lXAiEAyNGkwmxp7fRQId2gBTum4DYtrA5aLTNN01drICL7yfo="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.a347d3ed_1554382437210_0.8571236301766785"},"_hasShrinkwrap":false},"1.2.0-commit.142c3d91":{"name":"neutrino-preset-melody","version":"1.2.0-commit.142c3d91","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-commit.142c3d91","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"readmeFilename":"README.md","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","_id":"neutrino-preset-melody@1.2.0-commit.142c3d91","dist":{"shasum":"098915b3a910d4650c23b3e404f84cc9afe20bcd","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-commit.142c3d91.tgz","integrity":"sha512-vbYRdhDzlptUm3G+iWxgYILUL7SVr2BX7Jn3gRP3o5gdFbAQmTLZZu0NfymJLeHuNU/5H/HDnesvyunLx/Nj1Q==","fileCount":4,"unpackedSize":11144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcrbGfCRA9TVsSAnZWagAAUMUQAI+rrzB31y50hB9/DwI8\nGPkOaTT5ntpDlXVWI8wlU2lz0Xv7TOjLhGl667MoC1d6p8Pz0fqfnUmSeVBk\nPGlPzgHbszlZOuPJ/40KXZqk4p33EBRJqej3VDJM+HpyNEg5A0GilSHVD3v5\nbA9Zrc/NOLaO9W7CPNH2OivWL3jkUB7g4pz1jwYp+RxHiH8j8RnpbgaYuYsj\n/17gOkOfYjZazYF0huimRDa2UIE/DrqnMR0zbI/L9bbXG36fKr/pCKeP637Y\neFHQenyywjIXrr8acdfMfry0yuSpK+qVq4PVBcz2ENAUM0OGKFjlSAfzWoP9\ndS2P+x/Wx4isoxBLzmSD9o2MYV5u88jfsASB+TD0cdCrkZjNy4SfqEIIX+GT\n1ywQq24QPF8bTOvZ1Olgkr435YQHongXws+kxUpeMxJ4VQE0EmMlV4onCNjH\nUuhpqen1izi2rFtvpOKb8PD/5BYLX5FnR2xyPUIWBODWgB55TV+WqmD3b2ov\nwSBfjpSv0ATdspDiuWoYQBbcy8untMi8FLuiP8z3RyJBUaWRzwmxzM12PIkM\nVUbp0jWU6szKilA83glLi7410apivtDMvtOd/KobY0vf7T6TGMZ/bjyZEbJ8\njPCvTuQ1ggAUx4v4Y2u5bgKozeMAKFX/SVYZKPvHaT5DorOisnvMyBL5D4yL\nWaPN\r\n=pWrN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZXTO6LOe718yd52TX3Da7M7TRGWXqGsxu2eAGRtYgRAiB9LGAGeLeFwdswXli/1q50cS1UH4rR1I2jao8JqUaWPQ=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-commit.142c3d91_1554887070799_0.2733693766731038"},"_hasShrinkwrap":false},"1.1.1-4445651.46":{"name":"neutrino-preset-melody","version":"1.1.1-4445651.46","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.1.1-4445651.46+4445651","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"44456515017dc8c3ac76025547bb1349bd8d5214","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.1.1-4445651.46","_nodeVersion":"8.15.1","_npmVersion":"lerna/3.13.1/node@v8.15.1+x64 (linux)","dist":{"integrity":"sha512-vZIOo3QazZPBEPVyK+cYRH5yk//J4B4K12W5xhBDZGK3lKHrH5wuCSQheJ1RAvd6LfhKU7bwZBJ1toa2aziMoA==","shasum":"d46a8405ef05ab1689252d2120c302318edc35e2","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.1.1-4445651.46.tgz","fileCount":4,"unpackedSize":20840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcref9CRA9TVsSAnZWagAAvBkP/jxFwvtX2A+n6Oi1OV1w\nOj93n21R4F3ehBgKQsQmUKPTsHTFs3UPh88awR01YqJhwKSzup+kR7Beby8s\n4mGS4FNVlWvwDX46ajlpLT86L7XiJuN2U8BgffzNInk9tWwo6TgfvUGrohDZ\nYnydjndLDsG+b7BOIWUw/YDEhTeKpDYUVz3UEZU27nQTkupLjbmq6Y3DYV7a\nfNssNPETaaoj4z4157Bj/q2lBnySLMma8b/8k/dooYMxhIdEgh+OjTjYlbO4\n1VEsaX8e0xn7A65+W1c1FJ6soxklteqmIgbO3pFyEWGzUo61k2qn6r1DKJMx\n5qgXkXaOqtXVNnxVrOATs2PcenWOzOX/jX8zZMiRu0tzHaxf2DgHbDqeGHTF\nmVVE3KaG+zzfeSxG7s+LKRqPBqDBjrIdqwMyaytALz/SclXl7tJON2b+i65/\nG7QtO57+X3772dpLM/1AnJicNsF/tMcslbfO1kThLEohwp5uXkfig/Y2sdqk\nBiMRFRNXXWYbPDJyHACzczP//8suzhaR9nYECB4mJ/q4NFAG3I2vEsrygaJe\neOdmdth8MgEHUS6ke3XMF3+9245rEvXl1wkupbQDV+wNPwN86IhliZO632hm\nyp8yzB8u+bH9FmZleICtBsERheeyQXlaac7QOqJPbLJF1/cNwrb8NZVd9OM3\nSUcl\r\n=Cix6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4rjryw3hoi+llc/P9Hi/rv1wPs8oGZ0ix2luhFbJxegIgaQQOWcUJA0LGL11pE1hTEZzuYDaBbtaYVXV1ZiBlY5A="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.1.1-4445651.46_1554900989160_0.10211395193299588"},"_hasShrinkwrap":false},"1.1.1-14a6096.46":{"name":"neutrino-preset-melody","version":"1.1.1-14a6096.46","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.1.1-14a6096.46+14a6096","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"14a60963c0db9b8b13b3b706b35f89c131bc1828","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.1.1-14a6096.46","_nodeVersion":"8.15.1","_npmVersion":"lerna/3.13.1/node@v8.15.1+x64 (linux)","dist":{"integrity":"sha512-9kNGu1KAvZQOp9m2jrT8jY0+l8w/KoCcLHW6mqrQ6OEnveCXezB0qb0s2OvW+j1wGGqfQ7Sd5vGY3NSZ5Rn2hg==","shasum":"f0b17a69afd928107c37aee3312a35e1c12784c4","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.1.1-14a6096.46.tgz","fileCount":4,"unpackedSize":20840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcsHehCRA9TVsSAnZWagAA1JYP/jMaRiGhytEs0uXTQU0z\n1cZyEs90NWF0kokkaXU3LTmLrk7Ym2YBMyeh7FJ5TFbzys5dhfGbv21MoJ8L\nP1ycYHe6giuYXTYc1lWy7/NyiJg8Z6rFnU9dBqBZhU1gUk0s01rhPn/J4t5Q\nEHVbthTU1v6TQMNnsWiJKSlYklzHju32kSy5UoRPfzu51gV3ANEBYzrgG0mF\nNWc9wB6Tq3/lZ2Xtgr3SdidvonwhEMuX0puoWC8kQckfd1zxa/g+VQ9CkhsB\n/TeaUUCK0r73ffHJAhvfvO/MurWQ4ZONZO1DHvm0W61DZa4pUcBiHM6vWuKu\nejAQUFZHXA/x1VwSpHmB9c66l/+/b9egz/y8KM6oxCA7JzZAnLUb307xTYqP\nuTSSgOPKmHIfAopouDsOnVFmVkMc+tUxQqHv/v3wQmtk/22zm7iwyL2s3e0b\nE2apH4qAPFh46HpRzx1YHGmPBHoKy7ckiI880fCuQd+nP6r8rWI+ElQoL3OB\nMuAA2M2Ic0PNB77i4X64OGeCsOOogFammDiU/GC9rraI2orjb/4nNqPgt9bC\npnPDI3C1198DZRDZM1LymsaIPFAaVPkhzuiN4Y+vDGktOVIAwW50yaSSxdFN\nKblG+m0YMAB9jTRKJZeyQ6NoJ3NgBNt2OYjFb8SYLMKTb7legxVKAvJPmaqg\n5Elr\r\n=F83H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICBYXt0AXXVWq91HWYyH2y6fYwf4HtV4wODJRVl7SjVHAiEAm1EDqA+/VZOn7NdXecXaH0v/yoZvPtusa5ffTvxRT8o="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.1.1-14a6096.46_1555068832976_0.4337936181838389"},"_hasShrinkwrap":false},"1.1.1-d75dd67.48":{"name":"neutrino-preset-melody","version":"1.1.1-d75dd67.48","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.1.1-d75dd67.48+d75dd67","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"d75dd67d8be7a137201ea2dca067e43111bdc338","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.1.1-d75dd67.48","_nodeVersion":"8.15.1","_npmVersion":"lerna/3.13.1/node@v8.15.1+x64 (linux)","dist":{"integrity":"sha512-S8uQQxh99Fu4wfvNOT+x0rYVzeOiFrKap+RQauaD5vOZpfUGxngO37xQF/XTeim3cBzz1Ts+BaMtuLAVRyEzfw==","shasum":"cd4f33e785a87f5d56adffbfa4da471aacbb5110","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.1.1-d75dd67.48.tgz","fileCount":4,"unpackedSize":20840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctJhXCRA9TVsSAnZWagAAnucP/RGylwXOwu16GUY+1QVw\nIKzrKJDNVUSTXeGjdtti9fK9HNr6n7+vykN2l3FEZVJEFGh9keCAjwFC3WXr\nOnrOPcGjyeVesRpj4gFyoGcmATEOuOYDlgw71KEV84q85yzC4+yJVc7+iyBT\nxfBO8Jhxmxm3StBG8GoRSjpxKudLBuKDPRcNzQ+xqQPMFYHttOOEwGK9TGEQ\nhxjsA7tSjWt+BTG09nS98ETrCqTSRqzaOHjr0naa3rB07rrY15C9AJP4f/Rt\nY7/7BNBjtvPgj9G3EmaAiqgyiA9kajdJ4pUvw+8Q0BePKmDDsdbgmmKJFvhx\ns1l9oscU8gOfrlODFTlqQChVPelAAP22rYB0LLm9mTokuZwPNlRDCepVEqxn\nNuiW89wJIP45htt0uFQ0h/WB8QuWwa9sw0j2l+7b/dA5WxFPByHGNTEALFYs\nlPWKNBcy0ifKdUUWPh1arv+QUwNH25Nn+fJUJcLhwhS6izb/PVGsE/yAHVGg\nclNoY0rdvxYf4PL5zgDzO7Xk/EUm3ghD9EsFT5cGotaBUhgbLF+c+OMrhwSU\nLkUr040UVVo8Y+viVCOSVzbEgfh8l35RSqjkHPQXsWH3enpxZS2AxYXZhzB5\nrt9GFpfHOYEKTrsTgFNsiVi5YGloFtd15GZNQARRIOlhGc/o+dmAEVfZ2xWV\nuJcp\r\n=5yJN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBfDKqmgRkHzQaw97VGSUi+luQPdFXvdJ9kmQqt0AFebAiEAwps3uGjbtG6oyqtBGAT3M2+bjPHL7peqg/6JHjUC1ow="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.1.1-d75dd67.48_1555339350638_0.4225386779835494"},"_hasShrinkwrap":false},"1.1.1-51765e5.51":{"name":"neutrino-preset-melody","version":"1.1.1-51765e5.51","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.1.1-51765e5.51+51765e5","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"51765e5cfb50b051cf15014e6862d90597bfe258","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.1.1-51765e5.51","_nodeVersion":"8.15.1","_npmVersion":"lerna/3.13.1/node@v8.15.1+x64 (linux)","dist":{"integrity":"sha512-vM3AjEpdX7JqZYZpNueLG3MQI20xa5uxp16YLAOxpNhkz9hijURqDVURcCGJ41jBwhFGMvJ1QTdFp6EttghANw==","shasum":"d009bbe47cf46f8c35436e9c89f80f5564f2663c","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.1.1-51765e5.51.tgz","fileCount":4,"unpackedSize":20840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctJxDCRA9TVsSAnZWagAA8lgP/2MsR14odMmvr0UFhj42\nVdX9fgnrZSGSV+ctFo/lpDGv+l0vjB+dVjVUe9CT/PsHRKi/8BpsJ0T554Hk\n4P2T6SyYJDLyXwE05JVmYLxNzyebkKowzaZYB5SoubFo/CPD1JPhDZ1YPt9S\nNihdyxCqIGBzyVuaG4MTjv8jwraPpmuaA4nn8qR93imYlpAFVY0GKqEKNC+Z\nKZU02hbpuaHFjCbWexeZoo7FveqhqMv+zjJzvP0OmZzkafbauN4k6f+sTb6I\nN8UqGMa0Z+QPJqYKXCWy18+wR9pyNc2An3dpaS7PQD6s5vcsrYFKgN234C/D\n7jA6rh4LcgA319739pu/rGOm8wPkJaa6pYSzjhjZZL4NZmyWeSCAc5tPl11Z\nN6fluk/fKqzmUnYCgxFEAQ1/mNr1YkmSn6GrASfM1XJE2bv4CbHA5GN1hgG3\nT82se5dSAbzex6Rko+psKhvJCcL7HVqYeRLnb9PlvNcaZMmm68hUGviEeVOI\nRhSn6EQ9b31fZ//mJJBIVI5GLeS5sXholgoU9bUgubFmWAF8p+ozBKoprhUX\nLQsnG40C7o9yO+NTCz1t7JuvM1mKI0L8W2jxHU/LfTDWt6aSfEN18RnCIjI/\ne/CAs/GfXZ1qhiTA9qkbjZj9+Wre5HWbsZ2AWbJYeODMdkpCPNruoXZp3jdZ\nA2AB\r\n=iWWt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHotsNpkw/QDz8GGig19cxB3NDg+AoLV/bnd4g3V78pRAiAVTsJ5PdIFnpfxhkwl5SVUUSpqwgkXRNYDuR4+psmHMw=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.1.1-51765e5.51_1555340354715_0.876754041378123"},"_hasShrinkwrap":false},"1.2.0-update-deps.0":{"name":"neutrino-preset-melody","version":"1.2.0-update-deps.0","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-update-deps.0+de6e156","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"de6e1564f77139d39c12925dd4e0f0aa0328308a","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-update-deps.0","_nodeVersion":"8.15.1","_npmVersion":"lerna/3.13.1/node@v8.15.1+x64 (linux)","dist":{"integrity":"sha512-yXaOnF73zN5XbZ8BcoBc133/XTgbTxNhcv3LDW8BeE6jeyXQWHThsOOvBXSBORQ38qujtu+HBbGj1EpaJGfk9w==","shasum":"463242374d48b42372bb2dc11f83b63fbb4c6a42","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-update-deps.0.tgz","fileCount":4,"unpackedSize":20846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctJ2NCRA9TVsSAnZWagAAB6MP/AgOYdeDFyTiPRvTqx8N\nYtd3iNAfzqjltMWm8CaqQ2Z9ePU0wh8JSmHZp89JHgIMq1/ez2s4DsGyyUnf\nOCHtqtFn4IIOE0AG/IIPfQShTfIyrBJ1dGPsVZACjS/4s+OGtrZVYeetKWgl\nzIS/ALOe5gDGBUytyV0Wmqs5zYSmxjVwor0rjcYGdtiRVoiiSR62evjOAsPZ\nN+flW1VdW7sshksCQgQtjKT1P05qfeBnrPxE5VOMU5jP+sXJe0TF2NEkDvaK\nMPKvYLpZNlqnjWoraUlVjdsWxKavh7ndf3VmIkZ4+CbQKoGLmqnXhl0ThdQQ\negx0RC3EzrYTU6XqmRLnj8sUGZvV/QVvhr8Ut/9H4xM+mrkZMEvVKNNpgdCn\nvRiSD5wSXsucnaHVtY5IpYJH5HBw+F3bdBIT8/eItJrffwMOQ8ELMT8K7ngJ\n5OCBMXkD2bpKaK6ORo7n/bAyBzyshDwDhpIAuvVd9lLgxslHMzfucd0OdGdQ\nWOcpCxcsyaRaw9ioq96dmTxONA7cMDJ3Ys2fEFPmbienKWkLy3mtEx2sV7vz\nYV8jYN7vZ/ZMASmUtRxmSzfuxyrjP8D0o8g2I2IxdZKyGjv9XkFze9nMECyY\nY+520ByH4Kn/MrVFWS7R3MUBywk8UXdR/Vp5xmzJA3W9PQVMZlLlCZyjYdFX\npn9n\r\n=qujE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFCV9/fINcqmXwnbtFNOP+s5Cn+5CJE0aXRHx/nzLVZaAiBjWsBpl5A/SmZ07NCbMWbzjy7A29fCrtUYVqRsA+Swtw=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-update-deps.0_1555340684440_0.2867561401616454"},"_hasShrinkwrap":false},"1.2.0-update-deps.3":{"name":"neutrino-preset-melody","version":"1.2.0-update-deps.3","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-update-deps.3+402d69f","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"402d69fb18c60fef0f8351ae9dad781e05c3a896","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-update-deps.3","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-ANhdb8RCc+Cj99J+TZ0Qf8qwSL7LVKdJMYbfInJQIUkfBwmnqTF63SRvyxE5EB/inpPzcCC5moY2BpccZ0DHHw==","shasum":"2b647d42868f10cc55f37072b342af0b398fe45a","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-update-deps.3.tgz","fileCount":4,"unpackedSize":20846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcvsllCRA9TVsSAnZWagAAWnAP/RsGdiqgWLvJAZb37bMK\nqmjzd77/0nSDvYwwB8Op24M3ciszIedb7WGkmAO5lPNz1naFNqi7NO6xn6Dh\niPVY+LoS7dViVr1x0JGFUFam38EOAF4YuEeUl+6AZZdfsgDiA7e9kEZWBQhn\nFOLqBbbW7ZsOrsZgfvrcfh1QdMfa4XjQ/fBvZbJJbVWeU+Z3Xa09fvBCsQ7A\nSbkDMRt2RhU/9FClGMtaPTf6PDkODwa/Jd1KBfzz3zmVB5+N5cPdsMq5VrL2\nMWwYQ+TMvbDFDwuLNrp7Tx3nxI8BHzNR0jGNrALVvVyAGuvPQw+8l+FLH0io\n2X6qeyxkrxanzJnf0Os5UjxFDVTqwAfOVqlK1JiwBsK62uAOU1Y0TXXR0p2h\nY5yK959byGR/6Rn8WMQKgJLMy7clWbEa/EwK1WmLQlFelgOpoPdA14vBZ+v3\nTWqVn9M52oC5o+yUsjCtWwfuEUCuRtrTlepFRx1llsQ4uhGg503/Sgnk5XG/\nC4vw4aTwFQ7fDruRLlA1Z3mnuPZOhAVsLkxZTKWo6RFJJv5EayhN9apcukyL\ntI45Lm9LuNLk9Ccps+EhP/vRhk7KeC+t5viDu3NdjzQr546j1Ve4dFIDadqL\na0yinSnh7BssEDH7kkI/JHWttXY+f8sa/wwcOmNA3wUpifzXToxk29MowysR\nvz5v\r\n=6MH4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfHeVDvv4a+MjYUE6dNygbdyRD/Nm/G6OlrGiV719ZKAIhAKPmj6Zw+kMTsmWBpu6r/ydQK/R4+6PRYbfex2GlLOD4"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"trivagonpm","email":"npm@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-update-deps.3_1556007269168_0.19131377214235257"},"_hasShrinkwrap":false},"1.1.1-acd74e5.57":{"name":"neutrino-preset-melody","version":"1.1.1-acd74e5.57","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.1.1-acd74e5.57+acd74e5","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"acd74e52bb4bbcc0fcca972d10983b2db1759b94","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.1.1-acd74e5.57","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-1JF3zKM0ANf7bsNGbXlFoEu6haRGE9EKJHS9nLOgAArMLaCXDE1eMoFdlGxJgl/7B2SW/prWMkgEmmhMVoygAQ==","shasum":"d96901ef4ba4d690b656c784b02f4a733bfa57dc","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.1.1-acd74e5.57.tgz","fileCount":4,"unpackedSize":20840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwFIdCRA9TVsSAnZWagAAy6cP/ApiIdcGDpom78s2qhvN\nC1QWO4zSe+xU4wFFCNTMjkYHAIM1F6E7mhJaN1cJwZKAjeB/OmZLFQwdaG/c\n94TPc/tposMtEANZ9Mup1PRCDUiIEESCW1ixCEVUFAtcuNlgN4eoiqnAFpSF\nkkEndj1T501VrRYHFOYWJ9HQAOXqIyUxqNlk3Vqgcl86UfE3W6bf72PQfYqd\nPC4JkTJbyPmoSq7wAW8b19TUtNjD+V4a3heOIpdrumXcIeoINzMqBO/HiYbE\nZa4jZII7MRq3HPUk6OROfM3mDg7praJb7i++tEzqfxKxoVtqT/5abin/dUaT\no42r4y8NCPoRVrljq5DAK13A4GRdQtGcDhxwo+79dOalMspFeT574P3kE8dv\neQY7c71UTxABm+qWCEm2Zw11o3yGuBhweGvjUqZlwY0lqRs1LPUuORNKjQju\nMGMaXXzIaINsbO30kxPsgJewHroQPPxgeeApcnFqwGMbTK6+axJQGKWgsuZM\nhC/yWZe2/tRdWiSOga9OHFlAafrKVplkNeGg/LgJKZ3Fp4kac91rmc6j1JQz\nZJHJPs5HyG+X+Lo5/YhlZCA4xkavnOlUmZ+n7rK4VfpAKziwmIdRYQguCcxt\ncIrAroFQ6XYnBhe/SLXLpXaLSWlTYefyXmabiEgp+UMBpoYXExYQ/l2mW3Cc\nDo1W\r\n=ukor\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDX5yLhlXsCCxFp1iZPw5rMv+H04oa2c+0BQVjawdfx2wIhAPWZRLPMBq8Hs05ykyzsXPxHGdbgQqDYXsCCVoZw5cWK"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.1.1-acd74e5.57_1556107804466_0.8791150688986786"},"_hasShrinkwrap":false},"1.1.1-2111f3f.56":{"name":"neutrino-preset-melody","version":"1.1.1-2111f3f.56","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.1.1-2111f3f.56+2111f3f","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"2111f3ff8d54bb9cdc08708b3717bd2bc6d77a04","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.1.1-2111f3f.56","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-pK8YUKUQYiCWpx32+k0WAU9bW8vt1Y6+RIBwLMN3wmqtXM3+BQ7b3N1LYe1OP5vWLhOE/QyjniN5I8JZ7XiUlg==","shasum":"c6402b96daf3450a620f905386aaacae119dda4d","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.1.1-2111f3f.56.tgz","fileCount":4,"unpackedSize":20840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwFPeCRA9TVsSAnZWagAA0ncQAIli1IM8x/r1troeycpo\n8T4qjiUTiaVAIafLpvq3SovZnwVm0T9p84NN8ROvuNTvgtMp9OxG3n6fxU11\n8+0FhEFqA4sAgKTSzMqIreqNeS5N1ICappbg0JXH+1nrkESturikd9AvLooh\nGV0pLbs7piAIQKa9xEyCBPRuzj+egHmx3nTHYoJQ9yQ/l6qWYVfq85VAYkTu\nlzzcHyhfp/gZII+furm/80SGelXaT7F8BtX4w5ENroSBAm67yEkx5OYE3uCk\nT9Tl+GrCADylzRZk32ZEnkD4WipSe1weiNKbwjvur6WLdl2VhUlLAavyXwFj\nHufLCUckmEmGP3byLmzPlFAvhHkllXlr6H1eZ7ejEOTflkaiIrOMxu3zUunl\nTcrCVrowfAnqTrAHmsWmKmSR63zWxh8nr4VnvwYEWmjzMo96YEzFwZVSMyNW\nWURTC9EJAv2Sukp5qh/wQNk3VyeCLFnVmupo+u4brHusbZCPkXZpIIRT3bFh\nBFMi+HCe5yZUSbbRmaGeAvogBY3J8EC6e0o5YXA+gHT3efudCM2mgLpZ1umd\nkNGcvCRuQxlzbN/jA5bW27UU4KbEk+mqRBecTrL/c8boKkRPEaa5rOCeOlfs\nm7yKRRpyqOI1gTWqmbbMzkjP5sC2iwRLxuX4ZF9FukxvoCamj/eCBbgLEqjg\ndRpX\r\n=KzRt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDY+Sy66gU6CZYHongd7KtqUFdR6D4KnJqY7FxPjV5O+QIga7wWXbZyzbjUvuUh846EXKMiGbhFYelFyY+cnscORlw="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.1.1-2111f3f.56_1556108254142_0.5190226387494292"},"_hasShrinkwrap":false},"1.2.0-alpha.3":{"name":"neutrino-preset-melody","version":"1.2.0-alpha.3","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-alpha.3+617386e","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"617386e7af1af3c08f469e1c2348fa5e5fdfea05","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-alpha.3","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-snq4emLrI/mE2X9RMXCy+LhJ/VrsJMVCdJeBc2WTpae0YTem+99fMj8XhFuBQqSAM5YMglUbZYar231A6BriDg==","shasum":"193f9619717ffb37b05a28fa138433163e87652d","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-alpha.3.tgz","fileCount":4,"unpackedSize":20834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwTeZCRA9TVsSAnZWagAAemAP/jcw4AEjCPCPHGEaCAI8\nKzMtWmO+vJ12Ymnb+54Ip4RnJezMQk1T1+PiL/sWdITQJJSJootuY7J06jA1\nEcGlXNcOads4WIQnTuU2Ek9CL+07u6WSIz5w6+88tIn4MUh64hd4Okutfb9R\nQP2RgC/U/Wa2VQ7s6+hI6XRQqBYZ50mwo1ZRMUYILc0B27e1KvDP5VYGRpXs\nKxunQQ0nbfqRdZXWfqzZUzePmrNnxx/mg5I8iTgrgV7eAWHCsK3kc7iGlNln\nvvKdCk2gGmWvyptuYk6XRf1lAV8GxT9A+tUXVNDvHgnd0X4Gh2cbeorXDbhj\nMj64m13saZg13Dyyvm/ai62+T2ulV4JeWv2BFAd4nQPes5c5NIxXX1PzU5kt\nl7fsQ9kpJF7GwqKw7H9bAtgHHSNfg31y8DfHAPuJcvdTsLkVPYquoGLvV+4P\naXbhf1izeFIKmaESRLmp7jHphUbBaYyULDTSPqLiislmCZcfV5YUzUfopimL\nMAfJd8DDZJi8rSDkRftHn1VzsG1Rqtdm5M4IGOGB4rUQUzk9NKGxK9yc98xg\nu4sa4V1f8xPAHm7z4yxocgjbrV588Q5wPgO/BwrvdDjwajlzueZ61H5f1rYF\nYw8v2I/zZccAlRE1hom2+9Ex42Yj3JVP30Ludcs15CkNB/FNl4Jfyj/TMTq+\nh5GN\r\n=IdQf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlpBuiLOGGLSLhRLpEkvYbq7TKxDq+DHv2j9tXDz5nDgIgZcTXAWZItsW5Hath4cQtu4x3mXFV9/B6rk6cR9/4604="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-alpha.3_1556166552759_0.21885306314520436"},"_hasShrinkwrap":false},"1.2.0-04d171a.4":{"name":"neutrino-preset-melody","version":"1.2.0-04d171a.4","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-04d171a.4+04d171a","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"04d171a1547d5dd95966e4a4b416db6cec429bd2","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-04d171a.4","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-Ttv3QdxM2yLZjb255nm5sL0RNlyD8HiJFUHFJHdpqvdYS9ImsBX8m92SIFVV9FI2FABN+MWiQyhRzAASMPfm3Q==","shasum":"7e4a7144c14a11a8779f490556c639ba80ceff50","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-04d171a.4.tgz","fileCount":4,"unpackedSize":20838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwZhlCRA9TVsSAnZWagAAdSoP/09W3Hf0L8zcHOfVF1FI\nrnXmD7IT6X+nkKTdsiOfWkoHqQ2HdkN5N/vWdR0VS6YsFIWRT5XJ7MX1MOxC\nip705Xksv+7eyY0HpZ99lMDDOmxjBRsZlJTK8EK6G4dfpCAHSVR46Fuzphjs\nouKADxUspvjv8Bdz+k6RH9jPw+SLgBvLN4/Y9hpNjqspNAe81e0d9jfSqnaL\n3EsXB0FS2w01bgTiggDtiKz8aX9jgsD4FX7AdF1FcMhPsL09vUpxPR0S4Bff\n+OqCub5/a2YbRG/EucvSDFwAW2Y2DJzEzEc4/ygvSrSyT8GkV12/hWtqTX0e\n7a0Q5diUKMDYfRZsoPGf4UbBBgcKWah55VRfHjbgLxsXwNTdDZ0NYwdiTFY/\n0jxrwcTo7mfOg0CIurUd2gRFMnRPpQyQ4YM9UuvsK5s130kM5g2Yua0G8b8T\nuEnWP+gsHHxisYdo+XMOZplzG8QGpWD1geJDvpr9PKD9N8D83N8AwWHE1bz2\njpFjc7RPDZnkyCVBRqMwjMqXjmK97VnmJVldInF+J8UDkk9QcRkYoQVuPrFQ\nFJwuhkbfclJYtczm/oGsg7VX7GkIpto4KbJZRbNsQnbjA6PDOBar7cQS+B0K\n2i6S1Oce+Wv/JzgOILUZQPDFg6sJLP8bNlxUtFDzJHPXLc3sNCMqwY6cXWei\nh8uM\r\n=LZaZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGVOooZZslD4wap/BqHTANo6YddlTCpi+Si760ZJjIxpAiAQ9jMMHZCnX1mUXOV3F7M2bJ9wQo7zrhdGNcV7mYEELw=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-04d171a.4_1556191332733_0.40299784191069166"},"_hasShrinkwrap":false},"1.2.0-b923d09.5":{"name":"neutrino-preset-melody","version":"1.2.0-b923d09.5","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-b923d09.5+b923d09","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"b923d097d4c8bbef920d1c3b2c90978a566a8300","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-b923d09.5","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-lqcvyu+mJmAAL4egRsctHzx2sAOegvkhxpTWWHtVdKAela7Cq+8kueC7xY5uHJm6ZI4u3t7Iiaox2NlO/NeewQ==","shasum":"115e608b24b53a8f3dd98065d27eceea976e1fca","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-b923d09.5.tgz","fileCount":4,"unpackedSize":20838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwZikCRA9TVsSAnZWagAAuR8QAIx6vxD9rkkmqK/pfLif\nsvp/AStklYVpSWN86Zxy71Rgy8ZzcoJxrGUZJlb2Au6oc1YHe1gpvBfQ4S3C\nRlBnilJkh112FTd10ubwOUvhpcVs+WyJfIwhTPBth0PT7rI5HE5hTroZ/MN6\nIbPH8VNV1MttZidKJo8hfW2gPWYFQjo/ev4Alk1iV4Vn11zq33tF6Kw9ftBJ\nXZN+zJ2fRB043PjbniJ/UxgmZUOJ6e/6V8KOnFs3Fsv6bakUBjmrBX7j5OsT\ntFWjd9ZTaVM/R8CyHDsZ30t0I3NR4zqFoJ08tcmjnG9X1a/ocUb1myjvozy9\np86i2c/vf+dlKWMv674C7h7sMUv+DPt50Nv/wAX+7qUf/e/QnSFiNa8oOejX\nSp/TuC5O/GweBM84xgkIJ8E7DFOmzQBTER+CVafn8Vm0UHd3mTlsUluEUZXY\nC3niZvLBvJyoxVs2uX/I72dOj1NzRDsY4Ob6F275C89bakarwRslu2kjwlje\n/k0bABr4db8/YLQCHATQN78aJcE53bOBzQuMuOhA53LmhDwIWXs5Ly8vzYRf\nvLv2PimF366SQ6/M8BUMb+ARBAgXVqFi5eWR+Xea1fb2A7n1UWoNSzXgMPDk\nN+p+U6sMYApKWfYDzG/+OqnE33Ae9vcj1ZI8PP/3t8E/bVjLL3qHsmwz2Rbv\n2E4z\r\n=0kx2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDSu5Q4XmTs8R6eRuZ4hAbv5c8HTizbUecaUy5/D2cgwIgI9Iwwj5dQc6MB8j7e2Fu+cySl0U9OGexzLzcV5pPsQc="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-b923d09.5_1556191395684_0.6296096911763978"},"_hasShrinkwrap":false},"1.2.0-alpha.4":{"name":"neutrino-preset-melody","version":"1.2.0-alpha.4","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-alpha.4+f61c830","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"f61c8303bc847d41f4005c1c969510332ece7d1d","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-alpha.4","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-Zk7E3ohN+QDx0x6PxlwY3B2K+jPjnYXRRNrL7A0JeXe2k/o9AdXzzikjNwmak6W3DCVwvuL9vnjtaKeWxMsRDA==","shasum":"eabdfff47e37ef69967d5d63244ccaa81e7fcc36","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-alpha.4.tgz","fileCount":4,"unpackedSize":20834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwZoiCRA9TVsSAnZWagAARmQP/i+pXYbQmqBw+BlGjsi+\n1tv+lx8WB6ynWhcH06PX4lDiYFinsyWwVbJ7U59a4yxeQ6aXevbkiVugep4m\nJuK+143M8a5bH7nUK9JulemRwFHIisJkp9T9Z2Z2npwTwO85XaLXNTF29GK8\naZQA8c0LnMUrn/a5X8MhLJw2qqQUeFfRnfpqLmxiRSGrA2La4C8OUAuxmyoC\nLdFyeGErSqE3VDTZ++dxBwQNkXNKt8fm+xpi8viusfNyJ3F9e8mxZOx7uLrG\n1hkbsubA115dQw/yqLrJK6w24uZR79ObXdMOEfRvDxrMcnljlhyfuVD3NCl9\nuolbbnUjL2mr2mcoCJoKUrkmC6l3Kc4onnsLBDgwQjNqVQN+U7hr1o3fdbAx\nKiv+2WhgE/X4oooWycuMPdeq1NOrvnppI/zim6dt50yKXyzyj2fqEqC6ILZJ\nmG/Pw54Z8aOn1IYLDt25GY6FbIofjqZF+Tn7/uXEHSBGaLx2X/Y2gGKbL92A\nEL+Mbo7m9C6dkW7C9poVjZTp5Su+ZRfmr4DZdDSaIv2YTrVnC0EhbM9ivJBK\nIelitLEygzmDtLOdefiJYIjPM3FTWmheqJYYUr4PypQLFg42WuLZ5myJdwsF\nushk5ssr3zvVc1CWSR1OU2HVaK0w65JnPTNcUrvygeHP8BQOTwhWBdSWjArg\nT5lu\r\n=JzRH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwGm8a4WIfFaBuzud5xYGN4G8GJYn77VDmjbRvk0pMPwIgOu4XU8lBQZ8JXc+iFvU663pterFeVzNIhXGlTXpOa3U="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-alpha.4_1556191777625_0.6659206224606278"},"_hasShrinkwrap":false},"1.2.0-f61c830.4":{"name":"neutrino-preset-melody","version":"1.2.0-f61c830.4","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-f61c830.4+f61c830","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"f61c8303bc847d41f4005c1c969510332ece7d1d","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-f61c830.4","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-3oJU72jcIUS+QqEX+LNVkpLwzYwlSk9MVLwRLMGYbvsibCxjkVvSngWvEmmh6NfC64MEe7hxQr0F6mWXmog0hQ==","shasum":"977db2670f7e4a2e4b61828369fc64422477b02e","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-f61c830.4.tgz","fileCount":4,"unpackedSize":20838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc66f0CRA9TVsSAnZWagAAeh8P/jGNcVEE6p82RuKbO/Hd\nFpzYxKAHjsFb5Atj3pg8vdkXB/sV2SbDnO2nzCGu6+gp355WzE0AB+ivfyfq\ni174FTU7LAJFcH/+7oBT/WgtsRiL0ReeR7oamBGcWI1lP/sEZmldj4Wtw0nt\nAGNJAFFPAjfkFwK3KV1+3aP54Dl+g/nIvIZkFqDkbXlhX/KpzYPssFYhxOWl\nMYHxpZoULIh7f0ue6eunHJqo7wM8x+c1LcKAedk9FaevH8ITMunvDNX/MIkt\ny2upX/RUMHToB+kmeuR7pI0RJmnNJMuuCjUafux6yU/9ZhH+BQe/KkcdZ5Hr\nS1wFg1y8fTmS9meSpNHIzEuI0J9/JIabfasaWe14iz5L0S4S8FnsVWgpIxVH\nPHTI3RvPqyzojn95WP8y7K23M1CGE8SYksgOj1ZNxEKawCRPn0sOyAnPy3yi\nnIcgSJyHFitwtelPj3XXSrHmTlFpr8B7Fx5mwb3mk5E2Jl7kZcUr/BdDPg7f\nVyp4h64oV8SNVVd9UZbadjpv7qtkI8TaIV7B0nTNxnKajXeoCPewLSA6B9Bg\nCmA1wc2WayzlW8esqnWYT+acYb800o3NekUJ3AvK6NrLVu22Jw/FCjQd3dhs\ng4eFZ9avoLJzTwwNjjm/tHaE47RwnlbktxsUYq4EHDF1jaoVRztGKcPSLCqz\nGHGE\r\n=jDDp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB0rdEzpQrlsxnRRiszIA6VanmmRGUMpIHVZpe32mPdEAiAMhYs3dG29ELnavd40dUvMPR865hITw/B21P43Sktvjg=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-f61c830.4_1558947828294_0.31917544184225255"},"_hasShrinkwrap":false},"1.1.1-8299c30.57":{"name":"neutrino-preset-melody","version":"1.1.1-8299c30.57","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.1.1-8299c30.57+8299c30","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"8299c30dc602016d044217feb087e9079e4197d8","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.1.1-8299c30.57","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-qdgEzp7xpjqyU1rsqqffCScwTptPyRVxcxDdPwWk1Kj7YkauncQelKvotqDEJrR3yKnXeMabuIH9pzWno3iCxQ==","shasum":"9a34fa4143ebe4ec648a35b0cb3e0e60475a1ce1","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.1.1-8299c30.57.tgz","fileCount":4,"unpackedSize":20840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+LP5CRA9TVsSAnZWagAABoQP/iIfuAZQbrJ8HpH/5XBU\nT06PlsgRfkB6XSj8/fIq8Ecbn1ypDKubth0Pw7EEdENP+lBZ/WgJI4sbKf5x\ndlNh9DVeBIuZ/6PM/wlQhUkISHRQmxuRnYLhFo7L0UC2XAw3LCf8lAAS9Tv3\n4G2rF5cp6smK3VdNU9sExUgbO8NnkoghSSsPlDirEHtNCfZMhz5PKlpSdvaj\nqhCg824smmAgyV6XFl/YA8rVhB4KSUoojosiZhHUrOFnvpIb/6zBiRIqr0mD\nHo2UB60FyIfTx4D3NH2PtzgE1yNEo6ybi4p+3CmcA0my8hvypfChZmJEJtkO\nacfrZRLvGOxMkVNS+oqvuOcY0I0ABGTmcvTjoJHNQY9nhYCS9Zrcsm8V8lOD\nypTuFis+GvGXQN1SKelafyQyaze8lY/OzDCcLgbGE/hZzSZPGBKpGKXCiGxN\nXowgSC9YVeJwO6ZJPVPwteWu/OK6KWgYAThWjd1DW2aNUHqqBVyprhPXQZi/\nTkWBtq8G8V9ZMLYPCI2W/Ca+BM9fuVpZb2aQV1X0z45nwB7jAkuxCYWZ4FUQ\nooRqJ/a6kvzR3H3jZNxNjWTz5bgKGhM00BvnOruhg5aLzt1lXUapuP3thrQh\nwIWw8q4f6z4RZd3mEQ4gxPIbr2DIgt4aYhrd6Y2vhNXilaBpIOj9Nvz/kVjK\nKsQA\r\n=yj90\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9hCAWntmRKYjIH3pxWTmSRAkjfY0OhQAB8wSEiqReRQIgU+5B7gK4V5pl38kxP2yyfFMIikgNF5QYZBhnXR07qBg="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.1.1-8299c30.57_1559802872591_0.279372048435621"},"_hasShrinkwrap":false},"1.2.0-77ef7ea.6":{"name":"neutrino-preset-melody","version":"1.2.0-77ef7ea.6","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-77ef7ea.6+77ef7ea","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"77ef7ea49f8c154f0528473176a0560b3d554e3e","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-77ef7ea.6","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-DiK76LiwKiDWOFC1nzISjkroDuKXZVGYfEz2yV6pJjIMxX8WOIPTvk/aFbgwCB+5UhW/KtWnTBfadFLQS3VhRg==","shasum":"9619efcdd4f79d974d64c744a4f85180ba27efcb","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-77ef7ea.6.tgz","fileCount":4,"unpackedSize":20838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdENS2CRA9TVsSAnZWagAA0jgP/RpmnJnyXBKX5pwaSUx8\nPQhLUYeEqGqLnLzGqFbz/s/n+Oi09Bq8SmNdfPM2rUTE7xNpGPepWhJxQMFZ\nbOxqo+1AlZBPXAk1cVZ3z68XZKMFoaShKNHw0kijneSO5I2CwK3LEwLjU4mJ\nLXaGp+NkBk84lGlObOj4GigLoxVwlvuOCQBuT+p/OpUi8NJsQEN0Uqh5ixXl\nXs67bdStKebHuY66aT5FsgUM/9TDD51JqvvwB32crs1FPRFUIZAWDrksnMWt\naiPl3j3fOgchnWX7OP2RkzI27APsrj/ZSQwjIIaQ/GCxx2HDH4gM6ikReodt\nC8gqFhMbIuzOwceDKy2I6N8TU6i7gNtfKHt6xdH8R9v/JIIYwiJT+Yt5woUT\nGDwZ+6DgfM/9zqAxUkrELebRmeSLW/lHZA37tALHzlhntvn4l7RZ2/SL/Q5I\nmBog5sDl9gMHy1B7DykWJ/zK061Etu5oM7DXymwbJaKqSjNYLU/XPDNt0IDW\nDG9ewtT5AsEq7MO46o6ie/Zrw9MRQTMfOo5IbNkP0m0G4v1g9vfFYyn3ngf3\nrVwcxZ54kJuRBOujqZDOa0yGxgxOdo759/ilxljq0uDIY0EVpUTEkv5ZPlsI\nNFxHUaJ2C9RBaHMuTGtNLA9MBj8HrkfnHE2IREAfCg1gXEeZA966JGv3UtKx\nXf0k\r\n=CF5+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5yYHvwEP6sMMdKqYhVVKoCx11HHqbJY5l8h3oKmeEcwIhAOlNAbFSCk4c/ZwliAx8tmXNzStkuz6reliIS3JbH7CQ"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-77ef7ea.6_1561384117909_0.26257435423445674"},"_hasShrinkwrap":false},"1.2.0-42f95e8.8":{"name":"neutrino-preset-melody","version":"1.2.0-42f95e8.8","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-42f95e8.8+42f95e8","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"42f95e8a9d2eb19120722cede9c9b395e4e81c17","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-42f95e8.8","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-CJaEGWXSFDVXmRmdfuAsBkBRjQnV1W2CSUdCxtV9TFjm8gf/hnlYnm4Nbrmz+3DiyUW1RCzTNhhX8cBBYPVqjQ==","shasum":"bd5ab00e0ff8dbcc43e4a70967b9820085f3dc67","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-42f95e8.8.tgz","fileCount":4,"unpackedSize":20838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFe6hCRA9TVsSAnZWagAAXQUP/3x33KZmdcgRT495MtvI\n/A9eWYr2ZY+HIO/r6EN8P8cyGlRqbLMus2Yds17HMCuM9Qt5/hoDUyHmuNZa\nXPsrjgH3aQyUJAgTXIhtJFK4X4cgz+dEQVT8fDvZh4TdJlR0RLbG8RZYJoda\nSCaJ3rG98rcUsgVQrwOKQtTMkQHiU8ek2XAzg4sSDuGM4+8bL+6pRHWXTkMb\nTo9qBcSeSB9Lbm1wz6fhOXDdxIX+13IG9DrmdahQXjejF1bhBaibs6OCLUjb\nfB38q+hq0G54EvO+zHkr8sQ1fBdONppksydlAqLYPk+t0wkP+6n8J4k5Lv2g\np2RAuCE2HL5FQSehA/AvHxsZrPZDiUY5CcaBHo40rid/p8Uf0AgyC+DoSzoR\nkyQf1ik8rz7//uzx0e4ftWnfbYjtRWjnBYryJTb60DmTHavaaptVudmMaSr2\n+N1FKI2ZL5VDWLHhPv3ms8pMpA/av+5qpb+r4cN2lkI4KL3ysBDApq6tz0/v\n468rSslA7URiG8N5ruUrH0tRGDvxKpnbIM4v/nmUIKE0HM0sO+ifVWYoKnW1\nX/fidZ8h3Ypif7HcgZY1LyLc7RsOKCCWZDmuaQAxVr7opbB195KPTGyE6xXu\nZj9XxKT/tKHI9g/2cdw4+7cqA1syk4z9fWyu2Xs00XXs4wTS7iTEfMf+xHcR\nl5N2\r\n=aO1Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkLES4BHNX6wds9bvdFC/AdQM3r2zvJJO13SfuhPj4lwIgDRZI1BiTN0/fEbflf7T2PMisZXKzOHmjYjStAJP8DMw="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-42f95e8.8_1561718433417_0.5682890803608764"},"_hasShrinkwrap":false},"1.2.0-e395b88.5":{"name":"neutrino-preset-melody","version":"1.2.0-e395b88.5","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-e395b88.5+e395b88","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"e395b8869e8b75fec7b9211e99bdaaf7963a11c7","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-e395b88.5","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-Zo6LbqkXTmXAnxTgJqh/5rAqP9F6OnMOkRdgfeMmWmHLSMZao9cpoCtg65pWsW5k8u8APAG5C+lKEebcSrvwiw==","shasum":"786914c7e46484bcbf88601154a55bac253c2efe","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-e395b88.5.tgz","fileCount":4,"unpackedSize":20838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJlRBCRA9TVsSAnZWagAA+uMP/34GdulQkBDTFZr4wrpj\n1GOpyfvfFpPO4Aq21tCOnaXQzKK1twT7iQW2Qw7QLq4SFGWabwszlc8qbp5L\nXofB8Y04CPPdaIib2nv082MTymrsG+KLZ2LE2CdTu3Ib9oU7ESgGLvWw+FT2\nnw5uadwtmj//prc5FwpDinrguQyKLkVZESJTSnWjMUEqhadargiObQqAxQbx\nTwSmVvp3NkcVE/ydOaqS4dH1b42BbSAERlSICaEmaW83689hOcE9pSIygSKi\nDosD2HKYdOxmpQ0CLuD4zQZiIbZ0Dtj3Yjb7UxIvNYOzCm81+Ki1q8NF3vfB\nXscq19cJMheRp/DEtMeZf27JJpqieP5a6rv+P+1ba7Z1C7FaU8lL+NQETFPJ\nbCnflWud9aMY+s8wbcwTGIrWJAJlU4n5p5yRrVj6KUzXyKyJkqnXq1SHMio0\nde+pOUhQpp2RmsHkODdXwofTLeFl+1UrhRYKDCXG3Ee3oK1SvI8IXeEW9n+p\nanxXAlGdObAzOYRsGwDI7hoCKzSFdIR4PVoNI+kHH45+YY/Tu4c/kE3lcUrL\nC5lKynpBq67yBIZkkFoJivxiCJMQX0n1SMiB6c9WpYquWor6K+zceDOCRLlb\ndgvkDBFRxd8rAPAHp6OhIcLHr2l4of0elO4UOoGcqVzwd5aWN3+7up6ZjY38\n8enD\r\n=P04u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvVost7nbsNH0mL/zO1QWLS43//3JwA91TueYlAlsn3QIhANCwhglpckgDweoghGBMkDzXnvl2s33mUTJYo8Onxle4"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-e395b88.5_1562793024380_0.5552830711305261"},"_hasShrinkwrap":false},"1.2.0-alpha.5":{"name":"neutrino-preset-melody","version":"1.2.0-alpha.5","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-alpha.5+3ac9bae","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"3ac9bae8000b758807f140bf7184981d59a3f786","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-alpha.5","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-Lv9/33AdIkBWN8Ac/qWPkv5NgA+SQL33+bR97puV0Ej7jA0K+7RCi/rnL7nRBP2bu/6Ecue6adGpVeNnxbpogg==","shasum":"8b3a008cb86e40e0cd99da37dc5c64a1363e3574","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-alpha.5.tgz","fileCount":4,"unpackedSize":20834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJvQjCRA9TVsSAnZWagAALX4QAIrLRCJKQ5ir9sAWHAgR\nLTRmKOz/Ntep+z5jam4cQuwsoIsq1L3AXh8HEgCFOdGez25W7r3LKpGxXjmb\nOSbfuQuhhWW0Ku8nRCCFERsna89D5GqeC7QVe3WmFRXUdB97vvLFtXYkdGtn\nSt3EqHQffYWxd8oOlq1xlE2/CFkjE1K6LDEZfoEQHK1W7Mi1PVGIcofVH5jS\nbpDz8NB2r4izOHDM0wOQ3iQNnEhWfu/v2CyLhXEfDGPoX14DdSt9qnv4CJIP\ny+zP2RWpYWtcWxcoeZCeDHUjcSvCIlehmBQCBKw22FLjeFE7C3MLomu04TnG\nb9W2RL5LWYIf9Ybz8I9svwcaHFbgJAU65vLIkeVuqoWrSzO2Wjhy26MH/i9F\nJpVuiEMej2o58fDVLkW51QcMj0I0ewoQN9zNcalENswhdXZOwwXv7WFDHdBS\nKvw0NyUpNFR7ObjZPhLJzI6aNC7VMx5+FGrRup0sKkIau0CoYkEkJcdk2U4R\nsHvk4KUbfXHpGLVTHwLxKgEbJD3Nln8Twc4R5Qhx4OvwTDVqkCHrK+TgUWo2\nJjzib+6u4jPoIqFP2mRrz9qH9flrvGJGK6p6dy8H+7CbUpXuPkwjvcKG5mjO\nye9IqZeEWvT9vN5d8s2kbElTxU+GUWYknhAfkkkPgGIIU27pX/xg2ZuE3JDB\nZSTr\r\n=dCyF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAa8dKstVeAtJfe8qK5v7Loh8pEeiF62mXsjnZUbMkSWAiBmEx6VZ8385G3D9q+YA0T0qNtMxbFejuAb3u5283Sx8A=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-alpha.5_1562833954620_0.11461200175844377"},"_hasShrinkwrap":false},"1.2.0":{"name":"neutrino-preset-melody","version":"1.2.0","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"^1.2.0","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"915277c7d4ed5d980fbe54b9f96efdf930838e19","_id":"neutrino-preset-melody@1.2.0","_nodeVersion":"12.6.0","_npmVersion":"lerna/3.13.1/node@v12.6.0+x64 (linux)","dist":{"integrity":"sha512-QPWWmAOsoxnvHCN5Hd25LCpendY04qHyPh9cofZTTNTqzYeso7SwoyW6LH4seG58WMCf4kdXxyyM374SPhHasQ==","shasum":"37924222e499be893c093504dbd221353eae3503","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0.tgz","fileCount":4,"unpackedSize":20803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJvsYCRA9TVsSAnZWagAAG5QP/izm+Z2ppfXQOnbTatw4\nSWOQc+jjy1tu1Qbv4nXfeM+P4pDaQzagh/vF9sETSO4OeJ1UMR2l/1GzVXNt\nPfERf13h4RuK/URXns6EgO/lGUoagJzGrcZHmfD11X9YiYT1e6DGJIMKQu8n\nPPG6DDqR46zIhUR65vFefYwr4CRTZ4eIPyVf54vu1NvN2ZMYFcVSVoeInikC\n7GmoDK9ewj2aKBjCnzafS9w0UB8dRs1ulxW+Qw0452CwsJp+l6aNlg3wcMkL\n7OJ0LoAMzMc7eyBp4kJ9HL5gq2z6NAyfiVSzs04XVeZWb0hDqwJ9Hu7brdsC\nsgkmWTocdGvoLYB3CvcsLyzC2aYAKsYPjTrj1QWGYDlj1IahZrdiqd3VzRgd\nRzvuf8Jei9XKlPwkaxqSm4YdPWF9JZg3AnizQGrEIuy/RfizrUueGZd8VW82\njwtn5mC9rFzX1GpKGpLm8Kd/Gd7gdpZgx1v0pdMcyY3mD1e6Yvor4g9W0w85\n0/yLvj0Qstv8scLoncsI5ZGZMXSKjQRys+aDjGJifRBNzp6Gbz8E8rM/vcOV\nGumww/nwDMENT05iiSiZT8ulDY/7udTwbDAmTsI390h1n6d2bXn5VQSKRuBo\nZBB/7Ul0VrIfKaFn8NlnxXsmdrDoYHZ3L9ibQ2EImZQYWsFcj6pvowMfTibp\n3iWM\r\n=dhMl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDOqPJ8O4Kpqay6koixhCTOcLM1qJNQYcVP0BOEXBmuuAiBJFY3aell/ZEidRk17VsZzEpiU18+xhdu8bYmqCNCNbQ=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0_1562835735914_0.8606751270031638"},"_hasShrinkwrap":false},"1.2.0-alpha.6":{"name":"neutrino-preset-melody","version":"1.2.0-alpha.6","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-alpha.6+70b7860","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"70b7860e11513e229ac382db686ac565b97a2bac","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-alpha.6","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-aL2oGyhekLW+xCYOQk4EqeV7ld3GfoI5uhIi1hX/XUlV8Ik57li3V+Zt7J83qKi12p9vza7u4WHoQdteXzpjPw==","shasum":"bdf0b088437d57bb8aa23b75d08fbd764190222b","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-alpha.6.tgz","fileCount":4,"unpackedSize":20834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJvt/CRA9TVsSAnZWagAA6I4QAJl3RVWxFf9qvpOfBrfp\nVWHM5V7SNqtuFVxh/Gziq1qcr6vKYDMgrNPgKk+f4m+YY1z+qsxBhsPouJjz\n20g4xW6xbcgwsNxDTJu7oJ2hiLQmvI1pPA2Fm0W9n4juhP5CmydscQclDXTx\nwm1EyiUYwlL/xuw+9+9wHJ92b7Z66588OsYkSlpE5NZBbGYqPuQMX7dXHMFy\nKT+D2Y0qybEjHB6KduDnJRrLuSkC/ifQobH8nJXdzRZIzZG6IUYOPUtDfzBq\ntQ+TUy42rEKnR5QNULPaDGNl4CflMbhOKmgQRLnumy+zSvu1rni2o/mo2Yr1\nlIeHdnFrALhU3EyiXsa7x1RJx+4uJt7EVKFWFc1phKzzsq0Cz57kw8iLTqd6\noa4z+q4m4WG+cZWF+AXsWd2kcnCgncYANngjQYspyux1uzjrIdmuXwj59LCn\nazu//DPnOzBeC6J/xSqp6RFqU4TcNNP+0TM03emkm7IAu3J5rDQNyltQ6cEp\ny+xMv17CMFz7JkiDR8U5Y+LmiDGHKCqSypv2SNswSNXnGoLZCGaE9kSKPNbB\nKDD9Q6wfAurvgAN0lEKalqXJh+BPuTrmc0mzhWzT+EIdk+Ij5vVimdaC4v6n\ncmX08i0gzOr17+3ieqvodvatxCjjDh2uEpFqYQqDH6ev206VQRahKoW/fEun\nikFP\r\n=0YGj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDyLZ04nWL3jxH2P+eJJSP6BhE/liXOnYRhYstcAZbhGAiEA983Vvf7vQUrXuqjWbGlmuEylTOErt3Q09tChMF9nJrg="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-alpha.6_1562835838818_0.8143392990930067"},"_hasShrinkwrap":false},"1.2.0-70b7860.6":{"name":"neutrino-preset-melody","version":"1.2.0-70b7860.6","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-70b7860.6+70b7860","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"70b7860e11513e229ac382db686ac565b97a2bac","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-70b7860.6","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-iKoG8NibySOaU0zOxw6rGtEvUPkbAs82dkUPFhASmV2A7K0le0PfatM8BK997dQEc25wfckgK6t2NHYag8fauA==","shasum":"b96f4869dbb2a26d5e3be4415c67d53535d32665","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-70b7860.6.tgz","fileCount":4,"unpackedSize":20838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLaOKCRA9TVsSAnZWagAA8jkP/2cBtWaaeApNr16EduNi\n/Rg0FKhJt3iv4+iekb9UcFalIgkM5WDZc4y8xh6JRhS2isfuD+D+CGwx4hSq\nShBinSyT0+WH2eJHOxbaZO2WSrOuUA3ogi6fBpQyY3GV4pGIBt2LGpJ1WGyn\n+rLnUn1mMAXz0iTYbxWbnlrT5Laz61uhrz3ZOU2p4OBfFtgDUTs5UY1xGZXh\nkfuEvu5RqGHnY9+4RfFD+2kMUO/Y06MLeXXGC2sNH2V6xXEJTawUc1lNC2Rx\nIExnAacbV+/aJQFpiaK+sCRWPg0j9WAUL31k/ncp2J+v+TBR0LKTAHwaypk+\nklishUFjxktiTO9RO5EJGA+vzkk9YVqHKnupuGOX/GrfNtpVe63CQ3QvDRzR\nCvGzLcJlS9+PcG749I2YIdrbpC/Y84SX40kigleDfehauKiLVaPE8m+jflLK\nzukHx+cKC5GkMB8TOFiMATnBFX6yKL3REKYDlMkhKyx395a0NIKUbjmX9K0n\nDs1UiOpAYBkToVjMYP9m3dKp1Q4SNLRGhn8JalNXpnWB026hThr9gGnurzla\nn3Fw0P+8OeXVf1Wk/FQWBM5GU41sAYgM9sYIKXqSn50b0tOFdSRNdTQDpL2Y\nhdBUAja2V8pIpYx+YMg8LDkHYBoSj5QpX2OOhX7BVV+3HwNBIzkogyj08w3T\nHiGo\r\n=HYgw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRnurGbZc5R1x6xfmRoQ+0NHa+PKmDeMtibKZ4VaCmegIgHj+BbzZEElt81bTHG538JleA/TpqzqDmGGD8D35y7FY="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-70b7860.6_1563272073370_0.6274537113502727"},"_hasShrinkwrap":false},"1.2.0-alpha.7":{"name":"neutrino-preset-melody","version":"1.2.0-alpha.7","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-alpha.7+cfdb7b5","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"cfdb7b51924b134c874b2e9d2d44e83168f6b611","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-alpha.7","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-u+kIB3m/BodwbxnVQamW+ZEIxVlNY9mwaiv+QHdYx5hynPM7aeT3XNHPrxeMvuhdCmu3g/z5PtHkv4zd7vjspw==","shasum":"7145dd232f2fb05ccf6104e0f7e3445080ed1bb5","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-alpha.7.tgz","fileCount":4,"unpackedSize":20834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNS16CRA9TVsSAnZWagAAYf4P+QGy41hK2owJCmoinqCi\nOfgo1Fl0pMAFIKfdZI5tuhMo5DCguodwsdSRciWZvlFekbQz5M+iDhdWSugW\nF9JgY/8lG23C8jjlndn1pT3KfXikoB27IMHAH7xmjHCGs4lYLaJAQJrwFOTI\nSia3aqXwZvZW7K4ktyyQqYY6WXRWFYj20xivxF9t2cW6VfMoQ2f0ECCxsCrn\n70FoctWZMHDt+amHAkKuSpGxXkbpv4g3rLyZ3gYfp1G1PLIEDVK4tZjDKXLF\nSwJWTvFB8CuN1lAYii12kjDLbS6A77Q+/dz+3STNvkrty463UXwTaZw7tbJJ\nSEUA3N+86DAlNiCWHSqqIMtXNIewM+5d/yI5GVHwqkzZPxhDocNWH2Z+BTXi\nULlGxRUFV2moNMwxsDoVMZvDUFxEKNm48KPuwAYxjVOCyhIHhR3h4ivzQcZR\n9rHCMN8q0B+8/PjR/8XA6ZYPTWhxcp/IAK71egbCiogkClvmAgyAVVC+tMMx\nNk1bp2bkFYIEwGf1L7FeAQLwSA4O40CpLQMjvYiI6v11KlGkfkabwWGYlDqY\n+OQhiWRu2fbAKQ8MjcR/6u0TgT6I/zYo2P1H9X9KOVG0uNK5OqFuTJbVl+9+\n8slQz/akvZQ323PMz0t4d8Kb2Llf1WHaD7cfDKLjdmR/irE/hM+iS23NcnMJ\n1c6D\r\n=nhRV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFPMwB1Ls9LL4cSzUHPg5+IWEFH9E31DO2kqjzTxO+dFAiB06rwL+TXL8wM0pXVl7kvChywUcKZQEgFxltBuLo6vBA=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-alpha.7_1563766137917_0.38973177377563095"},"_hasShrinkwrap":false},"1.2.0-cfdb7b5.7":{"name":"neutrino-preset-melody","version":"1.2.0-cfdb7b5.7","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-cfdb7b5.7+cfdb7b5","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"cfdb7b51924b134c874b2e9d2d44e83168f6b611","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-cfdb7b5.7","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-wywbaZI0l5e7O3GP0rFRLC7OQ6hN8s5gy7YoY6lK2ZzJt0nMRtAIzNXqlBRb216+OGHx9hVssT/KDN00J+oKLw==","shasum":"799d9766c94a89af81a2284835887825bb59eba9","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-cfdb7b5.7.tgz","fileCount":4,"unpackedSize":20838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNWxRCRA9TVsSAnZWagAAEKYP/0QyXXE3X76yo0kLFdTg\n2J0jTx5oBJsGVl7K8l63jvoQvoiC7pmQl9wi13UIvKu/SFk+qqQFR1ldO+ne\nMzpY4ktkFMQ4k0NgXm2CH7/2HJMirbh0nZNrQXM88sbn11weMVweF7OXdr7/\nAgF/iGPWd/4kPZMFHe0HaqmMoQCki33p4cOU4dqbV/Mfe3axHDweiGwxWv8P\nKFPUzPg6A9/Z6+Yc6M7vFF/t1/0WKi15XQwaxW5MhZEr9MAxy8fhozBzTARE\n7d8SNB3h1+UTWSefdWf5oORjgDXdN43EZDi5UlAvBHXgmIxAZc4sWZcLdlT9\n7f5YsFduu8C0mEnfHq5akufkz/ieQpOOE12wtYQJMSGE6khWzHLI6zQBBxtv\n7muJpNl+6NBptNsNwFseR3KLbIkHLRPRDkQ/eP3u8fzHWxO9wO6Rr5MU0aDh\nhgsuCFDUGxk51PGDBmDZOh1dW4Ms+jRadMHOEcx67t4uEfjIWa88BnQ840D1\nADwcqpWe1ZRkHk/KVc8lBQhXYpbuvHANkxlSuAoIVXg4LCsSK5HzzFoDoEVb\nQwg/Tf2N/HcuDmyJm2bkze13G+3sh2yGduTbe8sfDZYmzs8j7QgwlPsOFJnS\nuD6M2x/Dk41GDwDtYXaGl0JRw46ERlwZCzkOLAW8VosZd3XwIOzp3e2GpQ33\nx0yy\r\n=84Ml\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFHnaQkfRgmwrB/pZb3gQywOM3pQJvh5lMdRgaAHtiXYAiEA6L5sVOmHsNGDmViZE1YOAiLxUJd75SSN7ZTkLALWSwA="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-cfdb7b5.7_1563782224467_0.8184642842948817"},"_hasShrinkwrap":false},"1.2.0-5474acb.9":{"name":"neutrino-preset-melody","version":"1.2.0-5474acb.9","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-5474acb.9+5474acb","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"5474acb9b842a4761a243cd8235f5d574b921e8c","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-5474acb.9","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-m72amcX7vjAc6fXn6CYP8hJcRIMUtRpC7i4uCWMaHX4ihGTZJjLVcXdS8igBhitdsGU5TbaihxMgGUR6iy+x3Q==","shasum":"a04a230daee653687ab5dacf42043d46f91fb995","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-5474acb.9.tgz","fileCount":4,"unpackedSize":20838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNal3CRA9TVsSAnZWagAATmUP/2O4Bmh4bIgG2YDofTO6\nH/KWoXVvaCYJfuMNDoZgxnAMqXblyx2UO+2oTk6bjZM2mw9Qy4V2OuUUKp62\nO9cAcU4tzBIkwdVEVkVlPxuhQjfhYiV9yuOr9N322WLOauCawgvTXym1t5J2\nvkEPmSck7u2/VtbaSuSJ/Da5GnWj+kQ3IBd8JZJjLXvSv6bjs5SFsFAClqwr\nQh0zZcOkn+lXEpXBoR0aQeMa/0IWe+zfoVfvRHF80I2b0CqzY3aF436pDLiU\no1cXRl2kXTl40L4KFs4xna6IXsXdVTNjoK+PRvzgWo00OhW5h8pEctxJPryW\nNT7nXgv7DT+ezqxC3STpTkc9jOQJdGntS0kdzQMr4W/UYCsoA5DIvdPcKC1+\nqEUzjn2w/ZxZ7HyriyF1P483jeWfx3xlmGXHrqVYRIv1wyIh5ICEmmjRC3qi\nn5GgiWs3mrw8cZJIH2W5Omi0zwq5VpsEdebdMGDqiAlfUxzVPZHlc/V4J8UV\nbC8RROfFEkCuSw+F3+5btmmE1/wWz2MLCCK68LoPjEA7GUbls2QN9mL3ZenY\ntpPjqYylrXSzhkAz2ihUyJ1W2n4uTcNH38qwf10NMOLrwK+ipFiEykSQjaEl\n4zLq/TeMbB4SbMKNpWcHZ4koWAQn9HphCS2CnYwoaOrUoZNHI5C/ir1AJ4h4\neH7F\r\n=z0ak\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFoFc2bCKj4uKfAetU2ZcvbWg26qPH9ki90VVSA5IvDyAiA2LajID3zKmIk243iahwO5pZiFTK03+AXA/7PMCUpeTA=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-5474acb.9_1563797878944_0.45772978576156365"},"_hasShrinkwrap":false},"1.2.0-alpha.9":{"name":"neutrino-preset-melody","version":"1.2.0-alpha.9","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-alpha.9+3fd5d6d","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"3fd5d6d1e53614187972ef4cfda3a213a3a363c7","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-alpha.9","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-xC2x8q/5Kaw2jsdWoKhrEmrya0kSjHdCpFmoTPcJOmzp7l8UqFc82TTUuxaqBFH54cv/kEKphAdbO/4NYanJvQ==","shasum":"a0fd400abeaaf9d6a84ed9e8bf045bf015ea8c8b","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-alpha.9.tgz","fileCount":4,"unpackedSize":20834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNas8CRA9TVsSAnZWagAAoOoP/3vzrbv0L43YgMvQPHu5\nI3W11rgEYpPIsGa2Ojq8WjS594nar98op9dQb7HTHC4aiBQi2LbqXdZ4ryo8\n/69gikI+O6pvDhtgPvN2aDFmkP0Gyq46l01cMJR0Rv8JVydOShWhBI2qCx5+\npcAQkCAdULflHgES1xHvc4wMWYdigQ7ZN/xpjaXZi7g0tcSj6FzTZWnCaYAr\nGcMk4/kthxd8S7g2T5lRM7ycPJ61ieyLSCpPiGPv2k73KGKcFXWdwYxLHIej\nmyAWh7QqR+zs/lGaQLAk+VKguxCxGfmQnrZRb27stuBJoHwUhKQCssbVVuZk\nBHfpgnSD01fjrI0N/NK3p2Mjy6/nvBRQJs21CVlRR/AVFIfDVBMqZDVIiXn3\naKoC/JXczHQWdHzuZIcBvPj/GkNPA/Enj7VKlxVuzH2Rvdo3As/ByjiPa4It\nI4+PggUo+Vu6UmVo7yHE1JG/lVyFjouLeKckYaBKHgP26E2FdmVZmcoxPf5L\nfPH7zjiQqwlWQPg5tFbYvVoJOPDlDIOIr/jzUZmkZqdocKQMdg+8Hmb2EWb2\nvJLATigSOrisz38njoGbp2d/mXRAD67m/nCy3OgrCtAjaojM7ugno9khTSwS\nbj2ljVqSY9UN2XgS60oKF9RvafAE2Qkw140wBydx4M+1izilFO2mHGb/6SyR\nBa+2\r\n=857z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHVwxEw2egbO95HJyqAdyEv7jr91rpswgFXKpUvXYuQQIhANRGHDZHqysMYNCWXQ2FDScJQmkVqApRCdaxua8j4VsH"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-alpha.9_1563798331918_0.6793948032109789"},"_hasShrinkwrap":false},"1.2.0-6717b8a.11":{"name":"neutrino-preset-melody","version":"1.2.0-6717b8a.11","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-6717b8a.11+6717b8a","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"6717b8ade5b51d8b16f11787ef90b53855ea98ae","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-6717b8a.11","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-fZlsXImYFjPikHXacC8gP61K5Nfwg9fnIonjzdKga2AhenhW+vLXTPiNUeWKZlC///ceTGRzJGkdeerjqgT2fQ==","shasum":"5ddc63431b7f56dc56ba3b1d8e5f51d3d7079e80","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-6717b8a.11.tgz","fileCount":4,"unpackedSize":20840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNbPlCRA9TVsSAnZWagAAbowP/3xss2ozfKPwiePCRUeT\n5mZ+2YKElN7OKwgAb0y+ppJVWlz6RD0hEdqOrmqBl/ih9E9znImPdiAR+vM/\ndr/er3+hiiSIoU4UENCtT7t+uAMUKSwf+XLmTYkxtE8RAG2K0GBy0Q1t1bP1\nun13X4iS4aTprSqIGUBhWyGnS30TrSo3AuOI+ahu6lO+gHB7iSdon+a9WY8a\n9IvV4RVpX/EUoQy3RgpULd5wGqx6H0PormsDAKx2NyNwTiTv7AWWgATzvn68\npxKJMAgxWWIZ+goWuUlaJNJdgjXQCQV0HyElKNp7K+ouj0grWMarZ96bSoDg\nAC5+dcr0OUojAzU0Bw7qm07ZqyMChVnZ+Hql3JT8IvlBkVJbzr0b0CwH0hX6\nIT+hX1kPPsw9n8TyrLAoELvGVh19lz1ZUO1LE5uCWFiPFYydBWEweokIJDqy\ncX6ZQfyp5d0TupRWg+lKUQZYsX4zohBBJbkSm9md476onzCrQpZt4K84IGm4\ngOUFXIFCfHwjJbW00J6u19lFI2OAJnGvbGuCsgt+rvSP8vXFxSP7+Zmq6U5A\nS5uRnZcVkmMNPtyBpFXJRrXGTUkJ71OGY6T43BZRr8vDvzTRFyhWiIKg38lX\nBqvWLP04T0E2khzmVbWSkZNbBGr6dyBeJ60n6tRYylrYexscA1OF5Dx+w3H1\n76Dv\r\n=K+k0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPcfWfF1zz15iZ7vQh5w68BMnz9ftERpPrdIcI4ZP0bQIhAMHrXMKstV/o0UhzzLCt2CWmsfAaC3GpJHoCmqAcXcMR"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-6717b8a.11_1563800548840_0.08922395035032427"},"_hasShrinkwrap":false},"1.2.1":{"name":"neutrino-preset-melody","version":"1.2.1","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"^1.2.1","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"b7f66a450c30b32aca4efb4ccd36e913df1c2bba","_id":"neutrino-preset-melody@1.2.1","_nodeVersion":"12.6.0","_npmVersion":"lerna/3.13.1/node@v12.6.0+x64 (linux)","dist":{"integrity":"sha512-+JICCGYbT/TTpV4aTl5vU1hwSACu4vdi2k5d+7//btg0Ld5SNm4P8hp0J9HT5kCRtu2V4pAHz2vDYB2YoSLKMg==","shasum":"02a24d89b30c792bdead3a07692d18235a36a419","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.1.tgz","fileCount":4,"unpackedSize":20803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNceOCRA9TVsSAnZWagAAzaIP/0b3l+w4DJBwkFCoXyu9\nzMHIpBj/+3zgSo/xv2VR2hI3r73S6bTaH5ZYjpg6BJWBWYjVWItKz0L704Ai\n8wYXTzC86Y4iOOq8nw24ohucL8GwjLYoO+kKohCHEoaZPnVmv+XeTKv5hHIJ\n2BS9NED2qz268wdWpedT9gcEBltvA2LG4IyshGKeCX307dPxqIkFbAJ7eun6\nQJdEK/T3wOBLbs0WMI13PaQR5uARQ8+yqKTzyl02hFLDBz0Yaqcm7rM/Yugp\noPMCAwxj7YMd4uGWLrk++SPZ5e7mQN82Vn2+pSKqZXObbXWduRe7fqwlyP2R\nVGBK9oIrCi5p7XYUgiYM9WvaScvZUm8gAHy7DLFEo47k+KNbzT7Oe2Ekw+hZ\nNkfsF7QfaFwFVHgCXUyraITeNf1Q5H0xjqY4XvTR8AhoL6PdHWW4W28P5nn7\n9zIDiGifq6G0KFy84ai8rZfyy1a0KUzhUuv3ln6xYsYEeMqDDB4n8sf4qjHa\n3lnFxk8xyQxW9LfuXAU+x2du0q43hFskHhxF731BEMmLdF0kM8A/82zwvxIF\nK4rowsYAVOPvdTeI65CTf1zWeotPzgrCDtqbXJIdA15jPw7yY6C6YyObS0HC\npOO1XiqlKsbRZ2OIyrOykoLQq+Qk1R7+cqiXJYp4HdEv4bXwEWUv54IAa6nH\nHXyK\r\n=GtT7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDa4sZuf0YnmlZkr5CaOJm418NLrGrI4AMv0tlITYlovAiEAt0Oe9xoas3r8DbpZ8WeLC3lyCD9ybTfp+cCpS2IxFSk="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.1_1563805582222_0.4298392741688353"},"_hasShrinkwrap":false},"1.2.0-alpha.11":{"name":"neutrino-preset-melody","version":"1.2.0-alpha.11","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-alpha.11+bbacd66","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"bbacd66cd8e1789efe306d13a353eb40a6f946a7","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-alpha.11","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-OCyx9zbR5EjBZpNgxLa/05oOIJ+Os1Ka+TbFUH24AQgMyIhBCEW/J79PKo5JDdmpfWRWtk0FK9GIqgPluGUkNg==","shasum":"9b44519fe54ea1d1b37647234fbfa0bc569a5db2","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-alpha.11.tgz","fileCount":4,"unpackedSize":20836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNceYCRA9TVsSAnZWagAAfDcP/jEECj7gfu3mQIZkYlao\noMUs8gaClYsmHX1DbFNZAZpQDcG62zUPi3l3v3kNSUFz93XmpuVDhZumVW77\n3SxwDV71DReGQp6yDA6/uerjBv00b8OEnb4rISHNYT3rU/zF2yAvooe3856R\nmg+VBgfLBG8lOypcpImAL7vtzB5cW+jxREXCjkiCSqgrefiU6KWVfmVldyBs\nlca/yxIOGudbUqTeodyQfChFdNibQZ/eTFsbabVQ0QrUOkDyE+Y9bcvEZmy+\n4yNwVMkW0ta2ZngRkQ2hqnxZvBAqeCuIcbdN+3sH7HWj+pOvp2CNzRDfr58n\nFRZMnrUcbR7ciN8ElGmiIVCt0Ghqe13jVyr/UQ4mIRqFP5wK/qpZ+DU3WKoJ\n86QEOog/KzZBqvfdW8ClsB8CLVcuKkM6P002Fw1dDGZ5Kyyd3gbVZXoHl5hl\nUEZ1OaeR/WEugHkCZmaG0nNMW9fVnTcq8oyBGO5AGVfQYQJCEzv2pqAMyDGC\nreuYmEYlxlfjePPdp8ol47HP9q8mG2nNhC5XSzmPpSHQixEMjYintPfrVp4Z\nfWQU0pTE0fX/qcNzY4KFwiWK1s6FOW/qJBBE6M/9dbugNUpJYsbhp58gFNWx\nM2JQBQUOrGMhtZT1zhkCRhAhZTyhUgtRl55yjI8qyFkplbA02iHn9JRIPU78\nnjY7\r\n=So75\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDivF9XKatwGIlCK5d84D9z56aLehvBt8QMvoWSLnHsrwIhAK+/ih5mw0qerZrX3niISse9KQZhESBPfCIf7mE1NDHk"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-alpha.11_1563805592141_0.19868941616637859"},"_hasShrinkwrap":false},"1.2.0-alpha.12":{"name":"neutrino-preset-melody","version":"1.2.0-alpha.12","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.2.0-alpha.12+c71f337","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"c71f3370a02fd544873e668e7029971bbd1b8e01","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.2.0-alpha.12","_nodeVersion":"8.16.0","_npmVersion":"lerna/3.13.1/node@v8.16.0+x64 (linux)","dist":{"integrity":"sha512-I1PY3n0QXHMIjLUKvrGV9q9C1oMd6w64yeCMa+efIAqUXq9yd2z01cLPuy784MJXAAi+fEw+oJH/VZkOVIFaQQ==","shasum":"348c29cdcc0b8ada9db05f2b1c160b8c4293eff7","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.2.0-alpha.12.tgz","fileCount":4,"unpackedSize":20836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNu7gCRA9TVsSAnZWagAAVY4P/jpOTbZQ7k5HQTW+xTXV\nJDB1dhQx/VtVc7KhWrzurC5nuztvqwlJgbj+tDlWlDYnadxWoHumB4tgI7Mu\nLuNJvz8w2f0/65K46eZ2Hn3ft1OZwaqE/Rwgkyw1iP1F3yyYKQF51KK/JkV4\nZ8rPjnrs96w1mNPFqFbb7YeDQQjd5+8CAGCvMfZ2fn6XlYZnbXD8c21/c+Fe\nb599CskGjr7YBiO8K5rvkpWei6b/Aq9CpTHOGBTFKy72v4OntAFTZwP7qudi\nzC7bunb6i2nYi0VBFzmR/fl/Xhpu/o8lAtBrRa8RObpLIaVlHnuq6dbn9rg3\nl38UBk7cUIKZ+hYo1UepZF/K4PwwthUmmXdon9sOmFcUgx+t45iZjRopXNzO\n9ylgpIL1FVnocana1aQJlT2wYT9KEcmBXbehJ8fvRv4RZbchy5FNL4Ng+nwR\nkfz/Uafq7z2+2MtB67bjZh1zH/1hiaeuKykmmBZkswPKEGZlXIEkfZvrHNZ9\niarIf+8jBeGtQdI0dCV+iwdpEyahtswHhqWu4rKnC8/9nR26HyKniLxaWeD0\na0EnVJjF2+huwImhhUyke+kZAolX6U65uvUPKVkwYmWsg7YbOzYjZpxmbs69\nKAjYWsr9IEkCi1FFvyt4bk2GQxpMEkae60p7iU54wGIzmshXK2IRzPYD0rY/\nXKjq\r\n=W5eJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYBiqNpOETaksxShaDrSQEa15x60ey1ALUbC8w05iJqwIgS8WfZj5OEN2Y9z6Lu7fz3JluJATB8FE0iJEH/EwjfH8="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.2.0-alpha.12_1563881183824_0.7666568933109978"},"_hasShrinkwrap":false},"1.3.0":{"name":"neutrino-preset-melody","version":"1.3.0","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"^1.3.0","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"24331093a8f4ef67e16945a44648f941af72b3e6","_id":"neutrino-preset-melody@1.3.0","_nodeVersion":"8.16.2","_npmVersion":"lerna/3.13.1/node@v8.16.2+x64 (linux)","dist":{"integrity":"sha512-5Vst2faLNf41PF4qv/EFiNOu4ztS1WzEctTIluIF3vJoNNGIWpBJdLOWLZeh7D1M3qt45baOWh3pbWgMoUMznw==","shasum":"98243c59c515c58a51ae066462b49ba8874bfa5e","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.3.0.tgz","fileCount":4,"unpackedSize":20803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwri4CRA9TVsSAnZWagAAzm4QAJNRnNXn8G6kvbBq1iZK\nppAgbx1e6zHCVKrwcNddM3PUAJ627nvvhPv96wxXGrXAPwzAYkXFcJrcMPeG\nSrcO1wAIME1H02GCJol+nqJx7OvefajDn+cp8PJvx4CznI2IrpOmYc5TWncK\n+f4fOMrHiAqtu71SGQC4kpIZ7f5StjJ9PY8r5kjLkiB+bNWPoWCkdp08vfwp\nyKjoKS87BciaCe6yUayXZV7gvooAS/1u0exCMLofVRLVzYnTLG05/G1J0exM\nk2C1Q1OmIN5YBixPfrWG1H4ZTFzEThhfK9Cgaaliy4fudHOmLczkIKXciacS\nQryQu21mcfsdc6RDFJKOQ/dSVm14nNldPQSpofwF0P8IQF21Zm5XogqMJA8s\ndvx7IVELsNp8ElM1b6bxdEXSACFS2IR9wCvwSSC8dUZPSAUv5eyd3oTcyhyB\n+LIVBdGGjHKQFSO0APxs+A9d03ZsygWk+ja16UaeI5ZNXYq0PEZzHSejQ8YP\n5PvZXcTtyTsXSEo+05yf2dEhCbEuzkvlwowHCWUSBEojA5vr1XsE5wWQMSFK\nIjokLxF5aOALN0OdWQ1DwyfiLbpOO7qoeCI0OZvKKBEJuXQOlSmtMHfZvfIo\nns1W4FKEzQ8mXIZRhUmb0lzAHvhaeTgGVqeTMs1CQLZog3PGnqKlG7enUINj\nr50G\r\n=bzb/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXkuLkhhpqCWl469/kzVZVV95lotKUssJ00LDZypZ26AIhAMFYPYdekZqT2/9YY8E/rnOVu/5lwfUEEYfMVyZOZjv0"}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.3.0_1573042359680_0.6843852996177204"},"_hasShrinkwrap":false},"1.4.0":{"name":"neutrino-preset-melody","version":"1.4.0","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"^1.4.0","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"c79e2d50e132626af6b043d1fb8df067cae9743a","_id":"neutrino-preset-melody@1.4.0","_nodeVersion":"8.16.2","_npmVersion":"lerna/3.13.1/node@v8.16.2+x64 (linux)","dist":{"integrity":"sha512-bHOSAtsmja1KdwXSR9MOS0wMIXzGt/fxQ8k3xwZr1MBxX3pcHX5sNVT9CxNQcm0ngaBO4Bpdz+MI9h5EwAe64g==","shasum":"881eaaebf78a2f6f6b3c46b882de2dc9071cec8a","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.4.0.tgz","fileCount":4,"unpackedSize":20803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd2Nt1CRA9TVsSAnZWagAAghoQAIIG8MJyC8peLaiofvNi\nFSTLModdZK3cEoAjdcJZI4UB8WORb2mjYH19oSEgWunbgbcpTqsN9guvmWAR\nCROMcC2NlKHbOWgHRm3YoN70MD7yKjSgu7Syjj7OAfYOxUpHLDSVkoFRI40N\nEsv3TnUbfkkdOJeDblUe1RhHHPkk0FeigQyE1qkMesxJBsWi4gBYG8uZQtOa\ngJ1r0IX2RjnbONfSkqLmp5B7jOzQIpeIPHf454Qg1uU4DGWFdZrKFPbTYrFm\nhsxzUvMgWGzTZLLmqkfBo8t2mMniLa80RMgdPYW+kTn29p2sWwdyLUFXPaSI\nyR/j0YQKgsoLOZeptFGTdcxzal0gJf+LUc7xMJfXgokjsQyV6TfrsRch7MCB\nkBrPGTniQUv6mLa01VlU0i+FUfewyzIgViHjd/fMoqyknouYGTJ33T7qfwYa\nGK6xb4WfZL9Mru19GA5QvzwPW4NhN37lq2OBWNnHTJRHj+tGClzw+s5vlq5Y\n/W7TAkzyEpbpBObrbyTwIJPpleJQqVhDguIlhK7KywarXVT9YXR27MbovFsx\n7GvZKSyvT4yi/UpMNioJB17U3tL7mgkwDB2OLm+qHBlaU29VxUxZ8piFr4VF\ncLVWoUqd9nW5wM3+dFZHwDdvi/2PvTq06RUeQ+iZRwDjQj9s1/8kDgvW0upR\n3eQO\r\n=fHmO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID8MOCtlx1cWJNADrSfOFj2WFwFPO5Rx0CxRxGxMIk0xAiBo4WPcbWYXo7xhbGZs7ohhvhJhYtqUOtmSvd227DSn3w=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.4.0_1574493044712_0.40808366214232583"},"_hasShrinkwrap":false},"1.5.0":{"name":"neutrino-preset-melody","version":"1.5.0","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"^1.5.0","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"6730ddfaafc4f3a69de46806f8a2d050821c5bb0","_id":"neutrino-preset-melody@1.5.0","_nodeVersion":"8.17.0","_npmVersion":"lerna/3.13.1/node@v8.17.0+x64 (linux)","dist":{"integrity":"sha512-GqmH/2itextCnESNbZFFIwZClpJ9foFuxO60p1DEpTf6tmiWpFontIytDfivaK42IZhIFKEJ0MJnWjAxyUxUtQ==","shasum":"2b913d188bc139325aecd98566457a610deab26c","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.5.0.tgz","fileCount":4,"unpackedSize":20803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+a2uCRA9TVsSAnZWagAAL04P/1kgYxvNsi1RpwJTQMlZ\nmk1aj3QC+ZGcWG9SUmsrlH+IZ9GXv3xC0QmkInU1SR1JGKBwsok6F+JYVlzu\nTqBnJp3IBhXQjhtoJzqoeoy4PWte13O++fq20yZn1BAE57K422tat8orxc/Q\n6Ihho5sH0nXVyfM3F0I/Si+PqIYounfOmhWQ8QM80YnIklRa6rP20iRTpSQ7\nv28LL8wVCx6f48i76QmklUPvtp+tAhg3iXCrghOAx7ZILs/E9Zp4we/gtEIQ\nTY/sf4Xvfo5yN1uz+dcHuxeQwdOe7b0wt2NoVgyNwK4L+A84hHe9JwWLDrl4\nMl0DkAcPx7or4NF6jR6/yhrcP62yo8pGeNpPbX8FiSoKZqAE9GWtzZpmPJQ0\ns7Jesr9yWNnf8Mw87TtHPjcrDGpoSJyA5Y6vFEpLYAaxVzp/3vDTYCkn4dFT\nxfehWnClkZISrWClJc+jjcQdtAFWuEFeGOUY7RyRjTQmP6fAeUjSqp38fGqP\nMmEwTuNHnB8j/K1dEcwRl2nhjKrol9WZiQAMIpMFyzG/Z8BR/G9xeZ55d/DU\nuH/m0Y2WoeM2LmrUvRXtKEaR0RliHpgKWhZyQ1rYnjA1rooZ2rTJ3/tFgLvi\nRWRbuQpoLKzzt1zplvXDzInSxrOcoigGrFTgJuXzbUbi9yJvdNOhYjuONFub\n89WM\r\n=7/sW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICZc6/sV/MU4EMqzMJGsrjd1SHfi1AtMBsOMqesLImIJAiBhuGZGPdHfUbxI21+5Iiovbo5/Gnr8q34yWRQjGuQKvA=="}]},"maintainers":[{"name":"jamesbell","email":"james.bell@trivago.com"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.5.0_1576644013822_0.2786678706879093"},"_hasShrinkwrap":false},"1.5.1-ed89a02.5":{"name":"neutrino-preset-melody","version":"1.5.1-ed89a02.5","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.5.1-ed89a02.5+ed89a02","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"ed89a02b07f9019a14fe422ce58ec3a9d8cbea83","readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","readmeFilename":"README.md","_id":"neutrino-preset-melody@1.5.1-ed89a02.5","_nodeVersion":"9.11.2","_npmVersion":"lerna/3.13.1/node@v9.11.2+x64 (darwin)","dist":{"integrity":"sha512-RHUWB50oQap/uSucZygQLhT96XW4dDYIyxTdqvUZj5N+z46WqMWP+7SOyT58FzqdG3IOMKQ1NgSksjcW2yES5A==","shasum":"bcf60ab476bd174a2b5fa31a439808de6ad3c174","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.5.1-ed89a02.5.tgz","fileCount":4,"unpackedSize":20838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFfVUCRA9TVsSAnZWagAAuk4QAJRC9z6a9gmWrDfb/nW3\noGQsZY28Y8IjT3I8zz0a/A2IrHfsTx5SxAPg9y6F+HWa7RDJIBpMu2AQ9DiK\ndXy9vpwJcCnacO3LLrwuOxMBSh0voA8uYXfLP2yTZt7G1phWQw+BWs0MsI//\nxFPHz4ZYZ2MAUuay0iWC0yIWgdH7NeG8egFiWOtlLjWRHxjVrA00S1hXs9cc\nyH7+t3Ic7PuUNa8VkvVZ8ZzvIGqx88KEYOo2LCNo87MrXkWjGtY7nW/VWzE8\nySy2kBJPagJvF2PGa7dm6HGXara9rbR/aubaUOEas1O4VpSK18q4fJaYdos1\nPm/yn7FFLyVx+0cu+F99UYU55xTVZGL8LqbgjybLRvo78yzZKYVS+IVGL0+T\nhRSQaxwE7yCI5JILJ0v4vLbEqcdYN7KAMt+yHfnYcgoinhr5jL6rqsnb8W/f\nKxqH6hR20ZiTl+9uIAqBeakLZoslbCPbRuvCpg6AN7GdCbyIn7elU9jIsFNz\nX8TgZcv0cAYHaXDC6muhzctgrTEtkAUvyRXltwBpCUbWCrSWIyWjBBCy6pMN\nu36pDVOpW9Eqo7X252FsXwcUVDkp6cPFxr6y6Ym5itBz6qfJoP5l/0CgW0Rt\nTIzhxrK0CwL4WNsmD9NrWFRhC+DAz9dRRZ7Q2yP95y8NCbOq2Nm77MiZKGb8\nWWkD\r\n=fD1e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBkvjdk3dMq8JFw4ASi5IEgaWfBaeRu/BUkGoxDwxX5WAiEA/LVFQZuqpE2H/+ca0hAwjZlKtV0aPIxVhZN8PkXBJFU="}]},"maintainers":[{"email":"ayush.aceit@gmail.com","name":"ayusharma"},{"email":"james.bell@trivago.com","name":"jamesbell"},{"email":"patrick.gotthardt@trivago.com","name":"pago"},{"email":"thomas.bartel@trivago.com","name":"tbtrivago"},{"email":"npm@trivago.com","name":"trivagonpm"}],"_npmUser":{"name":"tbtrivago","email":"thomas.bartel@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.5.1-ed89a02.5_1578497363865_0.872185572146595"},"_hasShrinkwrap":false},"1.6.0":{"name":"neutrino-preset-melody","version":"1.6.0","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"^1.6.0","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"1d69e5a4480a400116355c11418f7a7df405c0a0","_id":"neutrino-preset-melody@1.6.0","_nodeVersion":"8.17.0","_npmVersion":"lerna/3.13.1/node@v8.17.0+x64 (linux)","dist":{"integrity":"sha512-OYFe1M0EyiBRcwpWf4JgaFT6WCYshOyc0DrZP16wcATQptGmbfOxwTVaRslZiF/W/c42QLYNsb/UQBCIU5xtqQ==","shasum":"6fd6a1c2c4157e42178c88fe89ee2b8162b19a25","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.6.0.tgz","fileCount":4,"unpackedSize":20803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGklmCRA9TVsSAnZWagAA+JEQAIHar4IBne2A5co/Ah9b\nxGAsdN45Lu4JYJucDcEAgkdSkMxkXfD24o7WAYRmi+snzUEORZemt44mqKRl\nSUy4b/9r/ty1oIyByLSpKsQmUaTqCTcC3wpvpeLBICMKbVa+qVf8KgLecQLs\nD4p6WIR5QuBDZ0s3vM1QNdPr0eAlsakW6Zd3t/1UXQDFPN7Lee/iMTH/Hcr6\nQafQ6Iy6ZdJHeG8sJfnZkIoyVAJI4/Vd1dgsUocqT58Y3JH8EJy7hMRJZTEK\ni6O6J2IYj9inBAwhSjhplxc1DlCfVifkiBnES2DsXB0bW9JgTviwAvR3Eml2\nIG81IdI1B7eqOxd4mulRWyK3ATUhYQSm3k/MMPQ6QVvfen6sdm1n5AQXxIMz\nSDtUFJ938MaoqhG2Qjzw8ItA4mR6VBgGqqTDo0c9Uf3Fqmd61l5bHPoeB8mf\nkT9V+y8ZCTEfOz0YwaIiVLxqBAoscTXd580JKtoxKLCgAN2FlunGXe3gud00\nKl6u/ysFyj9JqpDO4Qkbxu2EBrB1cJ0a9ue4A2QvEg7nNN6cNR/dQKyT1SWY\nuqLiCGDyd9vsXffd32aWCSmz/cP0YYm++SZBQloo09MBUqIaW7+zQdju9qVq\nkRr7IIAgZOJWFA6ZjE32VDkhjH1UqB3l+8gnwZ0alSsipJgzemO3y1KhPlSl\nCpBc\r\n=8H+n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/dkcxHHtn7VJN+l9cl8g6AFUYRlSKE7b0yHwFS7XShwIgf1jdD8p4/15EGnhjN8Fnn9EzeVTobIIieiQi47DHZ98="}]},"maintainers":[{"email":"ayush.aceit@gmail.com","name":"ayusharma"},{"email":"james.bell@trivago.com","name":"jamesbell"},{"email":"patrick.gotthardt@trivago.com","name":"pago"},{"email":"thomas.bartel@trivago.com","name":"tbtrivago"},{"email":"npm@trivago.com","name":"trivagonpm"}],"_npmUser":{"name":"pago","email":"patrick.gotthardt@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.6.0_1578781029663_0.2566196640514975"},"_hasShrinkwrap":false},"1.7.1":{"name":"neutrino-preset-melody","version":"1.7.1","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"1.7.1","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"895fa69a727adce760dd9dde6cd6e39f1a08852e","_id":"neutrino-preset-melody@1.7.1","_nodeVersion":"9.11.2","_npmVersion":"lerna/3.13.1/node@v9.11.2+x64 (darwin)","dist":{"integrity":"sha512-tbD/GCXkz0tzmiymbhf6ehcYxC2Gd7mtv/gU8Vpj7YJTVLcZtlnHXo4q1CYcjcT+Nj/6O59xgAugM4PZkaR+kg==","shasum":"0d54f6363341f3b8a898a307ab552450ca5b31e1","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.7.1.tgz","fileCount":4,"unpackedSize":20802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeW1T7CRA9TVsSAnZWagAA3YAP/3IPS4bETs4zQDvi1Mgd\nyTo/X6uZErplLrMjf3h1a7bIhonjDjjwYLSxgJi6E4qffX1qRfLIbDXsxBJr\nQCrrcyo40mMg/RDpRYi+qILatGu+Cvqsayv4k+8x0H8vLjMYLUIYMm61mDos\nbDM+8O/aNjxjOTCaMcHOwHtmXVSyD/TnE9fqOMnmMZARH+ODQVCqyFkbj9k5\nt1UPmimAeUVluTnMbZMYHCQCxDEEsSdctLOKfT4BeALv/9xcTkV1FjubNQhG\ngFHeGsiO6tVWzIh715s44clV0cyHLMVjhz5NTN7KWxZqSZF4k8DYjzyX3qhz\nyasVPq4CDRe0isOwsEOkGD38m9g7ktqrrteIRMQKZ3owjlSCBiusFJ0k+sVL\nTYqrBfizInV0cd269IJNCmwW8cgI9ysKFFOJDyV9OerTs7CPGv54pXgG+ZL7\nSBJhYa6ZO7R9+9NDOPrNbUtNg2mtybRoz+gPnefEIlIARZhl/tLbSjjj0BR2\n6dY8gcZoLpUn6rrLV0qET15Y/zwsF1CA0Jy4tRJxD1y7XMDNM1FjBVvdEv68\nLQkyD1bObBJzdP8f014UtCZDT6Iiof9c8ENJpZM+RW057iRhQ+IlnSc9JvkM\nfrnbSodxFebZwloQpxYt9N84/wnz3Ikr9OnvaTFU2jnjNtFNHxcdpz6RHoFl\nsqSI\r\n=24NP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDymP61sNN30cisGUpFj8T0fICNjIVJ8VhUWvGsvXWQ1QIgZ63XouvLtHzdz6tKw9paJo3zQk5CmKekv9q4aKf6pIs="}]},"maintainers":[{"email":"ayush.aceit@gmail.com","name":"ayusharma"},{"email":"james.bell@trivago.com","name":"jamesbell"},{"email":"patrick.gotthardt@trivago.com","name":"pago"},{"email":"thomas.bartel@trivago.com","name":"tbtrivago"},{"email":"npm@trivago.com","name":"trivagonpm"}],"_npmUser":{"name":"tbtrivago","email":"thomas.bartel@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.7.1_1583043834913_0.18792319250664558"},"_hasShrinkwrap":false},"1.7.2":{"name":"neutrino-preset-melody","version":"1.7.2","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"^1.7.2","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"2c6d4d2bdc3a19ecf654e86616e4fc92ebe95dfd","_id":"neutrino-preset-melody@1.7.2","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.13.1/node@v12.16.1+x64 (darwin)","dist":{"integrity":"sha512-/5rLkK5he2sOhxk3rxa9fwa8Xhmxra3iz1BJWRSHTGKLTFkSGIcxFAbn6S+lB8J54EDzpWgV4/UoBjXu5esM6A==","shasum":"7764bf4ff55e6797bd477543ae1961b1b191c11b","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.7.2.tgz","fileCount":4,"unpackedSize":20803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeu8IfCRA9TVsSAnZWagAAWD0QAIpX26jbZ4yc+Fto/eON\nfHTMDgEkAQr8HGxPnQ28flH8hfQWycUxGmiE/H0nzsFqZ76HzJHRaNQKK3yj\n+zxPTfW1TWFYGnTMp7aEumnY5xi0Yi2zlQ+8ZPsHf+j7ZfXfhXUOz8dPy8FQ\n+a/tifYii9O7pHmSwRFxddAciAdrZ09bb/33hJChMbFHZzgJmOOA1aXYGmnr\nAchjdkiaOLh1cnP5oEdx5pAcBATdusQ77rPm+QPtJd6DWIxERqEPg5GgfOXH\nz+cwnCs3ZKjuIfFjOFitpeKJWGyRKLWGsYVYJgHVxr85RGY92gaVc99WWT+v\nhJwhk/t55WUN2TvYs3HvnJVhxVVvfeSCKK+ZykJ09EuWI7TjlBwqvfNXFQ2M\nJZ5V2fibCsEHTzIxYbS4QtqHt/RlEU+HgifyASkt6ebkMqADDbuB2NmTOfhG\nqNptw/EvBhYmMAg+wTcdwef0vqc4r/OWzsL5PezWofLvZfvU6RK8l/hkblgQ\nA7tqp7ciSomiZ/U64cbkLRaOs9aDgRN+u4ICORJOMcXOFnorCLBNOSRKJFZt\nlhN6wU4utT65hPHDIPLTMvmHDEu51Q7BQVsED9bhIg1twhBLpmsS3/81U3xg\nHRiByCaMhjonh2n+tgfiL2/WYTuIWp8Npe56K5Ffl8qwNMiUdAVT9LT8yBxR\nrXaQ\r\n=ef3W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCd7VbrSTTS9l+H0fGeRynfOhNe6+O8FVDJVxXbLYXxJgIhAPpKzeeY7mppdDT7N1sDTYPkF9b2Pf/gWgpb6V+mqIQp"}]},"maintainers":[{"email":"ayush.aceit@gmail.com","name":"ayusharma"},{"email":"james.bell@trivago.com","name":"jamesbell"},{"email":"patrick.gotthardt@trivago.com","name":"pago"},{"email":"thomas.bartel@trivago.com","name":"tbtrivago"},{"email":"npm@trivago.com","name":"trivagonpm"}],"_npmUser":{"name":"ayusharma","email":"ayush.aceit@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.7.2_1589363230729_0.7982465283670019"},"_hasShrinkwrap":false},"1.7.3":{"name":"neutrino-preset-melody","version":"1.7.3","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"^1.7.3","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"88d41b72b60264b11505dcd449c525b7a2c05d61","_id":"neutrino-preset-melody@1.7.3","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.13.1/node@v12.16.1+x64 (darwin)","dist":{"integrity":"sha512-jAXOdaAC6xbe3/X664pX3xYI4svKzvNv88AnHm1AxHaHhLHvKVQwR8vEMQiNRRf5YNlTPeljU5YkVTaPu8efxw==","shasum":"c2e01a595cab1afe380104a1301306e08cac9a8d","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.7.3.tgz","fileCount":4,"unpackedSize":20803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeu/5eCRA9TVsSAnZWagAAvN8P/R3vtA1caJtbpgCXZW6Z\nLiaF02b6WBpgn13Gw34GZOt2zyAXxVpWpDYDDgK3NDLoxHWKDksNyUIIFpcE\naHiPAY3/9/Q1Fg32pCNbuzSJQFKCnmOSRnPwpjHYo9cWahc9W8Fs7eNZ6jdW\nsQH+reWaBjhJEXI1aRHpATgXyqIde5ttaHgnSwF1Da3N4qumhKMSuca0qa6C\nK8jEN2peQ1jomJRDwkIr9wQYS30nTBIDSJ9LixHSzvh00yg3eVYJjZgQAyLZ\nRjrGvsukDdKHID2bLcYtQPEwHD2sd7yHD3MCL49uio3hSCoADwtx4R9aN9GY\nOyDevKn8T7hgRc0MD1JkUqGZxRRN94yIkAsk6nscc6T+BWSm41PdYbyfJbMR\n3WjyCHm35polC1AvC8Qvg/uvgA7D4z0oHbxQ/jjpl0kWviGFRnaj/8ksw/7c\nQCYwx8TU586kLre0b+JCmXwpsK27YAzzS0/et6v7mIAUoBe5NO1Wb8MUwyYE\nnMAd1FBVP9DgTtpdzhxKbRCdkg+cw+WkVy/6AqmmD8U2qW5/5EIArl4OY0Co\nBQOLf7DSehG/ZI9/nod7NHQvHS4dc6OviTLVGBGIYXA6t+mddykdS4keG+2g\nz0L9ef40Ns+tmscn81vxRDRVw/bOB7jxRjv8PZrjhkocnZsrdv6wCbg6CwuB\ny6at\r\n=OAmP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGonTUYuHZ9tGFG+M3/0tPS7o1kN2suRDG1GFhXZ6hcuAiAAyd9qleJxIz1ryoBB2Sa3J3ARHvyVTs+AV2jmctXv+Q=="}]},"maintainers":[{"email":"ayush.aceit@gmail.com","name":"ayusharma"},{"email":"james.bell@trivago.com","name":"jamesbell"},{"email":"patrick.gotthardt@trivago.com","name":"pago"},{"email":"thomas.bartel@trivago.com","name":"tbtrivago"},{"email":"npm@trivago.com","name":"trivagonpm"}],"_npmUser":{"name":"ayusharma","email":"ayush.aceit@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.7.3_1589378654366_0.017412040087199987"},"_hasShrinkwrap":false},"1.7.5":{"name":"neutrino-preset-melody","version":"1.7.5","description":"Neutrino preset for building melody web applications","main":"index.js","author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","dependencies":{"babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-es2015-classes":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","deepmerge":"^1.5.0","melody-loader":"^1.7.5","neutrino-middleware-compile-loader":"^6.1.4","neutrino-middleware-loader-merge":"^6.1.4","neutrino-preset-web":"^6.1.4"},"devDependencies":{"neutrino":"^6.1.4"},"peerDependencies":{"neutrino":"^6.1.4"},"keywords":["neutrino","neutrino-preset","melody"],"gitHead":"623a490f999fdad0c11e76d676ae7faa14f569e5","_id":"neutrino-preset-melody@1.7.5","_nodeVersion":"12.6.0","_npmVersion":"lerna/3.13.1/node@v12.6.0+x64 (darwin)","dist":{"integrity":"sha512-oIPGxPLaJLH9aMD2xOwH2MkXkEdrjW94NfQ64U9tNhn9PDuvhkcrx0BE69iDCBkpGwxwJqS26RE9zQMLMvR2aQ==","shasum":"6be4f3cfa7ef95eb9a72ebda7c9f828ebfaaa17a","tarball":"https://registry.npmjs.org/neutrino-preset-melody/-/neutrino-preset-melody-1.7.5.tgz","fileCount":4,"unpackedSize":20803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0KNYCRA9TVsSAnZWagAAc5QP/j/FSNF0NbUJe6IiZDV9\nGPZLfmz1jiHp9nJ5jpT/gST7kZlePMU/urgMAjkicQLh5TRl2L0BG4Aw1w1x\nQz/K3owb6o1mGIJ/zHbGustynscdnL/coq99T2N3+BiCcRatJk+FqmjVPPxG\n7SB40Nb4xAd5VmJM9Z529LAJ+yJtHw0sAzDTC+JdHoZJhFWBEti6HIK0HgJT\nqPSWT3ihuWspfiZwOUbokJ0MoN9cSrkDmaUYfUukYvTopPKB5Ofi/q5dqMaf\n5yGutXc2OAMqDDBnHhlLsCHy3GswFBf+JNyrULQYbGtRQBfbq79qBrcImE7l\nX++CYpUaL90ZZSLPEdTZiM6Lb7sMNE+T/TXyBHd5CM578mux5a4ger+L063p\nFqhSC5dMI+DvsdmEQQet/fRlzZZdfUlFtULvhjZLNGBytUh+51vdUz0rlQuy\nQevHXOX/bkK1aXMDw2wuvgvcD1f2gt8Z3J4VZdBFR3oQhk8RBl7nz8pHOmI1\n/byHHmq22pS5d3taSBbjLTYxXdZckqxN/wOvOiLj4TNn+13v2mTddiEwJP2B\n8ccscCJYPTzRf+RBI/3l2S2+zsAF0E3nsckj8CY3nRxTJJjKnpHk7FqNAmv+\nEJqtQJp2bQ4Tm8pFfkkOYGW16SJ2/ZdbqdLVk9V1QnprTvwCKQDffSmMsF4a\n9oGP\r\n=h/MT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFQ5e2Ri0GrA9N8m7v1sOGv5WQ/6RTInIW5kQwOuS3ifAiEA8ccTXpSP06TgeRr8QkzhCd3p6ZLYm7j/kXnlbpVq97U="}]},"maintainers":[{"email":"ayush.aceit@gmail.com","name":"ayusharma"},{"email":"james.bell@trivago.com","name":"jamesbell"},{"email":"patrick.gotthardt@trivago.com","name":"pago"},{"email":"thomas.bartel@trivago.com","name":"tbtrivago"},{"email":"npm@trivago.com","name":"trivagonpm"}],"_npmUser":{"name":"tbtrivago","email":"thomas.bartel@trivago.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/neutrino-preset-melody_1.7.5_1590731607674_0.6677215170907644"},"_hasShrinkwrap":false}},"readme":"# Neutrino Melody Preset\n\n`neutrino-preset-melody` is a Neutrino preset that supports building [melody](https://melody.js.org) web applications.\n\n## Features\n\n- Zero configuration necessary to start developing and building a melody app\n- Write twig templates without any configuration\n- Extends from [neutrino-preset-web](https://neutrino.js.org/presets/neutrino-preset-web)\n  - Modern Babel compilation supporting ES modules, last 2 major browser versions, async functions, and dynamic imports\n  - Webpack loaders for importing HTML, CSS, images, icons, and fonts\n  - Webpack Dev Server during development\n  - Automatic creation of HTML pages, no templating necessary\n  - Hot module replacement support\n  - Production-optimized bundles with Babili minification and easy chunking\n  - Easily extensible to customize your project as needed\n\n## Requirements\n\n- Node.js v6.10+\n- Yarn or npm client\n- Neutrino v6\n\n## Installation\n\n`neutrino-preset-melody` can be installed via the Yarn or npm clients. Inside your project, make sure\n`neutrino` and `neutrino-preset-melody` are development dependencies. You will also need following for\na minimal melody development:\n\n```bash\n    melody-component\n    melody-idom\n    melody-parser\n    melody-plugin-idom\n    melody-traverse\n    melody-types\n```\n\n#### Yarn\n\n```bash\n❯ yarn add --dev neutrino neutrino-preset-melody\n❯ yarn add melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n#### npm\n\n```bash\n❯ npm install --save-dev neutrino neutrino-preset-melody\n❯ npm install --save melody-component melody-idom melody-parser melody-plugin-idom melody-traverse melody-types\n```\n\n## Project Layout\n\n`neutrino-preset-melody` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This\nmeans that by default all project source code should live in a directory named `src` in the root of the\nproject. This includes JavaScript files, CSS stylesheets, images, and any other assets that would be available\nto import your compiled project.\n\n## Quickstart\n\nAfter installing Neutrino and the melody preset, add a new directory named `src` in the root of the project, with\na single JS file named `index.js` in it.\n\n```bash\n❯ mkdir src && touch src/index.js && touch src/index.twig\n```\n\nThis melody preset exposes an element in the page with an ID of `root` to which you can mount your application. Edit\nyour `src/index.js` file with the following:\n\n```javascript\n\nimport template from './index.twig';\nimport { render, createComponent, RECEIVE_PROPS } from 'melody-component';\n\n\nconst stateReducer = (state = { label: 'Hello world' }, {type, payload}) => {\n  switch (type) {\n    case RECEIVE_PROPS: {\n      return {\n        ...state,\n        ...payload\n      }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nconst main = createComponent(template, stateReducer);\n\nconst root = document.getElementById('root');\nrender(root, main);\n```\n\nEdit your`src/index.twig` with the following:\n\n```twig\n{{- label -}}\n```\n\nNow edit your project's package.json to add commands for starting and building the application:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"neutrino start --use neutrino-preset-melody\",\n    \"build\": \"neutrino build --use neutrino-preset-melody\"\n  }\n}\n```\n\nIf you are using `.neutrinorc.js`, add this preset to your use array instead of `--use` flags:\n\n```js\nmodule.exports = {\n  use: ['neutrino-preset-melody']\n};\n```\n\nStart the app, then open a browser to the address in the console:\n\n#### Yarn\n\n```bash\n❯ yarn start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n#### npm\n\n```bash\n❯ npm start\n✔ Development server running on: http://localhost:5000\n✔ Build completed\n```\n\n## Building\n\n`neutrino-preset-melody` builds static assets to the `build` directory by default when running `neutrino build`. Using\nthe quick start example above as a reference:\n\n```bash\n❯ yarn build\n\n✔ Building project completed\nHash: 103df3a388384d01ebd8\nVersion: webpack 3.8.1\nTime: 3659ms\n                           Asset       Size    Chunks             Chunk Names\n   index.a6e0b771ad74e2311d7a.js    19.1 kB     index  [emitted]  index\npolyfill.4267540a400cfdd97921.js    39.4 kB  polyfill  [emitted]  polyfill\n runtime.fcfe67376ceab8b45443.js    1.48 kB   runtime  [emitted]  runtime\n                      index.html  846 bytes            [emitted]\n✨  Done in 5.63s.\n```\n\nYou can either serve or deploy the contents of this `build` directory as a static site.\n\n## Static assets\n\nIf you wish to copy files to the build directory that are not imported from application code, you can place\nthem in a directory within `src` called `static`. All files in this directory will be copied from `src/static`\nto `build/static`.\n\n## Paths\n\nThe `neutrino-preset-web` preset loads assets relative to the path of your application by setting Webpack's\n[`output.publicPath`](https://webpack.js.org/configuration/output/#output-publicpath) to `./`. If you wish to load\nassets instead from a CDN, or if you wish to change to an absolute path for your application, customize your build to\noverride `output.publicPath`. See the [Customizing](#Customizing) section below.\n\n## Preset options\n\nYou can provide custom options and have them merged with this preset's default options to easily affect how this\npreset builds. You can modify melody preset settings from `.neutrinorc.js` by overriding with an options object. Use\nan array pair instead of a string to supply these options in `.neutrinorc.js`.\n\nThe following shows how you can pass an options object to the melody preset and override its options. See the\n[Web documentation](https://neutrino.js.org/presets/neutrino-preset-web#presetoptions) for specific options you can override with this object.\n\n```js\nmodule.exports = {\n  use: [\n    ['neutrino-preset-melody', {\n      /* preset options */\n\n      // Example: change the page title\n      html: {\n        title: 'Melody First App'\n      },\n\n      // Add additional Babel plugins, presets, or env options\n      babel: {\n        // Override options for babel-preset-env\n        presets: [\n          ['babel-preset-env', {\n            // Passing in targets to babel-preset-env will replace them\n            // instead of merging them\n            targets: {\n              browsers: [\n                'last 1 Chrome versions',\n                'last 1 Firefox versions'\n              ]\n            }\n          }]\n        ]\n      }\n    }]\n  ]\n};\n```\n\n## Customizing\n\nTo override the build configuration, start with the documentation on [customization](https://neutrino.js.org/customization).\n`neutrino-preset-melody` does not use any additional named rules, loaders, or plugins that aren't already in use by the\nWeb preset. See the [Web documentation customization](https://neutrino.js.org/presets/neutrino-preset-web#customizing)\nfor preset-specific configuration to override.\n\n### Advanced configuration\n\nBy following the [customization guide](https://neutrino.js.org/customization) and knowing the rule, loader, and plugin IDs from\n`neutrino-preset-web`, you can override and augment the build by providing a function to your `.neutrinorc.js` use\narray. You can also make these changes from the Neutrino API in custom middleware.\n\n#### Vendoring\n\nBy defining an entry point named `vendor` you can split out external dependencies into a chunk separate\nfrom your application code.\n\n_Example: Put melody into a separate \"vendor\" chunk:_\n\n```js\nmodule.exports = {\n  use: [\n    'neutrino-preset-melody',\n    (neutrino) => neutrino.config\n      .entry('vendor')\n        .add('melody-component')\n        .add('melody-parser')\n        .add('melody-plugin-idom')\n        .add('melody-traverse')\n        .add('melody-component')\n        .add('melody-types')\n        .add('melody-idom')\n  ]\n};\n```\n\n#### Credits\n[neutrino-preset-react](https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/neutrino-preset-react)\n","maintainers":[{"email":"ayush.aceit@gmail.com","name":"ayusharma"},{"email":"james.bell@trivago.com","name":"jamesbell"},{"email":"patrick.gotthardt@trivago.com","name":"pago"},{"email":"thomas.bartel@trivago.com","name":"tbtrivago"},{"email":"npm@trivago.com","name":"trivagonpm"}],"time":{"modified":"2022-05-10T13:41:32.559Z","created":"2018-02-01T10:35:46.170Z","1.0.3":"2018-02-01T10:35:46.170Z","1.2.0-commit.e09ceb68":"2018-09-18T09:54:46.401Z","1.2.0-commit.e725f50a":"2018-09-18T09:55:29.694Z","1.2.0-commit.549dcb61":"2018-09-18T10:20:06.215Z","1.2.0-commit.2a331e9d":"2018-09-18T11:06:36.655Z","1.2.0-commit.3de5e8de":"2018-09-18T11:08:58.694Z","1.2.0-commit.10cb706c":"2018-11-05T18:37:53.910Z","1.2.0-commit.465bada5":"2018-11-05T18:42:51.637Z","1.2.0-commit.05c42290":"2018-11-06T11:05:12.808Z","1.2.0-commit.6a9d8668":"2018-12-19T04:44:40.627Z","1.2.0-commit.cd6a9bf1":"2018-12-20T11:31:20.906Z","1.2.0-commit.82e60495":"2019-01-04T11:43:49.249Z","1.2.0-commit.bcdafc7e":"2019-01-04T13:44:28.743Z","1.2.0-commit.a5749702":"2019-01-07T12:08:44.469Z","1.2.0-commit.8f7c241d":"2019-01-09T07:22:08.987Z","1.2.0-commit.e2b2efe2":"2019-01-09T11:14:49.642Z","1.2.0-commit.70fd6f3b":"2019-01-11T12:32:29.844Z","1.2.0-commit.6fbb2485":"2019-01-13T19:11:20.969Z","1.2.0-commit.ce0b6d24":"2019-01-16T13:29:34.147Z","1.2.0-1":"2019-02-05T04:29:19.269Z","1.2.0-commit.60c4cb49":"2019-02-06T11:34:47.119Z","1.2.0-3":"2019-02-07T16:35:46.236Z","1.2.0-alpha.10":"2019-03-19T12:05:38.152Z","1.2.0-update-deps.10":"2019-03-19T16:11:41.414Z","1.1.1-github-actions.46":"2019-03-23T19:03:50.501Z","1.2.0-commit.39e381df":"2019-03-26T16:15:05.901Z","1.2.0-commit.66d6630f":"2019-03-28T15:19:55.989Z","1.2.0-commit.7c030141":"2019-03-29T09:01:52.600Z","1.2.0-commit.088eeea3":"2019-03-29T12:08:48.256Z","1.2.0-commit.4acb2b43":"2019-04-03T08:31:46.796Z","1.2.0-21.2":"2019-04-03T09:46:33.412Z","1.2.0-commit.a347d3ed":"2019-04-04T12:53:57.367Z","1.2.0-commit.142c3d91":"2019-04-10T09:04:30.952Z","1.1.1-4445651.46":"2019-04-10T12:56:29.278Z","1.1.1-14a6096.46":"2019-04-12T11:33:53.082Z","1.1.1-d75dd67.48":"2019-04-15T14:42:30.732Z","1.1.1-51765e5.51":"2019-04-15T14:59:14.881Z","1.2.0-update-deps.0":"2019-04-15T15:04:44.540Z","1.2.0-update-deps.3":"2019-04-23T08:14:29.300Z","1.1.1-acd74e5.57":"2019-04-24T12:10:04.584Z","1.1.1-2111f3f.56":"2019-04-24T12:17:34.367Z","1.2.0-alpha.3":"2019-04-25T04:29:12.909Z","1.2.0-04d171a.4":"2019-04-25T11:22:12.870Z","1.2.0-b923d09.5":"2019-04-25T11:23:15.842Z","1.2.0-alpha.4":"2019-04-25T11:29:37.735Z","1.2.0-f61c830.4":"2019-05-27T09:03:48.411Z","1.1.1-8299c30.57":"2019-06-06T06:34:32.785Z","1.2.0-77ef7ea.6":"2019-06-24T13:48:38.039Z","1.2.0-42f95e8.8":"2019-06-28T10:40:33.507Z","1.2.0-e395b88.5":"2019-07-10T21:10:24.561Z","1.2.0-alpha.5":"2019-07-11T08:32:34.710Z","1.2.0":"2019-07-11T09:02:16.140Z","1.2.0-alpha.6":"2019-07-11T09:03:58.985Z","1.2.0-70b7860.6":"2019-07-16T10:14:33.500Z","1.2.0-alpha.7":"2019-07-22T03:28:58.017Z","1.2.0-cfdb7b5.7":"2019-07-22T07:57:04.623Z","1.2.0-5474acb.9":"2019-07-22T12:17:59.077Z","1.2.0-alpha.9":"2019-07-22T12:25:32.084Z","1.2.0-6717b8a.11":"2019-07-22T13:02:29.055Z","1.2.1":"2019-07-22T14:26:22.380Z","1.2.0-alpha.11":"2019-07-22T14:26:32.317Z","1.2.0-alpha.12":"2019-07-23T11:26:24.052Z","1.3.0":"2019-11-06T12:12:39.824Z","1.4.0":"2019-11-23T07:10:44.841Z","1.5.0":"2019-12-18T04:40:13.991Z","1.5.1-ed89a02.5":"2020-01-08T15:29:23.976Z","1.6.0":"2020-01-11T22:17:09.891Z","1.7.1":"2020-03-01T06:23:55.062Z","1.7.2":"2020-05-13T09:47:11.119Z","1.7.3":"2020-05-13T14:04:14.463Z","1.7.5":"2020-05-29T05:53:27.790Z"},"keywords":["neutrino","neutrino-preset","melody"],"author":{"name":"Efe Gürkan YALAMAN","email":"efe-gurkan.yalaman@trivago.com"},"license":"MPL-2.0","readmeFilename":"README.md"}