{"_id":"tweed","_rev":"32-7ef072f9d99d1f27574e4222c8b077a3","name":"tweed","time":{"modified":"2022-06-27T23:54:16.933Z","created":"2013-01-16T01:06:02.286Z","0.0.1":"2013-01-16T01:06:02.931Z","0.0.2":"2013-09-22T18:33:59.576Z","0.0.3":"2014-05-10T18:17:06.086Z","0.0.0":"2017-01-03T19:29:50.103Z","0.0.4":"2017-01-04T13:15:41.729Z","0.0.5":"2017-01-04T13:41:36.555Z","0.0.6":"2017-01-04T13:44:39.057Z","0.0.7":"2017-01-04T15:46:35.038Z","0.1.0":"2017-01-04T16:59:31.421Z","0.2.0":"2017-01-04T17:20:19.689Z","0.2.1":"2017-01-05T10:12:29.541Z","0.2.2":"2017-01-06T18:31:49.414Z","0.3.0":"2017-01-11T22:33:39.871Z","0.3.1":"2017-01-11T22:54:03.235Z","0.3.2":"2017-01-15T20:05:02.884Z","0.4.0":"2017-01-31T17:05:45.155Z","0.4.1":"2017-04-08T21:44:26.124Z","0.5.0":"2017-05-13T20:01:18.980Z","0.5.1":"2017-05-13T20:28:23.115Z","0.5.2":"2017-05-13T20:49:06.994Z","0.5.3":"2017-05-14T15:08:03.949Z"},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"dist-tags":{"latest":"0.5.3"},"readme":"# Tweed\n\nTweed is a UI library similar to [React](https://facebook.github.io/react/), but in an\nobject oriented style.\n\n---\n\n## Installing\n```shell\n$ npm install tweed\n```\n\nOr with [CLI](https://github.com/tweed/tweed-cli):\n\n```shell\n$ npm install --global tweed-cli\n$ tweed new my-blog\n```\n\n---\n\n## Overview\n\nHere is what a `Counter` looks like:\n\n```javascript\n// src/Counter.js\n\nimport { mutating, VirtualNode } from 'tweed'\n\nexport default class Counter {\n  @mutating _times = 0\n\n  render () {\n    return (\n      <button on-click={() => this._times++}>\n        Clicked {this._times} times\n      </button>\n    )\n  }\n}\n```\n\n### Rendering\n\n```javascript\n// src/main.js\n\nimport render from 'tweed/render/dom'\nimport Counter from './Counter'\n\nrender(new Counter(), document.querySelector('#app'))\n```\n\n### Server side rendering\nRendering on the server works exactly the same, but instead of mounting the Virtual DOM on\nthe actual DOM, we want to render the app once into a string. This can be accomplished\nwith the `StringRenderer` which takes a function `(html: string) => void` as its single\nconstructor argument, which can then be hooked up to any server. The `StringRenderer` is\navailable at `'tweed/render/string'`.\n\n```javascript\n// src/main.js\n\nimport render from 'tweed/render/string'\nimport Counter from './Counter'\n\nrender(new Counter(), (html) => {\n  res.writeHead(200, { 'Content-Type': 'text/html' })\n  res.end(html)\n})\n```\n\n---\n\n# Why?\nSo why does the world need yet another JavaScript UI library? Tweed attempts to solve a\nvery specific \"problem\" with React, if you're used to object oriented program\narchitecture.\n\n## The problem\nReact uses a top-down functional reactive architecture, with a narrow focus on pure\nfunctions and a one-way data flow. Component A renders Component B, which renders\nComponent C in turn. To make components reusable, all components implicitly receives a\nlist of `children` components, which they can choose whether or not to render.\n\n```javascript\nconst MyComponentTakesChildren = ({ children }) => (\n  <div>{children}</div>\n)\nconst MyComponentDoesnt = () => (\n  <div>Hard Coded!</div>\n)\n```\n\nIf a component needs to distinguish between multiple passed down components, it can just\nas well receive components as props:\n\n```javascript\n<MyComponent\n  childA={<div>Child A</div>}\n  childB={<div>Child A</div>}\n/>\n```\n\nAlthough this results in JSX which is quite far from semantic HTML. Furthermore, if a\ncomponent needs to polymorphically send properties to a child, the solution is to send\ndown the component constructor:\n\n```javascript\nconst MyComponent = ({ child: Child }) => (\n  <Child polymorphic='value' />\n)\n\n<MyComponent\n  child={SpecialChild}\n/>\n```\n\nUltimately, we end up with confusing JSX which doesn't really encourage you to value\npolymorphism and restrictions on source code dependencies.\n\nObject Oriented programming teaches us to decouple code by hiding implementation and\ndepending on abstractions.\n\nTweed doesn't treat components as nodes in the Virtual DOM, but simply lets you organize\nyour UI in an OOP style dependency tree, which then collectively renders the v-dom.\n\n```typescript\ninterface Greeting {\n  greet (name: string): VirtualNode\n}\n\nclass Greeter {\n  constructor (\n    private readonly _greeting: Greeting\n  ) {}\n\n  render () {\n    return <div>{this._greeting.greet('World')}</div>\n  }\n}\n\nclass BasicGreeting implements Greeting {\n  greet (name: string) {\n    return <h1>Hello {name}</h1>\n  }\n}\n\nclass CoolGreeting implements Greeting {\n  greet (name: string) {\n    return <h1>Yo {name}</h1>\n  }\n}\n\nnew Greeter(new BasicGreeting()).render() // => <div><h1>Hello World</h1></div>\nnew Greeter(new CoolGreeting()).render() // => <div><h1>Yo World</h1></div>\n```\n\nNote that the above example is completely stateless. We have no assignments. We also have\nno inheritance, only object oriented composition.\n\nIn OOP, we know to be careful about state, and to make it clear what is mutable and what's\nnot. Tweed requires you to be explicit about mutable properties, albeit for technical\nreasons.\n\n```typescript\nclass Counter {\n  @mutating private _count = 0\n\n  render () {\n    return (\n      <button on-click={() => this._count++}>\n        Clicked {this._count} times\n      </button>\n    )\n  }\n}\n```\n\nAs a user, you are responsible for creating all the instances of the classes _before_\nTweed mounts them to the DOM. Those instances are then persistent, as opposed to with\nReact, where class components are reinstantiated on every render (if not handled\ndifferently with mechanisms like `shouldComponentUpdate`).\n\nThis is a performance benefit, because for every state change, update, and repaint, it\nboils down to a simple call to `render` on the root component. It's the equivalent of\ncalling `toString` but for VDOM nodes instead of strings. And no data is being passed\neither. The state of the tree is persistent as well. Deciding to opt for a more functional\nand immutable way of managing state is entirely up to you.\n\n---\n\n> You can read more about the architecture of a Tweed app\n> [here](https://medium.com/@emilniklas/e1a818bb314f).\n","versions":{"0.0.0":{"name":"tweed","version":"0.0.0","_id":"tweed@0.0.0","scripts":{},"_shasum":"bfb5b5ca47e42776125bbca8eccd45f4c05f667d","_from":".","_npmVersion":"3.10.7","_nodeVersion":"6.6.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"bfb5b5ca47e42776125bbca8eccd45f4c05f667d","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.0.0.tgz","integrity":"sha512-SCQm9sKPFYdOX0GS3isx8xL1D37jU1BVhQWkSJJvAYQBBmAtIEjkKy11NU/BL/8k+4ApvKVyUGJOJRSF15K/zA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEc3U58r8wGwHVYOhcEleDIljkzOzHpc6kadmiqWmvXCAiEA5Gncmq0pzKTIHZdWO9o/WqFLhUSslqVcAtNmM6pkQb0="}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/tweed-0.0.0.tgz_1483471758341_0.9350576330907643"}},"0.0.4":{"name":"tweed","version":"0.0.4","main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","jest":"^18.1.0","standard":"^8.6.0","tweed-babel-config":"^0.0.2","webpack":"^1.14.0"},"dependencies":{"snabbdom":"^0.5.4","snabbdom-jsx":"^0.3.1","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"gitHead":"676d9a1c9005faa9686add5f02188391179ed18d","description":"Tweed is a UI library similar to [React](https://facebook.github.io/react/), but in an object oriented style.","_id":"tweed@0.0.4","scripts":{},"_shasum":"6f224511ff1094772924526d6d8db150fe1cdbc5","_from":".","_npmVersion":"3.10.7","_nodeVersion":"6.6.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"6f224511ff1094772924526d6d8db150fe1cdbc5","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.0.4.tgz","integrity":"sha512-M+isKMwlP6Vl6DH75CdPBIj/2fdY9mpcwP4ltP7+e6KqoB18JXZdxrc8/vpsbQ0dT5r0+OL7BvzsFhm9MLw8fQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqYb3WFcq9Q9E9OwuXjLSwYEDFNcfo3FWFvDmCPEMA0gIgFy9pZI12xXY+OACoJTfnB5G/2H8IJf++nawQSFVVdhA="}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tweed-0.0.4.tgz_1483535739650_0.8225667669903487"}},"0.0.5":{"name":"tweed","version":"0.0.5","main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","jest":"^18.1.0","standard":"^8.6.0","tweed-babel-config":"^0.0.2","webpack":"^1.14.0"},"dependencies":{"snabbdom":"^0.5.4","snabbdom-jsx":"^0.3.1","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"676d9a1c9005faa9686add5f02188391179ed18d","description":"Tweed is a UI library similar to [React](https://facebook.github.io/react/), but in an object oriented style.","_id":"tweed@0.0.5","_shasum":"88a6b67f67fedc7f7478b71c5378ef276cb46b6e","_from":".","_npmVersion":"3.10.7","_nodeVersion":"6.6.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"88a6b67f67fedc7f7478b71c5378ef276cb46b6e","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.0.5.tgz","integrity":"sha512-DZluclljlpEckgoy8cTurqufMXAz9bko1Kym2OR7J0i7z1JztiwW4rOc80MRLFT5fo28peUNKC2p1euiItUaSw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDngk23DZyT8xtUOKbsphkQ6hbyWFmXXu1JruWhjFwSHQIhAJ6utqaP29K8APyn+LiY8+JKNZN820ByyKWba04/HXLA"}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/tweed-0.0.5.tgz_1483537295915_0.6463968018069863"}},"0.0.6":{"name":"tweed","version":"0.0.6","main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","jest":"^18.1.0","standard":"^8.6.0","tweed-babel-config":"^0.0.2","webpack":"^1.14.0"},"dependencies":{"snabbdom":"^0.5.4","snabbdom-jsx":"^0.3.1","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"676d9a1c9005faa9686add5f02188391179ed18d","description":"Tweed is a UI library similar to [React](https://facebook.github.io/react/), but in an object oriented style.","_id":"tweed@0.0.6","_shasum":"325395378030065bb017f28135f9e70ff40ec1d7","_from":".","_npmVersion":"3.10.7","_nodeVersion":"6.6.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"325395378030065bb017f28135f9e70ff40ec1d7","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.0.6.tgz","integrity":"sha512-kw0ctqbRchDecUmX0cHSoXScdgMhNt5wCHMUZ4mKI9JswH4HK5Z+LKC9cP4QbFwvXPZ9UVgaXIcrYOe0d8v1/w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH3JMO1K7h2NMJgJ/2AYs/jbVR6PrF54TwO0okArzEP9AiEA+sV452WU0M7EMUK8SnV5BtFKoAhQTU8vXbqUj1V2pwU="}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tweed-0.0.6.tgz_1483537476616_0.8410602398216724"}},"0.0.7":{"name":"tweed","version":"0.0.7","main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","jest":"^18.1.0","standard":"^8.6.0","tweed-babel-config":"^0.0.2","webpack":"^1.14.0"},"dependencies":{"snabbdom":"^0.5.4","snabbdom-jsx":"^0.3.1","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"676d9a1c9005faa9686add5f02188391179ed18d","description":"Tweed is a UI library similar to [React](https://facebook.github.io/react/), but in an object oriented style.","_id":"tweed@0.0.7","_shasum":"427e56e22ba328767005c1037f344c05446d863f","_from":".","_npmVersion":"3.10.7","_nodeVersion":"6.6.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"427e56e22ba328767005c1037f344c05446d863f","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.0.7.tgz","integrity":"sha512-kV31tvsMd/RxzM8wFJGKSjWzGEd0vZyFFicpvJ1f5ILUHwdsxEK/gDSC1RvJPD9kKu0FHM/uFnh4TDg1lEj4fA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9MB152MEMqdlXKWt9haw94/hYnn120600zYsUUneTrQIgNbJam07QqTFWs/rHuTC6Ni5PC9zaaHkx3g9l0mHHhGg="}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tweed-0.0.7.tgz_1483544792952_0.6858615982346237"}},"0.1.0":{"name":"tweed","version":"0.1.0","main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","jest":"^18.1.0","standard":"^8.6.0","tweed-babel-config":"^0.0.2","webpack":"^1.14.0"},"dependencies":{"snabbdom":"^0.5.4","snabbdom-jsx":"^0.3.1","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"676d9a1c9005faa9686add5f02188391179ed18d","description":"Tweed is a UI library similar to [React](https://facebook.github.io/react/), but in an object oriented style.","_id":"tweed@0.1.0","_shasum":"65d615f22d1b7503da85acf759f39fa519eec149","_from":".","_npmVersion":"3.10.7","_nodeVersion":"6.6.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"65d615f22d1b7503da85acf759f39fa519eec149","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.1.0.tgz","integrity":"sha512-pJkeW1S/FB3aKNujsOogXZScROd5FzYpkTP1MQTP1ggJOQp4fAKJjtoCf1TMcFtDF78QeuKxzvzpW0DKqmUewg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCihdk1L0oGTIVQVCGcR04gjrarN+sJmVZdzmxRgv0suQIhAMJDDs26LWYAh/v3r4y5owBg4EY2DpCkScjhMT8HyJhG"}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tweed-0.1.0.tgz_1483549169142_0.6537675198633224"}},"0.2.0":{"name":"tweed","version":"0.2.0","description":"An Object Oriented UI Library","homepage":"https://github.com/tweedjs/tweed","license":"WTFPL","keywords":["ui","vdom","oop"],"bugs":{"url":"https://github.com/tweedjs/tweed/issues"},"repository":{"type":"git","url":"git+https://github.com/tweedjs/tweed.git"},"author":{"name":"Emil Persson","email":"emil.n.persson@gmail.com","url":"https://emilpersson.se"},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","jest":"^18.1.0","standard":"^8.6.0","tweed-babel-config":"^0.0.2","webpack":"^1.14.0"},"dependencies":{"snabbdom":"^0.5.4","snabbdom-jsx":"^0.3.1","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"2a14f3b98c17db20fe119f349638887ddffa9439","_id":"tweed@0.2.0","_shasum":"2e3cab66fd0aa8b75dce81e2d4014e91cd8dd348","_from":".","_npmVersion":"3.10.7","_nodeVersion":"6.6.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"2e3cab66fd0aa8b75dce81e2d4014e91cd8dd348","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.2.0.tgz","integrity":"sha512-v0i/SpL8aqONC8fW8J+eXbTZGVpARY+THKxVLc3eUPYfnFkVJb1S23eRMuhLX1cuO1Qroj+gBrDDfnkPgfz2Ow==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBv6tYf6EIsx5fiYqGH7LUUFp+UyRAVioe+iCATHg2I9AiEA9+HycEriNhktO7eaf4CecSLtn2VfSkglL6/fGYX8L4w="}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tweed-0.2.0.tgz_1483550417291_0.9279529738705605"}},"0.2.1":{"name":"tweed","version":"0.2.1","description":"An Object Oriented UI Library","homepage":"https://github.com/tweedjs/tweed","license":"WTFPL","keywords":["ui","vdom","oop"],"bugs":{"url":"https://github.com/tweedjs/tweed/issues"},"repository":{"type":"git","url":"git+https://github.com/tweedjs/tweed.git"},"author":{"name":"Emil Persson","email":"emil.n.persson@gmail.com","url":"https://emilpersson.se"},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","jest":"^18.1.0","standard":"^8.6.0","tweed-babel-config":"^0.0.2","webpack":"^1.14.0"},"dependencies":{"snabbdom":"^0.5.4","snabbdom-jsx":"^0.3.1","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"e225affc7b2adebbcb838e5db1032406f86c23a7","_id":"tweed@0.2.1","_shasum":"e0b5869255b471bdfcfab9df7fcfe7f46df7485f","_from":".","_npmVersion":"3.10.7","_nodeVersion":"6.6.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"e0b5869255b471bdfcfab9df7fcfe7f46df7485f","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.2.1.tgz","integrity":"sha512-2JCm0qZjlisqSe9yRXe05Yi9tHQMT3tVpHyUqvkRJi4yK6LA6cRUH1LszlEcSy6S0pZylknaJgq+vqSEuCqIVA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPlS0P9g1EYg3QeYGWwaR9q2ywhx9jjYUmee00GbPiMAIhAKtwCI2AIP+b3Rfo8SpnMEtoYDBN/TZtNOW3JnHHRt40"}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tweed-0.2.1.tgz_1483611147169_0.045810689916834235"}},"0.2.2":{"name":"tweed","version":"0.2.2","description":"An Object Oriented UI Library","homepage":"https://github.com/tweedjs/tweed","license":"WTFPL","keywords":["ui","vdom","oop"],"bugs":{"url":"https://github.com/tweedjs/tweed/issues"},"repository":{"type":"git","url":"git+https://github.com/tweedjs/tweed.git"},"author":{"name":"Emil Persson","email":"emil.n.persson@gmail.com","url":"https://emilpersson.se"},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","jest":"^18.1.0","standard":"^8.6.0","tweed-babel-config":"^0.0.2","webpack":"^1.14.0"},"dependencies":{"snabbdom":"^0.5.4","snabbdom-jsx":"^0.3.1","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"b7e0976b05998583515059d8063304a3e017918d","_id":"tweed@0.2.2","_shasum":"0edeac0f55633a4e52c89794ed13165174040ca0","_from":".","_npmVersion":"3.10.7","_nodeVersion":"6.6.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"0edeac0f55633a4e52c89794ed13165174040ca0","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.2.2.tgz","integrity":"sha512-3QgJblJIEZcJ1SC7zIgzSri7cVnOOmMUz18qOhGBGq2wLp+YBSq7fCKX3jGLkg/rliDVGS/GCKvrzKX0Rug3OA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDzW9F6e9X2Y9ZNT0E+dEmd3QWuePq1ERYsREqc3yfPMAiAO3Y2UYpVkq5H3pBrzvsHXhIO+hdHJXOERDL2WZIwT/g=="}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tweed-0.2.2.tgz_1483727507320_0.884210292249918"}},"0.3.0":{"name":"tweed","version":"0.3.0","description":"An Object Oriented UI Library","homepage":"https://github.com/tweedjs/tweed","license":"WTFPL","keywords":["ui","vdom","oop"],"bugs":{"url":"https://github.com/tweedjs/tweed/issues"},"repository":{"type":"git","url":"git+https://github.com/tweedjs/tweed.git"},"author":{"name":"Emil Persson","email":"emil.n.persson@gmail.com","url":"https://emilpersson.se"},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","jest":"^18.1.0","standard":"^8.6.0","tweed-babel-config":"^0.0.2","webpack":"^1.14.0"},"dependencies":{"snabbdom":"^0.5.4","snabbdom-jsx":"^0.3.1","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"5a3e6a7bdf43eab87e3ac9adced90fcf5ab5826c","_id":"tweed@0.3.0","_shasum":"e6a7e7bd5ede282bb00984e0ac158a215d2b9f64","_from":".","_npmVersion":"3.10.7","_nodeVersion":"6.6.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"e6a7e7bd5ede282bb00984e0ac158a215d2b9f64","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.3.0.tgz","integrity":"sha512-Shxq8S5Nb6jwPWd0v+NP/ZxCRyVJ2Y3DdsAFP7TsFjEZw1k+o3+sito1zYE+FG5hk6BLT46B+06ocjISx0Fnhw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTnYk67KIwETYcCMx9DyBbt7kQ8Hjf33/wnQEgiz80zgIhAPq/ifn0ZfKYbvdOQiDNzAUTsFHmuwwIOdKZ0pMqTtnV"}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tweed-0.3.0.tgz_1484174017712_0.7556088909041137"}},"0.3.1":{"name":"tweed","version":"0.3.1","description":"An Object Oriented UI Library","homepage":"https://github.com/tweedjs/tweed","license":"WTFPL","keywords":["ui","vdom","oop"],"bugs":{"url":"https://github.com/tweedjs/tweed/issues"},"repository":{"type":"git","url":"git+https://github.com/tweedjs/tweed.git"},"author":{"name":"Emil Persson","email":"emil.n.persson@gmail.com","url":"https://emilpersson.se"},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","jest":"^18.1.0","standard":"^8.6.0","tweed-babel-config":"^0.0.2","webpack":"^1.14.0"},"dependencies":{"snabbdom":"^0.5.4","snabbdom-jsx":"^0.3.1","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"8d8462b8bac6c86432a9136b57735adfd7da7999","_id":"tweed@0.3.1","_shasum":"40637333cf2a265ab4a794ed69fabce0ce0c9ab9","_from":".","_npmVersion":"3.10.7","_nodeVersion":"6.6.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"40637333cf2a265ab4a794ed69fabce0ce0c9ab9","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.3.1.tgz","integrity":"sha512-QyWZGhiPxchGRaLz1Nz3gt1lWNF2BP6Nl81SslenC5ibu2l5k4P6QhnaEjLzu7VhdGskdI0FJa9v0y9af/mULQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyjCoullgCpMsQizgbBAeSeqHw/zg1kaHBslhpfT4q7gIgUGixiSPC04S/LVSi1MB5pjTjnyLW47hxZlCy0lEnYSQ="}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tweed-0.3.1.tgz_1484175240752_0.8618312859907746"}},"0.3.2":{"name":"tweed","version":"0.3.2","description":"An Object Oriented UI Library","homepage":"https://github.com/tweedjs/tweed","license":"WTFPL","keywords":["ui","vdom","oop"],"bugs":{"url":"https://github.com/tweedjs/tweed/issues"},"repository":{"type":"git","url":"git+https://github.com/tweedjs/tweed.git"},"author":{"name":"Emil Persson","email":"emil.n.persson@gmail.com","url":"https://emilpersson.se"},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","jest":"^18.1.0","standard":"^8.6.0","tweed-babel-config":"^0.0.2","webpack":"^1.14.0"},"dependencies":{"snabbdom":"^0.5.4","snabbdom-jsx":"^0.3.1","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"cc4a7c5092134efbf6962f74e9778507ec8863fd","_id":"tweed@0.3.2","_shasum":"95ff2e9f9ddd38068dd73bf0a5290f9980f348c2","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"95ff2e9f9ddd38068dd73bf0a5290f9980f348c2","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.3.2.tgz","integrity":"sha512-dFCOFrqpcG0jrwHmyGYd+N3zZs6hoxcx8xvFycnBGUxP35GKI27UR4FRMlg4n8iYMkSmYSHeX5jXRr6yP+QLWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTiBulDp49VqKKsHq2AMSAtbyqTuq3OPeok/OcW23ARwIgPac3rbaAjymzLhTKolaIU1UxW5jJhVPNy9vHAxojbjg="}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/tweed-0.3.2.tgz_1484510702234_0.2770805440377444"}},"0.4.0":{"name":"tweed","version":"0.4.0","description":"An Object Oriented UI Library","homepage":"https://github.com/tweedjs/tweed","license":"WTFPL","keywords":["ui","vdom","oop"],"bugs":{"url":"https://github.com/tweedjs/tweed/issues"},"repository":{"type":"git","url":"git+https://github.com/tweedjs/tweed.git"},"author":{"name":"Emil Persson","email":"emil.n.persson@gmail.com","url":"https://emilpersson.se"},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","babel-loader":"^6.2.10","jest":"^18.1.0","standard":"^8.6.0","tweed-babel-config":"^0.4.0","webpack":"^1.14.0"},"peerDependencies":{"babel-polyfill":"*","babel-runtime":"*"},"dependencies":{"snabbdom":"^0.5.4","snabbdom-jsx":"^0.3.1","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"a06df153ca5c7b8c54650147760ee96a156d9ecc","_id":"tweed@0.4.0","_shasum":"47e3f0704e6c5f94ac1ac429507b8612fc42bcf0","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"47e3f0704e6c5f94ac1ac429507b8612fc42bcf0","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.4.0.tgz","integrity":"sha512-Wla1hiAqj+HmCzd16UHWigdyjzpsWX08sgIkHVMpESg89iNLSa54UgSUOUacJjCvpzMoMUZj85hhgG83tb7krg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlR4FO0W/gKFfgVdx+1kALcuizy2sh1mYT7cb2KeL8twIhAM4kQU4EGStKpX/pKD8NMgqiyEuNmJFKx10Z0j3q1y7O"}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tweed-0.4.0.tgz_1485882342929_0.8756467783823609"}},"0.4.1":{"name":"tweed","version":"0.4.1","description":"An Object Oriented UI Library","homepage":"https://github.com/tweedjs/tweed","license":"WTFPL","keywords":["ui","vdom","oop"],"bugs":{"url":"https://github.com/tweedjs/tweed/issues"},"repository":{"type":"git","url":"git+https://github.com/tweedjs/tweed.git"},"author":{"name":"Emil Persson","email":"emil.n.persson@gmail.com","url":"https://emilpersson.se"},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","babel-loader":"^6.2.10","jest":"^18.1.0","standard":"^8.6.0","tweed-babel-config":"^0.4.0","webpack":"^1.14.0"},"peerDependencies":{"babel-polyfill":"*","babel-runtime":"*"},"dependencies":{"snabbdom":"^0.5.4","snabbdom-jsx":"^0.3.1","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"7f3b9796b4a3ebd80d6754a9ee229f786c9daed3","_id":"tweed@0.4.1","_shasum":"d07423250667a7f1d0201f45e32b584c0eaeedda","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"d07423250667a7f1d0201f45e32b584c0eaeedda","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.4.1.tgz","integrity":"sha512-ZJrus/OanRTD+gqtHzhbazbRxYRATWV1d6j//cYSCMJBLjdKkWdX3eC6ow/XMv4YwjEbiDk7o7eP5FAMCBz5GA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8ANTgWhyS3aMCHR46KykxZB+8MVake4dFl4QZi2StTgIgPvb/t5xGEK4FWHeyyBDdFN6Tk2eCWUmY84KaluNqMDg="}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tweed-0.4.1.tgz_1491687863894_0.6461012000218034"}},"0.5.0":{"name":"tweed","version":"0.5.0","description":"An Object Oriented UI Library","homepage":"https://github.com/tweedjs/tweed","license":"WTFPL","keywords":["ui","vdom","oop"],"bugs":{"url":"https://github.com/tweedjs/tweed/issues"},"repository":{"type":"git","url":"git+https://github.com/tweedjs/tweed.git"},"author":{"name":"Emil Persson","email":"emil.n.persson@gmail.com","url":"https://emilpersson.se"},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","babel-loader":"^6.2.10","jest":"^18.1.0","standard":"^10.0.2","tweed-babel-config":"^0.5.0","webpack":"^2.5.1"},"dependencies":{"babel-runtime":"*","snabbdom":"^0.5.4","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"jest":{"transform":{"^.+\\.js$":"<rootDir>/jest.transform.js"}},"gitHead":"de5ecbc3335fae5f4be5f6470e87e77c4d4baeb6","_id":"tweed@0.5.0","_shasum":"5a2fa1aa059920b32895cad710da8bab95624d0a","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"5a2fa1aa059920b32895cad710da8bab95624d0a","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.5.0.tgz","integrity":"sha512-sSR2z94WL0RzSgLDWtmoA6uwmVTGv1Sty1cfgzUCT2+mUjo1Pz8/CMEaFEs/tlboD7j5FGWr9zpKxm/W2I2R7Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0doAVZNK+RveZkb5EQ02uhMBbgP4p8rxawR5lOFBASQIhAMocmJAiOKOL5/o37E/oxyZc2BCtBBZitSVvi5eSGLhL"}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tweed-0.5.0.tgz_1494705676732_0.7593432466965169"}},"0.5.1":{"name":"tweed","version":"0.5.1","description":"An Object Oriented UI Library","homepage":"https://github.com/tweedjs/tweed","license":"WTFPL","keywords":["ui","vdom","oop"],"bugs":{"url":"https://github.com/tweedjs/tweed/issues"},"repository":{"type":"git","url":"git+https://github.com/tweedjs/tweed.git"},"author":{"name":"Emil Persson","email":"emil.n.persson@gmail.com","url":"https://emilpersson.se"},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","babel-loader":"^6.2.10","jest":"^18.1.0","standard":"^10.0.2","tweed-babel-config":"^0.5.0","webpack":"^2.5.1"},"dependencies":{"babel-runtime":"*","snabbdom":"^0.5.4","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"jest":{"transform":{"^.+\\.js$":"<rootDir>/jest.transform.js"}},"gitHead":"f877163c3b6f2ec21b8f162d93bde0ed61d8ab50","_id":"tweed@0.5.1","_shasum":"8a70387b7d99d5e7f52fc47da9bf0069acb8bb7e","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"8a70387b7d99d5e7f52fc47da9bf0069acb8bb7e","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.5.1.tgz","integrity":"sha512-yQaP+1Wcx27GViDUXS8yFsUykslxranf9GoMwnhAKdw/BOnpDFHJ4npYKRaMQUsDQ3VNmyxrKhuqwfZAQI1pQA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxdrHdMy7Cy3vLWxVG7kKAom4GSBMfARWLYG/97hwrSwIgcqKvADcfYHp5Tr0RBj4+0p5K3dCEfNmFNDO0Q56jRro="}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/tweed-0.5.1.tgz_1494707301397_0.48877329798415303"}},"0.5.2":{"name":"tweed","version":"0.5.2","description":"An Object Oriented UI Library","homepage":"https://github.com/tweedjs/tweed","license":"WTFPL","keywords":["ui","vdom","oop"],"bugs":{"url":"https://github.com/tweedjs/tweed/issues"},"repository":{"type":"git","url":"git+https://github.com/tweedjs/tweed.git"},"author":{"name":"Emil Persson","email":"emil.n.persson@gmail.com","url":"https://emilpersson.se"},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","babel-loader":"^6.2.10","jest":"^18.1.0","standard":"^10.0.2","tweed-babel-config":"^0.5.1","webpack":"^2.5.1"},"dependencies":{"babel-runtime":"*","snabbdom":"^0.5.4","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"b5d94d513162951167878ec6a3cae5085de479aa","_id":"tweed@0.5.2","_shasum":"67cac8bfa564fb56b2425951e4f5dbca18b4ed3f","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"67cac8bfa564fb56b2425951e4f5dbca18b4ed3f","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.5.2.tgz","integrity":"sha512-iceKKOPgOxDY8hNN068ofWFVoS8eTiNTXHZV7y6gEbNj3sIl83TQgffmIoRoA3qhshroYSbv+GjWFhFFijfhAw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGfZWQIZkrSZeHzYL+GyAxGtCxOGG3jhPelheG2MPiobAiEA8u/1r+bNYazvxfbaqt+Lt3YjK+sIs7+9amGVugJneh8="}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/tweed-0.5.2.tgz_1494708546106_0.43618190102279186"}},"0.5.3":{"name":"tweed","version":"0.5.3","description":"An Object Oriented UI Library","homepage":"https://github.com/tweedjs/tweed","license":"WTFPL","keywords":["ui","vdom","oop"],"bugs":{"url":"https://github.com/tweedjs/tweed/issues"},"repository":{"type":"git","url":"git+https://github.com/tweedjs/tweed.git"},"author":{"name":"Emil Persson","email":"emil.n.persson@gmail.com","url":"https://emilpersson.se"},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","babel-loader":"^6.2.10","jest":"^18.1.0","standard":"^10.0.2","tweed-babel-config":"^0.5.1","webpack":"^2.5.1"},"dependencies":{"babel-runtime":"*","snabbdom":"^0.5.4","snabbdom-to-html":"^3.0.1"},"standard":{"parser":"babel-eslint","globals":["describe","beforeEach","test","expect"]},"scripts":{"prepublish":"make"},"gitHead":"83d54a9b44e8103d65fc0b50495de61390e60294","_id":"tweed@0.5.3","_shasum":"6bca9bc7b85abafb8197b1214a5eff7ad1415b01","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"emilniklas","email":"emil.n.persson@gmail.com"},"dist":{"shasum":"6bca9bc7b85abafb8197b1214a5eff7ad1415b01","tarball":"https://registry.npmjs.org/tweed/-/tweed-0.5.3.tgz","integrity":"sha512-8t2R9OAqEUVdJQ7gNG6TKT/0pqA07XFTKR4sml0aAfIryK4lszyW6Eab3EvdVw/APnoNzRVYgB/Bb/ZqrWFlyw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDxkvUx6Sfit7YEBMxZEq9sk/vM9eiYXUy5YX6gN4CPAIgPFa3R9fOU0LRyyCmLUFQjTKCT8LF1VS1j/DMdSmP+Bg="}]},"maintainers":[{"name":"emilniklas","email":"emil.n.persson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/tweed-0.5.3.tgz_1494774482545_0.23806000337935984"}}},"readmeFilename":"README.md","description":"An Object Oriented UI Library","homepage":"https://github.com/tweedjs/tweed","keywords":["ui","vdom","oop"],"repository":{"type":"git","url":"git+https://github.com/tweedjs/tweed.git"},"author":{"name":"Emil Persson","email":"emil.n.persson@gmail.com","url":"https://emilpersson.se"},"bugs":{"url":"https://github.com/tweedjs/tweed/issues"},"license":"WTFPL"}