{"_id":"understore","_rev":"213-9c1c72a28eae47c446c04ff9886b09e0","name":"understore","dist-tags":{"latest":"2.1.6","stable":"2.1.6-stable"},"versions":{"0.0.1":{"_args":[[{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"/workspace/forum/understore"]],"_from":"understore@latest","_id":"understore@0.0.1","_inCache":true,"_location":"/understore","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"_npmVersion":"6.4.1","_phantomChildren":{},"_requested":{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"_requiredBy":["#USER"],"_shasum":"2276268a56ece7b307a9d91356b9cf4fdda48f8a","_shrinkwrap":null,"_spec":"understore","_where":"/workspace/forum/understore","author":{"name":"che","email":"sungu.che@gmail.com","url":"http://understore.org"},"bugs":{"url":"https://github.com/understore/understore/issues"},"dependencies":{},"description":"high performance component UI library","devDependencies":{},"directories":{},"homepage":"https://github.com/understore/understore","keywords":["modern","ui","library"],"license":"ISC","main":"index.js","maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"name":"understore","optionalDependencies":{},"repository":{"type":"git","url":"git+ssh://git@github.com/understore/understore.git"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"version":"0.0.1","dist":{"integrity":"sha512-HADNN/PKKRiYZkvkIhh4Nybowpad9jOQX+5cTYnp0REbpMD7GQfPheWRHZtYymIz45ZfG4BGsDfgvUtlZkai1A==","shasum":"0500c73a80ffa4981f1d5678daa03f59b3892ef6","tarball":"https://registry.npmjs.org/understore/-/understore-0.0.1.tgz","fileCount":4,"unpackedSize":34038,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7QvoCRA9TVsSAnZWagAALLUP/ii8BTON4VyaTU2EaZfA\njZq4CRazU/8wQ6cAZIo62ar6pi9i7QDCkpjhofYTEbT/uqIexh1ehusKVLqx\nIi3Y1ukIv98TaBxnMD+oQf7GN9VQq6bCQPbfgkZxyhCh8HNRdZDsC7jkOdcJ\n4QLl8EGHsSDZDdNbVK9Ywa3oG1s2s+1usty2CP5O7HEKxBcHSMkT4lWA0UpR\ngZff2MQAW+Idr2gAKGac7ePDkQo6XZDNSaRZFoFFPwRsapsFCDLX4j7e7i7h\n5crN5wCHQl/qIdn5V8WZ6zTVneN4TuDfnM11aOy0ZXT0TAXXLc/stqi5qI/4\nfSoBrpXyPh5v8snmcqW4Q3T07gdkfkFo1uPD8zYboZOIfJuvEFhERHaKSFsm\nP29szVkovnooRJYUZwgPd8KZ++H3iDnwaGJu2G+VFamugrXTa+pm9vS+Ycww\nztqn1t8WgwIRh+g8kdzQr/FDbCgFe5THQgwINW5V39kS8JTCZxuGk1D1MHu7\naKCSj2+RSGtmRpB1G68idVM+p+6aAoAiZbsATH+SwXXrByPIIQGSmbve9sqr\nj9dckohDy2QCPRquq5BShDsyQTI/FfxmTW7vP5oVYK+e0QGpNEj142z/Qcs+\nxGKrJ5fcY62+FuARvCu8zg59HgpCDROm9X3sRGipwiy02z6YkRORb7PPYWkU\ncir9\r\n=/npH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFrzLLxGFk23fLH7uouebl775a1KpffDkfRMo+iuKiXqAiEAyBSgihIylMcpJEbwdyRlvIX6T+kU6p5FMH1wJY0Z1f4="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.0.1_1542261735693_0.17009966242094765"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.0.2":{"_args":[[{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"/workspace/forum/understore"]],"_from":"understore@latest","_id":"understore@0.0.2","_inCache":true,"_location":"/understore","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"_npmVersion":"6.4.1","_phantomChildren":{},"_requested":{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"_requiredBy":["#USER"],"_shasum":"2276268a56ece7b307a9d91356b9cf4fdda48f8a","_shrinkwrap":null,"_spec":"understore","_where":"/workspace/forum/understore","author":{"name":"che","email":"sungu.che@gmail.com","url":"http://understore.org"},"bugs":{"url":"https://github.com/understore/understore/issues"},"dependencies":{},"description":"high performance component UI library","devDependencies":{},"directories":{},"homepage":"https://github.com/understore/understore","keywords":["modern","ui","library"],"license":"ISC","main":"index.js","maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"name":"understore","optionalDependencies":{},"repository":{"type":"git","url":"git+ssh://git@github.com/understore/understore.git"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"version":"0.0.2","dist":{"integrity":"sha512-ZOirX7vyKwPXTa9hJFsoFTZUndMac5vwQju3Hl4+EJF5b2mIEJKRh7FzpgRH3lETqAfMdE9DGKeR57P5xAXlbg==","shasum":"f7e2315eee07a1d705cf3c5b378c063efa88e7d9","tarball":"https://registry.npmjs.org/understore/-/understore-0.0.2.tgz","fileCount":4,"unpackedSize":36169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7WCqCRA9TVsSAnZWagAALfAQAJ9La+JI+E0OB4O6jB7M\n+Pf8CP7Y5lw6GVOB4z50cc8prbxAJeo83pv+XP4HYJvOK5/kP/sqTpO0ueIk\n3QzskTHsWDGgUgS0Ixj28CWKpwZjO8uWSK3Vt3HhkmVzRLXbVkw2FX2ZGJoc\nudPRizYiAa+YzrHuQ1XqQ11xJ13Q0M7unxU0gQD7o3RXYp0G1KnrqH5sznV4\nhdKA9sYnDpD9MUPVkAp64uTlPLcvEiQ/FrRckDWPXQpp3NWl1u8tYdNoXuev\ngrEgtovcHQDWHXBx5jbONJc5krt76qXRKjBZgToB+at16tqkRKs/Db/CQyBN\nyuotZJeqfJXdGPxxnFJc7PFSojKTe7B9b0/QMfe7wSdt7nchRObFJZkQk1eT\nOi3yJEhsGF4oatFjIqFiMHTKx2w6t7OsZeCRBFN1hWGK9UU4Dd4Q58a5IkMK\nuHvPbXEfMloNFEWqj7e2POF1LbQ+5PKXwxwlLbPbsBB0o300dQOSVMn28pgl\nl2k+fARqUmP78eYdqdWF+cBRrKrf9BgAv95A7KU06F/FfUmc1Q23tGHlRRpV\nDc4nAGTpFYDh/mEKWkQz7uNzCriPJusQGBAuXZnfBWJIhMh/cGzcLNX5shEu\n3dqd+IUvQPjERxBMAr1QkQ2ovPBVwviRDR1HzLs8ib14lQiEP4lgSwr3LhZj\nAiOk\r\n=FqTT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDi1v/4Su6ue6C00EWsktwhFQQOVQgPiie0yjxlU2T1LAIgF5uvwcduGHrdyDpKM6T25RZ+YyhGC7aZcOJyNH6ghIs="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.0.2_1542283434038_0.0689538242038441"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.0.3":{"_args":[[{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"/workspace/forum/understore"]],"_from":"understore@latest","_id":"understore@0.0.3","_inCache":true,"_location":"/understore","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"_npmVersion":"6.4.1","_phantomChildren":{},"_requested":{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"_requiredBy":["#USER"],"_shasum":"2276268a56ece7b307a9d91356b9cf4fdda48f8a","_shrinkwrap":null,"_spec":"understore","_where":"/workspace/forum/understore","author":{"name":"che","email":"sungu.che@gmail.com","url":"http://understore.org"},"bugs":{"url":"https://github.com/understore/understore/issues"},"dependencies":{},"description":"high performance component UI library","devDependencies":{},"directories":{},"homepage":"https://github.com/understore/understore","keywords":["modern","ui","library"],"license":"ISC","main":"index.js","maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"name":"understore","optionalDependencies":{},"repository":{"type":"git","url":"git+ssh://git@github.com/understore/understore.git"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"version":"0.0.3","dist":{"integrity":"sha512-TwpKedpDMl1Y8HEVbtU89sDA0++lgpM8xMNaP3FW0QDH3RLRXHeJ7+uQ5I5VOuyqBf59qDB+tawCt7Uueep7Dg==","shasum":"eb9572d7c5fcf0523541f2e9310652932f0c9299","tarball":"https://registry.npmjs.org/understore/-/understore-0.0.3.tgz","fileCount":4,"unpackedSize":36586,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7XhRCRA9TVsSAnZWagAAQnMQAI0C9Unnn5N9CXYQy0IF\nV+XAF8UxUg6OMnP2bLeLtmEBm5YsD+0/8puoHRi11Ec23MwJPWSTkNYztnHA\nYHWVyvHEVhjDkfc/MLiMk3rDpZs2BuTHk/pg623omPVFoZrRJwzPbc/H5hi5\nVg9yqaBo/nj5Bw/vKHD4qIQ+70TTxc9SGE7uIL5mFNxFG9CV6KCCtOwJV0uf\nzck9miyiygK3KmhEZ4ZYwo7z7xtKPXHn3xX+yiUxjlJUElLFD5nCYTJZnoet\ny5z3/ms7PtpTlBFoOWo0RWt46zgTSY4AWmZGJd49mrocs/cRPLh8T3rQoAIC\nMIiRwI3v4/tOEsh8hFDlIMw/5rp/50pVzoZqADTZYwz9WE0muaUYSZBcImr2\nRuMKUwpN+vRmJPJxtN2RuL96JDOZwr/YGM2ZT530Ol8fj+HTqJyirubdVqBb\nayGuK4N4/XgoP8NwsQ+z7IdRstan4QIemkEMne6H0uBeODAgJL7QxzvXuULm\nFuQI8m2XkV7s9ezTTmgEl6nYIIdHTwtw51gVlcfZe/jgCNmuWNdZYqi3trbh\nIogF8FXW1Yjo57S66ckn+05ogez/pFOO2ty2iWkyXPHNUXMD3vNP/3Cz0Bn0\nE4DhLW5fhXXh6R8uTFKKzog43/y1IL3PaVeirCgg9uHPF+gq/kRWFYEMY2Vo\nsgNr\r\n=gM7/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAhNuA8czAi92lCqJpIVtrU9OfTLt2YUslpsNcM0wNY5AiEAm3vS5YSXJc34sRdv909YpRlr7mwuFCtDMTJI/fYG6w8="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.0.3_1542289489003_0.45019797161418107"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.0.4":{"_args":[[{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"/workspace/forum/understore"]],"_from":"understore@latest","_id":"understore@0.0.4","_inCache":true,"_location":"/understore","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"_npmVersion":"6.4.1","_phantomChildren":{},"_requested":{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"_requiredBy":["#USER"],"_shasum":"2276268a56ece7b307a9d91356b9cf4fdda48f8a","_shrinkwrap":null,"_spec":"understore","_where":"/workspace/forum/understore","author":{"name":"che","email":"sungu.che@gmail.com","url":"http://understore.org"},"bugs":{"url":"https://github.com/understore/understore/issues"},"dependencies":{},"description":"high performance component UI library","devDependencies":{},"directories":{},"homepage":"https://github.com/understore/understore","keywords":["modern","ui","library"],"license":"ISC","main":"index.js","maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"name":"understore","optionalDependencies":{},"repository":{"type":"git","url":"git+ssh://git@github.com/understore/understore.git"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"version":"0.0.4","dist":{"integrity":"sha512-MN3O4wwBKu1Xx/gpvGXbzPno8okGUr48mtoSIiA36jsnGZ9mTIATQneUcx1nCLfu5XSSy7kY5CH/WtLTuO4YMw==","shasum":"3d61d59468c49c9c42d04d7c1c28db3f54fd82cb","tarball":"https://registry.npmjs.org/understore/-/understore-0.0.4.tgz","fileCount":4,"unpackedSize":37412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7Y89CRA9TVsSAnZWagAApcIQAJJ0l/pxaXChr6/UKxv8\neWLGfLr+gxAomBNyZfdxEM+mlgGDtKJyCTfl9cZRyGhBBFKz2ioYm22f3qnl\n8LUOIuqKdatnwgRjK9uHY47Xxw3iCs3dIwVYfjWr3faNp2cBukuMU1t2tWxk\nGMZrNgmrAfAhqQUtwR12IA8oPlNHh19YfPtKMvhyYeDKlnqMruRdMVd00dus\nvHO/+X2uhAP8dPZkqgoj3WsWPr0AX5s3pgUoSlLEFMzNbh5K9aPNc3G7RaGw\n/9JCxUy9imr0oSBSIa2AnJwFZfbXkFIG0DGyoT4XRPbW9hoMmTf3RuitW9oC\nkAl4ffNGTC49d/t4hhEGuxFKnMHLzGJL+6WRoAbX5+7T0Uu+bfRtVRohOl39\n+9dpd95pYWg1d68qrzNx4eNs/hoGGyACDL2KJ83jlPvKau3sbJBYlBTdL+Cb\naspDW/MwXVHpPB2UeT9rpHBf8bwtPgoYzfR/Hh/ekgFU3nPzhaKn1f8qvMQR\naGtDNIYeSRh6oqxFYy5gYO16yTDA0ZRy9i7DbU3gJ98KRfoD8tmPXJFa7I+q\nCO4k3eVUPpK5XldsaRQcdyS+ftTqfVhrvsOti/wBJo++ETrzZWZrSVIVT9mr\nUYMbFiGNlW934sfMi2n6fSy8TbwYA14IXb0FPw02IASf9Se0CYc3JlgUTPtG\n52xa\r\n=qpNS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0ja6h3+oXUZwn14PQtxIGfoj2ebUVavXVjVGZSbDD4AIhALA5Dd4pmWZbCEAMW48EKpDu4gfWZ+8dL71pr2G0+jn6"}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.0.4_1542295357010_0.4747489620900467"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.0.5":{"_args":[[{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"/workspace/forum/understore"]],"_from":"understore@latest","_id":"understore@0.0.5","_inCache":true,"_location":"/understore","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"_npmVersion":"6.4.1","_phantomChildren":{},"_requested":{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"_requiredBy":["#USER"],"_shasum":"2276268a56ece7b307a9d91356b9cf4fdda48f8a","_shrinkwrap":null,"_spec":"understore","_where":"/workspace/forum/understore","author":{"name":"che","email":"sungu.che@gmail.com","url":"http://understore.org"},"bugs":{"url":"https://github.com/understore/understore/issues"},"dependencies":{},"description":"high performance component UI library","devDependencies":{},"directories":{},"homepage":"https://github.com/understore/understore","keywords":["modern","ui","library"],"license":"ISC","main":"index.js","maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"name":"understore","optionalDependencies":{},"repository":{"type":"git","url":"git+ssh://git@github.com/understore/understore.git"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"version":"0.0.5","dist":{"integrity":"sha512-4wWdBu/5R51DV5vTtvrbxt9WCr+T1YJ2bMfda8d9E5lK12IOZ0etARCOSPp99+8W8NXUqxys5UhFdUami1Kb3A==","shasum":"6a4e557be7a94d2cab0b5e698015ee9fd9f9f789","tarball":"https://registry.npmjs.org/understore/-/understore-0.0.5.tgz","fileCount":4,"unpackedSize":38521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7hq2CRA9TVsSAnZWagAA+WMP+wY0Mhj7WT9E4uf2V+z5\nIF+CVw2vhOQXyyPBNIKsJZ3neUIryaWha29jp5vkhvu8YOZMKKm6xdrHv+UZ\nA2dvhWeolubEgAzmG6RpJQj5Vmo42mct41mssaBWgvSStYVLLi3jLVxzZBx5\ntRclaaDJ8qaAnILgnpFoDX1BGX+iJBUINlrP9M2QupAmQAqNq3gI7VAtP66k\nv8WMONGsBtXPCjU7kyzpIeBXKN0IEfdoAmq5w++047D2GK5FGrjdGC6RAbBF\nH4JS5Poy8lJdosoUlIDgbhByUyQByCF0M/af4SWsxMlYMw+6wAIrzq23HiWP\nhoG4pVWWx63EeRXaxk3DhuVhHp9howUVV353tpeeT5JhoRkZXMg3dB/e0bsV\ndMu0CdU2kCcERd+EGB8ExIhEBM67bb5LqYQhl7hD27RN7i1U2Whja4Xiu3UU\n+Hg5mfTAZ/rCOQnIt2elp6NxawhYFGXxyXriZmLiYF2Et2wZmI37ArX3gJVU\nVYPgQmWGcbekm+pfWxKg+5urbGgJKLZet9lsXm2kKJbFyhLqn1pTGGYm+CIP\nTyUxbWpWBsBRiy+umymD0R3obXLxV6oue/nvgJxjtOZoeO3/2YIQyh8TdF7o\nQGPXuJQehleuN/hk2Hbxe7IZCOQQ0UZpttZRTZVM5Czqh6ZcYtqqvK7wo3dy\n6sDv\r\n=fIGh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLtDZ59R5DdAWUSXMd5pl0aCF2fh0imXcY2e99GpK3/AIgQYn19kcxSbNsXQluXql9VU7dg5J9MMYsaXEUwot0Qz8="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.0.5_1542331062101_0.3835778446978668"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.0.6":{"_args":[[{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"/workspace/forum/understore"]],"_from":"understore@latest","_id":"understore@0.0.6","_inCache":true,"_location":"/understore","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"_npmVersion":"6.4.1","_phantomChildren":{},"_requested":{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"_requiredBy":["#USER"],"_shasum":"2276268a56ece7b307a9d91356b9cf4fdda48f8a","_shrinkwrap":null,"_spec":"understore","_where":"/workspace/forum/understore","author":{"name":"che","email":"sungu.che@gmail.com","url":"http://understore.org"},"bugs":{"url":"https://github.com/understore/understore/issues"},"dependencies":{},"description":"high performance component UI library","devDependencies":{},"directories":{},"homepage":"https://github.com/understore/understore","keywords":["modern","ui","library"],"license":"ISC","main":"index.js","maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"name":"understore","optionalDependencies":{},"repository":{"type":"git","url":"git+ssh://git@github.com/understore/understore.git"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"version":"0.0.6","dist":{"integrity":"sha512-iGlOr+Z/ezYp/OIyEdip006CizMp2bzG65/RVdZEfq3YO1aZQ3sAhCFUCg8hwhM5dUYVpw6E7CNjEw2DCU7+Rw==","shasum":"5a7cd428a3c33a9890b09604556d287afedc2e93","tarball":"https://registry.npmjs.org/understore/-/understore-0.0.6.tgz","fileCount":4,"unpackedSize":38462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7h+RCRA9TVsSAnZWagAAAsIQAIVaas/gPoLnldKv9hje\nO/AKP1VbzB8dhVOscaDhEZRXOvPC9LAr1hgLIBMllijYxp9O3F1zkKdM1tNP\nQIyuip8izDYzBcORk8b+c/+sUVp5LQcPDVpbNuqm9/eFnNx5yvsdjbgcvI2N\neCIWTYOVZ4S11UwX2AAoFc+Iw++nnCTMM3KOtECQ5XGNCe65EUkJ/N3LmOti\nnDPIc8EVjI+PV6fli79XGmczGO/2hWogw/j443rr+Pu1uxZAx4riBBaZjpVj\nNxpjU8P58Ov7T7hAgAKdXFqkkkY6wVpxwkUuEVPnH2uILUy4gWX1kbYJFFcy\nCQY8/0lO2Et3zG+yAOCF9Ec0ymAdOFFseLw2oEsnvsm3+u9gHoBASzbxJL0S\nEdcJDm1dUixAlxxlHTjWhxfhb94sFnxCATOtMUpb8M3Q6VUPI3Rf3Nx35w2R\ndhBh1M+D9+9ZWYOb0z/Fd+pV7sG6DDj4N7/ENTwMpvOsBkqB0VfArA4HOzHv\n+tgIm6WpDeLz3b6VMQ2hrFfeP+ipXFTuZ6UZJtRHOcQy7obK01WHnGcP12+D\nUHbxQAojKnJnD2X1lELRoLdHpNjBElQSq+p3sztc555AnSjQL6C7NKLGdTiw\nG5WZTVbA/Md7NAmp16+t6QgvyERT3jKAjXopiP6jiGS/HqJG+YJWaj98UEoj\nSHSD\r\n=B77K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID5nX0ryQ5NcYHMNFmXz4j7A2Pel6mQUQjBguphjtK3wAiAXhNJmGGbt4zf1z2Eb4IPE4cDr3//PzcQI6A4ltyLTCA=="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.0.6_1542332304776_0.02598841594040846"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.0.7":{"_args":[[{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"/workspace/forum/understore"]],"_from":"understore@latest","_id":"understore@0.0.7","_inCache":true,"_location":"/understore","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"_npmVersion":"6.4.1","_phantomChildren":{},"_requested":{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"_requiredBy":["#USER"],"_shasum":"2276268a56ece7b307a9d91356b9cf4fdda48f8a","_shrinkwrap":null,"_spec":"understore","_where":"/workspace/forum/understore","author":{"name":"che","email":"sungu.che@gmail.com","url":"http://understore.org"},"bugs":{"url":"https://github.com/understore/understore/issues"},"dependencies":{},"description":"high performance component UI library","devDependencies":{},"directories":{},"homepage":"https://github.com/understore/understore","keywords":["modern","ui","library"],"license":"ISC","main":"index.js","maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"name":"understore","optionalDependencies":{},"repository":{"type":"git","url":"git+ssh://git@github.com/understore/understore.git"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"version":"0.0.7","dist":{"integrity":"sha512-sPGYYg4Z6H88LoEtuQQz63NbOoUhEImPeCqj/LXm4d4tiVD3dXdS2rwnMfftGI1Wo5TamJkEjGAvvxbFd6EwnQ==","shasum":"4d0d08bfebbd04f2b6ed04d14978686f477ceeab","tarball":"https://registry.npmjs.org/understore/-/understore-0.0.7.tgz","fileCount":4,"unpackedSize":38412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7iZmCRA9TVsSAnZWagAAB88P+gMrnr8SpvOQe2JCdy8q\nZxhgVZ+v4/ketOW9DWRpNAJRCxCZTSOYBi60RYprOHPgmDes9sjqoo/vCtW2\nqND31Ah7YsHpSiqRNOyppDOH8DQfXxDuLTzeFPZxVunu3OX437yHQsfneZgJ\nx+jK0WmPhJKJlwocXceuTN5IDXhmXF4MIT8Amm/SLNrHQVnuP2rdBLmsp+oZ\nFbmj7+J5/4rFdSx54l8d1xFeV8W+jGuEcwTS9Cd8Wu0htO6WVy6Q+6ZBNtAF\n7zpeMzg4bhQiezUu5uyxap+e57CwDM9Rngoa7+yyiSyZeY2Flt5nytQW62rt\n8/3z7L2VGdXevBESMf74UO2PzZzTpx6teC9ferCzX/YuQoayeiq05CaUKU9N\nn+Qe97nOZoSqpywqrJJkJ1TDYYLyCcoWN+a68EPQg8Ho0mJUQ01TXVYO6yHL\nGFeXaAs5CT1b1Q2UKBaFJjFHDZwmQBnK0SZKzq5QPqCmimxv37YQU/UpwZq/\n+cUFl22vbEHPLs1NZH+MJRxduCAVGjUUGSfXWjpztP81msPozJU86FAjJXq9\nr3G0+HxTpCFGQgB979V+XogYkqSYkKSK+GEB3u5lIaUBIKk5ojmbzchg6k62\nYmZmYZ67HpFTJpiOwqj62Tg1nxndPo9emG5WV7ht+HUNE0BIdKH18HOwL61p\ncVH7\r\n=JhO2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuU63/Ljvpnds2igCT4yVsiuVj2VQrZjpPi71qvecX3AIhAL7QWlXP5aoVqxgnW2ZkI9JcLLqTbJ+JgjQ40qEBEjtm"}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.0.7_1542334053698_0.5550124391991795"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.0.8":{"_args":[[{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"/workspace/forum/understore"]],"_from":"understore@latest","_id":"understore@0.0.8","_inCache":true,"_location":"/understore","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"_npmVersion":"6.4.1","_phantomChildren":{},"_requested":{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"_requiredBy":["#USER"],"_shasum":"2276268a56ece7b307a9d91356b9cf4fdda48f8a","_shrinkwrap":null,"_spec":"understore","_where":"/workspace/forum/understore","author":{"name":"che","email":"sungu.che@gmail.com","url":"http://understore.org"},"bugs":{"url":"https://github.com/understore/understore/issues"},"dependencies":{},"description":"high performance component UI library","devDependencies":{},"directories":{},"homepage":"https://github.com/understore/understore","keywords":["modern","ui","library"],"license":"ISC","main":"index.js","maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"name":"understore","optionalDependencies":{},"repository":{"type":"git","url":"git+ssh://git@github.com/understore/understore.git"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"version":"0.0.8","dist":{"integrity":"sha512-K4CwKtRNQ4cGu1KQfiTscMatNhQOfdplbml5fZTErdWdomqpUai/jKJ/vAoMTJZB5hnz1Can/QdXOz1LxOZkgw==","shasum":"112042ff9da2ab6db4473b53f3bc9eca0455a8e9","tarball":"https://registry.npmjs.org/understore/-/understore-0.0.8.tgz","fileCount":4,"unpackedSize":38252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7i3FCRA9TVsSAnZWagAAF+MP/19N5975UG1ZnU+HzxLR\nlOSWFI7v1RFkftgpS9qTBUDJe+/QrCWdUsPOcfH7azDF3vzLEZqrbE5q0lYq\nD4lBzsFc8K4FIyCxYFVEAhtmvBFhaAAmeS8/zBCivTrdHY/NHAR0AWisFvR6\nKqD6cJ+DQ5z5t47ZkntuCQg/4yXosQbJAzvNKUink5V9jEdpHWvysIbUTEBI\nxs9Mq04f/6iy0OWjOq79RT4E+3oBGSYFN/8b/GjmhH1824NR2VbbNSJrLEvE\naFFEGcEsp2+kWUuWwfGHTZrfB5uFT7z0qx/c20AXla4L1xG6qzcRG5x4OBzi\nttWumc0PLFd0j3mBwUZrgK/Mq79uPAtM1fpU9jM4wDb5RFbdGb6moagIhMN0\ndNgheK3mjsYyYskRjCEzh4C/ICZWGBtARhsQ0y6h15r/onx9BxIFUuKHAGc5\nKWXpOfyUFfAU7qEdCS5qBap8D9SFCLwHFTZhhCiUOfFuHcBkUd+6SEKOAt2K\n8QIjl5O2+nxiSUZArBSG3HQ6RQUbhZ5ij4cKwsMzmr0EBneeelBm+zEG7s7V\ntq2cRf/pZNFLaNjs9UJg0pSFB2vuXh600iekAQxs+X/rMfV77U/AsZYmcWr3\nY3lZOABHmYijGBN8z9oLUa4XG+JtdzYHuimtxIn7P67RMLArY3fLOs7ZiWvu\nT/gv\r\n=b/jY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICV30nH1f9/SPWl9ZXltjstQvufTEsDzBx/Bw6tyID7qAiA810HC6KY5zvsqznPxm7LpOZexpd0jooUgC42Pgb5OSA=="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.0.8_1542335941222_0.5476795432780948"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.0.9":{"_args":[[{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"/workspace/forum/understore"]],"_from":"understore@latest","_id":"understore@0.0.9","_inCache":true,"_location":"/understore","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"_npmVersion":"6.4.1","_phantomChildren":{},"_requested":{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"_requiredBy":["#USER"],"_shasum":"2276268a56ece7b307a9d91356b9cf4fdda48f8a","_shrinkwrap":null,"_spec":"understore","_where":"/workspace/forum/understore","author":{"name":"che","email":"sungu.che@gmail.com","url":"http://understore.org"},"bugs":{"url":"https://github.com/understore/understore/issues"},"dependencies":{},"description":"high performance component UI library","devDependencies":{},"directories":{},"homepage":"https://github.com/understore/understore","keywords":["modern","ui","library"],"license":"ISC","main":"index.js","maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"name":"understore","optionalDependencies":{},"repository":{"type":"git","url":"git+ssh://git@github.com/understore/understore.git"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"version":"0.0.9","dist":{"integrity":"sha512-IKzXXMWDYR4qrtxrJ6WUck+rhgxc1PppkAIzIpmbodps8yLWVv7RS5xyjJaTKaF8s/J8nS3XkqVV4xlTogzBjw==","shasum":"6c802adfc2d9596839b9171272c44160c8b3a36e","tarball":"https://registry.npmjs.org/understore/-/understore-0.0.9.tgz","fileCount":4,"unpackedSize":38625,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7rWbCRA9TVsSAnZWagAAVIgP/3ciFoqWPR0UpmlOz74I\n6VE94ZWPTJ+XyFxPM3v4+8Vjp/sjEfz5GGgOHbfBquR73PxwE0Q1504bQvc4\ne68+aL4Bbq4JTh1tsHh6tBf1juhyTAXNP7CxSizW69ihlR/DjmFuCK7FBYdG\ngcgjU8OQN9ur9D8pkxdIIoXgkdHenQ8xeGbwHtX5MEfGSSjTnw9FfiaWX9Q1\nioCdLa3fkA3AMbQoknV3WPwKR1HC7te4ezSb3AyhcD0DbJYM0fTUiS9/CgL4\nBi1HARVTeq0TAT5fDpvXltw7hyVw4wM6PcGtKM1YmI/CUws7ED0J06Av9mf1\nyJIapHVRkL0Dw9cj1GX8Q+UaLrh76umZBJzhD+KOUYpCgKBKvhSnMQ6cRmD7\nQahmCI82WJ5iSx1jHEFurA/2Urb/38pu+6w7k/TMbWlKvSCublpu05675Wga\n8ugfhENNmbM3Cs0MJkc0D7OyoSnrSPXEVdtSZKlBRaQ4f82+32x2KjxspIeY\np4IRCwZkWhMjqMKA84GQPgduZoJG7loHuc+a6lUIxRbkbP+NXSQdx711NvY0\nA1fDCElyDQl8KEdjf2Sqsok+HT4mt+IHm6zsOuF6mGJfU3dmG5zhtVaIllyk\n9NAlXjOffyYxKgWnro9FZnL9VwHeAn94NDWkmK8wXHYP+exJS0S0c1hK5Vw+\nFhQ6\r\n=OOnC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD40aJ3PedjDZFC5Q4pUdEudEuJrrw/pzfM3XZl4bBQHwIhANDpse1hZXuHEaVUnfRxpF3YKc1fKJnQktvoRx+lhqSL"}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.0.9_1542370714372_0.14237583253814456"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.1.0":{"_args":[[{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"/workspace/forum/understore"]],"_from":"understore@latest","_id":"understore@0.1.0","_inCache":true,"_location":"/understore","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"_npmVersion":"6.4.1","_phantomChildren":{},"_requested":{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"_requiredBy":["#USER"],"_shasum":"2276268a56ece7b307a9d91356b9cf4fdda48f8a","_shrinkwrap":null,"_spec":"understore","_where":"/workspace/forum/understore","author":{"name":"che","email":"sungu.che@gmail.com","url":"http://understore.org"},"bugs":{"url":"https://github.com/understore/understore/issues"},"dependencies":{},"description":"high performance component UI library","devDependencies":{},"directories":{},"homepage":"https://github.com/understore/understore","keywords":["modern","ui","library"],"license":"ISC","main":"index.js","maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"name":"understore","optionalDependencies":{},"repository":{"type":"git","url":"git+ssh://git@github.com/understore/understore.git"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"version":"0.1.0","dist":{"integrity":"sha512-s3JgcZqzR+Gz+JRysTxJrtWE1yJ8nHxwsUPeLC+YpqCh7fnxzHEzxKcE/liw/33kc01gZyr6oP5T9zzMN6RYRA==","shasum":"b4d868e82f50c5eb0d29b432c96a7dbd9c41d1f7","tarball":"https://registry.npmjs.org/understore/-/understore-0.1.0.tgz","fileCount":4,"unpackedSize":38657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb77vHCRA9TVsSAnZWagAAzP8P/1imqWycgA8EXnJMD8Sk\nDLBInLqe4+ofJ6OPYplrQCW/ac6711Eg7pLgcN3vElW8RIxcAJzECyExkKCS\nMXiF8j8TS9/M1kLbA6EhLmzxKcE4jz5Esdx2DRacqIoAYRjLCVOoQMB3K7BH\njhazECcK+/X5nKtnen+e5e0uttLWmmwP4uZXXy46EBDtQyzoYbRUxxtk2X/Q\nHECpXtzQmIlMUwKbm3UmfRmR+1oFjp7ALsc45eefiT8obyHt7xhB+bV6qu5j\nQbM9WmmctFdASzaDe4VyY7BmFv6O3De89DOl8sulzM8HzoKSrSALfic5tsGj\nqIlj7yqvRSAjI/kuGZPqhCPiD/dJnJ8+scrNWXZ6KmR9v4YFSKItp9FSn0dk\n2PNPLl0VhWdX+Xd6JiY1xh0gXXm8IQiearUzwS2a/5aoSLv+DeJs/7Udp1k9\n2/ERy4afRwVpDJ+CAkarEdCnIjeGTlcV74M1M0B33kqsZM1vYcy1MqPHPz+x\ni9TxeUhYxlkmKbreZ0vwxCmOEOzDMa2t8dyTM7rl5yomEdJGBP4Pc93ZeFko\nMguGox8BjS/Q/grrVm0i53jotw2Zw3t3IbfNiPppbCY5Ltjotz6RnVivisZY\nYf59q273CUFGAdCjHDjBCDJv2uZoCtd/IGsC9D9BSRyyRYaVSXfK1SJ5Vheq\n1vGY\r\n=0OZN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA2/j7KrWqtCvWtO82ddUJC70RfF1zl+xcvGYcGz6OkrAiBH9+P+wIOqQjXKbVhbq5i3+k8zb6xejag9ZHimUS+cQQ=="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.1.0_1542437831105_0.25141377350988825"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.1.1":{"_args":[[{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"/workspace/forum/understore"]],"_from":"understore@latest","_id":"understore@0.1.1","_inCache":true,"_location":"/understore","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"_npmVersion":"6.4.1","_phantomChildren":{},"_requested":{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"_requiredBy":["#USER"],"_shasum":"2276268a56ece7b307a9d91356b9cf4fdda48f8a","_shrinkwrap":null,"_spec":"understore","_where":"/workspace/forum/understore","author":{"name":"che","email":"sungu.che@gmail.com","url":"http://understore.org"},"bugs":{"url":"https://github.com/understore/understore/issues"},"dependencies":{},"description":"high performance component UI library","devDependencies":{},"directories":{},"homepage":"https://github.com/understore/understore","keywords":["modern","ui","library"],"license":"ISC","main":"index.js","maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"name":"understore","optionalDependencies":{},"repository":{"type":"git","url":"git+ssh://git@github.com/understore/understore.git"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"version":"0.1.1","dist":{"integrity":"sha512-hBAWSa6c221xxOZxJNj1Q1cpZh+4LAa/V1z7dUkUVCF995KgJZ3cSF6LuXSAKfNmR8kH+fNfocYSgfyXzDnByQ==","shasum":"59a1325e9546e3e669598703cbdaf9059c7f910e","tarball":"https://registry.npmjs.org/understore/-/understore-0.1.1.tgz","fileCount":4,"unpackedSize":38950,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8HB0CRA9TVsSAnZWagAAdqAP/j4PAEVb6wXYpKKjqWDH\ngocBWyH5CZgQuImyrzJHZKNyorI54sSEO3G/gP12rMCf2D3thg3uXoXZwSTd\nOqvo09Px9z56wCFZg4OZSdyXmv5XuAcvsRjxnh26aFO21t/zXl1SY4F/M2E2\nmzJemrpLstI3nysS36+DpgrKwHi0g9tc8gI21PK34SqvBFePWii/XNBWgVVB\n5sH3fhBRBIxsfUljz3nWWwny5IiU5ay6b3jmaH4sMlIeeoLyZG1PPB8yxthD\nFdIYr0fmjcedmmBSgKZtDGQ+dXfBaEHIxGKC67EOJn5RJTPnOmg0tR6eZx1A\nRqaP5c9T13r5vPyxK2r7VfWRxONL4E41qDsSrXCWEoQP0CKcXlrSiEGyv0yg\ncudw3/dzCvDnx0JhzA9tSdp6boHjgpSnLG9Z9+bb6T+wvxMPNLePqePD6RPJ\nMZ606aT3vASbOA44OZKkxu4hWKqTenStQQ5kRGNMLQk8Cc/mOvsTjNEOajiL\nz9iIr6k9F5O6VudH1ySELtjoxpw9CFyT44kf6/OOsY/p3tj3xQ4zyeTsQrNU\nnVUG8kxlH/no50UcJS5+xcRoWZLFAioXVCH6vp8+cSVT0xS84twFW2gRsYDo\ndGvxLxjjPfWv2udHgSDdSKy1HFsh6uB+k7n+VVbvsflKjS8bvkKCaXaQ/QsS\n18MS\r\n=Px+G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCE+G/m+NubPxgz0NFQwhZhHhY+TUI32iwBFvoI2c2GSAIhAPwcsMkOZrBPB0WwdT8dcqZTjMk+USiZdZEQA67gJ3+A"}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.1.1_1542484083598_0.13884511626369878"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.1.2":{"_args":[[{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"/workspace/forum/understore"]],"_from":"understore@latest","_id":"understore@0.1.2","_inCache":true,"_location":"/understore","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"_npmVersion":"6.4.1","_phantomChildren":{},"_requested":{"raw":"understore","scope":null,"escapedName":"understore","name":"understore","rawSpec":"","spec":"latest","type":"tag"},"_requiredBy":["#USER"],"_shasum":"2276268a56ece7b307a9d91356b9cf4fdda48f8a","_shrinkwrap":null,"_spec":"understore","_where":"/workspace/forum/understore","author":{"name":"che","email":"sungu.che@gmail.com","url":"http://understore.org"},"bugs":{"url":"https://github.com/understore/understore/issues"},"dependencies":{},"description":"high performance component UI library","devDependencies":{},"directories":{},"homepage":"https://github.com/understore/understore","keywords":["modern","ui","library"],"license":"ISC","main":"index.js","maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"name":"understore","optionalDependencies":{},"repository":{"type":"git","url":"git+ssh://git@github.com/understore/understore.git"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"version":"0.1.2","dist":{"integrity":"sha512-KMjjjkiu9GNapWbPGEM+ihwFredqGW8ahCEE5ret5g1EftOeqEo4yqf6bh36tYUyIAfw1Y5x8cKRC7bz/py87g==","shasum":"4533a81af4c94859f48b6d57f6d223361cbed758","tarball":"https://registry.npmjs.org/understore/-/understore-0.1.2.tgz","fileCount":4,"unpackedSize":38964,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8QQTCRA9TVsSAnZWagAAnsoP/RSGk1zOtt6hkCigqZVA\nad/ezfHr2C0Pn0vNRs1V6/qLCOGHPqhyg9sJklek5wAMyabrvtLuv+fCvdCl\nXBIqEwmCQE5xAwxtjWhnhT8/7ivxSfuz3C2BglFW8V/zxL1k89e4hvX4fkwo\nfPuf3fDaySqTTJlteXGplPbzbQEZFHj3TLX44hhgn5qNaRih34KuTkl/k3tl\nvuutitoYK/w4LFiNB7nx/W2poEPN2XT68cw+Tg7YH5tx21wbtL17Ky14mprL\n85VBYCsy2CznXvI/JzrBVqcAuj2NzqpERaHnA6XqqWuBCFG/OkDHJGb8exyK\nwncgO95OTYzc+l6Ly3QF0qsWtpusWKLvomHPQ554neQTss9vNMUsn88ST9YG\nokEZ+isuVeRVHnMCF8y2Pd+1RUbgwCrnDY0iRH9xdoAk0BQiqLkLERZDqQUE\n71XDvP9pTVC0CcsoUMmbyvFNyICF1qyys01/KLpNHBNWJU67sgH8mOJ8ChxJ\nV+CmuAWabCKB6sPq93i623wE9W73QYvZFH71q7EJt9BWD+NnGEJYbfNibd0U\nz+p2ds2rrOGYpayRMId5RaL1ZQv8HWxA6FG9OzjeKqBhm34xi7QJPG5mOsQJ\ncrSlNC02qWngWMBHS/xzJk6ApgjAZnucgetMc6eVtsg5kSSA1Jo/w7sDeWwk\np44C\r\n=Kf3Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDrl1MlZkOBhM8SidM2LNtEvkfwaptJYHMr8q2SzMHP/AiEA7jmtvjGR2frfEuikef6LoKOkgIQEJwg6crlsRq9LKzI="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.1.2_1542521874866_0.46814320277543264"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.1.3":{"name":"understore","version":"0.1.3","description":"","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://github.com/understore/understore.github.io#readme","_id":"understore@0.1.3","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-OGwIUTU2HM1gNJLqJsCJJD5UW9nQA3AGN2DkFyRYy/IxRDe3yI0eIeQHfdDWPKz47iN0WCq7la7CC3gpODQmGA==","shasum":"dca0cf23c7cd58f456f1ace166ce7936aa752cff","tarball":"https://registry.npmjs.org/understore/-/understore-0.1.3.tgz","fileCount":4,"unpackedSize":37706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8XZyCRA9TVsSAnZWagAAFfIP/0Ew82SAgFeJTudFThft\nwFhALPRjz2MvRNCa5MhoT+2FEPH/lnQcRbUwwD61nf9alKTOgZ/FTSgeLIti\n7ILH7Y9n6BbOy+VfqTWYYPLDD0eS9Rgj7eXf/5Q7bfXCTmU1BFO9n3JBpu7/\nRi/NopniCq/exC4WDOFrRVu45hCfTI3Fo0rbllzGeqsh8KyKscO9D57in+wt\nu2qWNOKs6bmwsVA37wABlnskKAUqkCp1dlDt9/KT5ZY7JQArW7diChxjnWL/\nBbG2bZqDb5AqLJuMBocgF+1tinZoUOw3mJDywKSjnKGRkwIdUrVarRZndZJh\nPUIr+Srs+rSgSsbRa63vUd3wE31Y4sIDFqx+LxPfBra9wQpER/GuTDhZiff9\n09RcCoqPxkXEOhcCi4q6c95l1rG2Jh2NXVwubAGm09UgBbp1pdbX5yIShmO6\nIth+XpfEBCCVF3ehpradAD7zoAqPkGbZBn/xephvWV/N4Tu2qq/jLpuqBfti\ngxDiSVt+qynmrNhx9do63OreEK8pcIm5vcuPlHfDMfJ7DmmQYBgs0RoZH6D3\nBWBQK53SpGYlH/Dq5m60Sq1F7rTDc0IQjlaS19+qb3wjaTV5ICubYMQibi++\nGKP9etKPJam3VGnHUSIoOHjDZHHGMTbYXAUp0eu3yZ9xLatw/Qn5qO7vJHL3\npQ+K\r\n=Dcnz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfhWBMKMnvlzbMD2vLYBQB45dVi7JcCtFyyVe1ReFBrgIgF8P43A0A40NBqODjyFvDgZKoJRNh3Qg12IBBbt0yQoM="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.1.3_1542551153997_0.4707935185944969"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.1.4":{"name":"understore","version":"0.1.4","description":"","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.1.4","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-8MqPJzJgVzNzSaS9LVwFPP0UECZrrwIl6c8dU43HGciQsPxXKFnlJ49tWV81q77qc6dyyYxCIrcx2gW0PT8FCg==","shasum":"c02a73b8a1a3502df689afa050039c7680621578","tarball":"https://registry.npmjs.org/understore/-/understore-0.1.4.tgz","fileCount":4,"unpackedSize":37677,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8Xe2CRA9TVsSAnZWagAAzw0P/1Kvi11nDAZjLId9TmEy\nHqcaHmk//l5lnj1ehApA0DsHPvkm4f6yBkJJuEktKcdZ/o34Xc0ZACl5sBBr\nZXd1C7e/8Hl0pqTq4Q8d8pleETVbMHn1ZZkUiVx5Vk9fYCgWE0Y4W+aE+SRh\nyhO1MbpZvOnRdqZR2UmNIYzLuG1Aa2jlNfWeoSBHsC4K0y6E/nsGWac/vZV1\nGpjft25FroOqIebqkTfzVSfMTdyLgeYuPp2wlaN998bFfblHXdIbUMjWIzK/\nJFuYs2ZG9drYMIEOinILCs3Oi0mG+ao/Qx0pgaUK2O9FmurZpOrgLk18Z4Nj\n9oeHBrLkVP3dqq3LQopVIpmNuH09MWGcWH9vM53GzBynlypMAqnU0GlRjEq1\n12NFfRotCs3nMjwO7y84ZjabSiT4pcuQUu1fjdHyeyJi+pn6fdQ5iLNigpWv\nT5NNEqURNnPVWkg5YeCovKFCJIlp/X6S/z7b3etz8DueAaWBI/OY8QOOhQov\nCRpFIY42XMsfW84lOkKuTv7WDdsBTKFIqTAGnxzO5gbbpy3sYFvZ0SE6TPwE\nl36HW4sXOqTEAU3SeL3ctXyre9oJinJ6iBcb6h8ncmtjEIL35huuT1aCYHZU\neVuIgrTIuFI8mFusYRY74pMNsa+zB8SB8qtK7orzfw0Ziz+p6SabZKQXlrOd\nMHAq\r\n=f3BI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFmqmLaJ3AG6NLq6WjA+amA1jsucOY7cjqFJ1hhP/c7YAiAZ6Oe3rRnl2sbL7LHkd+eZeJ09mjwgoczbMe745JIUTA=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.1.4_1542551478225_0.5372445187176058"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.1.5":{"name":"understore","version":"0.1.5","description":"","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://github.com/understore/understore.github.io#readme","_id":"understore@0.1.5","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-v2VStVruJiQNpWUoduyqms94tPJpgz8giIviGXu5mlorMM4ep0idfOKH4b6AYiuzgeuJljAG5vIuBkXBTCEONw==","shasum":"bf2cfbed2adbfd8d9fb2e842ac1e27903d8c7dae","tarball":"https://registry.npmjs.org/understore/-/understore-0.1.5.tgz","fileCount":4,"unpackedSize":37246,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8hZZCRA9TVsSAnZWagAARAUP/2HKDwgw3IcVEfNZytj7\nYYe0wcpIlTIzyV9BWauO0pBjjT23Mdq2zQ/SAERqI1X35bHnNm34P9avWPhK\nFcz0tC6mrhUAWE1+1VTBzbpQNI94PBxFhWrpwvOZgDIDQEGY2SKCVV7CvWgI\nRgRSMufey3zTtcvo6j1Ppvr/5q//6OcQJVtx0uSDxg4lmIYR+Si61xX+iI50\ndNrMSBqAuN71Gi5mHQoz++8QAqhh4tNxFo7fLkyemQNo1IM5MKcy5sqcExTV\nnjAomDwME5H7dqtom75f6lrsW9RNK0ky1K4Qi45egjHFkJ9WWGMejWxwmsxY\nKOFJl7P7SvlmfFiKr7iD7UFjAA45YrACURdP3geQBylcyo+zHSd0WhAg+ubI\nDEi8X84B8JPg5PQED/w0VAJ/CfiheJkNPxOm2HQRbyIw6LEoxs6WLcqA6gmv\nPEVum5chryxr3/ikAVuu5u/upDKbztqZnIPFCHWEbP2w2XWog1IUYZFioZPI\nfqxUmlyNrbo7LsewAcz8M60wOKaPcik7vxxwYe0HQVjNjAI8paY2y50ieaic\nixfQSjORICl6KjcYlmRU9CPf9Pzw75TNBuCL2STP75CbC3sjS3+HxEk+mJYP\nqq7wz4czlxODi3EmoBkH/TjFKLfgnbqCKBwZ22FuqfeBY8+RQIRI/0ZOXjGH\n7Kpf\r\n=TocZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcdlbuwYUcXKgUPQqPX5utymkTKoMPye7VSuL444FOZgIgIw+ZVd7QEsFdKWFZQ3CY7yFiijBFzDTvAZsRg/KJxcI="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.1.5_1542592088455_0.3943694767110131"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.1.6":{"name":"understore","version":"0.1.6","description":"","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.1.6","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-vUOqTpBN3fOk3ixKWOqbkNMUKDS5fth4XSH2+nIWOHK5d2aX2ur+ekgoHM3KE6E8Fbv0woHV1CgM8Y0kF4CU5Q==","shasum":"c821c6961444f1858e8ab4615b1c774a9e8964a4","tarball":"https://registry.npmjs.org/understore/-/understore-0.1.6.tgz","fileCount":4,"unpackedSize":37459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8h8sCRA9TVsSAnZWagAAYaAQAJgWqjxeD4BLJyiW9SSt\n0kMBLWT8409IFIuNoUq4H7Y8uSRC+QXx55lQ/VUvXM7D6m6KRcvjkWnL2I/i\nqVD1jI9d/yvOiyV8XtzWI+QxDkGS2UlZgOrLxS4koSk6RxFUVFWeIllkhPKl\nibTilv1Ou1Af8pGNWJEf1cAvdy5pzYmzhnnzn6q3CFrwyK+zKS6mpKwDbJQq\nM6x/Z7vBS1cNB3NPI8pnFeNW5giYj1oKePg+1eiO1ZOcXPS+akHQyXk7kPyV\n7kUW3vfwKHWgrF3Sd6vwzc+VrhtwrkAK/awXxYlq7eW9dtiusyWkn9csoLMV\nZdypOBYDlykZRmuOgRYfoxgrpDtCz9nTGoVozm4USRI9i5ggpLTYdMXb1kzQ\nShg7nXW0RPOXuCYNUIdOFEfZ9zS7zS6HjRajmDJ7+r6je53EVxSKJH5gET9G\nhxe+otGpFWqEJvwcauYGsclbv3thhFhFWuXbYhtOLR/qq4zJ5ErtCBWZ0voS\nk5uWr6now0AiSzxZwR2PWEeIGJbJ0sH93QUUpDSNqIonoztvJRyll0S9uHDl\nr6lsChJmCcmb66Nz+9C0fidr+AadGrLpJv3uBxvnNY1ykmq3Tf99/BLM9IIE\noki165SeuPqe9Ivnr1yipG2IERZ6RBjRaksAXjANoh9RODBWrc5b5yZzkZmj\nQNVy\r\n=evUx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBq+dvitJcdga0yGr/taiSfylnw6OfuhOBOmJQ/IItVOAiBnuHOXmjAzDgdEV8fIB/iM/ejNT3S5Sw/9kzlsRZWLrg=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.1.6_1542594348113_0.04472040984925729"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.1.7":{"name":"understore","version":"0.1.7","description":"","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.1.7","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-S3fDPeXYaGS3CBV7jsBY5hF014iPvRpc+V8u+zz+nUHOP+5d/i38jNdjSa+L6fVVkrwu4qFLQrvdykUmMLF03w==","shasum":"a5dbfe7fa85550891e3833efbfd316c58f775a44","tarball":"https://registry.npmjs.org/understore/-/understore-0.1.7.tgz","fileCount":4,"unpackedSize":37346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8iLICRA9TVsSAnZWagAAQpUP/3dW1aWMfv5S7+DLC8jq\nYZtU43PSAYoqF8lDc24rBMyBmEMvu1csW0ztc/Pr1jbD/dBAaNAFOp+GCYpE\ncWxbV+jZ6NXo+GyslFqnV9koH1ljDeCfmZRzg17RVVKCFoNiWaXUxRAllZNR\nVZeu+tdjwldXF8rRdOyPgsQyJEKAvfbdInI3EJUuD32rzgFIAX+BfcaUiCgZ\nDhkCEqFqksQTZOwUy67hBcFXU/v+QjL8xv7m0uEo77pWgjcLmqmZ7h2qr306\nbAhCbmZjxlQ1FDoJoyby+ZeQHlX5Cfo1NzzLFtQKLQnxc8/rWMGPrn3vtvez\niKTgQ/9jHrfRgqOVicHmTXMBCZJw6hVr2iCABtz2bUFBgZroqwSmdaEbEUNu\nyTNXk4T6Y6/8CkXDuHN0kEWT4WTnkIMAHkHd8sN8bSZTULZnUgdbiZ/eKSkv\nWdbiQI7Gy8kOwJ2ap7aXSxxlYzWZZ/KC5Rkn7ltFyEywF2rHt6kXLfCTmh0N\nnnjyR1cG2V1oD56H5r7EozVGraw680onAL6nDCvIWzNK1EE/YvvwcakQN9tM\nG8xESCLrjBQWZz/ZAi1ENMm7vBxeZ5lzcnGBf0g0S/KiWa3ui8im9FFZ0IoF\nBlY1NdUv4EzhDbc6lkxFi9kz+lM+23FJgcGz5dQ6n83Z7FndZjjS2i+/HRtZ\no11A\r\n=DwiR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICj++aYJsYgCXdfLX23BOfMCfYl7yVwYrubLfiSjDVPvAiEAmegjXnB38a2rs1FdEED0b+HfBKFFHkwFVNiYXbrmBRg="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.1.7_1542595271575_0.2034877165623279"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.1.8":{"name":"understore","version":"0.1.8","description":"5가지 함수로 웹 컴포넌트 개발을 시작하세요. IE9 레거시 브라우저를 지원하며, 백그라운드 스토어 에코시스템을 기반으로 창과 창간의 컴포넌트의 상태관리의 최신화를 가능하게 하며 현존하는 웹 컴포넌트 라이브러리중 Understore가 유일합니다.","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.1.8","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-2nL4VUcCnWW+MyxlqUieX/lETADx1k4xeFjjgwt5vJbqDZLs7lWI2ymnDucaYB3rIATE74ss258XEG5hLFNflg==","shasum":"2e97948b9bb516264a2649d14acdec5f57ecd620","tarball":"https://registry.npmjs.org/understore/-/understore-0.1.8.tgz","fileCount":5,"unpackedSize":41563,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8s42CRA9TVsSAnZWagAAPF4P/3fsVteYEFyLgazW1Z5H\nESeI+AOPQyPy21mDvc/SwyAA8dU+xAJfxvD87V5H7fkA+osQ2PCfxnAVpBDy\nJ+sq+jsPTEI20Zi5zQysz0ats+7DbmqHSoUNDci0cQciZFsHGFlAfbJ1gmgX\nsHlK5YlVd4+Pw91if0VOuY2SxrmgQFxFF77P/tSd7SOOqIa/9+40QqQCM2Ax\ntyk7akf7TCXgcEaZgxCAMoEJQQaprQFI9LxUbPUNus0B7xYn3SqKEm4VeWdo\nQtatmrCfKmvNOMpzN8OhcdbOqBB5n5yZZK4WwDRLEFu/UbiH6jgEDIlh7tpU\n3UU8wHFyJLaBK2916/4rKFfClPlF1ZYWlQHcMjiN7jtpYWZ2kqcCQcNYAr8Q\nV+4oyare9NoqFpPWPLYwC9qHLG3xDAT3K8r/lABfIeSd/GgTI5DSsOVsFdJS\nVkX94Do6TL4PimZQZJfh/82dIPt/XmA6UAlt4bMmlpRxu7a6BYecezew/Htn\nDSHD0vmssccOeqe8Yn+ENfLS7ca4eLi20xwneX08h5RKXVWTXHeiCmkT1qv/\nbE48CmfX7ES8d7oPoSiQe7R+4KiS0kjOt/1MKR4HqJF6abiyMp5q/AKh3lxl\nOhfxQGDpy1qgkvj44SXPzUS3OGZF5tnuyhVn3Dn4fIfg6D45wmvgskUb0HCy\n8/qB\r\n=i/Xl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDr9aI7PxeaB2nQZl2bNpNmL/QUjZinbeJG1H3AIYTWGQIgajzfnFVQjAFdtXlTh+aO8PTl0iXfOxLSYE2bPeXup8I="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.1.8_1542639157888_0.5658571515489517"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.1.9":{"name":"understore","version":"0.1.9","description":"5가지 함수로 웹 컴포넌트 개발을 시작하세요. IE9 레거시 브라우저를 지원하며, 백그라운드 스토어 에코시스템을 기반으로 창과 창간의 컴포넌트의 상태관리의 최신화를 가능하게 하며 현존하는 웹 컴포넌트 라이브러리중 Understore가 유일합니다.","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.1.9","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-NRNu5333yxzHvqNQ8YvOl7OhspHTFvUdp9X/VZJsvvt7QHKNlhzDHEg5LCEfQ7H76GSdhV5OGZSLKRxjrC+vOA==","shasum":"19d47431b2dd52d8bb237eeb49d47862ab05d71e","tarball":"https://registry.npmjs.org/understore/-/understore-0.1.9.tgz","fileCount":5,"unpackedSize":41540,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8s9qCRA9TVsSAnZWagAAsI8QAIsc4ja/7gud1f9AEHKy\nv207OsktfwvHjj+lS8i4MedRLpFdI15vLUh91yNWEcGKt1T8hRbTu3GqUpyu\niIobayDWncG/i4TWKY9DNuVGvZoWCUPfUnc8/iHsLhaGomHKoFJUbm/aQ/Mp\nqJorpb/OewFuQaDH+iamJVg+4ZOmeaLGDYmiZwb4cqYVO6QAoHrpMg34hxg4\namBi4ik1Wx0aL8VAWLNnXDYuLjGRdHhg4bQFd4r1i8WBbbHHqtk9kAT7j6P2\nooaMn8oW13bh/isF/QRypXYdPxRSiJDaph0AWRbuK23qch87PFlJUP+F2OdZ\n3Lo75ntJMImKyNjPl6LyUxZCBv+C1VLFqNMhHEotl95BW0/9VY6xSfRfb5U+\npz82UaroYkQeAUgFmdIb913D3OLHAOm0pqeXuEpYeKkMqmu6mN/MnodMNNFp\nDm1vTUrYLTAzhnebGFyPp0k1UKJlBId9yHvePoc0OCuPaE0kkEIx79W7Jsvw\n5ySyWYo0aNXu2l0P7/Znm3ybE86tC9v1kNWHl8GX9hIrUdEBHKp41PWJyTXH\nS6C06XiAaz0qmyVdqqWpCFHOq8F3LtmwNWb1EDJNx1ZmTva+pE3LzmvRv2aK\niimRSLKntW8x9ZE7uMm6Qtez+qzRw9nvw3y42J6cT/sbBHr3ROw84xprk4YW\nn+OK\r\n=xX+z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUY5PmitOffrasujI5CYoXnNSLgiyt0Bj5AGjjC7LWuwIhAInxhkTjJhbCuxqjEUadpXcGlA1tT4Ei+mzF/t7/XxdI"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.1.9_1542639465632_0.877961788343012"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.2.0":{"name":"understore","version":"0.2.0","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발을 시작하세요.**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.2.0","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-e4W8S6TBNnBy3GEkWenGyVJn1mDk1tDK9DdCOQyTvVMT8IhnHsWLIhEEiz5LffZ9Ir6VRdXq7Eb1e2GcI5VpBA==","shasum":"85354296a17ee44d9517f1da9273590368346a11","tarball":"https://registry.npmjs.org/understore/-/understore-0.2.0.tgz","fileCount":5,"unpackedSize":41623,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8tNPCRA9TVsSAnZWagAA+0YQAJQxXJZ6Bl6MVBNKZhFV\n7Wrs/I1UPmLglFqKUTaWgrh/LVFpPIz2o1+9I2QA1YkVVrTuqqfa+jrxsXwP\nU6CVAveF4itvR1xz9LxlM4V6oWn378BjFS2Eieu1sEbMDADygYhcoHcaiwsL\nn8QC3lVhlhThwMeA/EV/h257V1Hkq8syIhA0DNAgjqEGcWTY4FGklaaV8FeX\nlfi79HRNULm3NsW3z+75mjplKHBg1/Io9Pk67mdh3N33zBW2SJkrxlS0HfIg\nGYZmkz9bPB1DzSK+DytQQNL834QoucmINSdkHcpEB1KfJp2KjqoS51XGNL0I\nTMU9hUg+W90QCnl5M5iFq4gX9K7ZQm8u0qKecsFSkGLHxiov1FWWA6yWnMUJ\n68NuNqCZOC3bk7Bj+Hx4aqPtc0T9Gpggqg0TsR6N+iW831rPpWlIKojhNu8i\n3mY/0VWuBOmsOyYrPu40d6Zk9cXRarWgQixZZLu4liMYzrgm1nFkm/qDHPbL\natrv2M0GOHfY16mSG/e987JHJ8gqQIzata9fyYzXzIONNgFNGvBQzKmcFoOb\n+I2hX4LhyAuiDSRcVj5/oWo+qIJ4irLxcbAGaTSRmF0fvPV7rMk+jRatv0OB\nXEd6gSYlfP7BnXbEsDodZtSM+lBuieJ0VRHkiiWeEftv64qsbzJ6cYAq6Gvj\ngoq8\r\n=NsW4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFwCPiikBCu/S1ZMQlAD62NRX60OCmRJZQnY1ONUa9X/AiEAmq1XZJPzXNLTEdEm8OH8pG6GqcDiHJkKgsZYyPXGXMU="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.2.0_1542640462870_0.6064922170855409"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.2.1":{"name":"understore","version":"0.2.1","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발을 시작하세요.**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","gitHead":"9538f4285da8817686d9d749f118f5f78c8b1bdf","_id":"understore@0.2.1","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-OjFVqMyW3tYurOVRrLyo9iLa08O/R7jgr5iBBmS5dEPwqW1LVy9+n36xJLZH6r3jzEDGumUzWxnz56bixlBkhQ==","shasum":"d11c74a26c71cce4b1da2794e88ca2ac5c232058","tarball":"https://registry.npmjs.org/understore/-/understore-0.2.1.tgz","fileCount":5,"unpackedSize":41494,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8t5mCRA9TVsSAnZWagAAWn0QAJM3AZ4VHF3rEwyjDFxX\nX3jvz2u0W9oVb2nn/jclBOz3gY6BpVTVJm3nNI2cDs74lVMfMVgxPCfGKLcW\nZT2tNzg1rrwzWuKlKdeFH75nguClqL7jZts42ZJpm6o+mc8oJp57PSq+csi8\njxeM3bkK11S+uMzvRsx1GorNoJ5jPhna3ixDEEaBGTvvBzNfpNixd5RG058i\nX9+OEjCCKFhD5jvZhbPCWOuwsD9zmGbza/H4YO5eQcmJ9YWL2TDmi3IFl0L8\ni8OL5Fi9xM93/cE9swehHe/RvqJf4rSn2OysFdxyxVCUcSJrYzvQsXSF4ElU\neHJXcG2nMffS0PZKgklTarEp1ah24QqAGerqNK3X5mUe86oTcGflto0JyeWQ\n1tCb/B0ZaoLmA78HS5SuwQxnHwcBTmKLkcnKP9PiuzArZNCqPA/5D0kfYYf4\nVfNpZSZWSIaRSlJMD0N7twKI0TrhCJENJxnjlftQ8cuCSa1VInDfH2VWHq1u\nHCiMVJEP6NaYe00lTuVb39UN5igSkKp9tGVMvTsgOLfKuq6DDxJJ8Ykt76Mh\nNRnQc35pHioFdJckK40B0zpCz2o7WUg/MGJvuSwcIvzF4evCYASVK+j8rhbW\n0950+JuPiai+ihMcwcVHSmIGXWUNmdPSy4Zc/A045EaxGZlqIXwdZ7iQiTYy\nR4eY\r\n=NK24\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDcH8YNb1CT1fF+3HHItMfL28Di4iWGqLpuPPe9u5yDvAiB/efu9XlQheuHMluRT/xK2+3/YC1Aan8ilKTBMtbn7Gw=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.2.1_1542643302300_0.7705600628482785"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.2.2":{"name":"understore","version":"0.2.2","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발을 시작하세요.**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.2.2","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-zS1B2HxueaMKQHg18FmdqokTWgJ2+33eqLjHYbwO2or8w7HKKYt/XGRY5lUBdXJKOkGLR/qb/Jh/IA9xOiBIwg==","shasum":"6f7630795f2705c33a9deab2ce7a23d87811264a","tarball":"https://registry.npmjs.org/understore/-/understore-0.2.2.tgz","fileCount":5,"unpackedSize":41635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8t7NCRA9TVsSAnZWagAAdsYQAJP5eF6aiJr51WBt4LEt\nyfOXFCswrJLKFSWj6yAQQP6OuZ1cbBZe/JjqiCSwBd1aF2r/0y9mK6OqpOgo\nepxHg2czEHacZVw2gLEhlVkFkH8/QgvtAzTmVzgwgXtjXk2g+xCF/8ZYVsDv\nm7LNpAh5F625ufPv43Dh5NZ1C/WXZ5sKdJ7z2CLxYX0fhqtfJc60B288qYaZ\nUnsqFsbthr66jV8+/CGKhw2fkDBDaliKInEIHkpYFZhvi1+rgFFj/zCexjVZ\nZYVzGAQFmaJOCnpBV7ulxBWBQCju9a5dygfihe6z+CiyUKD9DE/72/OPUoyF\n4W5AkETLE8V7LBgCa3uLerFpSW4Lcmr4gajZyl4nBA2MVDTyvJkn5GLYQzse\ndSvtZK2fpBWAVuE9UqPRSwYCzaYdJpD4qdthb1wYvRp8tj4nefg4l/kTKdqq\nGhHxtwWa/52TCUf6GZ1k6mDOevlX+4pAk/81imnui0uKHSlFPnLBznpw9zKG\nU/UyAucwctpFc7cGvrOCf2LC/vmqCg9D+kGJqIGLqe7IDKAYk1OZmZZMXp9I\nmezx/TjkZKWXyH7ZiH3jw8UXrVbAGxnMzSoAQKBaLJOemvXRx35ttCQS1zAp\nfiyUk9oPKdxTesWlXWF6hIoejs+EpVrreU/h2gWSBoSR1/9YZ90epoC36gF4\nFXDD\r\n=LLTj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLx7uNrPyU+1DRt/MiR1k0g6IKm+2eOKpbhJnciKKELQIhALyrHJHk3RQh+VmpsamKWM4EJQx8rGj9XdVrfNtDGh7h"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.2.2_1542643404387_0.032521827072610865"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.2.3":{"name":"understore","version":"0.2.3","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발을 시작하세요.**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.2.3","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-ydelbWxS4YkfnSuvrUCsaXTvtu4b6+NorVRBvkWNb9nWQ4/wtUUHvGZaYUwZm1VzSbhO3yPBwAko1A1vYWPMxQ==","shasum":"bcec4e9a33b24d1b35322ec1f73b879143c6ef37","tarball":"https://registry.npmjs.org/understore/-/understore-0.2.3.tgz","fileCount":5,"unpackedSize":41638,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb86jiCRA9TVsSAnZWagAATmUP+wbVPWEA0Uw8ntuanUXv\nH+qK6INcVEj8H8zdGvyH1QX1eM2CCcy2r60Q3+BGPprC7kdlic4F2iSowj7C\ntWdHyy8Ce9Rtbol//XaySeKhra+eYY9kzLHOh+8EiS/mBkxfl/A8ba3XatH0\nqoLf4IMVp1SJnii+W6dDuC9ozmGFj2H8tnfMWfSdjPW7B9sPh5TlgEhYXIPE\nJ9t1s0S8X6Bp61eI4/JCBjseu5dJUwvuuCCzmcmq8J7l6Jjm5uj3FygNNKS9\nUt1/iMMGhLYl9fimEJm5ieEwODI4ivNwl1AvoDw+ilL9vqiWOa+EuSM1x90q\nIN0EPI45LbP0lQ0avsjJIxbo/juakpfW4dc9zTlVLnUwAmIMvYwJgxCZxnMf\njjpjL2Vd0q9Ahh6dC2M8eWrkGjmsE0Q60+Bu6HBiStrqffHPbMhf6AeeJnVj\ngdU4rtT6hq5fpXJNU+ZhAF8bmJA1vmKz9FFD6QKU8TnYRKFTvz0LmgQ/sdX2\nAELRqPCcQSThzDmgZz56+BXZ3TeXxnjjzRcJ0aF4aO/KeGIzwRsgH0QiiANf\nFK4abr5RGi1BDhgutQlKOB/PVzIfnLar0NWlAMxeYQnaNi6quXzRV4cI0DNK\ncZV3ByXkozy4i73WrwdqBrz08ZZErI6A5PlAc8XiGwpMIejzSyU/IffbHHet\n34Y7\r\n=1gsC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEOJDjsBtvUTtb/QMUPHzlUmgpI2pHwRySF/Ar5hvm2XAiALa/Wx//b7AcyUjzSxas7V68w5PDfvrXxnGvtZUuKanA=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.2.3_1542695138008_0.6532075265217319"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.2.4":{"name":"understore","version":"0.2.4","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발을 시작하세요.**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.2.4","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-7TCprEh5oeUl6Qzhn5z9t6sTaVOaoLqjzsWpTRex9HkWnzVg5hOnETm1sJtc7ehFudhXMu52MIXgWhsxurmRVQ==","shasum":"0b1ae620e2a61830deb65e00bd82b1a27dbc1192","tarball":"https://registry.npmjs.org/understore/-/understore-0.2.4.tgz","fileCount":5,"unpackedSize":41682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb86lOCRA9TVsSAnZWagAAv0oP/1LJFZQ+D3tjylqGjsVS\nXMtp6jtV9ZBYu5Q8UXx/MBQgD1dg1ny0mXY8+5Abi1RuHL4t9qGj9woFexky\nsIYr6k4Fx1mB1GMCsaTuRc66RRQbXwGxk0rPTjbWO9VRjfb9vxfgGgEQ6bT7\nAuco/YRu/BBVb9rC3CFQ8TkWVKmWjNEy+uZaVsmZfCiZ0fULWTQgG/XIsUD+\nPG3OlVfBnLohiyWpfDQXi5XdR0HaeiUWbvEd1u1aV4ERmshKCJ/1S3UI7qqt\nAOmoTs55uGKpe8/CNYvV1T37iT7WgBKBjasaHaOho4jc9L+oIb3qb+uiQpTq\npEi3GtYzEtcKprvf1sWFPUmoDttC33zsKyDDwFsXfydCixOU/TesJFiM2TIY\nzPMObwvv7k0q7xFmCf+Ps70C3dOXJba0xFOukR+3NbX343kiQhqYRFqeMqGe\nn17UXW3P62g9mTjmGtpadPqKCFPdu3BdvEAq2nwSrME+kLzKM4Ee8qkt5Ker\naLDnqI7LFCqZV1eg5otFNaViqieu5CQXso/JYooTixtseYRnIFWmD/xud/2h\nTy5nFdosi47kuhxsrN7T6vFr0UB2obLf5oGxlSEj9DAWxPiqrBBYmczIfZvg\nlnBlfMshbr6JJCTgTkFGkbRDwLGxI2D+hCRUU0qm1eDmAQ46wMXtMeI5IbAR\nO+LL\r\n=DkZR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE54R4teWQEaJzVZbNDUv4NFXmqEVIdmKgTpLfkvPgh1AiEAtds1J0mjp5aFK279L/RTQS8KtczEL7GpUdnlmmz2uYc="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.2.4_1542695246213_0.7731520997554475"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.2.5":{"name":"understore","version":"0.2.5","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발을 시작하세요.**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.2.5","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-Wp99rrEJmpm5NxYjcg+hzA07FReqQfZiNIssxFvjMq5MFfZlqvCIrtvYezZ9f2Tq2cQp7EuINqqKHerd9Kx/mQ==","shasum":"8448f2d62f6b2cf5597c72f37a67a83ad2316f0c","tarball":"https://registry.npmjs.org/understore/-/understore-0.2.5.tgz","fileCount":5,"unpackedSize":42990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb863RCRA9TVsSAnZWagAAQhwQAIglT+6VXQ2QTb4kjRxV\nNi+szol2JrqHdT77fgQ/IXlgdsP7gsM+YqJDgzMWbd7wMSiE/Efqlk/XLm/C\nONJO2mtDJN4+84/+NRh93mAZHrOk7RlZeTp1X9tZXYe9C5CloNgb9fXL7Tiu\nWTg5aHwTkFFWswXIFquoacKACcgSfK4Sgfhe02ysrsvztCdZP41DAXVdTdM5\nurryem9UaDhlfwyuJ54Sx4u39NeOu1a1xp/6HPMKn71ocNjSiTKIrRX4B5+/\nkRU1UFZPKTn3bMZ9jbWF3LAsx0ZIgpYjpgRM5WjyxGQkP0Kc31oVObzv4Wur\ntxJNUWNIdyvkhUz42kKYn2BaR92hbwDFV7Wy3CIbWFr9KW7UmZcNIgR0ZW80\n2j1DNjuTE7FTV0zsWxoP6ZB/OYnFuUFQuI8lbWVb9/yJ0uAwq+W+dSfkfLib\nYAZirYBCOlzhenZ5/iIid9dWSgwFIj0NENfwTKmLIBO3QIu3Cehuz1TX9Kcy\nZ5j/180nuEEbcEM8O61g2ZdRESSiMzlbgKIAZOcDagUiT//GX1i3/v6ZZswP\napjTgcOQRdDNeUkbcqZtsw90TLaENg689ZqT9oKQ1B7IY1Z+Chl1ZHd3IOxR\nb5E4wwdsdagbM5G/yl6YstXzcooblTnXUfzFcJCEINx2Ly/BEMML68R8+oFV\ngRqV\r\n=5wMg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAHyTUdVaxYzBvddVRCuiED0LI/5M3UZL1BEfXQiMbZ2AiEAuUBzh4Y9Z11TAD+TkZRDNBMxq4CkAjvZzVDmTe/+7jc="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.2.5_1542696400807_0.21041826699594535"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.2.6":{"name":"understore","version":"0.2.6","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발을 시작하세요.**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.2.6","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-DEI0hhZYAkArj1dShf6e3cbqTZTDmthrNMv07DwslG1MKfpQMebT4X1y52ToDG2nDSRz4b5ePsaTqCz4DxsWhQ==","shasum":"cf3439b3e955c61916197019db37738ab1e7f634","tarball":"https://registry.npmjs.org/understore/-/understore-0.2.6.tgz","fileCount":5,"unpackedSize":42988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb864PCRA9TVsSAnZWagAAWwYP/3RZCNAxl2pspUSWFenQ\nCRx4MhyZ5h9Kwtxr/SB4fwfGO7xiBuKcgVePQedeLdibBxFKXGcVW80NUQ8a\noRiYv8p6RxTnDT9KqNx+HhLxh4CYENNQoVpxTwfP2lr4nlw5lslw1K2L8KSE\nkA/COTj5bW9g4IYAr4AtnG/e7owQQFWeJv31IBAyq5AwLndRq9CHw9+HdSsF\njCocOy++tv+RknweuP7NDJ+jK5ip0/hU8E6/tS5ex2y/EqI5xbLkCYcU9oBJ\nsLIILRP9Bo8zgUoLuLYt1Kof4rfRq9XW5zVIhaKuohG4efsr2NwdmcvdDNhg\nf3HAW0lKPOxWpC0nmECEpboHUXvhWmUlRYMg4URxBaHu3d8iKw9P+0JFF2d4\nYQRT9ggjb167bYMPkjSIbYfJJNEDCybYmAIOg8YxqspEsCc+DGo91HVSPf3u\n1B4ZdMB5ReXpTCeyEWnD2pNLWBV9eI7d7HYdoOb6pIXbHiTuP54qp21Mkv0i\nqphtGK4mHt7EOzz3cPdZUpFDv4ZQaduxx+H8ssXfXbw434fb9CDzNSzyvB+2\nOtnhl+fnsx9OwCaL01kpkznLThpFtD1BknMDfn4VRhPqlkkARqeckkfKhEuI\nXPfcLbYUirNf7oSYsdcnVJe9VTu6HC/MziOnojP68Ux14RY+WCAdIv3amOPe\n2h2z\r\n=AVjB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7SXMdpwda7vM3YIidTMNo9geBYpEsWFo4nEgF3VB65AIgEzpKU8nT1fDMaYGYs9qAY0HiZ8xUzWD3abNfvZO8F1s="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.2.6_1542696462733_0.5655222705752319"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.2.7":{"name":"understore","version":"0.2.7","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발을 시작하세요.**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.2.7","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-Svw461Arcyv/OrK3XMmnCV0/LsxdCdXZZP6rp+yx3EhHH8NfzndceiM7g7DQP2+Fcr3GwkTKjP1O7yu1GRL2eA==","shasum":"9f63859d31f05adc9c011da1b1b38e25db759198","tarball":"https://registry.npmjs.org/understore/-/understore-0.2.7.tgz","fileCount":5,"unpackedSize":42941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb865xCRA9TVsSAnZWagAAQgUP/AspZRT88ud2Wk3xrQeK\ntj8uq1IQ80rtQRk3wcyZ5kXg5HKFnjIpPc6QJVZ4eOYY8TtWAcoe1USoAkGp\nI7c9Szv7jNXcShpfqZARfhBWKMfezb8gdbvBTTHaGmdcYlhimSdklhV4rJDI\nBRI5QBa8efFd2JRpsAHBbyFt+FCrwky0jTB/4bpjopKqESl2Ji1D5gfUtn7F\nweUY+PBgTkYKsQRW3pEiZUkbW0or4pU6TazlR7SVLRpfHn2XjbeNoNZHqeAj\nCrZtcULDLqDegaAoK/h88hVMlQbNyVWClQJjHb1rA5z7z/O608/Z4MqsUSCY\n/0jPmZXmmoDPxCFkBotCuf71ejR/y7ISH7LgWLOhPDCEXyAPJzRFKQUCac2C\n0lgn4xuPbkWP0tza+mmEafpZsf26/rvnqEx+94Br7TXE8k2cdDbGkf0EI9+m\n5eqaVxIm8eave0YnXfbwl7MuMUBbg2Dmf1nqiOt6veMGkyxSYrp9pzUagaJe\nQOnrbgsvUDvp/+v4XX+vqwAKSFgsgoDXloPEfyCkRBF272+jbNmzh0HM8hMF\nyohbQ07zHDsiQr2Jr12NJcNjpj+FGU8xtPC8M9LG/kfiDzdhNNIGf5jc9m5k\nJp+LCsmC7wyclawRRDiJVvd9pIX26acW9Jx3tAiVzKh3NBIGoLYNiIC8vRz4\n1yOV\r\n=kq34\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDx/U5Y1rLc705Z/pyBvMMdahpVT8q7hQTRENY9IPcStAiBoV/EN2TGPwDDc5EbVqWZ/5AvT22IXkPjXYIkaAQOrMQ=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.2.7_1542696560943_0.7224550974758177"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.2.8":{"name":"understore","version":"0.2.8","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발을 시작하세요.**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.2.8","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-bEbT49QdDA2LkslAal9rgnB/8s6Yyn2CAN1iOPgz60P46L+1prAZ2EbjkpHDBrKjOuj2w7HITMhJwgyPCgjKVA==","shasum":"465eba151d9511a32814a834b48c6f0d636c5d09","tarball":"https://registry.npmjs.org/understore/-/understore-0.2.8.tgz","fileCount":5,"unpackedSize":42941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb867UCRA9TVsSAnZWagAAPtcP/jvv8f32ZM5rsr1S3593\nCg57axXG0IcPFf2DDXqOGep4QnivU1WGRjHhmuNqW7Z3WIj/GkoAngR5IcKM\njyZoExHZ4fMVBlbDYDFPp2NAHkXYYpu0I92GhV2bPmVnJlYf/hKa5IUtD/Qh\nGBAVbWN9p+TSNf9MRyKjv9Vmq0KXQUmdFtAne+I5SnhriOGaGymN0ecC/7/l\nr23iJbpjsjicANNNlpQk4wfO6qS5NmIcTUT6q55hKD/9mSxI0dd7U09/WpiP\nW3KHZVdPs9/Yti34a8JaLD23ecQDHWW45UK2MBIi2JueGU0ZcjVTQFT8swo2\nJiumz7ajAErf1tI35XdxbX1dX1CqwbYx5Wrpg5SlfrTz7ZUjth9DpnSUCn1W\nVGUxe54X2N8IKUojMxIYgli1GP6/Oe/suhkhmuDLw06oCBSCnVDkRKpqDsTI\n0flPyVS/55HdJ4MUqRDY2+qrrrv9/hNHFR5tpzvcJxPYTJZ8Vww51f50S1GX\n+AC6dYAMFo+DHvDYZkjsDOLASyCkDr0Q3LsJEQSiyWALzBqV8M0Ay6+AyTIq\nN7G8ie3wM5Mn8GivQYiGFBwSGiwx4QjWNBeILq/teP+vI1wKZ+OwevF7HIz3\n7zXHdL/ddv6jTkeukAqMvEFXfTYA5rbpziCUor/h/+cycFpF0dduJfQ6XuMI\nkHmJ\r\n=x1fs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBZMsXxHQYEM0axn93C4eTfVT++A6hwEtP/JnyUeGBISAiAt/i82Fbg3syDwm2XD6Ts2A/dgoWeIyMjfl8OqV0UKkg=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.2.8_1542696659802_0.13707734015380058"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.2.9":{"name":"understore","version":"0.2.9","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발을 시작하세요.**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.2.9","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-jnRfoyRZOgtm9gKdIQ4vU62boRQPCbUyt9pY9UFs4JJaRcGO5Ef8b8SrRxGtYXztk0CvyEljGVx6Uu0xnrUKlQ==","shasum":"4c706b39cdc652fbad83f93a8cbf16174da11a83","tarball":"https://registry.npmjs.org/understore/-/understore-0.2.9.tgz","fileCount":5,"unpackedSize":42927,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb88xlCRA9TVsSAnZWagAAtEQP/R0T9hBjK1j0qmQ9WMrl\nObJ5/UGsTAe5OL3PUcJk3V50OiRpXD6SJLwOFYlKAW076w8sDAqXm7lK0GMj\nxRvXWz66A2Lf6c1OtNcEZSr80jErBGJ9QVG462ShicQcU9SQekyEQ4uMpt4X\nG+EHqr115Ktq0IDlYq/Sfrx2IkdQ9XWPYMFTYUrJMQZ/sdglMXxqcABBwoY0\ndmaWkxbAnNksTOIpYS9DrxqKk7HbXwjwtQAij+yeZik4SVh8GCcYLSTet8Sr\nzxMtzmOnDYNOly49JVOGJ5QgIV62+1bakAtpGw3rR0bGMO7lxv2mx74MzPIB\nch0H8Ja1zd0qCGnWTonBr8sPZb1SCck+D4IdKuIe/UOe4vgnnFH05gcPN6hI\nAN+ANw9EtRempuZOnNn19Gp+L6Jpx3twO8CScqz1+tQuJfYVqqiWzTboBLz/\nGoSEi9/xPjaArG2Gtb+fU4T6c4CJXo7PlVy5tyejqNkeyohgCy7V65Z7T8r4\nTN779lj5fKf0PshkH+l/z0a4HewyrZtnP7dz3/sdTawnQB4XYwl3dBd3AzQQ\nt4NdFqt0wnd60Vw+MN7tTsYIeZvVhWdWcNF82C9Q/hpEm1UO7QnpkrbrneTn\no6jQObuniV1pHs5HMgNG2jSEVpbEiRCQwOB1I9JSkOoZYLSYkz6KoAFmeLQI\nF/Kd\r\n=Bho3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHnpIAhvUb3sP+Hw3xYPOosrCacTN/j5tH4PNheT5VdKAiEA8cllsjfnFKKkF/w3O0hEgDsqA+csYY9idUFEfe9nnPs="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.2.9_1542704228938_0.004284551123404867"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.3.0":{"name":"understore","version":"0.3.0","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.3.0","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-gOabzZF89Gq8so9QLr6o8dWLsZGhLnOLv7nNVPBjb2IoqWwfmPHypLqAkU6cSZhChszqYtPpDDNxboU0RAfzBA==","shasum":"282b311bd7c1571c227a3af288a228d1a2602718","tarball":"https://registry.npmjs.org/understore/-/understore-0.3.0.tgz","fileCount":5,"unpackedSize":43181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9CJfCRA9TVsSAnZWagAAG/4P/0A1HsVGjBmcXVH57rag\nm2vk1e02/svT2fRkG0pnutVXpaxz+NEytKgbLqxeiSUci1FGuYN1cqD4nkNp\nfT8ywtRFel1yY92FSl+98aVW9VbLSSz4gYLThJG9sIEnE/7J48+vEuX/4p3v\nWkFKK+TJi70HrAqbGI9bpUw4uT8tizfX42K1W42L/+OUsPcrzkkgGc3u+bRf\nRURJuJR5QyXGyXbyF6I8s9q0em87uPKLSnal01ivcUs5qbR4lvIKkhj0eLdK\nXdt9VzlhwEuxznLDJIrkHWsA05vvrz2Auw25AgB7r8qGggMofnsNFANt03u7\nm7deZQQrt/Y110WjRAy9dNHugXa4TbwRZbQqt5vX9ap0IPYSS6/6rM4WLZEx\nBZSvr7Y4A+1aiCZrKSbYsmWtUeZ7g9rEyo/xm68r5c/GT5ca6PhO5Yb0ZDFV\na/DzUOQ8rXRfM/QVmlIOOzRwZ//puCvLb90ZIvIQ5J21HT6D2SOntid2Pluo\nQz6yc6DPfs4AxCIIz8nE8Kc0rurmerp5IqFYYGiY6wdpbxWa4VRzvEyotzOB\nQXot5DIvIxxXtGEpNteoy9KmGVJG5c0wucr+MjBAccZ0ifRuMN2Ve5HNBH2s\ndMmyNb2pEM497yP+0ABgXYa+DUARpax20LXPCCtnD1/EdDVqwKY/VJycem1r\nEXJJ\r\n=tQs+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2RiIyeOhtzqbYSK1v8zHJA1Q5wLIaOUPDl79u9Hw/KAIgKR3whqShnXX4+QBmP7sYV40hQOMML6chLKp3B7g2SYY="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.3.0_1542726238240_0.10875450270114162"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.3.1":{"name":"understore","version":"0.3.1","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.3.1","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-PQvQzVIkTNbOMJsIjIriMTVVMnDowa2/1EaCJsxFpuocCoN6t3k228cBOvesIslyjFRfnt3slEdfKWpRXjpoCw==","shasum":"ff07682303bba27871a2b7cae0cda9587764cb30","tarball":"https://registry.npmjs.org/understore/-/understore-0.3.1.tgz","fileCount":5,"unpackedSize":43150,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9CNECRA9TVsSAnZWagAAUsYQAKExdHmgCLxi+LD5KVXu\n6nEGRMoHb36ukvhQttfnK9qidUPvHFQrt47UVLEJlcaRE1KSuFfb68Dt0eJB\ndkC61Fp6+vWwDuA8MToH2BKdy3dSpjLrJFDpUjnUFKWoMYUDl6+/tKEwuWeH\nAuAcxPFzx7IOI38xUJC2ZMmdBHvKoPoBVbrnPm0pckevOzum3GCt/OPo5rop\nrfSiFfv+F6ACujH1Wvg14pWVJWdRh8F2c5wV33BkE8Q6UAcTSkWIxn0l/JqP\nFzjOrYUCs7JQqAnGORNPh/41fP67tCQ83+AJTI5WPNBUZkAneu6vQ9eVCwFx\nj0DlwOkV2QTa4+txeNQduHQAt1tD4ytiqPPKqjIcp9zEuWeMSi0rc+HzN7TJ\nRTyEHlae7VoHaBFRpXoQQg/MiRVeQwwuuul0wOvAyC9Xr9Sn0PcEu/9qKS5A\nCVnr2/ndAplLQKIMmFyyRZfrk1pB0xNxiTjP5bhMKn+rcuMwNDj8w4eMll2F\nMD65KSTBdBgWVDUA4UqEQjn/elZQ5Xvf5zWouBrFHsKf3lv8Mgw0umqiNLEd\nK/5m+MJf+KQ7IjLqU3scW7/66Znac42Qf8nxsxcRCjWNwxnR5Wb/SzJUnkQn\ncQCUcnpwyPbK2bdBNakFVHwL6U7Pa3uhYjF8nWRXWJVmALs93tz4FNSmMBfE\nESJY\r\n=Q+o+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDafCUe+wgEDdGK7p2Jlc9824Jjq5jpORubZJ3iKHLcmgIgM7ABk8dO6h2Uxo+jYCg231BWAbiYbXb3IhtW4WRuN/Y="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.3.1_1542726467222_0.6510916091030339"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.3.2":{"name":"understore","version":"0.3.2","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.3.2","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-SrbcbyIhkuDDSun5svmVW3ONOlwiRkyWBmCgZXAdA6ZgtZaa/8Q/EFzHkf8mxNLdgp7lLKida8ECJITUSQxydA==","shasum":"5dae9bfa30a4d7bc66c11207a115a1666aa0218a","tarball":"https://registry.npmjs.org/understore/-/understore-0.3.2.tgz","fileCount":5,"unpackedSize":43151,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9RkaCRA9TVsSAnZWagAAUDYP+gKGFMkUfv7C83yvdZ3H\nvYghCx27jXgyeGrDMJejAhKxJwYbLXcB0pZgHx2Uzjuh1hUPiP/uFBhsJb47\n3RiggjV+A0fyHFSnqAh5w9AZBULdpxfzEcCgZi//qUxPrK+Nd/32A31rP0cW\nheiAP9BKERH/oeuMOvmvg3GqXA9gjtEHZCTII8Caxe4nGJcnPlARx/M1kiza\n9Fhv1+nTjaY1dv+bVflJRGdiSFYLma9cK8mhOcJ5jr+8sVmPOr3FCHNlUEWE\nEu76QlEdAMDH9+MCFjzeDEva0y9m1X+gKYua3Z5mScDhi+CnUkof2GypYZZv\nJ7eQoKwcEeCT0lJFj8HjKpP4QqHSilYzX5ecv3DpqghRfCdxw41ksIRZGdcl\n9a3ttHO56QUt9EKym89FTntBHSZOWFur231kGANAao/c+M7dnOZloDuET7g2\nf9nCuAdkAISD8medA4Q2AfCeqKM96KDZfYDZEZtqZJtGTxAFewfCVlpBjddj\n5EAUaP570xSWKjMfog+eOBuTe1vrwVtOm12UUrAc+lBZkZwcHEUWyoc0uVvk\nOQnd8uTjRRuQlgOglULO0BCqqbmqK9mhTciny2o3OEbGzdvhKAUrza+iY+Nc\nrTPVp8Gy9cwsc0ucMyW4WNOJOP2ddn8sxgiGAnwNFqqOIR/WFzUYkPpWdFlP\nHmrN\r\n=EvBU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqrZHU1+erXMyblFkuU1+ylVMapiN1PB3tyAkkmioUCQIhANloZb2YtWPq5uTbvZda54N/Oo4RFI4f6vatusnetHBa"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.3.2_1542789401330_0.2868470139373904"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.3.3":{"name":"understore","version":"0.3.3","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","gitHead":"bc1d1bbbc02adc99d878a611f6a0e534eeb9f5c5","_id":"understore@0.3.3","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-bOd/2GAl9nIUF/9Tm9x5AvkUk1sVRu3b3mclKnLzoL34Q3iFHqLj13kItjiq0TS7jQOv/IX8wR7+hv2jV55uvQ==","shasum":"f5ae9f6a7f775e30fa4256cdc1a0eb465be6a6a6","tarball":"https://registry.npmjs.org/understore/-/understore-0.3.3.tgz","fileCount":5,"unpackedSize":43137,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9i6xCRA9TVsSAnZWagAAuSYP/0mtIfowBJo/0I9nP2FD\nEaxCozlcLI6bMbqKfRmIgQdo4keUZWv65xF9+K+L8LyXxka38e2nu1nk0m+Z\nuH9QPibQN34MuyT0uayHpPNihQ54aEX9Bpirm8iklz4IMwmOZyBB6D45fMSm\nALziGPXIIe5O8QXdBmIjn3UnEx/VSVOjlRYEzlMYUpK5IXqOAXBcYhZoGne0\nwYAexqN9c5x1z8S4BVVp9l3kRhFHLww5DFpXk2zn5jFvIfUh9BDNrnVKArvi\nL7H+WnycbnpQ6WQfcNelUzdAq6t1mqWaK2RRDfww8UREQr/9umLnpEQLEhUx\nvmfA/h9NGcYSKumfP/h6Io1jWxGSLD2Xxtmf2LwPQu1nWvXmbjP6t7Srl70z\nBBWJq8EYam8zDIXKxT3jJkXj9+qYFDHF+MEm8EaARGGitUVYCuq3jK+H9qYw\nbyGtcDpOF7OFz4CUtRk79SOe7QD7dAnmoaEhg3bvPVV3AacunEZoYofX01al\nbouwTMTjb0U4KdStNn3jwUiSTiiSOopuDg/sKrbgmoMOifIkfX8d0AtX/JM3\np4eylbAynjM8plrG8YpR08W+uTnZrNth2aaUh9xNFldpJxlRVntz9/5steWE\nzn4vqKGhy8dnhUsmmrz4ddujbxp7rTJEZyFf3q5oks6Y0rWNp/Vl5WvSQ22A\nLvR3\r\n=duCB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGw+yAAqvBIG2Or7CPKuGbvdWFYlnnWb3NulJ/rCfWz6AiEArnShRbQqgV7NyJdRrkwz7ivL7XJHf437RGEDUXHEYzE="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.3.3_1542860464878_0.9466091406162287"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.3.4":{"name":"understore","version":"0.3.4","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.3.4","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-KIMd6PQj1lQ4rMzDZssHgNrrAAi0Fs0KoU4/ifobqe/w5N3cGCebRpff8A74UHJcr/PrQssVwKIQCOw+VWOfzw==","shasum":"260d5e23549b29dc79f46804aaef6bfde78284f7","tarball":"https://registry.npmjs.org/understore/-/understore-0.3.4.tgz","fileCount":5,"unpackedSize":42997,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9pSaCRA9TVsSAnZWagAAhGkQAJVhWatZ3r0LrTDNSnmu\nfJPfdEeOSJMXE24QKMPF69zol5PPGyULdS0VKNR4/PJhjLzu4xAvQZcXBmGU\n26kWKD/X5uqrXt6JW5x0qLF94fXCNt/uBz4JWlQOx0mqj7GwAFeU3LvIL5Fy\npIaatu1RXk2FplGDvCaGTqhCfXq5/lnobiX0eVxOiO8IpJVWqPgjwb1kaGZt\nqU/wPaTXVfecJGrs0yCCsoh1CzI2Z7934u4VwrlcNGeJEMR62DFJUSVQvS9o\nvnXprtuttkTL/TsgqnSSENZv7/RI+9JAulTBZdwo9UqXsqJnpMj7TRcrfMkU\ne2j9PbNt1JMRx0OCCLTe5MDdptY1Yek5w0McLPauEXWiVrusfaGoBiWibqC4\nNLs4JPpJ3xZm13R8rR3VDLfqnchCvUf5Oi+nXcoKloLul47drPbuVI977B17\nW+tLVmaENhtQzogPFF/FE5AIeY6y7ME7qDqvR30NsvRqTxObbuFQhB+qHcA0\nke+N47KuIASnCp5v1G5L6bxig7mU9iCaQcqWYJr1jAnjCYnJljH6wf4rCunS\nEHKQlkXHQzwtj6d9aJtHW40hePLo4MXCmQUhhhz/YXARKvVUOaocvUCu5Ano\nadwXqP6WqvV3O0xLvV0INlDsjy4CCLwn6ghl6b6iG2E9GqTqmfkm9/tKMgz9\nGjdO\r\n=MTDn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDablFF4IMP8lcGcuGY0AhZd9W5u5l5pXwZZ3oo0Ljy4AIhAOzzg9i7q4eaE3vI0RsSN3EZLUMcqG9Ztv+iji+N/FMC"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.3.4_1542886553433_0.9407361361413007"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.3.5":{"name":"understore","version":"0.3.5","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.3.5","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-lbx0NR/nxpTqKkqqMdhCA5e+nKsdk//i79669jbJ7sx6rxd7XAB8fmwaP+Ad1wcO7lJm3H3EkcT3dGWFG5LMzw==","shasum":"721df3ce06cfa45a0852b42bb9e4a22bd29039d9","tarball":"https://registry.npmjs.org/understore/-/understore-0.3.5.tgz","fileCount":5,"unpackedSize":43325,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9pqsCRA9TVsSAnZWagAA73oP/i0GiTgq+22ywYwxd7g9\nvKPeD5CDue6Ae8VaLicOis0Q91epbE6nujGGGrRm8KbPjgnSlvXGQ4pL5ZGq\nIyWZtoMSviQUl3lkAG1C/xtYk2KR7pmaOisgatWP/LeHYkpM9jlIDWnXFjF1\ncQLEa1E/UrzaMJtGqEZSSjs4rdExwsgUUr0fwX1CYM1PwuxILt1RPXaBy3V/\ntzZqoizV33Jkaf7auC98ueUCmrv4TVPSOg7fS7LWIYOSeM3+H4kjWi25xFy1\n1qRyYtVvvCUpctBNHve/bdRfxD+qAc3l+0b2pDAmUVxcRK9oR7ELhwqGaxaI\ny1YYoR6OPO3IBiAkCMGSVtWRWZ1xn36ChJLhAhIa9363i8NrRIx1rGW7ko2a\nZx3Nc4pMWueBI4QTBN75xcTeu+d0os/oUD9tYlkyFDDR4U2llEpVsjAamL1E\no4c8Fdyi6i7PJAOI0+jXVG+QqQPWZKcorq02Q+YzCmyRfbEW2REbEmXV5Ju4\nytkvXuXgubEyoW+3UnYbn3Ij6es3CclcL2pY1CRE9uXV/ssv61DlxyMO28uE\ndjEznFlq994amtIL9FeHyGKX1youbNtoPFoeIem6aY6ey0PeVHpdm7PUrP2t\nQym3ZMUsHHl7IX+0AejYbYynhauUDt+wyVkIWN0tIfSFBhamD8KUwOGD9Ht3\nSdgC\r\n=PDOY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDw5JGobx9rMEHyNE7X+PboKtGHa9mLaR+RcewwSusYAQIgJIoVxHB3aty8YdkiJhXwUmxecjDLBcPifyVnhfSDrkA="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.3.5_1542888107603_0.35831031619759535"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.3.6":{"name":"understore","version":"0.3.6","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.3.6","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-K15PJT2vCLDS7ckuisglruUpytcuo4FtiSBsW41TJCAzAw53+dlsddGquxIVFpbptFWQFgTbKChvPFRJeXZqCw==","shasum":"9a5767c00a405e1c3c2d350ecff2cf18cbf5c617","tarball":"https://registry.npmjs.org/understore/-/understore-0.3.6.tgz","fileCount":5,"unpackedSize":43339,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9p2TCRA9TVsSAnZWagAANLMP/1beLemohMMrUSUXiDZo\nEOMocsel5t7iahnGZMLtcGlcthz57rDmN272MQkl093fQl7bLVmYJdRsH5S5\nI3XpXhvXYjy34B1fhGRW7Dbmq28SeBKNWXG+TzQ+nS06Yzh+I32OXcTPajW9\n3NlUVLlCy4JkTHSoa+si2/wpgk50hdqn3tpFmrXtU/kSIfDmTnq4YsswMQ4r\n2w7g1uLrZfpD/qLok4vUgih+51C6f0l9NF1IPE1kCPUQLBlD4L+ZncGXAh7A\nhdtE1b/Uzkf1VcUDqTdGJYixLsHfppGMLm1gvyHwSrDuIYc1hlsZfSKhGFZ5\nui+/H3uqkJfXdkBUw5TXiHwA2VH3csMBuoOvbzacQaSK75DmOcPyvHXX6HnH\nS/OFK20xCExBFXloYsFJSf68zMpnlGz1iWh6czcf/PWHDT2HiXptYekOg1Xe\nDvrBairF0GkLJAk1YnJnA6Zl5V4lsCQQmL0R6OnLYMO/0vXQ6//ITqK5szvw\nSOHlKi3tFQsGJX8bERMz5+wUNMFKFFwNHdFUamAJVTpjmT7EFnLFw7lB9SO6\nXuFFmcvdQh1zI9iKvWDOAmr/Y1aK52JWUu33hUmTHssMv2YnQoQ+67yPNkZd\nAjC6edgbHq2v9+MNKh2hdjNNI064j2Sdm9WU393lcUDGDw6fMeoB1iRYjvlm\n8Z9o\r\n=qoKV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAI22t2d+vNBeMbJBRI+4czK91OCQHAYfJ9VltmPzgG8AiEA7enUAcTfN8SbmR+ZWFCE+q0jGQlm5HcUxsnVGD+zkVE="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.3.6_1542888850547_0.4523189624237274"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.3.7":{"name":"understore","version":"0.3.7","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.3.7","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-hFmMie1nT72wgf5a163b0M+2paQqnS+slQKUg7aLhmsxVXlvTij5n3oRHxh7H7RxRBq+vl0Ohi9jZr1PCf/RUg==","shasum":"d45b453e50841ba16dd362243672df29a49bc2a7","tarball":"https://registry.npmjs.org/understore/-/understore-0.3.7.tgz","fileCount":5,"unpackedSize":43436,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9p4ZCRA9TVsSAnZWagAA6poP/RCH6XFixDDroZCVR0jS\n5auYT+enBIDvcZBk5TR2JmibHucrODbf50rRkWJnWMjlH+FVH6hfSMuWPKb1\nxDH7axqj/7A0aGj2VDjyuh6dtyXAYg08s9OqI7tEL6ngKnhAhM8Pc9voKlix\nRC3qrxvTsir3Q5AYUPtt31RGJv0Ysshu6PZ1Y7cQBz5Ht6vOgJDb0vhxKS4H\nyUyL8RcbGbZb4iCCzYKYLI8V/l/b8RsnUM1g757o6SJYWzzgFEqWHtNS7Z+z\nHG43vQY7trAZm6voX2IV+N8JyI1Va8DqfrGwiSY0nIkFgXU5xU1BJ5kPSsIq\noBB9XLyyUFQ+JBsB1mv5lvlaLkOMzKWK0kVyECQFg9hzL+GNYkFxiLUMcw+y\nmdMSVuRRPlUxyXAJD627evlkTggZUCT74C9Dvnqt7NYAzIgzuUapA5toftIU\ngCU+Ftng065n0ZIBnjiMqwllzKXOjGnMZIWwNpushJYGGi2JsIpAez5/X8Q2\nDwMzfzDoxV/317MfU3uNdxgFDXKWd83mxgmyWuDqwqXkJ3VKUe3xYG+5Ce8R\nVgYH8ZBvUxquRMKsGQQnwXd/uPAXTIL90C7Vw4WDzZzU9RXlD9703CR+moxT\n+/mCIzbMdOtnIR//1fbBuVMzJtsb2pM3FM6iqJ3i6SsDsdMgUSKwvZSjaEmY\nL9KQ\r\n=n5ai\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWjhFx59eumIC/u4zmBlAXwlcOo979+wajzUCjy6XNxgIgCLoos04u0aAhfcewz6EaoOfqleb7L91jDVsPkAJ3WT8="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.3.7_1542888984675_0.6282651424955947"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.3.8":{"name":"understore","version":"0.3.8","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.3.8","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-Gfr07+kd2WzWhh7rwyQmyjAKEUdOa71EuZ78JXTjhcdtOteEp7MRA99JF9FSsZBERRpP1Z0Ri4A0Tm9IGnJA1Q==","shasum":"7dcf693dbf2d1f0fe3cd855b2c1ec27cfb995de6","tarball":"https://registry.npmjs.org/understore/-/understore-0.3.8.tgz","fileCount":5,"unpackedSize":43215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9+kuCRA9TVsSAnZWagAASV4P/R/g4JHSY8LWlIfdHEXj\n8dD3eX/jU8qdPfwJizFhttHFfPrfFaYuq+oi6Sq+PoZEMld28Eo0qYkuLTXJ\nK10OaOmo7AahJyvsbE3y9rSThegGeXUhf4LsZ1aI+y/85XRfC7LA9QBVEqNF\nEdp9SnAstg6a/urp6bQgemKVpFNfHgf9bZW957oUP+80eaBx3nsqKhlYjTSl\nlqsUYDqdjtXYKeMKzS5AXqKHfcSgJwhXKyBFNgcP++v5bzhDXqibOKCZe8iM\ncWP+9wzCjb0wU3HSXcjXTRjZdX0YB86S0oz+5lMHRssKNzOZr/8kZWClfE0r\nYQcPy2wI07UiSjREVd4ziVg21yQlW10iAQ6Klzy0OaNpSRGDv3QlgBgqytyR\nA1fcVD8MPsb28kAMKg/vF10tPGJYBizTQo0as6IjXLaAt1N0R3plDwiC1q+4\nNlxwY/qC88SzHnoak9I4eVQsNry9OFkDJbFUalHq+wsiZJNIcqitJvbPjye/\nwow/++jA1itBPxUdbNUgyaYpMEwOGoi9PxbzW5O3HkFUYokfq1KI3vUN/v8q\nAiZP8jglvxa9dgxxKKj9LfAcKV0GAUgJpKDvOfk7oIvMVki1NMJ3gKKi/DxX\nLf0My/S0R5rIpeTZ0Ow1xSxxu/Jc9ZhmGjb3itnZPI6/fnkFetqKMSXIG7+j\nAemP\r\n=RdvS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMtyFzdTJC+fc1RfZlZZC3u1Ksb94Rrz0hBaPhbbgOQgIhAICUVsUGL4vjzIIZa+aUz8YwFEAp3p1xAbucgAz/5ouq"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.3.8_1542973741394_0.09688216888317513"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.3.9":{"name":"understore","version":"0.3.9","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.3.9","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-QUGqb6ScaWH91I4WciFLV6aarxZ0qwjldyWpH3p9ic06YtbED3k0y1sw5rRATOP5m3WUpVW7eVNLL9JiTebNOA==","shasum":"57d8e336cd451b88fe893f5d14f6d2445c5bd0ee","tarball":"https://registry.npmjs.org/understore/-/understore-0.3.9.tgz","fileCount":5,"unpackedSize":43187,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb+OruCRA9TVsSAnZWagAAwUsP/3bpy1UcVKX5NbffW4fH\nL6q9vy/IYGU1L8L1NmzjRge3RnsmTgBc/lW1y9VFvznBQTHbiusJnHkSPZnL\nzkbTyBgc68oxaXW0iS+C9ekWmWCkgMJfXzZvr9oMobNfiWIRiXrc2+YVj6Zj\njEhihHmFzHyU6CsCFc61jqildxm/5AinhzsiCIB42WYT1I3Zsl1DhXV7yTKf\nqkQ6sp6PXU6J1pv0ljcVBJzv4OSjKD7mIkk7lo5ACE7y/VpLIiRGa6gwGLc/\nMU7N20+jq7isDhH+KwRagL0XXnX7i2RLFskiEJT3Jf8oUiuhXfddRZfzjZdb\n7FDDIroQhPv7iiQnmWh1eBL6ioRwTaNKXImX1eXJN8qz6rIxbjikJpgwMYcT\noSvOvhwynGZEjJ+TTDEn7/U+2CR/oQzOfQGRWT6zMF3KCm9xaMAW4rRwH3O1\ntNC8G5XKU5DVmFzPc/37YNmrm87MHByPwtkNkRvAJ4cBC/3btO/j+9SOJ8y1\na/hzoCtRO9bGYhl7VZhDjbV14EIxvapFo7fNR4z+Ysry5meHaIKmRJ64L72O\nptblyYbyxucxHXbXDv14NReTffJ9Jd1aIOm8fg3YVarQDTWIXHm2mKRP9LUu\nD2vB+htX4SP2sgpeWfPUKOuXF5vdDsoQo02NLYVyW/niIiNWiQsxlF1DLpbL\nre3K\r\n=s127\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICgAoSpzMPnQvFm9xBXqSu8k/0fbeoSJQ7hjFWIVWUuyAiEAlviH4lDCz0J6olIZzSUn3kSXx7vo9TWNhDXxp3qOIQs="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.3.9_1543039725953_0.9268156726320904"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.4.0":{"name":"understore","version":"0.4.0","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.4.0","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-9xnaBXLkLSvgimrF/l+VWRoUWzNbeL6ab5+jlfSxnvFJ2AcP6DHTQ3mAuVUcbP4Rg6wyQN7/L4MyneQS8wU5gg==","shasum":"ee00ac097e06de9cad8b8cccf3b13f3ac329485e","tarball":"https://registry.npmjs.org/understore/-/understore-0.4.0.tgz","fileCount":5,"unpackedSize":43185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb+SU1CRA9TVsSAnZWagAAVDQP/0VKxDR6vtKH9d4KdxEQ\npFNJKUrxSauHjp0R2cS39VuIW2Tgw6DckZ8gZJQdDSFpjIqvpliiUUMEPR8s\n+z9314Jv/cxkRE1bEcqxHevTDmDwN8o0YmOzzYZk8QZgW9LMkjEzOzsWXZVV\n4MFVFo9sCL8ZTAELUmESL0Xn4ywLpaMNJbiJl83oIFqo5KfOMTZjTnACvANW\n5E9HciZXaa4Rjprw8D3aBx15JFMCTcqR56ep7vU5nFvt15n6FGWmBThAQbVm\npYWMmhvKzPbK1WfTo0B+9X5KC+ca8WwC7JLwB/E5KStzjghaXRStbswu0xoh\nEiJLbNDrnnCx7kj0+kWFxtvNe8B/koT1rj9DIvVtXu6WWNCLGDQ7LlkyL2Rj\nvewCYPhRMgv/MbNr8KFFJ4lABxOUOdmxv9a+hDLaA57Lo+ZBUmk0VS3xVX6o\nmAk5Siwvcp3VKWPzSCIywSx+8PN2BC92gpOBBpzK5GmkQgXptjVVWeb8dAr5\nOJocoeyRgwgyTPtbj4hBm/V8Bf8/on6/vio/lheL/2AfuEDKQHt1gf/Ok68K\neFtFqLPQMtlXtULvHZ1a865GE5kwe0jyCW8CwJgilpLjOZNmiA45uC5dE0Yo\nrTAqncH7GnxKbAEmkaEObfs7Hjjwz+JslqhBtmMvVcZEL9SUpG9H6symq/Tv\nufgT\r\n=w+fs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDN5r8Fnnpjw4fpR56mygkmbED0n7Up/wPWgjYW0t0jjwIgBUSdaF+cbpczEoTWV77JkVjDFd4i2p9kS/dT5IfnD1g="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.4.0_1543054644908_0.3004817825088093"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.4.1":{"name":"understore","version":"0.4.1","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.4.1","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-SEzyDRxfXGW+Bi5+yd5b2GvynuKyEUpcC2TQFPU4fx/kjfwEAfJWCow+dlmoIIDT8i3Bi+nnXHbFNbpXhJ8b0w==","shasum":"c6a684dad13ff903e6d2f429f57f6c79a1e23d03","tarball":"https://registry.npmjs.org/understore/-/understore-0.4.1.tgz","fileCount":5,"unpackedSize":43179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb+SXCCRA9TVsSAnZWagAAKJIP/iaB8sVsiXj6fgLpWrso\n44m5zXS4I+SAif30HiKioJ7bC3KYlrJ7+yZvfSeT8ywN6dlHIDvCbjor0HCm\nJvgzKtRQj2DRvCXJD9HTJCdTm+xVhlPdBnBrmljvGaWVRIVvzVHcQ5wk7Xst\nliTdiKpjjkjOUMMfFAw6VFGAql5uNHR7W8lrKCucB1zjnFfw9cuMVQy8quFS\nfgEAjaK7HkgHsTAiJ71YUAGjSa6q6S891VhQGQxEP9iErxQP8STvH0Fqwu2D\n9GzSCT2EE6WXWzw/RNUfNxysDiACzVFerYgAhuM/bCaVIMnoQkxgFUe9um2i\nEHrHUJPkNCCn7IfoT8J/5AQThzRVr73ErhGgy/U8r+UqUBpRcnpDmdtVj7oh\nYAGMf0oN+XB+1OYmSOlk5W4IY1kfhqvLv0Js4jwfWTMin9ILwAEVJN4WExsN\nhudEljOL4a6sOpKzUNaVOmcKh3Lky5bAXrSCfQSvHYGY2PiKkpgrPjhY7Jdu\nICXcz4vZjowZ2yufEcqjZFs8C8cEO6mB85R7kaM2I6b7vE3+BnqjuM1nqeHb\nId/64BkJSLe8Oece76MJDbSb6+BPNUHIHjy2Y4yHRkWUJmz9HDDVKJoetsk9\nWDyU1fhBkK58KfQjMmxjZ/1/NDqp3vpcfwLpqY7s2dyq0LbLZXNn3XdUHDug\ntqjH\r\n=IjEg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJ+jEUDhCNpcvG74OAaDFrBX7e/+jdNWq6H3F0KNRueQIgD14G/5y3MuNCMZjUdOmSQjor+3MDZDxNxwd/46NtRT8="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.4.1_1543054786187_0.4230873666362551"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.4.2":{"name":"understore","version":"0.4.2","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.4.2","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-b3IkzGxwqmfAJVbnyO05XeweeDMGyEArsbKALkY3t0tRT2dFddL9S7Y9ZiL+XUTyEOFPqxgNf23TfKjT4APDWA==","shasum":"275d460f235ed5504d122e6aeeb3c464b27d9578","tarball":"https://registry.npmjs.org/understore/-/understore-0.4.2.tgz","fileCount":5,"unpackedSize":42940,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb+o8SCRA9TVsSAnZWagAAsyYP/jMa+YHnhq0UG1xHQ4+y\nQuF+d2xBwVP3Ha3eGCxRGeQFLptsK1aUvoeNoBgXLdADm1jBg2cdzToz0mkw\n1a2X/x6Qw38F672N8KrEJzoyQZbC2Cb8yc2emYDrN12a/uBlZD34vvIu37Of\n9DTGyUDeFH1AnEUoiBGsningdocwuvj4hE4cZvsKqs1ab7gUwAqTxVXaY2W3\nd4j7ghVfF7OiA1hMzLttIqVk5TWR2iptOtEzMV89OrFuieAyCpV/kb/hz5Zf\nmw1c6gIWVp7btBlM4hHe4CDABrDdkMJd3h4e2df0kpnQKoBQ8GroDxfWLGZG\njWLubOD4h1JZnqlGQcQ0brgjfL1b4pdf6VJGfRB71D+6a96nocbv8Ig6nEYI\nJd5C5r5bu7OQ7bfvtBdm02b3x/dqLb/NRZSViKGOE0iuA80gcX+a8gqsPlyI\nIsNl8zyWQoq5FvT/la2XSo4uVj9bb1ZelTKkp/J5VD5reRJ2900PnAHdow0x\nYKX7OoMV4VFZCc1dgKTjkTx4/S9v9xI8oiTC2xjsog5N0D5CFRu4SwuZsCqo\nQEeA2mxwI9LeOYk1hYO+rICioN1aGnXqpmPYsgOPXva4P0U2qG4hIcAaWSkZ\nMERDIs6/FQ0J9WXZX4Zder/FyBfRr7q8LjOsReNcd9WJrK+m4y5oJeNqwzw4\n9jjF\r\n=biIg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBP90glHTIJzOjQiZyu4BHf3e5oGGAYOekB0cwwXxF+DAiBcciquP7UIXsR4Vn/b47E19m66kMHYIUY9qjzHn4sGPw=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.4.2_1543147281943_0.04293821089464833"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.4.3":{"name":"understore","version":"0.4.3","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.4.3","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-WcE1erkzNu4Op1m8zSleYBcQ8yl2FProffajXhNEBeHvZm2J+EkdmvmKCOVt3Rq5PI91+v+LoJG3F5ZcCxHf6w==","shasum":"f28d24000def0f1dc7f59b7e60f946f39b4d07f4","tarball":"https://registry.npmjs.org/understore/-/understore-0.4.3.tgz","fileCount":5,"unpackedSize":42792,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb+pOYCRA9TVsSAnZWagAAa70P/RIM0rl9euWB/NrRVbeJ\n6aJtUp//ETWOUellYKqoIvO8SvO6y9Pa89nJ0f2LCiN+Fcs4A4ae5nN2Fm+V\nhsBsLZsiBtDhe/W8rpV4FRvdmUt4nW8uHDdr9XMjXexT/vw+UXz/l2cRqPUK\nzoq33vTu++rFeyqs66/LxtgBf5OXSB01ooMPLXJjCHA1QaqMskDJpMXBerR+\nIyNXxgh1tVI+ong+FO6mi+9ALUffSOl9YJ6LphsL4l20+jmTgiFEPg0XB/hs\nBs6Av2doQhZX+XMGjXoth6bBxeQ9/E8qDGFtzpO/vI2ivrWSrlstwmcATnoX\n45XfOXMbYXnFrJLNQGZjUB+DDDI7poQsmQi+GMZHi3hrRrFO9asr0KGjtQWn\n7SwdzlsX8jIaRCLW4GzN5NLuGPq3ikq4A3MxXvrifWL7p97+tDhHjDvPLgqu\nvpZ1k5QyEkfTxhS1+BvtDu9PWzbqLpjtYqiHYHj/FYjcxiyKw5rzgxqHbEGF\nbcGOcdzN7bWXTUiOhlMii1USKCTUe8eH2L31Vx29rWpAdvTfE69vPT76y+hC\n1u14iRo8eyGVns6n/eWBLIZXmEUvkSMPuLpD9d+ny7kUuoOnK+0OfV2tfBoy\nXstHOhqhXSdaWNnZ5LVkVlK6qPZSNhaxXsk1FKVv3jX3VkPgHud9TJOZOGCD\nPf1L\r\n=nVwJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDovEKDXF4O6Go5Fs3ut2LGQOwwJubz0aELYh9c7mAOYAiEAv3kcNqR7FlFPutpX2APoqv+49JDj2mapMAGYbSLSnbo="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.4.3_1543148440032_0.27507062851062125"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.4.4":{"name":"understore","version":"0.4.4","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.4.4","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-9LDp1uyxwRcRnFtP5ANZIo+NuwwMcNjtZXUnnA1egaTm6VGwexEXfKVvLvXcKllcNUyKIUGdxQVIfeBiZmeFmQ==","shasum":"3d2d2aa6eb54c936d2c3e4b311aff810edc76faa","tarball":"https://registry.npmjs.org/understore/-/understore-0.4.4.tgz","fileCount":5,"unpackedSize":42792,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb+q4ICRA9TVsSAnZWagAA0ugQAIDodKbjjdbW1U60OMhk\n7KELg6j5+Cey0qubarMDi/DYKGfKDcIXu/F6i6o5ffrmPU13fL2La4l2Risr\nwJ3zMgakc6W+95m2WRumuDx1cHwrnf07wnd1l7Jonm9MQQevXAOx/iYz5UfB\nClT16jMBvvGyYHsaZmF2KOhq+dH5VP5FlCvzbs+TxtnvioreAAnPKDxvaVxE\njurS+ZsrbZnpqvuk1GvgJ4PVjlg4BhpRYHCkfD+AkioGY8E8ApCjkBB4DkR/\nWYr6F0qg8ptF1wb0Xd03qaP7c67RHHXnyS+M9CTLdpEof+bw3v4L0HlvLNJt\nlzVkLaYOZn91+B1anE2gt8umPNmYrkVN8hD7Q5i1TtTZex21epdoq/vhgaZI\nDf/mzU7UkRA+y7MPy7hzBg8dzwBNX7qQC6gKHFal0Nc3eT0C27HJcjalCgm6\njaGcfRZlKOw+KsLe/LF+VFNGeKzvQiU6qPJyzaDfp9ayDjbt54kLI+RCtK40\n1ic5XbWIMBclPhCKabBTFXHB3ntktEiBhauSlJbmI8IOR2JVanWFNgr6ULaZ\nga2iMUMp0h5DOAE6OTzWL0zwKF+cQbFCfbkbLcZEq0ZOQuwu+DSK/pftFilu\nWTfjb8wdUrTSzDfEK1GfMqh1plRQjN8etyB2btOXuibMb8d/O7/Ba2lgGwAP\nduqd\r\n=etMg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHeTUN9TbrtN+TIWl8qUUqqXXBS5pIx808iU5xvMCMhwAiEAqHiAfzeWDyume/3uJx38Q1wV2KqATOOdXxIFvyx+Wfo="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.4.4_1543155207746_0.17328373463735836"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.4.5":{"name":"understore","version":"0.4.5","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.4.5","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-OSY/tjVSyAI+vBvRFW8Ign5TaBWpCZl6Gehcad4XTcSy978eq0MI8XLCRL8t8WwuN4dSCWgFr0ZE/rBbkPcTsA==","shasum":"5ca56d1878390c19a19198ff48345563ad89d6eb","tarball":"https://registry.npmjs.org/understore/-/understore-0.4.5.tgz","fileCount":5,"unpackedSize":42836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAMhYCRA9TVsSAnZWagAAN60P/3rSQvHD2Rah9jN1qba1\nV7jEZ0FWS6Yg7P/MSPGFsjXBNvs3ozFkDFvCAXeYDYg+zNcV+IBhRTvD2LY/\nL72mK+AEA4JJeorhMR+U3wTcUKWS8P5T/e05w3KjE91Ye8fHDYBVzH33Roa6\nlcS54GmNIXNclqG3wUVI5mxPgJWhSCVO+9WDFXyVbvFPNIGSne4Zqm9PYhdE\n20xBg5ZY6lC/IEW4TJ/D87goJbkk0Vz9lBHuZ3Apyp2ZZ8uob6U4vfZUNILy\nPMpqXWS0izy3c00Iz9ebyaq0jJqrYxxuniUJIbcN+wUXu+oFdG7mfdo68BpJ\nCjR53DR4/L55rSFFmUlIiJWncNsC0t8SgPEh8fYgsvQBdyyYuRpx+ixGelEo\nVUUzC0Eaz6acddM4n7XiGZogGJ+AHigCstG99g2NZ6Kye9n25XMNCoJ9PgeD\nJvSdXp2CpSDGJ7OBixZzb3kJtQ9mEfaa0ayv0rj7HxNSabFsoVfA5zk5KXHd\nkApi6qwgz+14uA1oLIMaYLEnJNGtE3qP4w5vfqIDHj9SnXfSl6pxiriyiH12\nb2bRNENQBObehX7SAV04IFBmDwsDkh7EHC/d2+ey4X9IRJDYpYlrrtC5NIXG\niZuA/Yh6swKBNR9nFi0kR9+dEtW0BRDQxWmZ9IKY2+Z9I6W720pGCBz/SOkn\nyNn/\r\n=P8en\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDgN797KO0aF5KYgQ4rchQ6ogZnjBPK8vL07UmJfw+1aAiAahDYf3ilcJcydBKxztDhMDJSxrbMjvv1VX/IUSVtfTg=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.4.5_1543555159797_0.21897940243721137"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.4.6":{"name":"understore","version":"0.4.6","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.4.6","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-QfhMeeohKR9MNP8vP1l0boRzR51JclZgn0pQAK+/XxTMRAqCnWFwuM8H6VRkuj4cDXfkerrJUBoM1m9iWLMG3g==","shasum":"337716f962a1e7678824dbc20215478e03f908c9","tarball":"https://registry.npmjs.org/understore/-/understore-0.4.6.tgz","fileCount":5,"unpackedSize":43488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAqCeCRA9TVsSAnZWagAAtCIP/iGRW7gQgw7Y4TgJ1CoO\nI3OmMJuqiqqBUV7Kjzf9LxWWFxIp/K8RFNzXjJxeUhmuGVaoeDyeWCS2gr9U\nfteEkSPufCpPafdTtGEF01xGZ7p5dDowAMzLMeHcfvUeeyrMsxfTHix8TEVE\n/YDkgct1Egy9DQBx2BtwKoWzIX9xlugzG87mE5pagNE4MS7puiTOVhUqAASv\n33RJbPd4netIJj8csZvytaC1fYCqRFHbtfmAb1dQH2peh9LBPHflBBgs7koJ\nTiZetqlW0BQwsBXivkRIDEZ7bRwCk76fkV+sG9pbC/WLfXOxM1b0pCi90Qx7\nObB2RKC7TFpo7NzMBdh+MqRZuhIiPIaLvw7wyBnhzpFifkma0m7szSt42cz+\nMYBo4jKQuxpTKyy6HQtOvrhUUmNZLB6/Mrj0odHhqZXzmfm9NYXD3262JK0A\nwS/CbVIMTy5f8Zhzn0gpgEVdh3mdsbZVmdehlc2KvZNc7uSGk2ENKgJE+FeR\nrgnPLON9/dtkQwLJpMuu63wVFMHK+WceR9iRmx2X/DgBBvhh+PazA2mW0942\nK0D2vR2ygr6c+rGP7HFieOq5dr9cT7Xh9UjENBsPXLYkefYvTcJjB4loUeb1\n8QJXvHCOjflQJWXIvsAjmZGKT8A2/xbIvl1zNwgTJz1e6DwIbH5pMXwrFFv1\nJy2a\r\n=336L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmEPcdtzHrTO3iPqkJbPG3DL9mAYKk4+1l2a9kiFVzGwIhAMTAWrPDqVgFsDOGWxgurCIf5tqAd7Z1fjTeMdQtZY1C"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.4.6_1543676061851_0.7300744230039116"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.4.7":{"name":"understore","version":"0.4.7","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.4.7","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-8u3NOxVGtYN398qYPgt/LFSWCLoIX/8deUEK6OggcVnTWcUTebLfKkkD2bFfnNoUWtGWWyQF1MiHVSZWtbdqog==","shasum":"ffd697b894d3604c517f8e8d2606d4b62b9b4c4e","tarball":"https://registry.npmjs.org/understore/-/understore-0.4.7.tgz","fileCount":5,"unpackedSize":43544,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcArH7CRA9TVsSAnZWagAApiwP/j71U9VKRbXi+y8/VZ3T\npTLE+YkYalwfbHX2iiwL4/qL31GZlrimcI8IbUr652V/DId4ZUKm+0H34KEx\nducYHp9KjaXVul23LFwOj5+APy0ZHjGm4W1WO34/J6vy2viYU2HqIR6qrtV6\nveZRs92D9UAbQzL4zFRgz7DBcAfJZUkvYL4clHtoX4KLfV/Pxe6AGXarK5Qp\ns8ScWMepww3xojyeTUaMcQgm9LHS/g2d0Phev+mqcv5zeC9158KyJd5mKNni\nceViSKHGzmDJocrIdlGs9WuND3T8JvriGzNs6dVC6Oo30lPgHnHqE1XG7GCt\nUpDrvsZYMibyEK1pfV9x5iApTWRLHUhCAzIdg3e8X7QTveR+4NeOYXMtdDNO\nDKUlNWOP2amFyQ9uw7wrXTT4LTmd1Fu62VoqDWtN0nkCbzPILoELMWjpqK9v\nLjp6gNfHPbf0jJFu/+/wVfC7swPmlR9ZuiyRCAg8WI9BrhHoxL/DKRgxVoeA\n3zVa7kTICvQYzTLsKDNpfPdaB8HwVynRldrJsPHrBeZMc8g64rL2onH/DJD6\nsJMsXQKKU1ANBq6ne5BLMI+NJFy1J5munp4EPArsulXt47yat5z7g5/0owJT\nBVnhbQUi9pnpNBXLvYHfXNwQjuNynib2PSR81P2vATC5UcsUUhA2Tfj5LnhS\nMViX\r\n=/Kq+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhFdWFH2yZvJ1CGtCXb74nEMePjiS9pT7JIh1t0YOLUwIhANeBgPNYP5PvvH0DWQKMEZqohWxI4iQY2klohLo2LX8Y"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.4.7_1543680506980_0.2236978943904382"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.4.8":{"name":"understore","version":"0.4.8","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.4.8","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-5Ovx4Dy98+kMfL+NdMRyHzMuq/L69uuIRpWHwv/CR2gPzlol1BknVZnRBEj0MCQbJsu07fRKXFBIN3yS3K8ZhQ==","shasum":"fa28a875c53f591542cf25cce02627e092864e63","tarball":"https://registry.npmjs.org/understore/-/understore-0.4.8.tgz","fileCount":5,"unpackedSize":43238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBRJrCRA9TVsSAnZWagAA3zYP/R+pwobtBFvAkQCKzpOm\nobtLaUgys+rJWbSyanWFkZLKERu/knVycq1Skyhgf0hG08MJN4K4nHnldlBD\nj0CNzB8A6EHgpAhUfvy5pSaJymC0jHj3T8OutUnIrkjK5gwOhO2Cpv6qL0ED\n8L7vA8Gy58S3JugJEQstl2tiKI9NEAhm2A2kO08qbZ4CB/W6ZQzIFuhXcTwR\nLYqgeRaPYxrkJ0cWJttA9C2gxffD6kTyu1DtKBIhg1keybkUgKvQYQRIcuPX\nLOSxWruHtg4is9pI6lEbtY240yUKfu1aeaccbPlooMEM7m4LKf0NLkJji+aR\nFsDocBL/+jvLcV9RdlpvHIZfgIODIKBQFturDAxteYRZQP/qtF0IWuigXzvI\ncZ+tzrNbKBHZ3SF+AELF7/ahArQtb50IQznr0Ovd1TYOBDuufJDEkPK/2Eio\nK67wslROuJgadUohsdytYB+4RtrBjva6xZVhCzPr4VTF0BBiezjHrIiSMUiH\nNzgso/8+BwVn/VyJY/A5AWslUpIs5IN/wzb4UcuAh0cPWNfw1crAOXrTRlW2\ncV+fFpIcy5l8/Dsj30zh3AWPlWADrr7ktegmn+9Zcf3DNt+uz60scMhM9O4Z\noYGCnkCXu81yueSWk0o7d2sFGhGenahKkj718KoLKdEfOCRxPLohPh4d+YaV\nNRAB\r\n=q/JT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE7ZuyZ5BJjrabPvrgVo2uHlTQfE8WxPC/xxH19FwXZiAiAdDKYc4uwLBRUFxv6Kz7uE7VvaUbzy+K+BOZOlXXn0hQ=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.4.8_1543836266505_0.5099673863991339"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.4.9":{"name":"understore","version":"0.4.9","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.4.9","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-TV8mAOMbE1JiFd+it1Kn70hkcKZNY6ag9Oz9FQZQ6awckgpo6EVwD7Kg7k+DZJ1lhLNZBzsRtx7TqZKJzrbI5g==","shasum":"7d505897ab2e37a7a16625bfe04c74754b4f364b","tarball":"https://registry.npmjs.org/understore/-/understore-0.4.9.tgz","fileCount":5,"unpackedSize":43149,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBTkdCRA9TVsSAnZWagAA+AMP/0cjGd2RFC4vnnlPBAhd\ngtLCcLLXRUOipBVWvBVCS0dtzO+ZJ1qteAstFyhvs+FvuaYcrVuO0/FPw/6J\nFmu6pSmSkMaTZGfQpBg069dNNS9Dwq1XSGrX2Unou8i62V3j3RYWB03VNct1\nIxKNiNfRAEtps9w7XrHGL34devEsH66gAwDDxnmurM3ajHaB9589HEgmAQdN\nWpGD9NVyyRwBn/KprY3oSBNUS3ErMKhhSr8aqbQtgLaXOPp6HpgPq8o34a20\nkWGp7Fc2A1GJoZKzCe/fB1s4E4NHhZMWT5U+jR1+fDxH9LMBEw+TkR9LFial\nyIdukxYGYSnbi76hJ4LnEVVCnSsujqSKg0VRNc0+mZuPhax2zdCBGLVCSUKq\nA2aBFdXwqgURwMsbfjW/HgUvi+MPd44zXeScd8y6iuG6YRxHQPOEHkv6Y+bw\neyUG6FEzQdNwfC9jQQSoUhPkIGVyb3jEXo9rlbVlzVDdOq0cUlUrZcPl8wov\nTgzTW4ZMShgmAYFsU7hDHtpa61CNmX5CZUmDEFe3h+NBPTjQS4GslHYG+UrO\nux1v7dgzZKH3T2CqCWQE/yDBznyCGll6UujOv3lTE0dCo82o2WJvBiSC2wH+\n1gVs69u8s7iyRqEThq/9o0PZRVj1FnK1a6n9oRPB/tgI1GYzC1wkEgXRqBtM\naDFq\r\n=V9hE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEpMy8lYaqe11c8O4PBc7ePCwOOSLCSgflyTU85y3R+PAiBZvlqL2ckgX2Sr9XcfXSG4TDdXb+2zJ5J1EpvZ41CMKA=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.4.9_1543846172711_0.6543967659174628"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.5.0-rc.0":{"name":"understore","version":"0.5.0-rc.0","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.5.0-rc.0","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-BwhXHxAWQNpSuR5xNgj6b9fNt6qhZLQedu5almfaQgnvPokVKxrx6WXlW6UFLwKyxRHW1pu6m2pb3tz8hjRrnA==","shasum":"20053bb2cf682d94db9c5911d9c3033baf327b54","tarball":"https://registry.npmjs.org/understore/-/understore-0.5.0-rc.0.tgz","fileCount":5,"unpackedSize":43016,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBUFwCRA9TVsSAnZWagAApZUP/jD0jmBVDDnY08IVMlLp\n4lZ1aFoyoUD5Km0PH3KWFFcLoDKTHUqAkZgl3BogNP1SyXv+WoaIhYvv2vqR\nY8G5pe/QrvgM3gXu2B9VMYjWfKLJe2HV93OhQrBx/3AObFoyvls7ccXMi8Ue\n6i6rTBMzrndl0pA1OIWMhf2JxWoKg41DQSHIjllWQJjWiNJf+w3xwywN93Wg\nCQURrze5eELaTEbpBELKVeMK02rpVam+WmwKl79bKt1C5uaPRcbCahjRHHbl\nGpM/MmVYAAx/V4WgG0PREpqP9GXV0i9Lp4xIFIgZGv2GE6oo4bbc85dHBkEH\nqNmdnKXoCv//sMD6GTkGJpJLqiXJLl+EmLYTTG2NrQ0WTMtcvfRB2ahQwaTl\n+C2d/+MhiaxAVN71TmH38BabVYRkHEC5sq62Q5o7V34scf/aYcW8ZBoYy/B2\nLgzCM7BIwGUAAzgYiQGM91rnyInV8bRCRrg140dPh5p09+omdYZYCzhogYE4\n0m9fFvnY2sRKVxPYlZ1DH202w482a8GIemKBKv69J+nq7U88IZWKQwt6Lwri\nFBH86dgJqm3PHacNME2M/zUENECjihYyiNVXHoRYKe5+FsL+iQ5Mx5ITeje1\nnwKEf4SWM7o1o7YszV5juE+iQd98SBkZKHaB4iuxhPRFs+4eox9RqpD+PWJp\nI43g\r\n=ddXW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEixVizK9OEZvuxyadFI1taAQ+eY2END44cO6BgDLoo0AiEA9cI3DqmAvHND/tz4X+mb86pca05WLqRTUD1FuLLTzPU="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.5.0-rc.0_1543848303834_0.06144833983222475"},"_hasShrinkwrap":false,"deprecated":"remove"},"0.5.0-stable":{"name":"understore","version":"0.5.0-stable","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.5.0-stable","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-6InDu0qUX/wFwJgB6eEqpegVMLa3r4Iii7UTChIS+EF9DHskely/17jKBProTTqO6Gks1XsFu7Mq+OO6EnhtmQ==","shasum":"b1fd16b95a98011b924813305bda318d1a7bb0ea","tarball":"https://registry.npmjs.org/understore/-/understore-0.5.0-stable.tgz","fileCount":5,"unpackedSize":42886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBUNVCRA9TVsSAnZWagAAj/kP/2QLM/4YTqYhyyXXYIbY\nrh0FA9CYokUhzYCgvtETyZq5uXioABVaz/gGg6iNrgp4G4JCAQli7nr1uGQ7\nNZD4Iip6ixCrRnIadDQS57jGfIry8Z6HeEio148dCRMl297XlkBuXfK7Q2JJ\nh/qbWRFcFAcV4k/Fn8C0fAMejV/CjSOPzXP+FADiKnDeUpzd3zEt6/iU0UQv\nS40ZuT6yrsB7k0GvcObrLvo0ZV1F1rNxBoOfsgt9Cs8KmzoXRxjzjy3MeuFF\nBfTp+tvF/iUMIugR8HWSAinLmLD6sWtDfFgdmzaNPyp5mR8IP8GNEfwpNil8\nAlpAlhY/VL9r6WJCCVs2kGBsIcmjghWFN0K6J6Ee+IudpqhMJO50SBZbvd/N\na52Dro8a4sLOTrPGwyTq//Is49igNfxPhBAjm/5nryk7d7wDhibSFa2kEhGV\nMwlyUDhwFkyd83RL69Kzd6xk9itUylujGhJxNib53kjivqUmtsJUaiUXTtIA\nRlxL3mp9Cp0A9YEUK5CwhTT1UEXXpRObHViznu6jEz8+sZrkZ4R02RnIslJw\nELc45uiuC3wmt3YCCzzeFHQtI61e+K/Qts1S1V7hOnCFRGE3csonjjgWsIHp\n7ofKx2nzGZjA9ejdTWzaIgPKNFmr0opV+xr6WSntG69LfYexTk/L95vl6uVN\nqUMh\r\n=J3/T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDviYR0GHeyPe3V238xX3E1b00k3N1X8VyN4F/aWDYfAIgfGpZ0iFORDKIa8BtXBBhF2fK436wqq/HRPzE9qXxOV8="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.5.0-stable_1543848788514_0.9020492063964567"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.5.1":{"name":"understore","version":"0.5.1","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.5.1","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-7RUfzUPhMrd31VRsUuGLBkvenR+zYszoKpWEIGKQKVpkABCLvvDBpUfkdAsWVcTZD6MPr04otqwg4xXfi+R/8A==","shasum":"64518ad029880b4492d85125bb9746c4999ebafc","tarball":"https://registry.npmjs.org/understore/-/understore-0.5.1.tgz","fileCount":5,"unpackedSize":42880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBd8sCRA9TVsSAnZWagAA0AQQAJsudAsXe5wngGm2blIm\nzkxbRUHXpqSIVXW9+BKeH7ML0eYfjizwx0Rx9oKNiH9IHVbtmLyXh2Pwh6iE\nnWaLkS4KqcpsvEflgjo0TS3kZJVJXoT5MBB+Onlcttaj0PDXLfmnZW8FM8FO\nzWNVG3XxoeWf+rC+1jTX1e8g2xFyR/Bc3x/TxOnc8J/v8alU3fCLDFvRDN9Q\nDwFbIlK7HrSB2xdgwgRrj1SItd8SMy9PUYA2gv+o4sZwl+yxPjPqda4mNdvt\nzbyzJOIIkVVSQ6bFGbYe80bXBcNvcs+iP1BsJ9/93tjEQp26gP7W7JmUUEHS\nkL2dZv+YnFSKqGEbsFNVzBKt/g87PDdYTXfq4g4ahEOLpJS/ivj26ebHMXWU\n0q29wrk3wmXMge2f7wV5JS/rjX+Q2LvKMgGSLSFt6xYunncepFfTE2JtCKdo\nyBk+0/MxHwHEjmm1tHCxtEZD/pXguItc8CVvhVbQLXCDQdctVJ62EqloQ0ov\nq0JxZkk8zzwPQIjbkzkbjSdPLmK8UFDwWvzS7RuA6HJd6HvxUoblwXi/NPKv\n25ji02zTxPLqYdxFaJuZAZ4Io7S6qFM18+h/41aGjjdysznEy9ZpX+KWqkgO\nw4jxWx/1fp7EcxTfRryyE0D7zHakTD9bHEjyxc731YlFjJq1lY/FcNsO+QZO\n5oa/\r\n=P8lv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIArJs+lO0utIsDFWqBvYCyhTY8o0COJytW7ptYUpEH6kAiEA87MU6cv7aai2t1qWp8iCGMe4NW9ScVjaroQ+yY5q4zI="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.5.1_1543888683349_0.49701400107840943"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.5.2":{"name":"understore","version":"0.5.2","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.5.2","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-0iZLdff+kYhy+0XCcoIe6exYbUj/abhXoyEvzFb2uvl4E8FJxeDkL/9xDB/7opnk488/qMaUT21lIXKCwZOOJA==","shasum":"574dfbdb472ea14005ead8ea812a910448a6deee","tarball":"https://registry.npmjs.org/understore/-/understore-0.5.2.tgz","fileCount":5,"unpackedSize":42313,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBnP2CRA9TVsSAnZWagAAvyMP+gJEsE1IPnNj0ZA6gvFZ\nCPBnZK1CpJRfJux5YRvBZgEJ1YNgGX7QLgohlNP8YMHa3ACvhWDdZiQ5EmOW\n5Rra59XSQ/O9uZEYFLv8gTpFsAyd3iv3nsdYxSTVXcjEGFa+GI/g2P72gtO0\nrx7XunteT9sq3x+/z9dr/FNgmxFN/G4B2T3Ila/s84Ddzvt3COaey/uIA27I\noM3w49CZB4hSOTLRRDyVpEF2AupOMmREQWR1OmajvpyDmfphV1XKSfE5E8Xv\nWOZk3tYBMZc9ojvdwla62FshP9CcRyQUSEDzxSmdEZu6chfKt3RD1rQy607R\nTb3z9nJyfbS39hfM/enNBzAoAZong5IDfljNuImWdUnwWMrXpVRgV7sjoJaN\nVT5DQxMJfgOUSSyErwskl51G/WWqvhO8eSPHgCbXWG8+IVIXYxOecRmbVZ9p\nkDnSjNw4+HE3kHv7VcRBxtDrG0U9wDGLagSM6yixrwE3jpAuWvGwhilgsDyC\n/AIIa5sVotytKvzZgEqiQpJCI+e34ewbaPG+OsZAbEU8jeBuAQZPGQLXYb53\nfQhGJ61yUEjabiY3lJqY33CgOYxcA5+/4NHXB3xbks85NEpG7azls4gIW/sM\nNYXytd3V0ichA3a7xkc2ALddAlBCB+w88xobf6+yY+Hy1W73flmwJx6wiWlB\njMqj\r\n=sXoD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3wBV5zNY5Jm6RgpFAABvn7pfMXOgIaHRfSQJ4leWmxwIgRfUSPSnhWnFCUONEeqTUSKU9bZETkqopYMNSVRKqLXE="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.5.2_1543926773674_0.911684158788727"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.5.3":{"name":"understore","version":"0.5.3","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.5.3","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-5bxBJdLPxhr9BHREylcuV06On44xlUelYBtBfVf9oVb+vtGC5L7B8N0Mvb/k+cO4bz0CNamGedkqvKMJ4CWWtA==","shasum":"0eedd4c7d7c33164fcf8c60a4ce3eb01fc15d366","tarball":"https://registry.npmjs.org/understore/-/understore-0.5.3.tgz","fileCount":5,"unpackedSize":42313,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBnSiCRA9TVsSAnZWagAArhAP/iFPQIX/RyjbFk+e34x8\n5PFB9nlxafHmMO5AEz557PL6K+EXKD9HD9WmzVhEEMgVTsypAocYPJR2II0N\nJwjgA6d2caW+FoUhVolC2rQVzIi984C+ZzgT3iEzUPI31mKS8k5tgH2qDrK2\nwwRi9TJTJxy6yH5rtSc7/4mA2uWIetBbtLKdg/SMS1oXxs0AC58Q/bXwJ3lD\nQ5mbUKBH+mKhoo+q5Q8yzfjgCwW5sZ8Si3+PbuBlXSWtXkVAMgOgjPwvLQEo\nuDQ6dNoqLyVQRaHSp1wmEjyB9C2zCzrNtcD75hbotDyLQoc+aZXmBUcMXFb8\n/rfXgIjJFkfPzQmFnZ6clj5ktNLkUqWwtncrYB1qhscyPKpsPNErQ5pd5ijB\nYVLp134/2lchZYc8cobE3EHpG70udTML2bnJPsqUmh8UpG0qyvjXsVJ+BOi9\ni77zfGmU1pbtLGvepTL0dt/F2BMqgHR0jOUC0vJNfCF9SpWFf0m41Y2VDUBT\nR67n5kj16nt8FXKjkJBvE6Mg/zEWK12C72PDXGjfZLB8n/eC7CLX/+R9Z6cq\ng54+Pr2DYG5JtJa6bWBENSK+SFBgNmI/hyRUMFuOLscwknl+YG1LbneH177Q\nTLHfmklFA/ATI29AJ+pgdXUl7jtYaIDR63URqGgai8eYKhbOMhkIiESVIOkD\npPM1\r\n=AyH3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID+tFP/l0iKFnJFKD8lxMLt/KC/3F7EEvaPhyyL6xe+eAiAA+DS/53ELTSdG3laiAnEHXEgsY9ysipU5h6r31YV+cg=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.5.3_1543926946013_0.24256887753893186"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.5.4":{"name":"understore","version":"0.5.4","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.5.4","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-Ia4hrPezPUdpY0FD8yMUkwl1WIVaMRcctrVvxTQLBw2cdGZYbLTwD4Kje7BXTOAg1YFJxRfz8KoiheZ0GSq4Eg==","shasum":"f6fb3cde6fdd79ec3b50359af36d5ae086ab7ca2","tarball":"https://registry.npmjs.org/understore/-/understore-0.5.4.tgz","fileCount":5,"unpackedSize":42350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBnXnCRA9TVsSAnZWagAApG0P/2qi2BmDRc+naUMG6/yZ\nJEzanFBe7qMhhNgVjm/JGWTgGMBaW+KckJPaiuDDXrfRsYX60OFTLqO9hnub\n0DS9qDs3XQhaBVhZRz6brMPf+9Qqy9d0jyRx9c0mNtnznfg+Dr49RpqXTrLp\nfborzkXhWWuq8RGzjQHXhiPgLHSbUO4EykdCFDnjQVHsmuROA9uF2DsKufrR\nGDOZ3IhS15drFF4H8DyOmtqNzKJIhVuZ0n5X6kkY6YOrAlAbNgdxEDNbBN4Q\nI4K0oLf8oelckQ8aUruajQb0HeC9ms1vUfc9uUIYeRxvCmsj7+GItZoM/Yn7\n+uOlflBiDb+YeFbmk9PH9Oaohz0a1GUEO1BSZ27OGVhDNeyex8PsqQBUdXg+\nEr3jtD4D6uTH7dbMtlbyIBYiaJSP4XnlpgBDLh/YKcvJe/wYD6f0sA6z+CHr\neqD0y6FAmIoJhT1XP0n0t1Bxdtd+6EmlC6SaFtqWwa6Y8A2A8IruOOb1VPsq\nGyUpm28iXHcFhvCoRMoYFlleHpyhLu9r8xDxasUhFvjPGOboKc32XhDejfrO\nljbqyZaOxov0WuXENu2Afk5cu5C9iGZz4TUgqGMGLtjdVMhSWT5JLiontu7P\nxUH9xcOm7NvLH1r0ztD3yzczjX4z26xKg8DEzEAa8Cwbya12OxNbg/Z80RBK\nLNDF\r\n=nNQI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBvXxXimpN/nOe6s5qnd2KiQ8W4Uzue66h3mYQW+/mOSAiEA/SCf55aFsMkK4tsqg4HobqLBSyMyLpTI73RoaVnA4Hs="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.5.4_1543927270434_0.980762790986186"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.5.5":{"name":"understore","version":"0.5.5","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.5.5","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-s9vYHR+hTQNBnSs8mmff7A/iUnFr5F1haga9IG+IV/O4p/crj1nNqb4yK9EyTO4WEtKgbnV4LJ0fpJQx/BA7Rw==","shasum":"8d5af04672ff2c57a80d8399504d7f4dc6512bd2","tarball":"https://registry.npmjs.org/understore/-/understore-0.5.5.tgz","fileCount":5,"unpackedSize":42306,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBnegCRA9TVsSAnZWagAArhkP/2s8JfHI2YHZY0wEj+zp\nqnbUb5a9A39a4f+1QNnnVjwvK83e2lPI7KG5hcUitbd69g/ArT7uW3CavAhz\nDrHU3BW68P7y0R9K+F60D28YgRZ1XfoVDcoGrlo98qwQh+mMCGqsX84SzWUF\nJwdW8orsWNW1jb7XzJQH1XO3oLCqkE+5/hSmiP+TmkNpbe9E/Mzb99qbcRjc\nxTUs97L8MjPIwh2GKgaUTw5VryilLny+QEzZYJB/+kZZ3Ecim5rcKZ78ZTX7\nAcj7Wwgab7FqpxDvBkyfFpFPIVEFaEAoW1kg86OmHbgqpfmWbr7E3WhieVs5\n0MFRSOUMeNs0IQd0Y6LYLSXxajdII+8o/AiiX7DVdNbKsyL/JW0IQVvWLBpa\n16DTsrP/lxZune61+8TuJoJUMz+Cy6zsTPq3egR/WFxrLIPuk7Bx99dcuHpv\ngIosPfZtQbPIl2kXdmCiHk/NF7RhbN2SMpuM9zMToLouq0HUJKqZMv7ctTlJ\nVWNwGXJqxMQPrnsZb8cgnHjKnKoL2dTdgMEnW5i85MWWG0NIRAea2D2Y1M/r\nBTBT/wD+CjiLDTb2XqprkF9TRghiYbqZ8bnFuAhLd4oWZq8M/4unvEB2D7SJ\nRymArgB0FdNowXC7YIGsmrSySen0P8q9aShTeC1+hdOyTvynlauKFAGFVwiv\ngfpk\r\n=QmAD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAvrQBuwAQa4hjEaDIo3cJAfEsTDLGFAeSA6MHtvGqjpAiB/9Clz5y+eJs2gZmCSJffsPFiUb/Bb2YnT4oq6Yq3C5g=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.5.5_1543927711739_0.8669198268626466"},"_hasShrinkwrap":false,"deprecated":"clear"},"1.0.0":{"name":"understore","version":"1.0.0","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-F37IQx8h0dVkcf7Pc6xyABsIQEhbylxb3BgxJltDTDp+Qy+u/HIEAQ74tv+HYxLXA6oAixqFkkXdIITyLvSDlA==","shasum":"8b9b50dd05cee025ae9903b7636f88e1c5d172b6","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.0.tgz","fileCount":5,"unpackedSize":42938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBnh9CRA9TVsSAnZWagAAPmkP/j3Wo/otjgu1n7lspu9G\ntJdnpafnRO1HafjAozwRtcaRAB/zuiKj8Ausao/a8JIeFQNqvwvvSok58JtU\nuiFCqOX5zfvYSEauS3U4YuK4HpILWJ5z4w6fMalCiWLLmCZpMSdSgijrSBUm\nVhdeCrx4hLPKHiiWtjzd7tdSPI4VIFXIqNWQCBb+6t41USYJ8jFK7BVommtN\nrGz0TbaT8A1iS/WXSpVF49M6OI+xtro0k60NJZYOutAGR5sFE3DlvMTugJYp\n9rCr/IWNpzcuD0G42LX4s9SEFzQEq174JSjmbHf/vz0EQYzU0gdMKA5/PcBv\nF8jncUCGou0oqM5udN1EUM03mp/G/cT/RxJCxsaC+d1AWVLxWBTC35C1yjxk\nXIUiqyDgnTMRtnIWS45ShfcZppP6qRA8acLZ02amOpqlpsGp6hwSpNIDTi4Q\nCnv8X37l/U8HgWcoMQsqwRN0zXoMFA3WerUFcBBg+4Nfi8wHJSW4r6xCORSK\nOF2LUx86CiCApqgixfJHsHbYLP2JabypqjexzbivSZiHRF4nB/ZUN+lKl/tX\n4+1jlmVUvmxgtycfJP2lUirFXybKx/YW9Af78VzTRimmybjZyWuE0nH8pSEI\n2WJk+oJ8CmcNIfm4MhqqMXvAQ5i2mAYu1nMv2IIv3rGlf8L40DuPdseZRNs0\ncDpt\r\n=44Gk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD67ipiRnuL7HF4bHZAOsomxBqRiLR0Wk7oKXkY9IIRugIgWitlvVC+iAIZ+Ty5AHlNISDvbH/zplBGwuxXTOWWY7k="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.0_1543927933258_0.1634823413539126"},"_hasShrinkwrap":false,"deprecated":"clear"},"1.0.0-stable":{"name":"understore","version":"1.0.0-stable","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.0-stable","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-74RNVOu+aDuam5rAF0rJPdlgzcDCblJ5YfPbKJD/ssLBain5od4SDHs8aL1UNZW7ftfaaKQywL9WoV2620QoOg==","shasum":"bffabe755cabcf901b6fa3aa07fb79dbf347c27e","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.0-stable.tgz","fileCount":5,"unpackedSize":42194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcB3j1CRA9TVsSAnZWagAA11MP/iJs1XOAYLMp1RyBfmxG\nAhIombaBvU0IX7R7B+/PgH+UylDCvgB64+7NJgqEkdVmWqmmXjISoDjakesW\nFRyLmGDsSL7bqVJAQO3rqqgCkX5Uzrwz2LX3CKNqFhN2L3rB/xt8Clo3gfjR\nrjm7iSuiIHUtrGrvOVy813HTh8A0x1UbPtqy4H5lzTA/U83NdCCiHTTPR5Uw\nO9zRUnOssBSIvz0TWASXhzVvQFRWYA5FZUt/gTgl79vKzBYMkOhzaiSrA7rC\ngIKEXZdnNgKxcWkuhm787wKzRo60xlI4GEN0NVN0bjTdRLqrWiWZCt7cktdz\nCLKaIQymwWEzmABjgPOQ+duIvwRIPSEF3eU0mrXhdiobJDugCcFVVhzjpUnl\njh6XdmEGoC8kVxIRvLWy8JOMCFBzFx9uB6zqNw6PEuOYkdLMUwSS7TODYuT5\nZeDL3icQx8xbCy6+xWLM3q/jrInRHFkPkutL5fUtnjOPR3Fzt8RzCnZzFXsL\nCyURB+aDYJvGZUGrPR1hYdGqLhVmx1RTK/8usLLEzGPu0CDi7vJ0IpHYagbj\nGIWHOm77NtIzNSchbvPHz0siTN96isK9KjXiDbGh1TdXhhmWWqtC7OxWn0l7\nChhfUnbjMlaj1oJWFjqv8BRDjxW220BitdjupLjoLZJeSPDNRlso6J8JDMIO\n1cxQ\r\n=JwzA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDD/amrPRv1y62lZulcIaq+mGuitjZw4DYlhM1mhoVYSgIgSietyvWswP+eQ5Hn4HJ0HH1Pvj/MrNvfFLBI0Lj8erM="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.0-stable_1543993589166_0.3938057532381065"},"_hasShrinkwrap":false,"deprecated":"clear"},"1.0.0-rc1":{"name":"understore","version":"1.0.0-rc1","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.0-rc1","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-8enYl+OADmuu32Zgeuymdpt8p8imkrIpQUNM2CwE3M6QEKubBWL+klZbEt8xznZmKDQFE//7JjIsaZzgoQYrPQ==","shasum":"275e8ee759cdb1bba1adeaf4be3f648be781e9bc","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.0-rc1.tgz","fileCount":5,"unpackedSize":42341,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDzi5CRA9TVsSAnZWagAAh60QAI7DuLHna6jV8R34nOmc\nK4IPQAKUaVF+rlvBFxGWjiARvQjg2r77rUE3lRABwmikIFyFkdnf9VFY71f/\n3toc8k2TmG347M7OWguew/2/AWweyBEyl4a5tQFbrTywwD+Q51tLgnr5fue0\n+EAzKpTcp7v22Z2bIVky+K2L9rvmeGHYOoTYhuP0Vwk2dWg53QWkmvqSgDVU\n15DP03Oapsbna4MbIZvPfNH6m0M3oBssiaiuhuaDvKL/4n6wS4GRRNu3j653\nwP1sjfeeEJXvj1O2HbCm00GgeebM2v2/ED70qd8apxLB95psRPF5DOwQZcx9\nVLwC/2/gsfuRLRVJ7hkPRCSDWfxTKg/m7TK8M6KMt2r9m8UIujOZXxQbju0g\nAPDR+7j53eynAKk/dOIOFW8VNdhBchZIneTjX0eKv6yBdnFr0pfamFCkW9+z\naQsGOP5VehrfGfSBTTuEQNTCxgUQuxHKz/NEEgvc8sODOJYcwPYUFsdGZXs6\n8CLPJWRWPxzgT7pLATrpo8jKumcQlHtzICI404Q4Ex4uZDVooTJXTIPiQv9m\npxJT9dZAXtLed7y7iSdIhBb9w4JkA1zoSvDbgSiDkqHbLUDBiZGnR0T73FiS\nP84AP38CL+GnoMPkOZPkeapLR3+qpc63Nggdmk/hHWR9qPp3hWWHCgJobxrO\nnpxz\r\n=LUqA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVa7uzLvLTuVkfLomWZO7TdLCExgKzYjAmTTIIMANoCwIge3YqlxT/1aUWxNaIOY73d8hMT4g60iYBADwvp/U8LhQ="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.0-rc1_1544501432068_0.14577139364955283"},"_hasShrinkwrap":false,"deprecated":"clear"},"1.0.0-rc2":{"name":"understore","version":"1.0.0-rc2","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.0-rc2","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-GoVylDKpHodrCkaIW/y5XouFWQS06c/1mtNgMXL9ZzfR1vFouMcTj9k79l5JvUhZwHVkZ4Qap47TynesVY2M3w==","shasum":"871e7ca8ac6123dc97098590f90a9fbb4177cb77","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.0-rc2.tgz","fileCount":5,"unpackedSize":42832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEFn5CRA9TVsSAnZWagAAZIIQAKI1z8kMunOPdflNkTW7\nUhC028fB5WSuI9MkgBXXGYYCkVkpbfxf+IKat3CWMO+jpKXkkG0mZ9umVWgV\np3UwWHTQRs/Nj2Vi7hyHXdi9Eeqne5acjVxVlRPFMlHMcs1wmJfyzbcbqv7M\ni1wVkvZExnPspIWAY+4cAogJVWqt1ucCMcoRYUm6KS1NRWTzFc6sjNHqqVWu\n06mo3WbwUcOFNLnS78zBzzfyqwMZs51r82qL3CHiad/kQXIVu8iJLtxpiuK6\npbLBi0VyoIczmux1fxt4+tPlXNZJ8agP97sFiKf4OTaYUH7BdhWHyPrFZqdf\ndCE7DjirYBcLpBqEo2WPTSUKKHdWAnLwrp1Ahzilf5HkL6JVs/kgeH3ntCvf\nF1UIiZkcsZds/DDrefLm3FBNFfEZES3mxaSTaRCFmBIlTSP73LIBXKszzq3A\nl1iXbwOoF8KS1fAGk2HCsY8jcAao9Z81vk2TrWaBXY7KfvEapTNSoxrxwgAw\nw93S9bicv+IjO1mQt2ooLMdEw/8oETfbsMryg9ByTqHxUCUU0lGQUlzHlXyp\nu0q0Cz873xvZsHfvu6t3gzBYs918kTwZo2hmwwx+PVtv/9CXGHj7et0YPexz\n+NIyz/SlC4c3kfianx5y7jxcXh5n/hFaNkWgRL/SCXvi+BUap42G6Ylsp2S1\ngXZq\r\n=RtB1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA50uyXEJV0O2siVBlLAf3owqy3r5/YTF8Dlbd3r76DBAiEAhosuL4AZkspaLno4QWjsO1q2Ii9i6s12pmSyEFEsrHM="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.0-rc2_1544575481014_0.46542656813695626"},"_hasShrinkwrap":false,"deprecated":"clear"},"1.0.0-rc.3":{"name":"understore","version":"1.0.0-rc.3","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.0-rc.3","_npmVersion":"6.4.1","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-8XxCXvcltqXOMiQ8wptE9G9NeGAjRybJs6Zcp2E4ZK+hIdIVti/4BZeaiOREESEIjyvhuzp1zBe20CkcpfF4zA==","shasum":"83deb35b42e4d13507cf0d1292d900b7e82432ab","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.0-rc.3.tgz","fileCount":5,"unpackedSize":42952,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEJQDCRA9TVsSAnZWagAACLIP/1Z+rLkABoYfr5AW79zz\n26QC/vEEHN1hFpFLGeU9BctILFvPAX5iEkeZmc9f+FvtGG2lDi6wDrTjjxIv\nt1ySOjVIdh+xbOne7W2M4CcTOarvg/lH/CfTVzjGntqrRkBg3i9HHK0r/FHm\n1rde+P3Q86TZtuaGzucZo9lEBzM63zpipSb1S5Se1DXCQjidFnDtSQWX8KCH\n83T69jUAoYh4bbvx9/9IGldG9qaqKJlFgM2idVARA5jDuNClBjItBfYJ8Ms/\nDSTNk0iUYi+Q46NSe7d/R+NR9zE49gdAmS88EweFPlQNt5qlGpT/k5YVgzoY\nffC4IFEJj7NtGmNdH/fHkI0U1Kdj0LrnVdOeTD4j5flNZvQwMZAyjUlCORf2\nvzR8WVF4zY4vN9sjTnuQ0cvIfW3KAaaOK93OCAk3YON3p8vCj3ukVVODpOT4\nVzSpcaLVHJNgI+8qVDKoH9RZq7RL4nUQpzet/TFjOQWSrWVbae3GOQlLJSd8\nZaDjiBM0QrKTuUqESRyiUo/DLLG+rpUdDgQzCtUwvXxBbOCNAKdadsffpElo\nrBsqw3cM1+1TEMUrB7PF+6xWdJLRpZYW/ssaPo7dvSD1gEVzZNDCpfnzLTPS\nuVO8gt8UDfsUsjDji1kmJvnfGyySSJW8YVEHJTUYiuWHYAwoDYW9079F3CV7\nzdZm\r\n=iKhk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFT+q9/ARL6zuB//KsPpsp8Eb+cTzybsWbopnF99BsdGAiEA88Zbn/H/xZ2VCnw93QM0bYBdPoZa0zq3oPSVPX7hrn8="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.0-rc.3_1544590338533_0.7127429608038229"},"_hasShrinkwrap":false,"deprecated":"clear"},"1.0.0-rc.4":{"name":"understore","version":"1.0.0-rc.4","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.0-rc.4","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-8Zn4Kc2fUrWx4rMNoG+cWiWraqgEDFrD/8F6qSSvJUt6zeN65lioh8fPQmperOonnsJjY5QpY0DBs980ptOkEg==","shasum":"bc801da15cd5d258958bae83c1615bc0ae96d6fc","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.0-rc.4.tgz","fileCount":5,"unpackedSize":42930,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEJViCRA9TVsSAnZWagAAEAoP/RkkjNyvwTXfkED1emof\np1qLokmQI/47CxUUQRec97e3YTycM4MizuCArjD9T/fwOm5587WqMtnlhFs/\nywbBd4mI5tUy2kCN6Vg50tQT0hY/Nez1JnUzreR/WF+TQsugPlRLygEP6Z7h\nD3f58Ej5swlWYpxm4KQT/uNJbCVv8YBl2F3cHzEOruFj3VadCKsuDvNVahN7\nptYJ1QQumsutkjfC809PjHWxeUkTMT2nwpvVkLfxvuKwR+fBiLgbyX0EdcG+\nlfSmTYkN17PzmnfCtKw/S6Xc8c0f3sUvfqXzrLSoaTdvJ3Dp6hP0bnrOIYhM\nlfHKILBSYCAOQsXlLq8ROVqhZrncAkViC+T6Q6Q9+s3cuJ7tw4EYggg+O8L+\nAG9IYdUhgQKulT//BFAYRpMUhAytz5GUz3OKFlTPbmjmEthjVfvIdIhXnsV7\nd4txMFXUJ5Kh9kGGDhDwwFPTCs2SzR6nUzOur6b0GDPP4pzIUyq0FfC5Z5Xc\n0Twjzf1wXOB9eWaGouqBBP0d4v+B3AsxsQYeZT+fW43omym3A9hXv8Ga66HF\nsenhdJU+2E2MG9a2jvc8LW8boLVNsfoZC2rh0RrIylOTOsoWov9C7Glizn6j\n2IiWxQSJ2tEFa2ltUKugAAnEofBLmn/NZQiWp3vcyBV23hcDWthsfLRoWZIO\nWish\r\n=h0bW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZwbrIMYV+udcq5w7DRzTp9a4/rDEqS2rXhmerXSOoFwIhAJ6y/2bnt+9w2q9ZMafnEj4fxNQOg8y4jbrcRq3csetE"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.0-rc.4_1544590689403_0.6008045471472778"},"_hasShrinkwrap":false,"deprecated":"clear"},"1.0.0-rc.5":{"name":"understore","version":"1.0.0-rc.5","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.0-rc.5","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-M1xYBx+BNTP9mfBtidNNodIFW+wH1GiN7krKejvR2Mu8N69PexqqYiMfmasWIevhNcuTeioBE98KbJq3vQw6Aw==","shasum":"d3a0a0a0179dee69c93c3a72083d3376dc282050","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.0-rc.5.tgz","fileCount":5,"unpackedSize":42778,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcELmZCRA9TVsSAnZWagAA1UsP/3xQ0DnQ2hNwEkFkl0yc\nk7+SIWJ6f+UpP+lAeQ9KG/5OSVDBNOBPltHVvE18LK3JVNKpL4Wcwj8JtuHg\n5j7LP+guF9RH2Q2fcTB7PSIpOAPRGJpdXKfY0jWS1M53yoo41tX2RgiZqQWd\nViCGpuBFKHwwzAy7TEyGhCa92HxmCLWahDY0BXpPGy8yUQVtSoseB29SQdbL\nlmZxaQHlgSyjvhOfC9ntVVQIcNqmXnNbLzekTchFE6sdZihnEfGwV7dIPjIX\n3Ry2q2EdZqCZJkyrgneAGWWrIvc25FshifQtOOeAR/nnfvzcMnhIoQH1ZXqp\ngc5bs2vkc8Wg0DeJf0Yb1ukv21RH5lOHAPYKO9NPJpQLcUJR9VWQcH+KVxIn\n52fbPJMa6Vl3OG2Yi25L+fKZtGfMJ1cKRpegPR3FVSNGJkrppF/pW6P2uret\n2IE8cWLzkGp6r0Yzx4UoopNwPZSIgjPQtLNjzDcWK7GNdQwezKhfgmBRnYLo\nmxpdfx7UuBPm0i663jKG3j3HlrGpaks0ZG9KpFroM1i+I5UNQMEKkIx1YGKi\ntsmPEkxlFa5Ke0251QWD5MBKC72FtKI8O8ipY+tVPiMlJedhHHTN8tLYKltY\n+1ZgBLbDnf7ef4dR5nXICxcEfR4fIabXaxNWKJNOhwr1ClxjDNwVBhaC1cYT\n7/By\r\n=5xWM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCN002mzKsNaTHioA9UMWzFuUjRPUmhipITq9fSVFyXoAIgbzwdZ4T2WxeC1PcTMJwuoUM3mHPVibeRO4UO1lMZZWo="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.0-rc.5_1544599960412_0.9739259172037664"},"_hasShrinkwrap":false,"deprecated":"clear"},"1.0.0-rc.6":{"name":"understore","version":"1.0.0-rc.6","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.0-rc.6","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-otgSEiBnC6LBMi37ZE9f3Q2CCcwvvopcBC1ad1PTxf9hy1x4rvuIJfw+lhsm3yUrOJ/c4innPQGPjpxzSFHHFg==","shasum":"2ceb3409e467fa43d7cefde8872e16a202475476","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.0-rc.6.tgz","fileCount":5,"unpackedSize":42780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcELqsCRA9TVsSAnZWagAADSYP/juAH4ttCsi4UqgVIYkL\nL4HPGcYtCSgp530ffVG1HQoB9KSp0BX6Yf3MJWDu6W4YmO0X8Cigs3+G2wc9\n+9eR8Z4bRvqDiahNSt+2AJXPx8LhlkweU/Z3wEz8MUllzY33O12IN3Jl5DuH\nY9r/urHMkV1GwgJ8I7+tzrNdd7b0dgxcg4ElsD3mDd6dK+G/sBsh/N1vAc+9\nvvJNrLVne2+vZhSZkmP9PZZXxpXPSNLwlnkg94dQ2ncnZmLak9pUZ7soOdi7\nRekZ8e443a+tPjKpSFs7bw8Kve0OHvZ7toVfd/rZGJw+wCwRB0KaCEWvFqrd\nL12X4lRESANeOuKMM27GA0Xg5BIb4TghrikH2/n6CwwCRssVDUq9FOTYgydw\nuENznD8fo/p9sMeha+CwCxjgJV+/OCm95ENAaeEh+sAouXkd4O93rZijpihN\neAlDBda4/fTqKYP9CkOqKKcjN/ezn4E4CPH1CfbICTp4YI+Z6PCUwVgk9cH/\n++bFD/n5pQ7OaZZCDn+p+Z+uKSBfsWWlrfpKAzL0cstHkN7WfDRRDw/YVbt9\ntCf/jxAdjUGt63xrBsMACD3u/W8Cqbc/gPGBvjfUwrewnvVJIddNzZXqwHol\nw5AhLb/a8AOzDrLnDF0IQdqV6FtmeaiH+2ze6ibFRabmkzi/5MEjC3QPFTro\ntu5+\r\n=3RTD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpKBF68aVUx93BiW01HHc3YOG/zxRAalLgcTl9ihaiUAIgKzo5BE4WpF9LX/ZcPl9G4UvULjbEYwizCPbw3t5nPOQ="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.0-rc.6_1544600235484_0.8597102576061568"},"_hasShrinkwrap":false,"deprecated":"clear"},"1.0.0-rc.final":{"name":"understore","version":"1.0.0-rc.final","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.0-rc.final","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-Qk1+aKUMdK0wYcQvY7xi6moQesfTAxo/0fzazmpVYhTcP60WenNAmKELdjsTT/MEf41RAtPXryJ5vc3D+8nirg==","shasum":"3ac4ed5973c6bbcf880041edb16f90a7a507e99d","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.0-rc.final.tgz","fileCount":5,"unpackedSize":42784,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcELulCRA9TVsSAnZWagAAvA8P/0PIvRukVIA9qAWps090\nJcx9L5JwDgzsmb+fGb+suere/fc3OUI1wJLiFr2/kBfeeeQSiDkma/SvBi/f\n80Du0GLPvdEVdlKK9ktzlaLVVGN0BG9iPu52loeQ9o7qlQTiOjW8NRO4g46P\noDF58z2X8FWujYFHbUjFe6/z07ShZxPI3MFoEdVOCxs6RjbV+zcJqa1MfsFu\nH5AAeTE0h13kZgX4ct776rblMfXM2Mpi5ZRAIuFqoRnJFYV+ENteQ4z7Ofe6\ntHTaZgsHxq7J6kTyfbI3/bes0oDZFPnh4S3sGotKKi6BDWPqxvwChQM1haT3\nLGEosEYVXtNkjoouQMwDrJw3aghVBKLWBL/yjtxENWG9dq49CiQx4jYCXcWC\nT/3Y9QskvFD6whkSVom9y6IDljE4/mbib4Hflz3rE1A3LwpnedTdpNPk23cw\n1zetAKZdkhXtD9w25LA5AePoptdsNGC1KgLDtxkuar+2TESeyoi1JcY4CJnq\nuwMXqfAuswYu0pZmArS7AMl8yOuCN0EGzHZyVL3tIQtMk9Vaalyg/txCmnDr\n/XiSk88nBWlIyiO5U6gCiPeZDCy1ZmjVRt2bOnC9qYqrOxBarhTpyWd0wkzK\nd1e0PWoGXs3aUx9lyCvzmJSZAHw13TlY2rJybSoYpWMsWhCmpvS0derKnPpb\n7/jF\r\n=sSJx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFIFsR1TM8UIfmsMozp8kL0PY7fghS++3X7V1kienRYRAiACcotj2gbxEfuFoMjk5NL8Jz3N4By2Lga7YPkk6gqpXg=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.0-rc.final_1544600484210_0.07837586946176378"},"_hasShrinkwrap":false,"deprecated":"clear"},"1.0.0-release":{"name":"understore","version":"1.0.0-release","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.0-release","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-KPqJKcrNOg7O/VKMBDt0pJPc50XxOXjc884crTcwZUO9iSikXvvg/Omf8INaLFu6aL3zPcu9pY1KQTz3tVkbbw==","shasum":"7108615de88dada2eabb3640beab332753431da9","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.0-release.tgz","fileCount":5,"unpackedSize":41779,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcElkICRA9TVsSAnZWagAAJHEP/RgFlBfpIYLwIgXghqV7\nXwYtLepPkJKsA8Wda6mA7z2dWm3z6P8kU8nxcm7vCdQrt3Vfa3JDSXIJ56ro\ndK/JI670gNzWp++88n7woVsc8OKtTtXo/IPOLp+WFRltfF6/zO+DNQFk6yaN\nYfQsmIyP3IdWM4dVIfwsdkFPZEIOBFk1sdIGuZjud1R/JiPoQYeNgpGu/n0s\ns0ZcvF1a79mklRfmUDc9+GCK0pqOjz5cTgJyIFAZk1I1SbmfSIb8CruTrJGz\nIjsCuLr0IoHHFXLvepdkMIvwXDZ4WCPHHSSGKcsmv64LUEShAyYv2Qoq89ze\nv2+VVFJrsWEPQRLK7X0adV7eOvonckruLaWF5ked0sFupXSRQ0bFgr4kgsDn\n8BO3jJGhvim1n6TXi+oT7j9qTNjXdZmEYDExtv4HmBxTVmVnwuVkXYYkWX/+\n+IgITR1c8yDUIqtAnDYv0oPsWMxkp56ZusDBF4JY/jtproS55Y7yOEO1ktde\nBDChO/1SYdR0klxh4M1axHIAsqmp7UkV2/fcKgbqH/kwwwlH927KsuJFb6Fq\nCAvaYhxGAWwLHKkHXU3aplb9b+KTIVTKGgvF5/ggea85hk7YAy760g2TPiY4\nEP8tH0LCq8LMAoOPfpLLNLMBNk3udwOphQH8aDc04Kcly1A3OxcTr61mI4rt\nYtC/\r\n=l8TA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMsRd9SAjut0HgzcDU7CtOYvP6jBs4DiQm3KmCwqhuuwIhAO1jeA25GHvS+EcnYGpQJjQVARvrebitDEnfUXHNivIO"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.0-release_1544706311755_0.21098922058723946"},"_hasShrinkwrap":false,"deprecated":"clear"},"1.0.0-Release":{"name":"understore","version":"1.0.0-Release","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.0-Release","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-E/k2t6zSfShtcwo0WutUVPJnBaHeFHcRzL1RH1I/GeSVai5x8DKj/w4RlFmV4OjVCK8buIR/CDaJ04csfnpm8Q==","shasum":"37a226adb7732cfbf6c8e3a74226d5b6b4991c8b","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.0-Release.tgz","fileCount":5,"unpackedSize":41779,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEly1CRA9TVsSAnZWagAAGCgP/A4+eleXNXAkD7qAKqJI\nW7b0ZFbnOUukIE3Ff2iA5l/9B4UprJ6/J2z/vMwO0fjZ171Ih29KP3ujvJWY\nMrYky5XECDW0nAvxdpPcz5B0YR1LDdiJf4ICi8hA1rdUN6WhxyDIPPQOGVn5\nCuMt+pe0I95MLpVgp2DKw3jER0nNZDIx6FXC4VpTYtNwwC+cAOuIyeDlnSPP\nclkPFfX+uvAj+cMg5lSjmPnGOEMvBsf6vtfaBfKWdnTkv/B7SbiBrOMVsotf\neUebHWYaP117VoD5IpR+0bJTveMnBwZGInccVUF5D4wfF/uxiT/z5rvaVbqa\npyI2pE1yQ4mk8IpVSEDyuq+UBOT2t5dOG2YgbdCtzDVWiow9r0emJQLshAng\nxpDYk5qeXePabqx9pBjNFxGjlKTtqFX4ZF6VW0Md+VwgQ5O0ah8q216XAxVv\nUp1640ZguFSkME998POmwhQokvAkjvEYdEuKdPLZO07I8KDh64oAv733Zt4p\ncuJ4sj+w98bBP46oxm5aVg6Sy/c/qRLB0eGldTFnhQY75yibqKXR6sAPlZ4T\n99QX+nY9ItgNNGJkgn8bXpbOxik24V2E7neC4KHjfejE7Llfpf3xnJwly3+Y\n+OZeaAEARIr0qvkdq2/ga4MWZYW+GpkcJ8Lg3mCY5FTA02eHWXkCG6R7aIqm\nGvg1\r\n=x2G1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFfMvf29CzcF6Do5eMTKvAYwzztA51AkSRuzppWrHhSQIgH4x3rYZi/rQi15z2IFQgzaMZMC7gsQeaCywVFtxAfPk="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.0-Release_1544707253317_0.36644996184657885"},"_hasShrinkwrap":false,"deprecated":"clear"},"0.5.0-rc.1":{"name":"understore","version":"0.5.0-rc.1","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.5.0-rc.1","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-jKNO8NNMUVKGRkiTgITqxl1cwebwMyCzRgNIZ/A2ai+qae4J+acY0Sii8QUik3aczJHd/rdaYN2dvVXJb5ETbw==","shasum":"da592d58628773692d64f26b4028be1f0a7d7c69","tarball":"https://registry.npmjs.org/understore/-/understore-0.5.0-rc.1.tgz","fileCount":5,"unpackedSize":41773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEwOpCRA9TVsSAnZWagAAB3oP/34VrT6JFDmSqAHzjeaS\nQSH+rtyZ7qdwuJbAXurZaWZtMB563JZdQk3Mgcxn1EXXVm4FH5pBFQxgm3xU\n6X135fazweZQDOM5wfLyUOxqE7F8w3JBIkVxRyMycnlrjvbbERiKpx0XvQOd\nHu5sjyM3CnuGtLSvst7cEX70KbDlTkO6AckeGuuiTs+mrCUyOb9VFaV8i4YS\nFl6cItQN+woc72+o8YalUuD+s9WT77INY1T20XaikSacTA/v/rFT5FGTkTRM\nDquBT0+Tc2GhpX1vomKDkeUHqsELQrO3I2HIow6Qqc/farih2gVad7jF5GLp\n8ricIKmIHORky3Tpi5hsrksHQnI9dsjAYCXduL/bmQXIeaKIlyKdqSQ7krGu\n2C3Baf4c3Klze1Glo9ul9ZD2K8vmClNYIT6uDkBFLuWVpVnPpArcVZLnzW8Z\nEma9UNy1Kipqfg9D9yCWcLhl7QY/9DknWxtvGaYwXKKyEkzwtkr5R1YLGR0Z\nZNBRBcEUKCusoV4sUqzL7tf7uw6Vcwf46yl76hdTeDTna4NxU9/0RHYpNNo0\nc0cxogDBjE4Tx/C8rUwXrvpD8TBdHENHxLBrhs0+qhVzTnCnPzr/GXQ4+II7\nuV36RrxPUFy7OxEWPYZJK1no2D9n4cVw0/sXE31LXJJUNdazDwnIkPaDzRoX\niI4d\r\n=YrQu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDC7TT6hcV02QXC8cLLWDyDRSVP/nHETO4xGmblUUGeRAIgUZxvi0gLqMECBhhON267ZoKEaATYU+8nymkPuZ5yHHg="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.5.0-rc.1_1544749992813_0.4862489628891744"},"_hasShrinkwrap":false,"deprecated":"remove"},"0.5.0-rc.2":{"name":"understore","version":"0.5.0-rc.2","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@0.5.0-rc.2","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-RFUNeG58CKen1QWV731mpJntioWUTLDeeVlnqBsS46shL3++1kZ0ujaoAmnCFjGPE2IAj+Z72bybruLZ9mo2YA==","shasum":"72bbfe819e6a7e91f590cbcb8932711ce94d957e","tarball":"https://registry.npmjs.org/understore/-/understore-0.5.0-rc.2.tgz","fileCount":5,"unpackedSize":41529,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEy+5CRA9TVsSAnZWagAALGEQAJo3v7d9/GQm4HsylnA3\nnzRdfmu33vEmXMQiQQd8rFU22KJ/WPoGDYYD5ZMMsm6rbnQnzSCpCyxMQnCl\nVkGWXt5rhL2238lldnGGYvUwzXrLVjXlb0FEYRerKNlZfOz6cAJpgOhCbKhi\nQDcJD5v4OXn5PDjDqq62pzCAiz8iFiVkLKg62gbJNgGmYmAyqB2/Gk0Q4LBP\nmtCajwwcKNszBH8MwY2eU5/o1XWFD+K6JIAkJ9PJctx2w/t0eKGvdY3EG1l1\nQVtntkmzelMloBT+YE3nsPZoTaUsBaMHqLLUgufW65C+vMoQh9jPDYIDIWSs\nKqK1OcodtJVK/qeM6k43ayxJsUaCszKTTyzC+VTOu2QUszMOBFeQJ35HWxlj\ntXjutlukO8orXaJCgSp1DMlEiqqcSEGKJwTMmkvcemvrpYjepeWZy3eM7peD\nbbTJDmjZw2s5xd68/RvVC97f4ZOtQZCAfcgIk3cy0hVlbePjLIA4D261ioBq\nTlwzk73jFLkRafCvnGqfmq5afjljzqDlibrHISMdWgBi+UwMvvCzQgZddpZl\nT/VRZrk/qs0BgZVgpIBAbh3Ws7wc+nlOqGfdEnIFGB5f4Jbmk+UH8jBTSrkG\nzc9D4vjt51hnf/AVxIPsDMiax9AE5FfC1n1+r9TYCnn6HIf2234epf+YU6eQ\nHx43\r\n=kYHE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJlY1F9Xl3NKu+v0WWFmVoTh8N3yto7G6mNzS+DEzqaAIgRhfFnMzzVjuqLcYlAJgvUOgsGaura1wBUKum5eTQ0bY="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.5.0-rc.2_1544761272968_0.8943030976574697"},"_hasShrinkwrap":false,"deprecated":"remove"},"0.0.0":{"name":"understore","version":"0.0.0","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"## [Understore](https://www.npmjs.com/package/understore) \n\n**5가지 함수로 확장가능한 웹 컴포넌트 개발**\n\n\n**[추가, 가져오기, 모두가져오기, 삭제, 모두삭제]** 5개의 API를 활용한 개발은\n\n확장 컴포넌트간의 상태관리 및 유지보수의 용이성을 제공합니다.\n\n**백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n&nbsp;\n\n자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n>**IE9** 레거시 브라우저를 지원 및 chrome, firefox, safari에서 사용가능합니다.\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용됩니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용됩니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용됩니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n\n\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 컴포넌트  **getItem**의 확장 유틸리티로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n=> [Array Extend event object]\n\n\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티로 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@0.0.0","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-djHxlAqlCYARSaTCHjYFvi/Zi+ajuEP8pnv+eiIoSjep1qC8X8wtC+fNAIwtW3mdJfDrFcouEGHUFLOrc1H3wg==","shasum":"d91b2e98062234e7bfaa2920b89a954234363b9c","tarball":"https://registry.npmjs.org/understore/-/understore-0.0.0.tgz","fileCount":5,"unpackedSize":41524,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcE7odCRA9TVsSAnZWagAAMgYP/AxDSKYojaGQ38yRN0ij\nv1ACcFyC5UNP12kuTySfPOqE/P+duOPEgdgwN7McKaJk4wK8zK4vQ89/1UZl\nZpO1I/5ydvmAZKzycYGg9aEcVulhYngQ25+HfaWymrT0zD8z2utXPG4nt6+0\nZa2CHEW6qVOzBTF1+wRiD88FJjfjbu8apLHQ+3q3ROJ4HhN7wEF4bKQLvkRK\nAxkdlhAe0zY+gB64dMYeqtcJI9MzGaVQUAuXp/yIGMN9EOQbEPja6eLorvT/\nU1Em6q1k2nEIiBUjIK9l1qSQVl+K9du2YRTjZyA4t+OBROVtduQvIyB6ijOZ\nydkdGRf1CSjWUu8pJ7wYeXilkpxA02Fybf0R7iO67YzATaqh25iWPrI2TMNb\nr7LdWzGcX4UJcVvJYLZ7m7mvAskG0U4i++sb85+rTjC7PUTCvmlGYRZGQLcF\nsPGKYQOXA/ezWkiq99hoo2DCSImIt/Hh0hy8tmB3z9l3Yx2rq2ueMWiMea/B\nyFv74ivK32XvVTULl8bHCyNROUMzj2V08EYqRmEKYsIjoEG3ExPcljcy3tlX\nOIm8Guyp70IygLO43cg2UkvHwWWd2fsCmOoq9RPBMlB5N6uRYWEcyivIIHZd\n8CEWCfBwXQPNlpmo4ZNJyrhBTXTWmhzNr1wq1cDi5Kd3dP+C+UVSI53Jyd3i\ni0vd\r\n=K0xj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE13/4ypRQCVUNYfkfVjKJY3ccckPKmonHGDG8DLJvPhAiAbfvqREh+11baN+vn4luIc5WXPPJAEcS0S7/HOPcoTRQ=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_0.0.0_1544796700756_0.9747658126430452"},"_hasShrinkwrap":false,"deprecated":"remove"},"1.0.0-rc":{"name":"understore","version":"1.0.0-rc","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"## [Understore](https://www.npmjs.com/package/understore) \n\n**5가지 함수로 확장가능한 웹 컴포넌트 개발**\n\n\n**[추가, 가져오기, 모두가져오기, 삭제, 모두삭제]** 5개의 API를 활용한 개발은\n\n확장 컴포넌트간의 상태관리 및 유지보수의 용이성을 제공합니다.\n\n**백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n&nbsp;\n\n자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n>**IE9** 레거시 브라우저를 지원 및 chrome, firefox, safari에서 사용가능합니다.\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용됩니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용됩니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용됩니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n\n\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 컴포넌트  **getItem**의 확장 유틸리티로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n=> [Array Extend event object]\n\n\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티로 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.0.0-rc","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-sZODnYXjt6HNTI+OvI0jFcs3Yn6119bRhxHh4X1CWAtVLMY0/GwhjOi7ccoERLhok6t1cYHPiP2pXZ53uIBB/Q==","shasum":"c101545746907042f9cf20621a7713da7091f607","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.0-rc.tgz","fileCount":5,"unpackedSize":41527,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcE7poCRA9TVsSAnZWagAAfd8P/1AXoXgv0hU/Up8HBKzR\nn8QvGqahNAqt3SikFVguUBM150FqOIieSKT1sdalaxWPGhVoni8YZoYc2LBZ\n5CH1YAp72jl9XcKHVlknJgwR/Hv9unsUZELi6nSmMI07jgBdGq6twLvr6SEe\nCPLh0TswCglyLxuDlrgoxiJFLGlP1EWGkyBg/+DqgmP6Nows6Z5/8RwsXVkb\nJ3dWQRC0WdWtDVu6PUjKrEsPrS1yxxWgJZJupBK5Q4Rh6JDLBXnvcrcDLY/Y\n5X7dCyPwTq7TFiDQW3VXZGZIhYGP7mrn4HspyZsuGqJeJPAz/0djKfvUiLZB\nXW/8yYe9ICpJneFZtn6ngIWKWansOWmESxCv936sOJOOwjFxtzVr0vUpcRmg\nwTSR5wxNUX78BRCByGmVScrRscNNVcecAo47xUcobbswSdS8JCI0ssWbnxI/\noH4QE0ObbDbFC1MpTwmTxqtpaIIgmfZEGx+LGIDIsRW8EqbYJTR40gHfhgvp\nkNTVVUYA0wwKmmr92KMZx4tBW5EHZKGnWBuXxbWxl7SS33WSaF0Suw8JdoL0\nSMN64JBPu1f4Bj6lioZp9hzAhT/juUszLyOQcMczRNL8L+XR7piURbQ8QVLu\nWJlu1uBWduuU+1mJ2ko2zd0K4Psuphuax/aCRgAE9ainrJA1PzsVJ1xvCD4I\nXDXg\r\n=L3B3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIENJep/I3eqeMWvsC1b++VAvcAupDztHCiOKlXmBTiGWAiAE/oRZrAjV4EmVyEPr0bB2u2B9c54szqt1+mo/PKZQkQ=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.0-rc_1544796776345_0.3216337266602005"},"_hasShrinkwrap":false},"1.0.1":{"name":"understore","version":"1.0.1","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.1","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-2iivqzinHBur4CSzRS0UD5dYztAO4LyfET0GWHcPjZw2NMOdlBoy+RiV4FvOnaV4l11WO9wOfud9QAWsH5OAJQ==","shasum":"50ab6a4680e791700946c5fda29890f26d993f61","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.1.tgz","fileCount":5,"unpackedSize":41524,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcE7qYCRA9TVsSAnZWagAAgGgP/0gztpTZSkYeX/aO3A5F\n3N7L8a3TPqn9AAqNB7gAK/1rI9x5dbt4WsaQCSLkHzAMy1t20GgIrTP/eB/b\nwnC/bD6VO5XaF8T4B7p3HtnclzCQ60efudndyMC4p8ilIevme/0hCzGgvSsv\nbnpWHBJVoIkxPG1MXL8k8OZmRtxI6jEoR3vWY3j5TuvbfSxBwd18awwk4OSw\nFIA4SMmktHhbHMqdBOGNntjLK2+UgUIy1vR3uPiXAHxVnJkZz3D4cHm4gpxd\nIAakPy5nieVaSktyJEbjNlYehtzXZqmFci3jdx3sTpwi//0uiEGRSX8mUUhw\n0GZYY/SfahTzhdlTHysFg1YLJ9DgogVttT45x3/GcQY3T1zLTeikhJNtH3QV\nyt+h0S4MwDc9JEEUNxPUPNfa7krZW7qU1cCVkvCjmCpJ7hN290rPNLT0QZEV\nqVKL6xnPTElNanUMahdefMyX3wWFeaCXqVNVPsTLagI6RbZ9Evt5UZa4xyvM\nLESIVbRIwyMIScUN9KasrQKtK9t4e5DQshWY7H7oY6BN8sw0wnP2b/8KpPwD\n30J3nrRG7qsegHM4i/Ftvm6csjoZdU6xL0pgNAUWEairaY1cTgYminelVO9+\n1LUxcGcv/4tSY3efznJHJG5pPcvhvxGa2v6GkODTSOePBS3PPLxI4JCj4lFQ\nd50Z\r\n=AmxK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA0mwKIvpZmvP3DC/UM9vSpOlZgCQDDg8mTJL9OdgPjcAiAhKq2YTYJ68x6p8bnWN5qhnuex4M6OA2TbZI3eYOLNFQ=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.1_1544796824198_0.15814645874845246"},"_hasShrinkwrap":false},"1.0.2":{"name":"understore","version":"1.0.2","description":"**5가지 함수로 확장가능한 웹 컴포넌트 개발**","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.2","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-PBPXgGEHtiLEN4da3gU2ADojI6sW4JOjFVxLtzEomANHL/o6Xls9jUwkGz/EUGlzzuxlK/eC8MpjhyDaJlQ2yw==","shasum":"0bf6347a9315dd25ec07936aa77098603aa5b2bc","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.2.tgz","fileCount":5,"unpackedSize":47982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF7WtCRA9TVsSAnZWagAAQGQQAJemLhECG3ZuQl0uackI\nSA2CP6haI+pVJA1/WTQ+AE3+I2BHWPW/3wNNP5xssQR2Fs+i5ggLDvt/g0sO\nAGe5+/hjrSZDYMVlH61iHGZFY7+I9hE5C5b0ds21scAZXXYt3l/xYDs+QAxf\nbGl0cdA78nwc1PC3cInxsNIhHnEIXYjz7ebUcy8erDG5S6vbWM4YKwWh1IvR\nAlp+N3h4LcKx8OLS8+fhX5YFfzZqHU2T5Almx37NAAk7y3WEznYYgVn4w27c\n9vqH3zJ5kf5g0HhPFVv4dnWRqNh0xFk7ysUHvtpIaOfGz8h9GJBFi5grkDYh\n0s7KH/LVMi17vv+RermbbZ66xIfqIjcXZRXNr+3YhOpasLDjeypSgtJl/fCS\n24n6M4wxVqX4JkwPa8sHUBWgpjCiEEOmRhPHdp9unOMja7a7fAhnzP7Jfnqt\n97V1YhkfH3mqh9QK5NlTaLb/kcdHzjT6SM2T/4MUCh4diaXkLuM2i+EoD/Je\nU5zw36O/x236FPa+OANlpNRA8O5eCKlL7qm9xy39yL0jZjVAJMqxozL1xB/T\npT1CyK3Qa6RZPl3Y7tBWmRyjwz4wkkb2GhpOFJ2GobmPGAWTNSqIQV7tzHpn\ngaeEKPXt2DjMd7fStGhw0l+1TsTNkZNQJP2S8dOSb4mzxFqiU6qvcE1NTB6X\nW36k\r\n=wuss\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDo1C9k1Q+RwWjU8U7LXiqiZUdqoLzEjlmKA2YTlw1RvAIhAK3k9HmhKDmbPqzqwJbIoMTxipgKrFR3igV9XpNjyibt"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.2_1545057708705_0.25896789257727226"},"_hasShrinkwrap":false},"1.0.3-rc":{"name":"understore","version":"1.0.3-rc","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌 **\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다. **\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용됩니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용됩니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용됩니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 컴포넌트  **getItem**의 확장 유틸리티로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티로 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 요청 메소드이며 요청&관리를 위한 확장 유틸리티를 제공합니다.\n\n> **then** (체인 메서드)\n\n> **abort** (요청취소 메서드)\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\ncallback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n아래 예제와 같이 요청도 체이닝이 가능합니다.\n\n\n```\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.0.3-rc","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-snyh7DrAnMXW0RvCMQ6KrBlIIywNm3ZHo1S/6N2jk3kL1/mdAiSxDCAJTKuQVqLplBZuhps1x3nwV4Tx0swZnA==","shasum":"dd581a74314978de48a4cfb1c78104abdcb7c348","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.3-rc.tgz","fileCount":5,"unpackedSize":47977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF8ClCRA9TVsSAnZWagAAvSgQAJLm1+ma2zZTXTrSPLyh\nnNJTAYXMbHhc2TFn7cdeomD1OmmsAx8PMr0nsV3jS322xPOHmm2w6Kt82l7D\nlSllPo0T2X/rL6K0atWHWPHsAu2gVrLWolkEefQ2e0vV3Uo95+AeCSAD/acB\np2Y9HR9oh9vCAVofb+MMxnKypvVX6bi8VRfC4IqM1RtMeIxeFvUqAyv7jD8G\ns1fzE8s3g6arKvneA6SeyOV1v1IOmW7kz2chNQ5VUyuF4C8jlSZWyM7KQDta\n5wnY3rbizB12a+/8nwUTNDIk/cR2u5cUg+D882SS8FdL8EzkkXT5FHjT5Zaq\nMCCdh8J0ttvMuKBe6VqXL2pLAc3+6MWB9UKYkAPq22eZxvg/BwWasT39VERg\nDuboJ9C58pZI5VKacL9C/qHB8cOWwd1LDvVGrjDkrrwBd7xiHpcPh4eDR8ig\n/vcSJOZ73XKRCc3p0FfBj3y+yAeoEvHh6r3QyajwQszE422Cr3MrsDIM3Q/3\naGwwtmdSEqfzd+i5f3041AIiUgSgIzsVp0+FTEDzFP+FsmKm8YZqA2bx/qwt\n9fMV7Xnt3znJyeJcNqHq/Rf0rtXz5t0awpKFiMuzru6uv+LlXK0RaVnf82xa\nx8sQPkWShx3SXZmxWM2cUKpcQONRDl8NRRHgo/5ej47/zaFVYStePHjzj1S9\ni9B8\r\n=MsYP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwLD9rRpr/H9ns2r23Qoa9LDU/+FnfvlMAZQo9Nq+mRQIhAIF/kb+OQ7VmlV0kEk/eACzwje1UoPEbby9sNgEhgQmi"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.3-rc_1545060516945_0.6834249143809568"},"_hasShrinkwrap":false},"1.0.3-rc.0":{"name":"understore","version":"1.0.3-rc.0","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.3-rc.0","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-eJH3zvaKb0DMpL475PprRtVN3zAJUGi3nBON/OIHadSztMezC5di//LmUsX5A/Em19GBJ5fIHwLCmix8vbjI/w==","shasum":"4e01c0298cb6d72544e40bc9d558fd21887307b4","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.3-rc.0.tgz","fileCount":5,"unpackedSize":47979,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF8DICRA9TVsSAnZWagAAFXgQAJ/ARPLw3yWgoJO2quNI\nR0ZhY2vZoZGFzDIHLOiitJ3jgQXT65F730LP0ui6YxKtqgP0QbQfXJBoDWfF\nVT+3eCKbFiNGWcOS6MVPT6e+npqL52z89QqemrOMJ6SNT1iFrtBn/Vn25SgR\nJMenMcNJpygf9jT504FaZNdlpZEet0UwwlMj8Kn51YzGKcSo3+k311bEM011\nh1Ztu6hUZAjcuH2hb/L8ZSZPGbZndv+0/gbYRl6mrm5OxaPzsM6znALjwFhw\nttHqUckMtZ9+O/b9yxasR2iPgWRejQFElIkcqMXLYZC2ynLck//e33wbyeSv\ngbLyZX4YjiMzBBrDUd0AAKrjgvIcyIeNhanzG6xsgpChE2cWvJDVGWK7IdHm\nAHoe7Y0ebsaU5H3R+KEboweAws67Qd1dxSiSPiE6b3bygrwqp4aCMvbZ6chA\nE66Vq/HCTndEpkxeHzZjUdMPO5j3oeGz+IRRJrXOWo8WGwE08uGiWqkLe32b\nXEmOxW1GeFU+KAeVeTT+YxkGkTowYnVZjtJzcroxduyqhmQjDj8e3bY5CQR3\nbD+vRiHumZy0aEITIIMAl281RMaYwfFwzHVDcqKkN6flgoEBULl4ncKJVtfp\nqgmYEa3Lzgd8cG5kaSkPlVXZkRjKiEDvyf41XWgcFgxEmjx/QIwY1NHroKNW\nJfnJ\r\n=EOpl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG49uieFidbCMuTK8wIRap+zz5hYuirpVtORICyyZSQ3AiBQAkK2czCV5ZWp2vhJOio23eTPrxtULQaUdNqu/kCDBg=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.3-rc.0_1545060551993_0.691857054433074"},"_hasShrinkwrap":false},"1.0.4":{"name":"understore","version":"1.0.4","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.4","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-PlI66w8EjV2gQ9lVeBcax44tolibOH0GwYfLmBgPjJ7kOiOlHP8K2cRsQFZKeg1jvjWEcIIFEqbAQDpAl8xvgA==","shasum":"d70094484d8c34ab3afa015208ea8d030533ad12","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.4.tgz","fileCount":5,"unpackedSize":47974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF8FNCRA9TVsSAnZWagAAWDcP/jIEvJ/w2Fj/Jp1R4YLB\n+62//D6huAW2u1asZviV5NoceCjKQz2Adc9Ut10VWVnhulyrJnXkymGojF5e\n/XWEWpZ8iaqNyawoKlDG1pJZnmsHvHeAQ84KztK9fSNjR5+wUPMA71Y8sLVf\n7whtDI5ZjBYVZ1grn8hpj0bwrFGkyvh0/zF0TwplgbYPFJLwrk5xCQuBs75d\nfCTPZGrZYx+E9hxMCQDitOd7TffH2wIaJGA2/ejpn3zN8ZvUW6wealAR2JtZ\nAq6wxuqwh5bW1EgRjZdiMFWl2b8hk1MjbdVSVBF0rt7stE5SkeJLvuBszNd/\n1GdS8xlPC4LRR+jwA+wgd2TyYfNOyOWc3E1D0P5Z+SOh7tTqqgLxEfcNdzwu\nLCppY7iRnbt65FGLuTPxcZKLnoHmrC9OqafqKjAFN/9Y1MbguE/wE6aIAlza\nokl/46EFpc28U6q7HHrRT/gMrxzcZ2VQbbZelFChqBBFjjub8jt4PXWRFnH3\n8uo20vVf6nrw04rrv1o3PEjyUuoNdtizJJy5F2lPRnNZ8BhEB/PZOJ9ezel6\nfJjBCX5VcVyPSPdw4Vp4hJyBjrwcPgRAJBC4SexeRDS7Th2In5vPImeg79CO\nWWtc60JHO0G2xQtwveztkt1OOns0TWpiKewpDEwzBxAKDOSfSjnqLD+dxzSV\nW98g\r\n=FC/V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCttdV5/iRstOLtp1/ujljB+iwUU0Bel/BwUY+62lB4TQIgPC6PdwQZ3JdsSxxKi91JBfpHDhJ2PXY4ZIBxm939UgE="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.4_1545060684943_0.6923257619477163"},"_hasShrinkwrap":false},"1.0.5":{"name":"understore","version":"1.0.5","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.5","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-YucvfOCZSJslYLNtra4ST3dRIpWE5sjvaH3xzhWyRgsFHZMuaxyhWLIAFjH+nwz5c5dFrG8tpmlURYUl/s6bKw==","shasum":"5077fdf70652db69f4b9b4fb376bcd0163774d55","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.5.tgz","fileCount":5,"unpackedSize":47973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF8FjCRA9TVsSAnZWagAA3wYP+wZt2mbmQ58xLa1j9h1M\nrS3z3IOLOcbzMilJdzaHX7KipVKK3hhCf5aAqDeTSjlXN0AQL7Um8Zo+/Eyo\nDqPVIaEagPEwceHPDXzQgvC+/AF76smVc4n7aQpvJ6Sb3Y1MRgj2gg4aZt98\naVUACpQDWzY68iQOiv8JsP3eASo5zHsfAS3AODeGIEgUoSHT5JRvrRE7MrjI\nJbN7qnmzeiCNTfSFiPHnt4BxlQsfGf8P8vdd6LhhFT1tjoihzIN7OdyM56DJ\n+BkmlF9KyAH/ZvbncHr/cqtV7lPGwPlBJ1gFrFPiJxqfwO4yLNOWs7MnMx40\naB0K3XMQcVvIYBaIAqTcGOIdCaKUPqaDF56GnLcr6f7RTm7SLJq4RSI84U1b\nMKaKpFCTq25WoNeIznSN3dnikGBpkuobg8qzRUNPYgTjB6AlbP+ESWXnAODF\nPLi4POkMvkK8peONL+XDg4SoLtCMDRPI2rs/Czzl2H5wDTnLQJBlibP/Slqs\nFlt54jbHQxGlhcyGUMuniVvDtxtG5OkZT5q7f69UkkfYRZehsf1Pd6WTMHLa\nAOEjUXzysDe6QVifvBWwA7bUqJCLlvp2CDzIirmtG3XsXkbrZ3iZWVKPsGws\nbnwJGCOJNZrrw61TdZyF3RdF/G/YWtKzKNThKf1iwGabXAq+J2yyH1BGn4jP\nZeeX\r\n=JpTb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsOBYhT2I99g+OPN52ZBOQgUG4a/9v3CbdA7YAKMB8YwIhAJnNQ4cub/bAUQ12DeAwwm4RYVpiEd9JOqxJXovjxr3N"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.5_1545060707285_0.5079370329375505"},"_hasShrinkwrap":false},"1.0.6":{"name":"understore","version":"1.0.6","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.6","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-078eWKeguxhAtw6VxmMKiY1bBgOon+jclOb2UPC/Ap03mBP1FFiAi2c4kIY6ngfr2rifcRkhD62Pr+P/zpAN8w==","shasum":"50326372b9f0f4b56f59b06ac089b87c6d2a31a2","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.6.tgz","fileCount":5,"unpackedSize":48056,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF8J7CRA9TVsSAnZWagAAnyQP/RZWVA7odYS2cKClD3sT\nk0ms71y0opc1NoQ5x4y+CXjl8pYG+Al1STRBPA+pdL3Hwt4GHwURJGUJSA41\n1dexedO0xlCqJsOv8MQrlUweRWQssXJjly/G7iqtzRPHjmt0Ri03LD5K+BpV\nLvHvtKkkBcoLo/ZcngtWDFa9+JMCnFL9wHAt8KyIXSeRrPnN6FWazf1H2udL\ni7RTAjFw/azVHNXaJ8lmo9ke9yK0n9lB30M7VIxDWZSt5W32JyBGK73t236k\nd3EyynDcV4kHOZv3Xm75zm7JfBLo32EATf0aLOIgsh+CRh8aSENvPEOAOMjJ\nS1v4GJojP6iEBk3P6eTISB8MTMMQTtggijulp/Xr655OKLJbosmIOALvFdqc\nWCEc/RY5rPKGP14/PGKIgvuKWJsHyvLDzTo4MBb2p8GaZiOTJBvFAK2Dn0yl\ny0GzNS3rZUWGd/T/BTFIkBpMEYu6yJcpcLYNzwz12S4SeQrhV9UswHAu/ULd\niJDllcqly8wDGhErq66KNeJAwaFywQExt6G5OUYUw7mxYEvKJCwmTuCfliEI\nFM5ZeCb80MonNKyKCiEsTnwGOk5gwZog2jpcK1lgs/YLlq2uLwjGCrXemKwS\nfOLKjeIaKbiqWEaqAYtTh1zDclDkgDrh4N2J/stsQ/r92Ysyvll0BsedQbqp\nbMfi\r\n=sBrN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDev3SVd86pbMWbK9aN7pOunTyLntxypfrSeLPhewVmLgIhANfiYVaA+j1c7YL7jrmbcJhEU8sCXXwKBdSvU/C+nPxc"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.6_1545060986854_0.4387616570388113"},"_hasShrinkwrap":false},"1.0.7":{"name":"understore","version":"1.0.7","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.7","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-+ebAmznuuccp8o05h1TeJEm7ZKp9OlRTgeBOBhDk11bWG3gBkir6svZHDsBH7KnApaBegydaaNZscuWOqhB6ug==","shasum":"2ea5ba2ec5b77552f4260e0551ef7d64b65353e1","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.7.tgz","fileCount":5,"unpackedSize":48056,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF8QgCRA9TVsSAnZWagAARloP/1Jw0n9kwHvBbJ6wjRH1\nkFKSJ44UsDpaqnX4LdHtPNz2KxoR2Re555Z3s7WtEM+nW37L91+YGzG+ulVU\n/aiDiCFI7z+alIRU66j5RKrTInqbbR7j7rg8KjcNGacMgtbpsJ+VNRABQhrU\n6VXTlJ70cMErrRpjD76k+goMzwA/xOdy7nWDu+IXOQwKv82su0jvB1jZ3rrC\nm6eMkAw7IGy4b4+iUro7qf7KmnCM1tNY98KuA8LDhbRyajLVQhQIjdjzbv4R\nbSA0qpbYj+TSXwCahWs/3r1Vs+pDtpJGecA4nJsjZL7txYa3GOthrKf1QUTc\naju36plpzKeHkHUilOEiSivyfipfJCHQKxZ/bx7w9Rg5/g5C+bMmi1VAi/WN\nWfQT40JFS0q5RbRAYsQdYyKiZ426NGpA+dGnaMmY863knAS1tIdncszriNI5\nV3luIBDn9DhnO1PGhjcFkP/w5n5YGmSAm40Tx3n1izZc+VbeNDjgcSgx6tfX\n5g3S7ByrS2QbZarRP3U3vXIBllEdngMDMJ8olS36PEdXKG6ucbsqtBpZfDtF\nhQXdgEEQRZtDlFFIP5ilCnQu/iiocFZyYx/BB+/CcYy+mXoL3jWEvThBRR6F\nGz+OGID01ttlDjTCYyZLJ74Er3JW3iIClsi48P7EEEpTzbg0tVEkQO72vW+8\nkPqo\r\n=v7FT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGyVAd9KJBSY1o//AzAX7k9wWSqGsV69sPeGZz45SNmpAiEAldbIXn2rBpAfEmJ84B2VCUFDv3RyViqXjxDgv3BcykA="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.7_1545061407831_0.6767353938687508"},"_hasShrinkwrap":false},"1.0.8":{"name":"understore","version":"1.0.8","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.8","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-/kStvuM2UZfKNg03Kx85r7diZ2RbzS8ZFCBxETS4fJifHHntR28PDbx/6fIOpCLS1yuCjk9Qv3cFXll7aJdn3Q==","shasum":"af77228a3d64b79a3e48da59dfd3f835db58dc3a","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.8.tgz","fileCount":5,"unpackedSize":48215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF8RaCRA9TVsSAnZWagAA4CYQAICKydU39Afps18yJDFS\nIHjO30aeC495JLbHMT3wnI+pgXeDwfUBPWB+w7L29FCMrZrscwfYiZDGTbmd\nSkxi1YD7MWL2DG75W99f9FZzH5JmZO0mN0WF/WDGU8NhnkIZLmaS7tdAprHz\ndbw0Jub4PcMBqFoZfbTdQgjTYxGIbjywfxn7UEPPt4n8i3VdMUxq4sOLrfSq\nPDCjv8JIL9KElK9x3boxmG98F900yiVitB0oztg6r6pla7380wZD+5cWcWSJ\n+SV9no6h6iOtZCy67E9QHLJZ/hCQumh90VFRTQl5TPoM046GbN3Lqr0h0hFK\nK5mg9UMrQRKDebWurfTET55JDV9UhLFKSODsD9s66OEExRV6nlqONUymI7d+\ntxa9ogx84FaVoLHcQvJpE5hpM0LZJZYbiVccDn6X9O75kr1+ffeGmwIKfghp\nhz0a/scBmYNK6WaZ955gOoBr0jLk4uJeAioLYmuXobO9mGwXjG+ZDyotEHLp\n8Pa+5sZxTlmans0nuUuRNj0P2hOoGXijYw15qi47L3/7fECpcJrw1/9ZC0fU\nAp4TMsxnz9oXBAB5vXBal0Ijmb8CkH0Iop2CFpqhwrAXQi3Q0nb8O7cpfCOV\naV1cZnEzW6qepyDpCkZPmwWiI5aoBOP/wIAlgXj7caUQLP4d0uZeqbJ75shY\nKW7k\r\n=F0it\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAUL18mEW1UkUthoOfpvl9vabdbZFPnpBLWv2vOKEggLAiAwMpestImDTbEdPl7GyZ/hw+x2Kn4uheawIokqNh1czQ=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.8_1545061466220_0.23680212270598266"},"_hasShrinkwrap":false},"1.0.9":{"name":"understore","version":"1.0.9","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.0.9","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-qRCUw4oXcWnp7qR0KHXb01dqnfhsJG5eTHFEXTPM7nxaQk5djvTD6c30gpqFD8wP3MnJ51Z95RqKkeoT9uaynA==","shasum":"39214fb17e6c1adf57a2e500bdfd4cf55152ec62","tarball":"https://registry.npmjs.org/understore/-/understore-1.0.9.tgz","fileCount":5,"unpackedSize":48867,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGFzGCRA9TVsSAnZWagAA1DAP+wcjFSaRUDDZz0Zvq6LD\nAxpHqjJOt1P06tFwODcLGanFsxcG39ThzGizDbN1nu+UwjT76JnJ6+9+DnwP\n0EZsjs95HdjleacHOWcou+ngTSf+g+Rzn88xqgC3OE8ppN8e8F860tDiDYb9\nwsM7cwi8b2h38dpiaWyUouloNC8V2S4N2VC7JokceBA7OMBZQ+oea0HlTXhd\nBBdw6qBXXIlYkJW2ajr/viDTD46UZubMsBoRo+OD3CEttPseWWJuY3nrguVM\nr2s3dGUSYr+XH5QFyPkxoSKbIRsU8f9z5HNjuy8JKkkYOadW8OMi2E3+oc5y\nd1AFkkISaa0rSscJ/z5wnQlEGEn/vs+vkz68OQU8sfKJ058PuuxL7PCscpMs\ncSbdx1rMUFzMYVQqD0FapdkjLtCugwzs4ZmOfx0ZdDUZE3NgHv9lF+Ng0jiC\nP8mZuMmZEbx1BAAZFW5yAU2oyMx3zYk6GJw++6inPirsnEc1j3sdMUJbwUF8\n0VefNFU44Vz4odPJcTXVUntt0KqkHuAIOyZN7Z7znczNlGSOd80cx7r5Dlq+\n1PDo8AZ3URpfUkXPEZvpqgxesQhTzsNbTMjJ+v1afyqrFs3/1e1UE7chxGCn\n/G7AHRcIvK/Ll1c/kRDHjX6/WOeBMHTEhVpLW9lEqfhDQTJfNvfeB1/s6DX7\niin8\r\n=w77c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3kN9LSQdB+hSlRizCxNdW+3jswMg0/Yj/z5Jl2XQUywIgE6shRRl4zvclOe8cT2RwYk5c07gjkfilqemE3L2VdVc="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.0.9_1545100486158_0.7840154903208725"},"_hasShrinkwrap":false},"1.1.0-rc":{"name":"understore","version":"1.1.0-rc","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.1.0-rc","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-OmDGNf6xBM5VM6vytn6fijlS0mHp+iktA0cFEtuh14WwVNnn+YM/ka0IpsHTfvUJzLOgXgaMsrsv9ANV/xpViA==","shasum":"1bbf491bc687f22541bb55d7eafe60732cc59a59","tarball":"https://registry.npmjs.org/understore/-/understore-1.1.0-rc.tgz","fileCount":5,"unpackedSize":48870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGFzrCRA9TVsSAnZWagAAwT8P/2DwkCbHbpS9WVFv14Zr\naireYSezlghtaSSu2Y09TU1Lu752NlJWq1rDS6S6MMRA1g6nFb7ytW6C3MeS\nuAdiaXU8ibJUey+DCFocmKZc1r5Ig/VQYCsuj11x0XFACkKbU3N7MpUVhyaL\nw8G2vtYMtG5aerz/bxKdj+DuIdyPYbPt0ftCX0jG+LlC1kGrvQL2uyz1kAWb\nE4HVYuaYHiUuyxQmh4Edutd7C5DkX0cVJMmsxu9CbQPlQvX5jtFv/yu8qmfQ\nSD+3EQOW3PsKJd4w7Iq05gYsvGST+fms/DnhXHt7K7+JnbH5rVVylVCAE82e\nQ6wOtbwljz+eFrbO6mirEa6ZwUKDoMaVtO5hXb4kgp8qc7ig4QAPYCBdH9zb\nwmt79UgntObXoMOgU4XJWBB0nq/mjwdOlJndNOJIiHgntuknKn4umbYqDCCi\nkcNS49qD/j5Iz+BYCv2Ycw0lJBEqd891rmx8OduNz5dDNAk94tTFB+i94g37\njoljKlEV501pWSAScFV63RWo2bR6rYL1kpBUwoCQWBsLRIyX9KHMBoJSWNcJ\n4JhSg44QwPkBA43KeGetkDvu3TXkVCu92yjTeO+eBLpkMvn9WWy/4S3MJx6L\nobUrWjFJAozppv7gAGbG1Y+sZtlT5oKdVic3bRt2pmVjMZteiFnY+nFnjpj6\n07NS\r\n=TQWk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8gLQRKm1X39XEbu5zvT6Al1pEOUOClkCS2uLT2MNlJQIgUp6LgHHfR8iPNoMJdY/7M0tYl0TBNhPXAAhaNNJItB4="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.1.0-rc_1545100523049_0.28516509374316645"},"_hasShrinkwrap":false},"1.1.0":{"name":"understore","version":"1.1.0","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.1.0","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-N2PZamfC83rTt1KhZvJ0nyW1svSMEOmrIRr+NW9yuzvR1gYjfqpBqUwt+uqlrz62ilbBUs9vSFwHvPwOfOaVVg==","shasum":"ce36a56c022d80501e70fca6a610f72acc62544c","tarball":"https://registry.npmjs.org/understore/-/understore-1.1.0.tgz","fileCount":5,"unpackedSize":48867,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGF0bCRA9TVsSAnZWagAA9CEQAIjT7WORWqcIIXxgN2um\nod0t40dneoDXBDgz5EtWA8TU9HQDs4YgphuZ+2iaWK8oZDXENZrDvwJAG9m2\npFCg3puYvr1d2sbuAtxIXRb5bVe6JtoIOIkeH/bb9RRlPocmt3zdnA27ZFW/\nThaq/u/qUAP6Q7MkSd3TtmY1b1C8rIk27fXaYkdDAigTIh+rF2AssouI2Lz5\npoWfN2C7tDai7pIGHoPyuYIVksLaQ1RaEC2rHDhYfQ5KZnf8Hi5ZINENO8MG\nr6Xz832wVSmpcoEAaW35E61qnagrxlQ7XzhrHuad6+VT36uu3lPu8VcP2INk\nHJmCRo7ZimkOEtcragf/1FFyH1J/dySEoYF22TP1Ze4TmO8QhE2Bx1bnP9YN\nKkC/ftBk1/9Zy+H3dUIauJopblntcypH7vhpXzh1U+KFn93hCzhAnol6jX2T\nlw0JkSwIEE2ZSsaCNdy70RKffcMwCruEG9gXzQ6FyGPymwXcPVCIrAGITb9b\nBAgGurMhSPFuPAgXe8Lq5NR3043VuTo1nuuFp+/Yu80WMAqxv+Qz6gKnZc0N\nn/GgLudg7Rfn8W8McodcF4KjcK452G8vzV16hPTHMOj+sPe9bI/XKLphCmQy\n6uTfKPiLacE4qSvYuU7X6+pL291eROuTVyglBYzrNOYuM6jHUk2HlYv5GW1+\nIQT6\r\n=pK3r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnTDOhxPE9QTD+/pe28zaSLf/FzXZnoWHRwrm+QuuJZwIhANLr1I5Uzk58Z8W1ZvisnD224yNMu7o9GasMdF8f+u1N"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.1.0_1545100570918_0.5872361276589881"},"_hasShrinkwrap":false},"1.1.1":{"name":"understore","version":"1.1.1","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.1.1","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-lJ8bdXKoDkQor26F1SQ8kRB9tGTW1izKs4avPNNn2fQN+DeJUCjfEthuGHYhqxI9ZS9joVhe70XiWQUOrwqkcg==","shasum":"913e67db98447d892c7517e277bf744984a3c5af","tarball":"https://registry.npmjs.org/understore/-/understore-1.1.1.tgz","fileCount":5,"unpackedSize":51242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGLekCRA9TVsSAnZWagAAdhoQAIGusnXrjfgfxeiphht2\nWZiuvHOTrd7CNcyayBZpKKpDdVqD4/nDgc43hBZ2Fn/vGDMKlkuotSLsSk1n\nmmdRYYAC+Gm3mCiqfULzN1KFwC4iIvDhyJN7+4Nrprr1XnS6VPpwbd894BKZ\nDaQKazRcraSVDTySDiaBtuKgvhtAinPobKlYufw2bmNp3DHF0tszcSKYIDG5\nEyezo1JqcdxcRghS4K3iQ/VuxKz0pHiDJPRydiIq9jhrtbzyztGRqcnelVhZ\nuGU1TGy/1mF8496rfa9B9WCBLuVTsY03pdVMqrG8MaQsEzSvgh+twhJH7jrd\nIz/q2fLaG6bSW3E4jMrfxtwOlsT62dTL0Qtz+PVBxlnlMBwEguhGAaSL0aS6\nGp03mayJD2DbeKCAYvIOvlIpzZXj5xZ8IB8CEtH6WJY6XTLlg28fQRBF8pLp\nO1D2cTILCumSDHSay4wUEbrokFMVXSYH1kRkPgUXhd6MpOp6pYSBq9AZE+hG\nI2AdIuGUM0qyjDsnd1BE6Vmgg+WrO1FUZojxtYVyI7SdlEMp300gsHRRBLLW\non2JvBDvNh2svHT7q4Iuo1RwcBmR9gLh6Y0cLH3gA/q/7jIt8HZbC+3n2GTe\npotTPfKbFExRy8mj+kZjNUdwKT33NwDMNVV66h2Hjv2KizE7ql9sqc+hw5yq\nTuzM\r\n=8aOf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDO0rN/x0fGj17gIbgBsXeseTqxVSg3NQtU+JKleTkLEQIhAL0gTcjbZMoxnKD+g/LSKIYRM4jBC1g4wh+PqClehW8u"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.1.1_1545123747658_0.3628653591484181"},"_hasShrinkwrap":false},"1.1.2":{"name":"understore","version":"1.1.2","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.1.2","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-btlsbUoIjzhlqFbolKfX3Eng4UFUm8LpRUorxuPNE1gNVtfIAKW2KnnjgrItOWTNiVcWQOhOuSF55BdNUQIWSg==","shasum":"a15c268e116bcb567ad86fdfc0de0149c774716b","tarball":"https://registry.npmjs.org/understore/-/understore-1.1.2.tgz","fileCount":5,"unpackedSize":51476,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcHj5tCRA9TVsSAnZWagAAquIP/R5iAVeXAy+2zuVYSTxx\n4gEb0Pp/RQwK942nbjjh3YCcHQmYCGyASopQgPYrw7sc7+7E8Xdd4QqAHqHj\nUOe26QASYZH4iLiRKkxkh8Eo096VBKn4D9eK4/hZxdgYO73m4h9Wqq5zkEgj\nibDloAwA4wEKZsksd465j6OIy0Wb79MvZu4qEGOfMfuabhhAzdbF4uDQxL9C\nDd1zTvA2q4oSA1HheFx4YsaSc/kYJpbvCeCJIuNV46dnDCRLcveJ0+DnEi0c\ngW+gLccYWuyBjT2DbI7vQwTvPOUrmz5HskEK2TRAqoN4SJggNaqCa9qv/uvK\nmNEkD0OOsPhDryV4p2Dvdt/YeWFgAjhUCw/QzLy1uuBqOaGdsW5rQt1RVBCn\n5gbNwITM2wABmK1624xjTIdhBxgd94tHDnjLOWX1+o2yRn65/SfsaUDeHgQ6\nAWAlRUOWnpBtpiJRyV98oQBu3ZtrVeohEiHxgxmOGSjMNBjTHc2/UkBIy3o4\nf2JHJH8myAYPKVPncg39oIdZlsCmvdri/cQbLddtZNXqJaKVOtL0rHrK2y/m\n2o/fRk+SHu+HVBi1usZE1TEONAq0Q3nSzSGkwRhW9H8tR6te6D7YZIM9Jyk9\nelGbqk5Kr9JZBq8XY+2NTLsukKEfjandN/WLJ8tl9n7Uq06OaEleESkeNpSF\n4dpo\r\n=693R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEWlCk0dzunRBMiK9St6DU6f/iTj1Y+MLLtmqQnQXCQJAiAPLQk/dk8efSlrRIxWau+Adv4u9L9+F0KI6FNGfIpBTw=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.1.2_1545485932812_0.23927279523117773"},"_hasShrinkwrap":false},"1.1.3":{"name":"understore","version":"1.1.3","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.1.3","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-Nl5DZoISswEfsu2un5zeBRKpeGg24th2PcooVi1f4DaT/si+j3hPsi2P8jAIQCd7RVYQ2xjdoQ5zI4J5YplQcA==","shasum":"175652b7ba2762945a6552123efdf21ab610b99b","tarball":"https://registry.npmjs.org/understore/-/understore-1.1.3.tgz","fileCount":5,"unpackedSize":52269,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLLTeCRA9TVsSAnZWagAAXSMP/3Kg4tNB7yXwD+7me78J\nlUm+2WeZpuH8Z1yi7SfGLnX5LUlbUZ+RilgTBB4H9UgT1ZQ3K5TbNph8aGbE\ndQTmVT03Y/8I44pCrWJJdQHVp8ZUNqUFzvbs+6J+w5kUgzGNFZgeABRgpoZp\n6mZyZvSdmFruervegxregm9H74ZUsqNvo7yjfit9vlDD4RZ3r1jowilCeNh5\nO7T4jQTAWEMXaxEKJ95V6ph4BG+Q7dAhlWiYWVRn3kKsvhaS7VqD0D6FTVHE\nWcA/HgGKpYwxnKB3gIbYog4VjxL/iNKmLChgTVs/00BKKxAur5DJumm8VZAY\nB9dQr7AhbxNKHeai7pHdoi9dQT19Q4PNOGR4ii/APQm0rXPnHlB78jeBQp5R\n5g/5m7ok+QR/G+jDvE3AOLAYnJ3DNLsDpWoLr8Gruu28WW5nnUUgtCGPN7Od\nr8hJVcy5G6W6jSCkCka2fHNqZmL1A4ogkE3VxYxBbDW1Gno0XVrDYW357ZT1\n78pwU6OqnN7afApZOe+mEssIpMPnS1UTsuF6gq8XZtaYXGLsL7xxOT8Vny8T\nNi2DuTRv1bwlWUtpycaOg6pp2ujoSzcdICRtBGaqlT1nfnf5ZuZEvx8eFjnC\nMZz1hOqaJvLGjkNcfh4ZXTPwwkGRQgaRfP0xtTq/OWirPwZK0h/trJDg0Sf4\nvDYY\r\n=Mf/C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDwGqb/AULl4HX/akYUDWM7CkM69qwv5OtwiQ1q/nu5EAiB2ecizu0lAzaJZlD9ow0nrk682pZgUmz8nIMVhfXKWLg=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.1.3_1546433757719_0.1754491568200529"},"_hasShrinkwrap":false},"1.1.3-rc":{"name":"understore","version":"1.1.3-rc","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.1.3-rc","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-l140/mrSs5R5KLEVzRvPMt/XVwYa/UPEkTUD1KLmiI4AN0e01Q5XY0G306bPuhw9nPgmEne7tM2JcphkO8JsVQ==","shasum":"8c59a93196bda602c8f69c42e42a69b77494eb1b","tarball":"https://registry.npmjs.org/understore/-/understore-1.1.3-rc.tgz","fileCount":5,"unpackedSize":52272,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLLUQCRA9TVsSAnZWagAAa/AQAJTQz8EBjW7Jae6JF//A\n8suqrvl60Mhuf7fTifVEl273t4h3OeJAK0cdBXCZQMNBDjY2ADrAd50+VR7V\neJfykG7BhF+Ehcl3Odq2T+IJdLQkxU6jnHmQQY+lJ8Dn+k6JWPQ9A2vGO5MB\nyXPfGcY0GXnyrWdvXCTXnbsiUzLU7LIZXyzaWhnHrNPdn4PCw8UfQta5qD2o\npkCR+mxnY7Ebd3iVafqFyQ9MExjAX2Rvaz9mYATW2P12jGex4arlIoIomsHh\nJnHNr8BTrUHvTcg64J2sZ/N37uspOknzt50Hy/M+pB48aQJgjvz4/KO4onwT\nVHok/slf0BJsGEqvySvxWRbIA7pX1WyUFf2vlUPcOZ8uv20+qM69Nw/R+EtN\njLONYQBqBLiQAuhrLDb6eySjB10jxWn1f1343LfNsgrQv63N8o6j2JThpcP/\nEOvCbbnDb9/yhV7OzTOThClR9u4H3EFNNfi6D94MLNGEV6lv7rEf7WnwAh1A\n6yDxW9ewmM3/dLWrDV2dmSvHcDGCUVwApbAZHXDucN8HcIiyy2QdSZz8NSnu\nQtSeTJiSR3LpeQ4rZDfKzW9LiZSbLOXlNbHhtSLUKS7O9Fkjhwmyec4h7QZp\neF0HT93EBTlkv4k1c7YMa2XAodXW9XH81paHi5Xs5WNQYpPjqembT4L72p7b\nCcmS\r\n=R0eZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOQlGFQM7JHFRiima4huNFDVouAnryOk9sqDg03NUWLwIhAIM2qNKWjM6jFnXlgbhl4yaIUi6PHCAJf+AOzmj89Ba7"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.1.3-rc_1546433807431_0.8666565512335647"},"_hasShrinkwrap":false},"1.1.4":{"name":"understore","version":"1.1.4","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.1.4","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-myAep7QOZIhYRYR4AgP3CIpXDQqvnta9x0RvTKpvx3s+mMy58hMVJPWMUCRsZHmpK3kI2n6oF778I7mwkMtsew==","shasum":"442347fb88c45eed8e7fcc139bfba9901adc97ee","tarball":"https://registry.npmjs.org/understore/-/understore-1.1.4.tgz","fileCount":5,"unpackedSize":52269,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLLUyCRA9TVsSAnZWagAAk1UP+wTfUsUCDZzlfDYgWNmb\nFJW5yJGBiFqXPOhfnnfqRQVfsYNpgO81rbqqES9Xa4RbcvTyAOu9H/nfYCAs\nb6TrEHDLAq0D0bEnfsFZfs06oH1VRsvNY5cYsFzb/162rYLqs6sky27n34Re\nZKF2Th1nkwkBeV06TaCR7tc7dXuV+LQQgJHILrnZrEPzLx78XadlzcaledjN\n9y6wNzT9JKSKP3aa8wg3qsIszd5Z4WgC/3S7Ij25q/GDoLOP+z4sZJRZSV20\nDX+W7VOy6Md8D4FjXjMh8sUGqq4nmqxHJT6+zuzIso3rjCiWZ8JVaABhHmFJ\nsRYdZwUF5My12Z6Sk/IBgU2Ukd5S2lwh8mul8t01gPmXz4AJtvAshBwDU9A2\nIO9KtcbqlBM4tl0g1EhGCMJ9xZH/0GuCea7j0ZELvpUmC88qltl/lhJpESMJ\nBqalQ/ey5zz8CLp7yFlxu8OZWF7RBCZQTptdqnPWohBbvxlS2p2Z2S2xrFFG\nuTQZ5Z4E5zBT3BSaGA9IImyWZPjPQz7rNHGHx8wOIqIPKfOtsNmBllDl0Ovq\nJGdvuNRUo6oXyHadoufTLboOYZId6J/06Nf0/BYgCm+GPZFIE5XtpQoL3UbM\n4x3a6RpD3PATcYSTIGlGBj/P+mieEOklS2/l6dkTSFRfUENbvS41QMzeM4dv\nWMXj\r\n=DmJV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzNQFHucjckmn2JCPtaJtl4VbEj7MurzjSfjubZSpOLQIgRPr25JpkfuadtS64tRsF0bX6koBwcWrwEecobL78IOw="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.1.4_1546433841952_0.028849453566158756"},"_hasShrinkwrap":false},"1.1.5":{"name":"understore","version":"1.1.5","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.1.5","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-3Ago7OVbgkTUgoEPkliUTGzKgcbNSGI2Vxf1vUjODqISqLek2XQAM04Tm6BTMM9GpKQON76i2VeCd3vo0We5UQ==","shasum":"5bee24fc0c780243c637f20680a0cfc6132be813","tarball":"https://registry.npmjs.org/understore/-/understore-1.1.5.tgz","fileCount":5,"unpackedSize":52320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOJwLCRA9TVsSAnZWagAAFEcP/3krxkIftIlmpUuz26/2\nVnz/IAbQGAwGMItLFZW+h6fwiRsPgyUxtNB5HowfSFHTJXXmDLvK/9KjGx/f\nd4FVpqLIY0RtStCK2V/KwNgpKkPcX+4ZStVoX2pr9HJ7L0G7OpuLZuBaEwsF\ngbv7azzT3vbHzxPnjzMwRNMYkNOi/Nmt+AjplvV0GfosZTo2px+s67Gu2eTv\nwMp3x2r5QnkCuJRvvpImb/DJ4p4nf2MU70D7q1rjOaMcMD7649B+7naxHGT2\nX5oVA68jHqg9vBHXMNebCLgko1PwBNO1UkMqyR8ztAKc4X1qSkuICHXrgHYZ\nDuEztKO6MBFbhi1cTrNY6tTyX0drK+vQPSxACNcq6SBlYJf0gRcJbyoiIK/Y\nKQs7lxmUg74xs1ATpuZbioPlbjthlng131M0MHvLGQf7wmeNd+NCmXtE9cJt\nP+JgR+Hf98tFmanuA1SinzjTm/bz6VyqtZ7C/zOY4PsHzbdKTSpHiYMrQMYe\nazJWpn43ioYIh2ssfq6HTMJlreWXXPzdpSmt/9vFpi8+MqAxhzdAhji2xmUv\nau1pUuJEX42QR45iK5CDBgGgC5IQYu7WLMaA/qroFtDLlsgehzi3RUHTiB8Q\nqkRCXZOoNbLaHERYjAR+N4CXzC89ewipg1/yM2lqEHIiCcTSLr8JmpmUrwdG\naQy4\r\n=4G6B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDgrnsWVTSrXtg2Kn4kKdp109fWYBSgV8s9ghjeraSGbAiEAlSJm1uZfoHKv1iPFJZLu7cZz3QepFzncEMPQlFci6uw="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.1.5_1547213834837_0.10642265990676036"},"_hasShrinkwrap":false},"1.1.6":{"name":"understore","version":"1.1.6","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.1.6","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-5sLICXkrX/1migJXA7TzPbMXNb34ftxBKpfcB8G7q8WQoUolVh76vwdnIQ/tMz+VI22E4AwyW3IVT4Arj18Xmw==","shasum":"61757bd0a98592e18947bb5207c08353a1067c13","tarball":"https://registry.npmjs.org/understore/-/understore-1.1.6.tgz","fileCount":5,"unpackedSize":51758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOLDyCRA9TVsSAnZWagAALkkP/0G/KHIw9pYq3lOOo3PM\nQXtrq7syx1hCkG/X1f3X2lzH+v5xBi7vTUveFKBeA+qr43zqmvk8WPzS9BRD\nh9cfd906gUE326cb0VB9P+viZBsBnIpB0ISzS4pBXQXTUQ4M14q2u51KSdif\nx1rRRfC6W+UuMd9HIBUJLmUtTPppGUeRSwfEnJdDq1glWjDFebucpBfnSclb\nNT8TGdHXwkS7TtJvAzSfaBzhDASLRuAva8vCxBsmZfck+Znh6TCUQ81SSq+g\nRzpwvSVT7uTH8hvO425o1FGz+o9Mpvc40ULVvYlZxf3GAWyy93uy7nLcD8he\nf7vIZ+FMfY9pQaqwsdi+340V68qYX63WrO7We9g7Bg52bz/BIwSACMUKeSUc\nFaUgfmfDQfq92F2nFD/NgnWeYN0/jsNr0xpyyfV/noP9JI55ZnhAei8tE34U\nckH0KeeFvpNFf77HM/YnZO1gi8ioFhODFi5LKr78XSewd755zd9uZntIGvtz\nTnhPj91Yyyfkqc1fOx9qHxVKQX/hlqZSEXp/mM4y3NAulQfBlhKbLkFAY7TA\ngWkI6yaAPvQabQOUzH0V3MGZk9gvmaD917y2BJvT2TaJwEu9iUOdzqRnxmWN\nuBEkBQTCBaR3Vdg2BXJ6vLapAO1jMwYwG+Cg0zyIo8NrvTPlYiiiGazCTjAJ\nrjO1\r\n=87Jf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnymWV87W+Qz8WCjYr92Il9UlZrYs+qPkyFGHAVKTShAIgZbp4bq20aUTJyWoyURu+9WmdoTnYmZQvYwhj1b8t0/w="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.1.6_1547219185857_0.6226096103572216"},"_hasShrinkwrap":false},"1.1.7":{"name":"understore","version":"1.1.7","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.1.7","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-n6GAIju6rXL7Z3eU1YiX43Lsm+GL8KRnYC0506Z3hpyLH7vrNP082QNejfNbVSnkPaJ5CwM//+Tz96KcI5xZ/Q==","shasum":"f19de82447d90e4278b22f733f9115414a4fe409","tarball":"https://registry.npmjs.org/understore/-/understore-1.1.7.tgz","fileCount":5,"unpackedSize":51816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOY0XCRA9TVsSAnZWagAA1lEQAIu+XfncU2weCTB+byXC\nHppvnVtlGDdwvaDsTCQQ9wkf5d4Vf6QPQuDrHOwyzWHpFfVkwEyhoqyPM9lm\n8ETpZcU8IDiYaIeScuPrIpPgcY3P0HIMunuEoVafgAf1MDVBin/iEC1+mjUb\nitVOGF6jpOPl4aDR41tawPbJdoD9KnpDm3OagO6qAXpDHB0/3LzxIT8eArNv\n6Y7sxmuMz9/GlEbcLpf+05F40oY9r908FhcYaWELxuTbPChNTcuWIPK4MfHY\n7s9e9cqt/AT9N2nilh4fyPfdAVpvXk5HAO2paa+80CLGZqy5TytRu6tRXV8F\n5XtOF6VBJ3OQ/NnHatkEkp13ABrOC1RNv1vTtmqnbOzdMtAv2TIFjqw5gBoG\nn2jcMBTiy0Lcl9cVVchWzHe5r+s+7uqd0bsSdDi1R7Z2I6LMOEfVdxIU7x6y\n08xIMnx98NlAZHEr0OpoCOQTWojyaoFm8p16H3nK3iyBfbU92fiyTjpTAcVw\npcx21yCCgm8/cic0vz2HmygRxD8gl+YOwxvdOhGWanmXpZWzGGQoRf99HvIM\nz2aeqS0pQeyWJml18rUZSiKJUdMpdbqv6FLXXg4bzIvOunkIYJwOLbEvm1SH\nWKit3IMF/VKZrI1LFELUf+ggSRU5QZe7wwqTsCUEanBaKNSGsQYtiLS2attg\n21We\r\n=istH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHNtSJxMCQxxKrZy5wc6pytsTyXpb5DJsREKjbedoGHsAiAKDm2vg379hgZX92MnW/cY1Ikr4UP52ZF8iosU5nCDpw=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.1.7_1547275542409_0.9856936636095226"},"_hasShrinkwrap":false},"1.1.8":{"name":"understore","version":"1.1.8","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.1.8","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-ccWOSxavN2Lu0On9bo5D9200FjYKlDxsKhA43Ob9eHWDMBm0n8jREXT27aLS8idWgSLA9Gc8K4BXLRIoQRITbA==","shasum":"56c57393d59f3cec3ef1942ba603d26dcf69569d","tarball":"https://registry.npmjs.org/understore/-/understore-1.1.8.tgz","fileCount":5,"unpackedSize":51816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOY0oCRA9TVsSAnZWagAA2eQP/1sckZNkIZvPK4HZ1x4d\nE2k0yZVXarabKbWsLSUeRCZ7/DwHa6u8ZP1N2f4Rmgrzdp/+/moHp7rmHDwN\n8vcekXFvS0ybuPsyrc46v6lsn6EocTQqFKKlFhuzOhmv+ua4aJrQ2W+ljzme\nBErQ6Zq88pDYsqjgH+J7O1uNcGR7s7U3Dv5wWELuRHCACVmqO5x/yxmU2qdA\nF3535tEIKyECWSCOkam6kl6lj2TbR0/prubLdmAJ42rmNJLbuznLdGZl+Ffg\nLGO0U7FWyL17OZUxw+mR4v/fsTCV3UOjhthKvQX1iern2uZ9JHXN/pN8ghn3\nbM8p2YeRLlmNOW2Blvo+aTmp3KCmLnX4XEspFJVaGLAF4hi0VqWXzeWHHpMd\n+ca2hM7rltq01+tPoXW1qftoNsIAtAbPs76jFjSyFuaDsDo1jjY/paW+xqlE\nb0vspZnGFPWOM6GGx5L0XD/pwxLWXcaL2tQus06gWJGyygNseywsTbQeHcBh\n9KUq4SoUlUkRZEWWFR2Cc4mpOXQj3AjP+Igx5rQPqjO268b0w4/7O/qd+4aL\nTKJkA/l5roJetEr+u9cSSgIB5n/gdFgIR9pPxx8cqszSv6XI5SI5crVgOna1\n2sstBnE0di+SXAJya+UxDsqHsS6nLYKkeS44mRiZbldN7pIz9MLkOyiRb0y5\n1TGc\r\n=jow4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEA3zzIIjREP174gLxW99NOvpz8GYhiSazTMZluk7Fh+AiBwZQcJngmfmq4rXFPCLdyux1srs4Q02DQT1gpAOy/now=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.1.8_1547275559316_0.19772828440195878"},"_hasShrinkwrap":false},"1.1.9":{"name":"understore","version":"1.1.9","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.1.9","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-qRVBPA1fYKS/oVb8mdG9PUn5S2711vM3X/ebHrS6/w16xl8BsvyBfduTaWPIuuAxBlI+0eMymfmmqwpbyBs+Hw==","shasum":"727c398d7865bf42bb656381c8f8dbc63b48d8c7","tarball":"https://registry.npmjs.org/understore/-/understore-1.1.9.tgz","fileCount":5,"unpackedSize":50739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOwVUCRA9TVsSAnZWagAA6agP/1IG1F5rtZKzQqsZP+gj\nZktiZ7zfkuoNcWQzijnQp2DdfdnmtP3d7AJST6KkoDcT5yeIzaiwi/RVC6X2\nL0QuYHIjbZ0zKwF1xJp2Gb6f4Qea8Y9WQBl3bVU+gXY/w0fXvHg2jHnQzYgK\nYPtbhB89PUrIbWr6dsZN22XKR+KDP8uozetpZ4UGY0IWHh8SWf/msRZqUNAX\nJEntUzInFtRN7JP8rbOWIBg7+yqBCZl1/Fwo+dePYCyd3Hdl7j7NZnQ7IW1p\nopNFduYzHIxUCHVHdW+wfBPQgC6uuOQgGthROxELEQLgY37dFtVbZPlFMAb6\nA2kiAIc6QPCca7HnLdB7RO9dz9DbTHXnv/n2Il6LbpP4rVmVlpTLLpAP0ox6\n6lBYx8LkLruGgMasPp1GTD4Sm6uEa9L603Sk0hTKZE/ejWlCY+pu1/LhUCgm\ngJF93r+fqCTWQ6Vl1tC00bThYxtxJg2blrBnP3LT5WUA0QaWCzDn9q6b/UDC\nVmEoJz6FmTUb4PyA0Hp5a9A/x4YCSebgBoU5qciwq325gkTgvaXKmSLiqLp7\nXfIn8xnvMuz5s9C7V2+UqY9jqLE/VNuVyJIs5jGIYUt2cOIV6Uggd02urQd2\n4j3NVd4JGssWqgxqcYoDB2mb5vLZ74YxYxEk3Dn6K/btQ6wmljFdm+hjX0Rv\n7Il5\r\n=QzsE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBuI6330ti7ywDgYcz0mOK8ptG4iDk1oc7JZSim8MFbIAiEA/fxEBRcaKvBLf+awh34HHbMKCe+vX2PuQMBvVJC+2xM="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.1.9_1547371859392_0.7620673535371489"},"_hasShrinkwrap":false},"1.2.0":{"name":"understore","version":"1.2.0","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.2.0","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-YTu2Pi32/XNp2P8lCOFXedAIThecyHiT77rY3eLZnZi/FDdHW1kxS+eRjPlMtn8rM7OzB/xyCZvaCDp2dEIelA==","shasum":"9ae18220d80a37f88fcefc389a4bb9dfcb5b7c27","tarball":"https://registry.npmjs.org/understore/-/understore-1.2.0.tgz","fileCount":5,"unpackedSize":50739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOwctCRA9TVsSAnZWagAAn60QAJc1Ifx2NHFUa/ATrbnp\nZ9M3QItxG6G+atMMP0d2LZzzDDpm2wTKJnDUR1GS95dufxSd+wOqCO4ACY+v\nMfJXvHhI6pZA4yB0eNJFt1eIpN9Hko0oUwkpreDaGMKXos0X/vEFhxY4lfKc\nYMZcwhxa1e0WkLPw+WH0Rbgx1IkpTfhs1Rj7T7p5YSJToOKzggCJh9uZm3Nh\nMTXxtFdiVVvxungkXWl/qLCcCwi7eMsZ68uGPWDZLJMuoNI3fjbKEMZHWv6l\ne4TF+ncoOx9VJL1oYc2rkmCRnnIf/EacJqYhpasbsx7pVD41ZttaHUANm6EH\ntvvofGR0oiCKokI8E9Yj+DnvAx9mZHqSEwRGwn/3HVPGIuYo+fPRGOWGs2zB\nc3aST03sv7sZ25Hw3mY+/q+XuXIKUG+fVKwZmY7mTgn/hBqhOa+yMNhBtBqw\nlNape70IIfXses8D9ipeQTBsaVnj0k0apIZMm2ZEaNhWvpcK6bemXEfBwzFG\npxAMrzwQUKJQUFIk4JALgntLkgCat7QwjkpNig65iwJMg8VSGw1TCOKpH9Hz\nBMvBVVZONCDZ1UbY+X/xZE4Nr7Mqma2cQP3xK9dyK5XYYocbq0Y6c+/INFyY\nW2LeA4eZ93qZmMTYLXELAZ02hRTIS+DyGv2FEMPoHA0g9NPnarkXMzuYUWaH\n++tm\r\n=pPOk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtqBAC3W1nYOBHd0J3jWNo9QTNaLItBMZe838vMrKIiAIgET2rk6IwJnqWWhR6msc7KUaB/pxDOm/q0YwmFgGQb14="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.2.0_1547372332730_0.09127482964482025"},"_hasShrinkwrap":false},"1.2.1":{"name":"understore","version":"1.2.1","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.2.1","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-GKVAgk57NUSlyekLl2T/zAANZ/UnQJmm/fh381PagIkfv8CNRpDBb1tU1jbzUrn2HJvl87lnGSGhUeHA06mBbA==","shasum":"45a4c99b67862ada27704afceb4fe9d97938f6e4","tarball":"https://registry.npmjs.org/understore/-/understore-1.2.1.tgz","fileCount":5,"unpackedSize":50682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOxGxCRA9TVsSAnZWagAAf4gP/2Btkd5d3moMHfmGs/9E\nymByRUf9+bSHBuBmXQ7VBiiMmUomjnFUjEklOn9nBkxLXDFpd4rI0KOyUAvq\nXPrD60nxk0gNRUOcFmefqdOTlb5zaoY6CTENpl8PFtdBwilW4yYvxjJJPLu5\nSSLzWLx+kAJ9cVW6HMP37/dkxP5rZuSe9R+hDzQiqwvpe/V4KITSQq+afhR3\nIkaF/NqThFhENvRSrLPPXmPLsN7P990YqjJ9lAtPvWRMhfqrnv1MHzBAwu7y\nwxYPjVOFOK50kFAq0miOBRQbdx1t1LHsOnkd+xPOVMzDsKD6vIRgs6rGPUcp\nR959bN/KuEqXyo7GsjlxZgDSlXgRa9qal6MfDSGpEJvtG0+hYlOIx9ST3Nn7\nSiFsSd1PZz5/OsxFJTjQg7W0a4wFDw6p140yXriZljy/gSsPqtZ4+ENUk65Z\nvnl0vAP/oyDksuDeu2Rhk9i8SSIqe7kqU0kdpGyUBqTyNXew/bRNAId9UTb6\nW5BHMVIsWWaebDozEzZs4Xw+Xz+2NIrVK461G0X11y1wB6F/pDlIgO+RjL9O\nvMpH9vWJ3w77xxeaA4SDwUt825cnfNYaQBXnp4YTuQJUVn2YOtCKgDHdQnAk\nC677IgEYrAoZUAcsz1si3I7L8EkBdFaiI7PHRtNTjUPxRFNi5tzSTl9x3j+u\nYaev\r\n=2yD6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDoawT7mwYXxsvWhiDLt1RHGi14rZpjqwySNURsT15ziAiEAtFosZKYW1HVxymjyZWMFRTB0sHecodZwhaJcDWulnOk="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.2.1_1547375025396_0.2876246182826321"},"_hasShrinkwrap":false},"1.2.2":{"name":"understore","version":"1.2.2","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.2.2","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-nvP/YXqqNaTTg+YkdI6fVoWF5prWiIDXXqHYLtrXFk3UM4HaeMoYRs4C9msfhCgYhGM+Bpvwhy/T0sodGHu1vA==","shasum":"2ac42999ae623c9657d6991ec85718d2e2bc5a28","tarball":"https://registry.npmjs.org/understore/-/understore-1.2.2.tgz","fileCount":5,"unpackedSize":50682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOxG7CRA9TVsSAnZWagAADoEP+gMOnnI8rfOp9x6O8UH9\nP7E0oxbpcIhAKJBJaczq4/E3NFcX68EvkJdtQdokD9zs99V/CRmSLamYe+iJ\nCm0ic1E4G5uUc2WQODC8JCF/MsPGGtJ4J1l08lncG7Ohtc18NjuLanro+E2j\ncTbXb6BxWz27jhe6dM14MD2MaWRm3eWofKp+oAwK6zEbuOpXLfyTAMZKvrHm\nRkg0bSRaYiTAY2Bnd0ByBMtvv2DUWPFO/dn2W/HRcLCvxdhdP2GvzjQGFst7\nGlO3d1qx+i1fCUuFpeo436OZJKFijoCDqr3avVD/Eo9ipbhOpgknrkylKXlt\n5BhF26PLOvVVd54hKi0uP7F2R0Xbr49qSVjismzy5c5hVs2yHOgiEfYdyDWc\nkWpaoadJ4aMWc0/4MPd/OT8nlkMbnt//LM4gF8msOcokJ7vBZaIW2VOfnC2z\nQ5W4vLBUJVy4G7OmSmkJ9QIgv2HbLzSOkJXFeUMu1WBH8ABXYA8HTsBKRPiL\nrdo+tX7x+vFjzvhpt9CY0xH5Y7O//tLvEkl/KUUXH6oYZr1bxoJuh6L7eb4u\nGzee9XDk2GbmiERakwCRcOi3ye5BDEkhe/FP64Axb9AkQbO3pmxkmA0q6VAa\nsgzWBvybp0gjFm4wGqRNhMfgaW+pPRMOAUscpHT4RWqpBWhEvcSFxR8i05EP\n30oq\r\n=2w0+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB3H+B6PH/8uYDEiRUCkKc8ySMuxvz0qSnd7HGVMkbykAiEAwboyN8iaWdBqM4EtsTFWpLSJDyK1Qkj/1za02sQaCXw="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.2.2_1547375034938_0.5135408301211946"},"_hasShrinkwrap":false},"1.2.3":{"name":"understore","version":"1.2.3","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.2.3","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-EHEyIoKYt+EUmCtMXogY8xpV4gkN1+Ag5f+frMa33D58lNKYZP4tANb/5F1z66xyl2YGczQ1jMfvfRUblnZ2Aw==","shasum":"3de953444738b7409a80db4df889e1a68dbcb8a1","tarball":"https://registry.npmjs.org/understore/-/understore-1.2.3.tgz","fileCount":5,"unpackedSize":50688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPZ9ECRA9TVsSAnZWagAAr7QQAJEJYPAN3VPaMFjnMdZA\n/JYZstaSNYXaeMee1VX39RS4d/hwHDXn5UtnYOAmvhjkPgaKzwzA+7r6txKa\nruudR2Wzpvlw4SivE7PktvImSXWGd4N9Qg+t3L0W5HP9FN23h210zOOrSsfM\noPHbKoz85DTFghkxp8oP/ADpPJ+huTOSilSOdQLPm5wZXWYLYda9pnsnZY0e\nCLUfZyrcv+OrDzskiaTjoZyeuzD1QLkbn9Y5oZ1F5vFJXnoZU0u8aV6qyD8Z\nisa68Uqu5nmOZJDSxng91BsEoHxY5qrwISQPCLYLcD7s08XXxGBSy2MdXlOr\nn95v31dpnCziqCFPaCurdb4NLRPxDPSSdbQLpcPcdxKTd0Z3xUwEIbMoH7rH\nPgiBiQYKIpXCeiB82QV/AWny8/4k/I7X7vpHZ2h3qh32os/JAT64MS6gNZWW\nKi507bKqiwBJ4zUMjKucCxR0JSZp/M83bp6zgz1fjozFU9NeSGqfbnH0eHyJ\n5fEmBfaNs4h/mvD0hDQpZDOkSTx61ajPz8lTStyjb66AvWpQsemxCeX8AvTu\nVkkCglucPd6KasG+OmQX8t6meJYH3zRp37GOSJY6VxUmMHverZnGxwvVwFBu\n5BRll7Id+vMCdTpoXKlBSi9xtYy15N5ta92pysn0yaL3m51X+HpBjnBaA1cv\nB3IO\r\n=Tb50\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOtWoA5YJeklaWy2BA+b9aUKne2PsQDRB51myHWjaLmQIhALv+mRnYfYIi9s0ZKxQy2ZNY1mdpVnM+5yQceWjwuLP6"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.2.3_1547542340121_0.39383735912020557"},"_hasShrinkwrap":false},"1.2.4":{"name":"understore","version":"1.2.4","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.2.4","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-V/UyGZAfi10KTNW0Wqi20S0X54Njic4I1rCF9+xWz5VgxLtRMU7Pdfi7+/HaZ9Fna6auAYCzxuGbuxcmx2vZMw==","shasum":"08a954d15a9567e156b9c74ec326750b662e2adb","tarball":"https://registry.npmjs.org/understore/-/understore-1.2.4.tgz","fileCount":5,"unpackedSize":50688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPZ9QCRA9TVsSAnZWagAA+X8QAKAaApamxFs2ouHx6OWY\nmFRmRjaMYoVQW0jmgg4p6JRQE94wYobaRyr0CVqRAG2Fb2spGMg6ZFG8vMvA\nMMEjPIX4IPcBAelahqjS0g/uqWoJoPyi1DUpb8nEZW+wU3n3pIYdlJEnojT5\nOIDqFRSvoc6GIr9xx2moS9FSBo8y/yg6fLq8D3125of1R62hsPIqnmGKrNdj\nmUjjey+waDMDrV6RizOyfMNUubhliHjCkLnF0dxJ/InQPDgMMyhnjy9GNyDu\n/gKTVta0+Nn2QhOFRu5qtOdcdZ9LshQXNpej3hi+fCJyITUXbUoxawhTOO+D\nsogeackfxSvJrLs/LqxqFzFAPNNNW9KtegJR9BOv7TyTMRpb1Yw+L0gldEI/\nhiEtCWdAKAg6wLI4mO8hf2dEiV/3XBEGS2NR+B+4gYoU8l5MTBs15E84p4Ju\nMZp4VEfa595hUkqkJiyd0wUzfDbWGX+HPXhPCTBgD/8vUCJoKq+rrzGloYVx\njxNKuNKE608cHOeQHSWBq+B2djPlfIc5PKd9qQ7QWQ9L3lAIS1iNoxBfmUYD\nrJar/cSRuHg79ssdU/3IAMFCrzvOFvKLsvewa2cbd4rf+d/lqMHk3EFAQ8q0\n5N6RFJkfemh0o6LMvISKy0WpdP+lfsK5aT2gkSmh+hsYER7K+IMyDs27ry3k\nFih7\r\n=sZrM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEcLGRSvhiPtBhBQidRza9v0u8bvMd184sjvIrzY1qBOAiEAlkGb8FPOnqLcgzf07mvij7C4HXESjRA/EXyhpJsrBrA="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.2.4_1547542351321_0.9420417245572494"},"_hasShrinkwrap":false},"1.2.5":{"name":"understore","version":"1.2.5","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.2.5","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-sCkvWh43odkzIcl2Crkx5Eadlu5fDldYvOMRmrsgsVDIqSCQOogMpvxv2tSsW1dmt+qenZDP/hnJHgqqWdDSNw==","shasum":"1fad4943ff66baf51937b3a89c0fee9cac3829a7","tarball":"https://registry.npmjs.org/understore/-/understore-1.2.5.tgz","fileCount":5,"unpackedSize":50847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSU+2CRA9TVsSAnZWagAA6pgP+wWZpPzFXhcyNY8gLWdd\nKh22a5CxHidoWJwcdReKKObmkuYIoQk9iS5JzTJkfFCIRTxU8bj2h3jq8Umf\nkUulwSw0LKRLGr5BMLNyqL39av2kem89deSh9zojo7gMu2GzYdGDslEAGVC6\n4lifp2wp/uboPZg8f/v7OXcNU4tUBliuJFLW34sVQd0cFJjK+k/D8tEE5yqL\nTZEDCgnMLuWsT7HWSKvRG7d/jhqL5GGEmzjHQ6QoRoaMQlvZyAa6A3Incnn8\nXEh7nkW9zbc70WLSYCNsTYdw+UapNCkjDshkqEAhZAvz17VF7LKyNBnKO2Og\nqznC1cQQ5I7Ag59enevxgVtR45Swv2EiaT86+0fh093gNIzy91Jjpij0G399\nzUpTVufifbEbSTz8aU6uufD20kVTe74+dmaM0fVo+SVWGV0/Kb6OVRp0Neb/\nmre2N3U7XMRGxBWFEEwaQfqC3kbE+Et9/wtStBU/7E8x8nVrsXIzwtDwS6+b\nRFpX7PD8SDfCudxd5O+8DjSGRKfOtU0OK8tMbFUN/nb+gmm/1KYgVC1s4GgV\nJFcyzNxC3W10zM5kJlbtdMksQOal1zXw5x1/TAiMbihfSMHSOW/FZ4A0Mjpx\n4im802N3q6ZTEk63AFlBY/O7vb88njmPiWHAZar/nyK54jzoEQaA6HUamcQC\nx+G5\r\n=W5SP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGjY4Ree2+aOVzl90whnYRUqWY8VAyYfbHgcdrmB5N7YAiA5/kjLihU5opZnDuKh10RKgzwkdHUeROnfWGC/EE50kA=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.2.5_1548308405813_0.13859192264520082"},"_hasShrinkwrap":false},"1.2.6":{"name":"understore","version":"1.2.6","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.2.6","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-crhb7rIFC0hHluovSBsbhQIA1Z3BXtpHI3q3SjrobNXSXIM8AOeO0coOVFH0fobig9OkDdTggWrHEUS/JX461A==","shasum":"4282aab3b2764ce88df9dc46be1b6c5e456da131","tarball":"https://registry.npmjs.org/understore/-/understore-1.2.6.tgz","fileCount":5,"unpackedSize":50847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSU/ECRA9TVsSAnZWagAAjX8P/1dkwqI9PNpB0vU6UAsP\nOwQasX2sw1JHB5e1D8eTOc2n+twe5YV2BibZLyoMF7X/pVMLZY7V8+xkKKJp\nUPDMbWXJZrLNKmFpDGOoHIotpSZ2qeOpaTlP8NRASmWDmO4a/xR6l6PXVNt2\nESWCSiAg3ogJWW7lsDSgWueHJ1yOLk9wKjnpo8vlssvRYd1XDbIxvcBDZko+\nfuHz+z6+t73+vC3XPKxF871H6128faou9hwUSS228q48mtdgwq0tupPbqVQt\nvCemfMuTT2Pl7R264SmjJIoWjPycjXSlk9edQGp+Cx371w85vlC+a+Wi8j2s\nFsylA4qcA905lFmp71cH5QySQZP1gWB8qg1w2jVawJ/ie8pRvBCvXsbTUqv8\nzo1O+LljCwePm+YmKt+PEpYnh1PY619/BpvBzr00rHfZIle6upEJt+Ex8eON\nZo72UAaGkNgIpF9tecbJehEyz5X/+1yAwKBolkAjz0k9izr87B1CZN44qvND\nPMH0JU5C4qawN6nK7EctpgyYTOiMcTDJqWp/E5T1JggN5NLWZIVBKQhz4ZtL\nEZY3E0pWr2or5X81V+U7UkYJidlR5OaEEJhBaHaFi6y7nNC8cNSlGhyvE1it\nCEotbY8C+jIPSZRHknfplfJ6hRGuhqBR0kRkFgCMPepSSgCOZWgthPtYekrF\nxVku\r\n=HAny\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDkmUbK4qbLWKOuFO3zYArVVFA/4WGMkUwuwFtQgr3KNQIhALPpptwfmNC2/3+7n8ol1w7QIDRFytxBLCR6HkspypwO"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.2.6_1548308419429_0.33228424940924195"},"_hasShrinkwrap":false},"1.2.7":{"name":"understore","version":"1.2.7","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.2.7","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-b7wkWkPknHmp8+6uhksn/2G43ugD17liy/Poave8iIOi5ULqdMqtYJeYISvS+CelJEAJvZu1PxmbWJUjrmYw/Q==","shasum":"8aed90923f3e1e96f0c5b75b6fe7e3d55f6badcb","tarball":"https://registry.npmjs.org/understore/-/understore-1.2.7.tgz","fileCount":5,"unpackedSize":50939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTZVdCRA9TVsSAnZWagAAUXQP/jxmFUw9x3jf4392w27I\nocnHOJ4Ky3rV/AKiMn/Uld7pOsfxw9/2tk5y1XhKAc+huqDzXdo8Cu3lvXj/\nOAB5kwtNfSS9mLNcvmjp7lS6wfIgYUkdBsk3/KDkfEHcV39dp4BhBAzBQyDy\n+j7DDXMhsdXhn+tOuQWIg++kWnPnNfK9/WPTUSCsT+4VQT6hurvSFB7R67ig\nmN0yNjKhJER4ocwX1iUJWrct8lL6b3u9+DHWdfEm80kX7IKVqHTbl5DLeEFC\nykSPLdy2hczmXY6MvHXo+zBHqZNlkhxnD3YxPVz+w8VV1uL3VMlW5Mndvyty\nFiG+SuyZsw8sJaEVxldaVCcMSm01ZrS9BGx2taqVUVfYUpNrMot1YEaviUMa\nW0vbP+LEP1P0zozENi7e5O+ETt1zm1k2CzluvCOopGD299xhCJW/bavk4lkm\nfximupExNPMBR4e9fGy5OJ2fnxLU/0yrzXBCo/ljhL/oetqo4yXPPm4shtgS\nm4BxXMVtPDEgCLDJpmiYN9se1tK4S2yPl0zfrhNMdLYnaxiqDl80MH19bVfq\nbP1paWTr6HKOvaf03Qhf+S01zbjPWkx93kd0Wl86hhATCUTxfkfiJyyzQwzj\njPuZCOdsCuFfcx6CqW6DFAshiQYFgbEe7OjQbnBo5vvVZyClR0pHj+EDxE73\nDUrc\r\n=OLaX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEd0hHTlOhTRzIJrb2op37GkvpRhJNGwkufrcEx4sqYhAiEA59P6sZ9E4BL2BKQ4C5bheHBeZt815I+ndzBJx37ysK0="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.2.7_1548588380185_0.22636480249350233"},"_hasShrinkwrap":false},"1.2.8":{"name":"understore","version":"1.2.8","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.2.8","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-xuMq6eIEBo0GErMOuudwixBiAPrTinkRMyTCYUwxHAkTsycwLP1f8KX7AUTqoTZxfvfLA4fxxkvFASboPtdtWA==","shasum":"4db6a37749bc6db0981567ef19fc1c8f682c1e37","tarball":"https://registry.npmjs.org/understore/-/understore-1.2.8.tgz","fileCount":5,"unpackedSize":50939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTZVsCRA9TVsSAnZWagAAk0oP/iIxk7Vmio9zGtK1EwL7\n5HIZm84S1vGSvkBK1UfJOPU91uQjwBPqghfip+qtdQvRKif7+VQ2UcXS8+RM\nzKS2Rl3f8oXdlYBMCfghZPktqWxBr3gJcNXuB/IXw49efg83lBOnH2RmJrqc\np1AuiVLFevm04G4ZN695rZzURkudXgUZuP3x2ToNvClMPQaOlVPspiNvY77y\ndMPTlv++KEBaYZHIfvqNYtQY9gHIiCLMl8HpghNJhQ1H5hIXD6xGUaKki6k4\np5d2bGMCDk0WMNnLkFWsEjknDG7NK98wrMpxiEyGGvI59Q2WyPJlZpJW1YXk\nnnUlTcuxxjG5w1OPkIOzi2JTOVxO+97QYorXF4hKwwe9kXu/GOtPwLwAvEjb\noJ8eOC0zI09ppoBMbrXdQZqAur50fn5zVx6LHMW1n2BmMHTdxWil2npfLJgg\ndzKNyhjOKnCnPavTvEcYx6xudPInOkomdlpRKBTet6P7KBoDSfqKm8GVYAkr\nEHPvIqN6JExP/HrgbBqCq8X2a2sQLv2KXuY4bopALyFqfTp3fu4G1WWnYsK8\nbzueXnuH+V7fMMRwydiUX+wW7v5cjGof8nQHtjxT/qZMO3uLOJyfuteaIOUG\nFps4OcpKskhbgTPd9dVNo/VelK7eeogEr0UeMWnIw9bK5DChHoyc7OFPE6in\nbDYG\r\n=ZWhR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBHAFkzIovxwW0xFhyo6QksbPzMNSXlqaun7g2FxHee+AiB5Awr5KajYfBWuAk0KlnKAJzqipB5FJRqHf2Q1lumcqw=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.2.8_1548588396355_0.21446759674950577"},"_hasShrinkwrap":false},"1.2.9":{"name":"understore","version":"1.2.9","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.2.9","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-gLEuZ3w/ZhQVxWJmarWc8ZvbdS6hAfTRjBA90zPOPHQXls3CDCtAlmcqoN1MKo51H96btFHxIW4pYLO0JAysFQ==","shasum":"a7bd23cb80002d32565ed436de92f35a473ef758","tarball":"https://registry.npmjs.org/understore/-/understore-1.2.9.tgz","fileCount":5,"unpackedSize":50889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTal2CRA9TVsSAnZWagAA1YwP/2VpQstNBMqdqblq1Li+\nPS31ESpgTy+LEvoB4kASw6BEOvO/CQlOgXZkukXpj+wgHZYv1cutvRTOeAlY\nKyEQToo3B9RRIRafBMFTB/iSJKKQ/Fv+HtD3FYDg/1EFwXpoo5hEIx9xxJQk\nOMuIpCgVHXw7OS/v/8A/+75UgctfJc2t8+DgthghSGDNP6qxw6Bfbt3wFXm4\n2ej7V3Cq3ujUXUXIu/5/fHv4zCfDPq/L8MMpSWqya5b4/zdJshkBqUkXBduV\n4IcCCSQ1vIiGEScLzuthQgRRi4Zxqs8mCmsm39QwCDIBtkSJMGNxBnRkeZVp\njQbXuj820kiIjZn9H89qNotAb/Nn/yhSPXXYDlol+OythfFvN0qz28qG/io9\n/jUOuvy0PVUaagAHc+rWCWQOa3zjWclSwts1kcfgw+sTaiHEXjaZApra6fiJ\nsowKqL9lCJ5JRhdbpotjnliZ5FdECR8S5AV4Jk7NG0Xx+O1ugVzliaDZmSML\npOVnZnXXMyXC7DQWYvvwaORLi6O7mTJyLzrN0h14vk0kgtiPHSEp+TQbsvYy\nyOM6zyNW6cfmx3ma7hwtU4wXBnMzJ5YNwPYB623QXdJ7nBtrYNeq14ZxcoyC\ncdOoTzxeR2kQXKCW+ckqn5k6ApKE35PgSd2TuDSIWCzD+cDmiWYy2c5JGyPM\nzdR6\r\n=HAFH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGLq9tyeimjldA+bVW7gv4tmqk2DnvH/RtDwDHacQBEQIhANCkgwtEbsDIQpmg200Zm9Dv8V29Y9aEn9OICpYKo86e"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.2.9_1548593525933_0.9910951660950897"},"_hasShrinkwrap":false},"1.3.0":{"name":"understore","version":"1.3.0","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.3.0","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-ly4qID9A51CZwGSYX/wM04UJ4Ur2y7Z3BMMmJIR9oJ+Mk9p2U0LjJXKYFv2MMXU+UH0F7il1rPoMzY4Xza2pow==","shasum":"02585f1e9337acb03bbf7fd0e82ce2ec579114be","tarball":"https://registry.npmjs.org/understore/-/understore-1.3.0.tgz","fileCount":5,"unpackedSize":50889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTamHCRA9TVsSAnZWagAAHYMP/jt/7EfWVnqyn8it0X2w\ngSmSAcYAghLzYHy7CNWJJO01fCKd4gbmTD9b0+cIxVyIaR4WjSv1Y5y4Qpuj\nuUlrXBharAPwh24zroP3mx0vXa8qrYfUIXfK0uzqB74WNVzRBkaIx6vnNMa6\n7tTA5NqckhZltnEeiV8uqi0eJCuUTfzSR5SbLiVu7MDsb/vkTDQ5+UIZ+qVr\nFtQoKOIR54ZO/PZhjh8Hr4r6GYqmK8ClmxWxFvwNti3kud7gSgSpWvdcZuwr\nKmxlLk5LdMIiZVBqjXYO8PAMr+f3G/rfFGGmko7VT9qPiPvv/fA1Sm6S4q3L\nQqTKIBnl7l1qKG2Xz+XaQOEf/AcQpG3za0ivKn32frZBPgBGUSLkznWwDGOU\nwyOxnaTEWfAQ9QgqY9V03buhE3IJnCoR9BoSuz+6Oab7bo1xu5zv2mekw9md\naD2SS9GfOqmMUcYZVE41ksGstv36rCqtVM3K3C2qvGk8gCBoIZ8/TUXicvZq\nHi4icNJQxRWo6tqXScwXbD5djANIw9Dwjk1VZwSP3wqOD/ehHk/ojiV4HEyF\nXtZ3j7wipL6qnllH+d/+QKu8c6ZBbGsq2zcpPSr87dXRhjJzh5ezAA18h+KZ\nvxbYuv851u2UoAe5eqKzr8xNB80UeQiKFzVH98Spoo780QBrPdBd2/ys+J9n\nnkjm\r\n=t68M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBDF9GrNaX+BM7XyN1HUxah49lpCz9btKYhZs+UXzNUnAiEA2uCVkpLWCecPwQDwZZsqBsXEMDmgRgQ0Q4bSFwyOblc="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.3.0_1548593543260_0.8327087698744615"},"_hasShrinkwrap":false},"1.3.0-rc1":{"name":"understore","version":"1.3.0-rc1","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.3.0-rc1","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-RI+1labbPekZDWWl6dJQyE96/J+DlH9Iuko+heHL+bbbMs5FiauvG32RyW0kRFXqPEtlPVoLOi2kwSLl7RiG4Q==","shasum":"973f0fb2de654ebacc36981c464c5c3fa0916601","tarball":"https://registry.npmjs.org/understore/-/understore-1.3.0-rc1.tgz","fileCount":5,"unpackedSize":50635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTa46CRA9TVsSAnZWagAATQ8QAIotKJj5RO09kIRdua/j\n/C9DgCTuPRmQHZKYJO0v+4992QrxyolQCNeez/F1z+H7BtOjlcJ5mqcgFAj5\njJJwLgTMB7rNNfmKHUn3rVBAdCl1HfEiUmgpshX4WXVpd4yn7uu4AKfMeF2+\nmwHwNteqbfkMA0hA81ZerMRSjk1/piE5gag6CDZMd0Wh4Od8y5jXBKI+NrNM\nmsXvrNv55NuijDxyJxc3yShKotpT5GyzCPbvJkT2+fdTFVNMGDhkcpB4ndrS\nxykFzFCRavbc/DoEYmXaq3SgqRXp1FcBqv398W6U/ViTpLQDNW06I6W44My+\nkYKPYHsVEAArsE6T21nZHtBNTdX7SOGy80AT/UcvpzQN9sGNhLeeUgNzkYkg\nu1S2yxvk1MX4q1NX5FkXZZEGG20/9R3kEIMNyP63s+wIz3wFMWvQd5pJU8ft\npkQAH1eqFNDxHHWH09zKMTd8RHgmwy165OzJc6zYP27zAE8v37vC9rt7Z+Q6\n3FQTHkkUprt0K/SBU8E7hRPfU95K8RLeq/aN+58J2DU6xIfX8odICvPjVLw2\nzxG4nzGhPlCf/I1G3+II/h2s/U6km9pOA5DDYopvo8pgVm6IINddXlyDV0W1\nhVH9N+kt6nwtlyErBzQI0YCj3mL7CmCRDfyPlRvi5GFAZ/2SswLRXHgsJgqJ\nWmlD\r\n=TM9W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVMwxNvxJixQqH2JBa8g9KPoE2ERWA9fTM4CXOSdrK+AIgI6r/EmeCQm+DzRg2SS6vVA6GvySzQkLL9p9KcITRwI0="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.3.0-rc1_1548594745641_0.6341967920977658"},"_hasShrinkwrap":false},"1.3.1":{"name":"understore","version":"1.3.1","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.3.1","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-+eYvErEBlEvCBnbZzSIeaz522i5521eY5rIV4MO74/41d0SbdWX9BBg3LhlHcR2yKIt1OYHMut2lu3RKnGVb/Q==","shasum":"f2d5a54b09d0bc150490cd41af32e7309bf48e6e","tarball":"https://registry.npmjs.org/understore/-/understore-1.3.1.tgz","fileCount":5,"unpackedSize":50847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTbA5CRA9TVsSAnZWagAABOMP/2yRGmljNx17n51LGAYs\nsM9rm34WMVat2hWZZJaWqXGDHQ6NW3iFbKmmU4sQVeh7So7zmaD+cLxCR4ej\nQMCGpY4g84wVL4Voc1X+EniEIKLgzOilcrPFWN7yBJAtRyTOUJGTCaEd89zg\n1GpNmUUSqMlv2NQTA9mCv2bFpMhY11i9P3AVJiztEqk1URLshhBymeSnFMus\nYjCmf2v6axMdNP/G4M+AE/jCxp00KabJh4AG+lqIYPo0Gbc6NgS3LQKJCa0m\nCxjwWfEk1ggyhWUmQvlKe+DqkQk0z4i1VaTjVUsSP2wiPv6OWU8RnJi2clhD\nRcTYdk9OT0O0VEte6suw71e/wQyB64FzEINeqysQR7nBLsSsfRxWVyLU3qcz\nBK6Hgh4K9Yy5cMf9bOtaTJ0HIGnpbZdarmzKMl2hti1Nb6HXFpzbWdziLz6p\nNz0WhEXyXHZhi0xBgV68z0YqMESx99x/RwWGkonU3dstVJPuPPp1CTtSy0xv\ncyR1yoxBvUmVKWJbrNJfM4kT7HLKMulVTkPhZlBlmmAHSMvqaPzxa4dz0Q2G\nGGZrrv1yX5NC5cjtNwIIb35zHd+Tw0utxhw1O1hmLe37XwKedTbA43v+V+tX\nUM4MVIBYJ9Dhs2Je0aExyUWiHvAuHrXX4Q0I5Zj1GwPGNtAdrb6lkEIcBT5u\nrLw2\r\n=AiTO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyv6WvFWcOktYm3M8LPJKcU4TQ5DoKKBMb3nLPhjFmJgIhAKX54CnpiR2fJvzchR6ybawpmkwMnpCjLYzt4Un4EFL8"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.3.1_1548595256387_0.8593900955961644"},"_hasShrinkwrap":false},"1.3.9":{"name":"understore","version":"1.3.9","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.3.9","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-fy0wk2P8hiV2DZ1WVUL97/735R0RmYoPBeCCwrZ/CmuSXlC/JreRmoKJicyF1HbfAtBwyBMAKuWSwhWCr6nZog==","shasum":"16c84a9f68abfc4b9c02f82f9338c454bf78bd46","tarball":"https://registry.npmjs.org/understore/-/understore-1.3.9.tgz","fileCount":5,"unpackedSize":47924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTbdOCRA9TVsSAnZWagAAHGcP/A+oVdUtjheS0E3zwU6Q\nx6kDe9BlbTMITe4hweEC5S3MZFZqloZ3AeUDN2PANC8Ffz2YqEMt8LWijWqj\n9yDFd9yc7Jv+ttchUYR19HitWzg7Uix5gtYHyRiU92gsxq4p0CgTP5OYozwI\nZt1FYi8ourlinaKyqsGIryOR0SrYizV/lL57HibapRpN838yXpMDOjgijQMN\npCfcsO4vyhIvFzceUyEq1UpiGksDf9f7WRRjTvhcMpcKDetq/xA0ycMxYTeT\nULmoPl8khqyvAH3AOSZQsKporvOjt4udHGwKnvA33ycRb8VLfhj06nt47eqo\nk5n05RofAz4a3o9shiTfmpS0qspNFcx7paaUEwq8lZCsnU5yUJQK6qifBOis\nuueSi3rvDX5vMctS1HXpB08rwvXCn8IKVoXroJSjUOJeneKe3JQRaAUEhsM2\nEWmYcb83HTFQwgriwsw6AsvYx0gmNGvQnNb2oJFgXTkr8dYwvcr8sERV5BOz\nSobWTCZRMG2PUqOV3FY3GFdxmRIGsy7JSgBsdaJrFu1At0cwi7h3lfw49NJD\nNCkF3Cy2/bW8VpVhWPtp66iGFxInTvCw0+9S1jPl1z4CDeJDBkKdmPtQHk90\npF10mtAwu+8IEiz2Q8KEb2DSj6vsHXdEZDLliY9yWjU13IHJCqGYyeXWt8zC\ntJpY\r\n=zbWq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDYfg1kgFNxA5RECOdTk6dKZanSOhd6srdOxf+bSCnUwIgP8p7seHeCFmn1Npcr1xkkpxstuUL08n5JB1TNO+XCi0="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.3.9_1548597069539_0.989856911554525"},"_hasShrinkwrap":false},"1.4.0":{"name":"understore","version":"1.4.0","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.4.0","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-4o4Hdof6fIZ5Bh7Y5xBK64DfQe/X2kcHImybhflZbfJyYC252t1Ec+1+5l+gLmpj0yipDeLYEd2VQw+VuzSLng==","shasum":"98aaa12032b047e6e72563e20deb7a17233f87b9","tarball":"https://registry.npmjs.org/understore/-/understore-1.4.0.tgz","fileCount":5,"unpackedSize":47924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTbdcCRA9TVsSAnZWagAA/KcP+wUWiN7hPdoeDpGIAwdJ\nICRfcLFccT1b7KPySLCvTFBWF8Jd7NPuo75EiVeYjnYOlIbr0GQqVi6Xs3/3\nQARb/qKcHIHaVh4IXqcvNiqSYR/8MYe7JqlG51icePLPqYpTDWDIAYZXU384\ntxmhrkLOo3wf+QvrHhQoNH+NG7EJk7aqu3COEAMf5IpQTETmzmc9ZxFmsMJW\ntV2NVK6XUBZdIRzBXhrKxWiJXuYoKR3APHPBA/++7yeUb+h53YDuWpZQrwKV\nQN7vHLzeCIVUt1NKnWPlkoBFFC/ZPnqL4SJgUTjpNRVw0M6owBy/ro/S5Pf5\n1iF/H+B9kssBilFBZfSjF7UuwkT3kUUBjYXIBUeZ5uy4nrwkNtRZlP+CtPP4\n9s78XML9cmVKelDFa7e6HBDyPEMq58G/lUBNCjsQSkoKzToMb65NgBiUsfLV\nuy6iYQErsCSVQt7QL/0XzyvnI/1Otdi6pebF7SSvk4ah84gqfchoJEWud6Vl\npcnwKYcjKRyuzS8Ft/m+Ji/M4vCo3CjhiZp4suGC3bzHjVMzOlWkuMvEgKXY\n2KyDoUw08jE5/dAt87bm8vwAs8RcjcLo7ka0zNSHGabUiWMiDQqporrHLx/0\nh5gGzNLzOsTVGPoJPa08f3XT8kVHQfP7Q1oD1fXC7k/n0ajPGi2RmgNm5NjY\n7ChR\r\n=T0iC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBHmcy9luC1l+p8NGQNHvg17hTF3wAEZvxffQwVkybeQAiAG/4DjIRj2upMZsHqustU2wu/vA9mRHqzCa70dKPIKtw=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.4.0_1548597083602_0.2148385785244855"},"_hasShrinkwrap":false},"1.4.0-rc":{"name":"understore","version":"1.4.0-rc","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.4.0-rc","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-Mncpquk6KJ/tI/RUCU11XAyUO3/uoWfpDNxc/esXLRZOYK3LHpLgaGS2jRjziH+mOAfb92vL3rZv9HMwE7deXg==","shasum":"5c1d6483ae258a7f40f71f97b9061d2f9e5afab9","tarball":"https://registry.npmjs.org/understore/-/understore-1.4.0-rc.tgz","fileCount":5,"unpackedSize":50870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUHzACRA9TVsSAnZWagAA05sQAINvxcSdrLXZFsKIuqUU\nkCJ0ay1nhxkzd9FcTJjYggB3X76IPQZwEmyKEVCA1JoAjesz6msKQTPUONj4\nZw9SVk8ovhW9959TZw274MNGxbqoNdZJ7WWBcZUhk+fw9XjzLzrQneN1/kXJ\nPBHZWfwrhvCEKVKOd50VogU36feZzyeUm2MdYiPmg3bXU/l3LZoilXNOiCUN\nq7HNEsAXkzhO+nOL1ANLe7HDBLYGXK+9mATNZfqKjCyJ49VcBX7Xv/hy18fz\n32EomdaRD8yGqecvYSkW+aA5KRSYMwl17uPbh9v4v9BQgqfEHYdUU7+v+Lyz\nYXum4+IaJwatJYs/Js86FHjVtEpo7Ugw5K5QqXVX+ZF7f/RQujcU26N7qRXm\nqSjE4H+ehJTSq7fXZYMK003p/mdsk2brbzngwxkZQtvFHb4enALShXQfC09/\nUYv5oM0ygyM8xqeiLAW4KqFZm1prS+U9kqre8Py4djSh+nNsi8Oj0hWhmhZC\nNlmoKg6wCdmGUaDTg+rdkeFMvS+AsVcMrPYGeYWPzHJlTH3IAm/MVxwObQox\nG9oTvdvtC5Ohpa24kVOL1U57WQPG874kG+YaVmXSK200HSSg+9bITrSx6knD\nZLQfASmYx+3KDNlaaamYr9AJJtu5B2ROgxcT7TBEg078bwCdg+bZjty8r46F\nJx7p\r\n=Y7m5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFB1OFx+1xLUfTQHfZp5Y7EOalY5jkLgfonyzQzWWFigIhAOfzswzDiEkFBAQydh4sm0x52YokLGHBY7MU7js355Hq"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.4.0-rc_1548778687908_0.15823187091165303"},"_hasShrinkwrap":false},"1.4.0-stable":{"name":"understore","version":"1.4.0-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.4.0-stable","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-dedTsjeKdLv+Q/tWXsjgwNuZcxU7TKGDTCQCn98g0sKQtO7qKtfUw2ezVZvRN2CqLaHj0y72IClw0TAlQZGIBw==","shasum":"ef70024a95bc8e4e2bb6f8d2b8fbd507dd6dcb59","tarball":"https://registry.npmjs.org/understore/-/understore-1.4.0-stable.tgz","fileCount":5,"unpackedSize":50874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUHzbCRA9TVsSAnZWagAAfzIP/1TYONFsA6ejxHCdFuLu\n01IETW0sag+toWJH8aBIrNt3/3XupmeqFXbzmsQZ2nvP4ta8RdkNCM+FK/47\nzI5kUQGj6YoxFQyL3/8a5qBx/ErBZ4jaKYPcotpyLS+re85evbdTz7o8SF3o\n7vlcovrXaSyBAF/4CZRFNLAEha+lkJ35LL5FalxUUm0dqgFma46uZimuLzqp\nSUlYyoOgEbSf8uLjyPzxGiJGDsiNGXu686UUxVAzYbbOQMiFM9YAm87U+CHI\n/0y3bKEaT3Xbx41390xwL1Cs2MKtnjyFqTXmfyMyO0s4mEFI3mo8tTQiEJzX\nQFrPLbJ9HM46WScW/GsKkejRhxg1D64TWhUXxNp4uJuePKJ8sWl2vL+COC0S\n5MpsSXkOmpZosm/JbCrplwtJQ4DzuGh3YfVxDQDtSlVqWK7DtaH4eejq2QE0\n0t0xU1vpE2CZMoPVSDy14L0C6hLEPwY/KIHweRgQ0mS3dk2Xunm2fnZKWlP9\nGTAqm2DT9zyM3MWVpbxM+c82P2prsGVCBK8lMAgvRdXomZTHBGaej1/qtTQA\nItXeF4RcInpOwIaKFMcB247MvBUOSnEujLn8cvxJgBNtePP2AmT+tmISZFfH\n4Gy1iYp4J9uSkfvhFCk6kIWFUrUXR4GpN9Ajk1mt0LLo/pR4BZqcECJE9Fvz\nYv+5\r\n=TCGx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXDrI/5wTf9+ea/iiPzmsQsA6jwQxf8E3InDYUgYEn6AIhANSSRMaTTBbsCVyVNL7jSIG2GZSsuhZyORugii+pNUJ8"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.4.0-stable_1548778715068_0.3518416776635036"},"_hasShrinkwrap":false,"deprecated":"remove"},"1.4.1":{"name":"understore","version":"1.4.1","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.4.1","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-gl+DK3INE07hqiuBBru23vvXcs/PLHellvzHcjdiaaOH11RX1P9GcLz4RWoW/JQayiOwBNyV9kE8j6mQiqFhYA==","shasum":"57289477db3a05e6be7d861571a13aa6db1787d6","tarball":"https://registry.npmjs.org/understore/-/understore-1.4.1.tgz","fileCount":5,"unpackedSize":50925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVXNkCRA9TVsSAnZWagAAF9UP/AjVKMOqH7DS1TlSANwK\np3sUq9a62XTN4y/fUZNdIpOK+Ua91pTBc+dx+frOPLbftKrmafxqQvLnBrvl\nHuPa8oz9x3tNtezO38lJQYFOc8T0d7usMji8Ufg8otEZ3WWPZUIBROWZTpsV\n61PsBiil3FmwjdeD0ekXMiWAXS4zIUNC8vu7RIoa6L4ycSUnogk0zZoMCzNm\nb1fqLk68p06d2g9oHL3EhTpDEa7DfTyYpWlHr2L1N4gy2TzrHUFXWgHBoRDx\n8EP9KIpqzqQ1PtCCs2XWi66TL6FWmj7kUtH2XTuG4toaIWBfrcUabE1n5D73\n5joXUSRgA1t8GypsZHu0BAXLlwPn7G1PhOQKD+QrVn/+KIVpN/+G5Ff9HEE3\nZL/DThgjkIvng/uzma0lpfLBFLGaO0/3r68hA25h+UXU7MsYFm8Bcreme7Pv\nvhswKylDdSWVWd1uDpfuqxH8clDkP4aSv8wF7bbBN4Rd3XCBgo7BpadQh2TN\np0eCM/mnu1NQsfhiKeHvp4VO8vzBrZcy8VlZT6mbTnzkxviIYRUNkCWWOkpu\nlQZlUR25PD8TtDvzBcrDPDmxtwT8Zp2vBvL4OkBc/UelLmw3ID7mStjY+ccs\ndSrby5bwrZXs2B4+XACB5GTdkdh00wFVn8QfEtEwSO2yphc8myjv2H1/uIIz\nD0Lt\r\n=xs9+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCY05FQPB5QqBmTbqujUv4iMp1MSpp9PfkaQQjDGkpA5gIgfJmv0mogx/WZxW7mbIBju8GFNPhgcYjJgwRWQWSUCs4="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.4.1_1549103971480_0.6113096016389559"},"_hasShrinkwrap":false},"1.4.2":{"name":"understore","version":"1.4.2","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.4.2","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-9cCdIpKtJ+KtgF5ytsHSitG8pjQQMmaIkcRp/yUCzXA2WvBjry+y6FwlqPzQ/2Q8TtPMu4iQRL3DuUer6/KHHA==","shasum":"0f020e9c30e791ba685697cc7af61e00a807f9c2","tarball":"https://registry.npmjs.org/understore/-/understore-1.4.2.tgz","fileCount":5,"unpackedSize":50925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVXOKCRA9TVsSAnZWagAAR9oP/jUeUxVEbYOVPbODgOJn\n646rrG6VGdwXmtuBSQFPah8xv6nmPFBa/jYnklxxYVA/9I3XZgr3qxrcRvoO\nFdYyWlEcTgJ2LCEfep6/S963UQTA1aBFfOqKFT6nmfJ9ej/6o3AnadnxLiOM\n5itkuMxVPVfk3lkUCXPSS/YOtUMY1WYHP1VRBgrEg5goLIWMAyWrRbR8F7yh\nG3oSckozVP+X9ON9fJsHvctzsd2+tibDp/MOjaQu4FMIzIy27peWiHQ9y8fD\n2MqfkpGo0u5JBPfslQA0/7CsyUvp7kCVVnmAVnBYv7P+snFfUciFS9G044sS\nlxU9H8AbGUlxUIjxvj5ryli0YF1i1qG2vpeHGBVxFTMJnexztDXbOFB+18eT\naHiwzpmVOPbu5qzjXKzMlTLoeljavV18P0UKyJd6QSqnG6M/wtDC6t707l+n\nBnglBg5/eZd2YbcU6C16tLAdgR5EyTepuh2N4GMdGBUT593hDwx5GAYDWeQe\nHajEc6h125IXS8PNaiqQDaR4RPa/krbp3dPVvkNo92ITPKhnl+180Zrtniqw\n1zIFIktyjAvFZCFksNr5jWbITeZ0MX9tnZ7fJbGzz3+aujyD+GM2ntKubPmV\nS4Vvkw1pbdkKqQhsbH915kGPz10vf63A4y/rWd89JBaJjaNrDYALrHgJScJ2\n6n2e\r\n=kyV4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYAPR009xSYZHOigwLoQw10RN4+/PPBcU2itX1IdnHzwIgcpfWLYF7VX+ej+8k1a3JMOQQUKv38T6G7oJQzs/qE60="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.4.2_1549104009967_0.795798562405913"},"_hasShrinkwrap":false},"1.4.3":{"name":"understore","version":"1.4.3","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.4.3","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-QpAuyvuyzQ2Rm8CO2M5j5j7NBpRtr/S9UCy3e9//85tOeFF0dWA4Xg20Gw76d6tMr24LWzt0rmy4xVIqcx6+dQ==","shasum":"2b2cf1aaad696cde449f4178509ad16910f1dcc0","tarball":"https://registry.npmjs.org/understore/-/understore-1.4.3.tgz","fileCount":5,"unpackedSize":50822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcV6r4CRA9TVsSAnZWagAAgrQP/1oTkhOOp3spWrYQyXNc\nvH8tFyrKke/oCo3JG/aNFVqLeCGABwZtgZKTremGtQg7hTpnJr2pHpNJ8Cre\ndVpqPcudYtBhGN29lDmnNS5llZq4D+d3vy/5QXaiOKS4yE7fT9Ep0wCfEDeT\nBOBUhzuGOiVuIujZIELrCjiWi/oAWZKnI+9zdpv9R/HplpG8XvSpJ1EG9ZVc\nX43SOfh2qJxKqhLuHScVz1FZkI8cbuUEmWZQrJprDUyjqZZac5ZTxCbsM13b\nd9kOAmC/+apkaTydniQzaE8c0IkgZRFqYR4FOK6uwqcUf9lxsFg1rK6v/+yl\n/UQbnnqj3hyXJLCesqXMz3SlVAjVGRmaYFS7jjccEj3lLdttW8KbwrrcFBB5\n9W7Ro2AoeZvOgW9+OwLq/Lp3/vd5vgedz1AyPzehTByS2mX7gzVjHXVk7guh\n/1WWGMLVKxCOgVwgpcSCEtfbsFuVG0lk21k7MaMxCTuq6OiW1V6LbYfGeU8h\n/+DYKVPpvFmVlKy5Ehd0Wbe16WIUI+J39ORV8wbYE0mQzN4aGe4k+LbZT6nb\niKDjXdHXc+VREq7K7DNVCRPGr1rv23vVYPq9isYLK2Wp1c1d8OcHAV00qxO8\nb0bcUtFAx8IR6gdFrkyxkNYjIBuNE8+bZa3BIqKsrb7GBHT4vs46/yQLLa1Y\nME/T\r\n=y/zl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG0F0rCXgvh3EJMOSLVyBYpJcEWf9CWiZs9UDrxhiYKaAiEA2N3TJbt37sGPnsQw28+7zy5keUKvoi1N0DBnHjJIwgE="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.4.3_1549249271953_0.3746843318146573"},"_hasShrinkwrap":false},"1.4.3-rc":{"name":"understore","version":"1.4.3-rc","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.4.3-rc","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-/c8LydB136redyO8gIhZJTJ71t9cqdGh/NWTQJTUCXPwJVRwk7lujo9eMhJTCuCDH9IDu9LgAtsvYUVO2oD8dg==","shasum":"16b16ba395da789d1968e72dccac85bf67ed5e58","tarball":"https://registry.npmjs.org/understore/-/understore-1.4.3-rc.tgz","fileCount":5,"unpackedSize":50825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcV6sPCRA9TVsSAnZWagAAklcQAJsJOVT9+/tMHA54NcL/\nMUDC+EDomrjbsWc9iLobmTSWxpupLQYwZ58lJQo4C8HcYB4YBb6sChhJbO1n\nVE107FROJr6paXvi6pjt2CH2uBmWR+IeAWauEXDMdd9C4OIxn1Oq6WxDoO9a\nY8ApOgHIU+4YgeycrowHh9txZHn0A7Zq9EqtktsS1XWb95/nK9/tdLJHLg8J\nujbBixMoSjXZlez585POsQ/oVXo3h4WRxyD3bR4C4bPgC3aDg6kzBoBND05U\nqtJ7cy3CrW1wbyMTt6uy4VUqf2x7d/EqyDAHF48u+jHRUytVA8gWop9qAjxU\nbxuH8PeIRswW1zUFc/UMVoUhPItLSTr1NjuwH8go2apRpWp7c4k1/E1T+Fx/\nILT5FS7s1rUpE5LcFLrn1I0xT3q8QuBNZz891oPv64jaoa2tXU3PWEHs+g6v\niKOKuytHiUH7IrHd2qq/G+XmTzQ/S8NQIFbliFWM4UASsflAyvI7cwnK9pq5\nYKOd0OILtmHNy7CFQjTR6TJJlrQR5EgoCwNGxN5mclb8eHLQaQpQqvr/ZzH7\nh4qGSu4xe2wPaJmbmTBrYn2uW4NPD4rJ4JNp4OTTDezXcSzjlPKdy7hHvJ/R\nFhFJejRiaJGsaCdd2db/j7+wMt/aAkQ+C3VGzdx/ufqidbXrm6q7+fgMYpg+\n9bWJ\r\n=gXXU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICN9weG8RcEtBaws7TkbYcaapKOvlmvBE908GZmnFJyMAiBKpShYYRIrXAas7RcBsjaCVZ3p8m50pQJnqMshaJHirw=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.4.3-rc_1549249295138_0.9645311689830953"},"_hasShrinkwrap":false},"1.4.4":{"name":"understore","version":"1.4.4","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.4.4","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-Sc45Uyyb+G27E5mP7YoRies3OiVyI5QjhKtGHXbIijH6Yw/MyXMW2kVccoIqpowjlHLxBsikH/DSlc3geGC56A==","shasum":"6cd524205c0b5afe50b82944fe12f8a705e2b0fa","tarball":"https://registry.npmjs.org/understore/-/understore-1.4.4.tgz","fileCount":5,"unpackedSize":50867,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcV8jZCRA9TVsSAnZWagAA1x0P/1TWmvbLq4pccMPVgk/7\n8WDohIC2K/s9rgYakaczAoe4TUktosFIteePnqQ5jBitzAa9aFyXJYJqw4yu\nv9xmP5tYDJWqy5xJl6hq89c3uUKgzDQbK0XzfdlbpSPQ78IZKXPdK3BSpTmd\nNO1uoM1YAY2CZQ/FtBmJH/XmNcsCte+XOS19a1vt6W9AC2rojxsWbKrFuQT/\nc43yOapH3hks7bwFSbYUtKoVP2cbuyRqcR6TdqgMzhVMFdJtzBG/Byyk+pYC\nNL2eTaMSdbNSDWfL7Fmy5CsEDM+8gLodqIlAY1QFxH9xbBNCKR8VvfmxKXVF\niwH2cfx51o1T+zNgleBPQN+xl0csNxZRx3V0cvjdpzEKTGLgmgAhSsAslkcF\nJy1wvKDT5yr2D8r7AP3zFBRN3QYcBObqlCl0P4MMNQ2uZeyk+dvSApAwQZEr\nUo7sHdazfJf33fpCX4ahuLHLtz/nEZXxN9xIk8QMCqbBphFrqqQQuUQR8ZP0\n6mzPyWBnQ72MjQoz7oRgGgkpRh9GBBvxz40k2BehJ25nju/oBpToaY32yLkd\n0ojfED3WyrIXgvbFHR3PfEnHXtYuCNr2c5CkRw1VUnTcY2CLczi61gr0NW+a\nXcWHH7oW3tAONFmcHsx4j4U/CANxVcoW7kWXUR6WxMuBMUebzdpsXq2dVJ/z\n1jMl\r\n=yF+I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVvh5jPa6+RBbCMDSU2uAHIBLze4Jp8ex0A/tI7vUawgIhANj7rBicbP92SaWJkrkdzDCc1QiAs44tnVGJG2ApJnY8"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.4.4_1549256920314_0.13211039630068377"},"_hasShrinkwrap":false},"1.4.5":{"name":"understore","version":"1.4.5","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.4.5","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-mqjgJhqf9gdHgdcYhJ0UQC5nuwVmiTjqKZmm4/hKIQva4s6cUep+SaloTjrknAUgxL6AHQbMaHm8Zv8zhw8lZQ==","shasum":"49c65d87a6870bae39dace8db5a3f01c2010bf6c","tarball":"https://registry.npmjs.org/understore/-/understore-1.4.5.tgz","fileCount":5,"unpackedSize":51215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcV880CRA9TVsSAnZWagAAgHEP/iEWW5gCDNViS5v6Pe2I\nx5mT257nMItKurFwRcyYEm/dJwuHKo1bnwtxWRCoa/195kM36Dl90Ud1ZpkJ\nToD2zz2NY/RX8ih9TiM3x82ZeQhO4GKxJpgIAse8peby+Mx/6LHWoPwqcrTi\nltJwo+MKPBbe40YThgqP96SI98M4EzvaZLyc07qnpbo99vKOQPMjBGGW5CDs\nfBG6OUePvAl+OwHtRm0jFY63lvWMH5OwvMSK5OofcgfQsdJCpyBNKxgAlVF0\nrkf2rFpTeEWwqvVzN12BmJOAPHj1XFNm38xc4MXDEe7/qPavVJ4tvB1qINga\n+1EqtarZmxEWd1GlMaAla7fnvxTPlYiJGxA6Mj6pKnv7TPP21gVCophXJIf4\nBBnrJIvUM1VlBygTjvr9h4XoTCvaQl3QLL9VjAUC5Hh+VW9SweXDKxDabB/3\n5B3fc6j/zrmxbcmgIqKm5p6BAgFI4ihepjkW6rolIh2r+8O/B/YXRd3Nm7Ew\ns2GtL2oc9yc+v8XzPSJMH83Bda41qKNqiTXa/HEQ5cdYPdLqzOFk/ZTe5fDd\nWQNHN2+cllFl1Qwq56nXSf9IGZ+PTq1lAR/q1mgLTEjKgufJM8F5PmC8MtJU\nCiLB8j9p7vdeC59HxDlmvxj40dzEXkjxSNTiM5SgTVpxGbo9LlYGAhDVLK7O\nWSDS\r\n=LYtF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCc8/jsiTU2v6Gj7sREbN7ECxKFhfTB026zOn5i5vxG6AIhAJsNYzybtIqlpTd0TlotOca2BF3gX03IqP7/SW8VFgXI"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.4.5_1549258547886_0.036014942114384274"},"_hasShrinkwrap":false},"1.4.6":{"name":"understore","version":"1.4.6","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.4.6","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-a4xYohnKVPWL4Em8mjcx8W1on4osLWq4T5ed9gUIKrmkIYXfV1bZdwp+3rkbW5zwujeanf39Iaz1R308HVEqKw==","shasum":"1404972949eced0aa015c258086392dd8cd6edaf","tarball":"https://registry.npmjs.org/understore/-/understore-1.4.6.tgz","fileCount":5,"unpackedSize":51215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcV88/CRA9TVsSAnZWagAAvEsP/jKHgWX+jP+dZq4XceVc\nmwMZu+wqAfoQ15pOyYKKqqq3nlMgXTN+M6jb9e6ZdqnWQlIgNX8IWRS6jvgQ\nJbthK1mA/ZuNem7HXbc/28K5L9b2+nhin1Wuh5muoRIE+6HMWRAH9o0ahGSH\nzjZFqqYksLz5jS6QTjoWd2kDiAqe1kC6OU/3R8qISfd6L1GxudB+ztoky08r\nxZJkeyPBJ7+bJqXmkMSKyMqZx9p5j6mygWuqykx+uchRiP+KscgVzJ7VQ0G+\nnrCiHTdfZfww5YHeKiDIHBt2LU1SxW2omWbM+1XLFrEYxWCYKWph2KIEVC3z\nQ8CFh+UmPJ8N1iOAfp7e81x7f+Z389w38mvOmnWVLl3t0tQ0AaqDqhZ/I2we\nncy6ryPkLSOBvbU3U9Zrg19O/zZ0qnmGVCg9n4rEw9ov6VrN14kX9obPcEyT\nrxYBYx+2oCSXRkwpE6qluuEG63gIxCEPBpDhBTeY44SNM1JA4UENNvZ6K5TF\n/7sP+fKIdxb5k3V8ohVzbLypzeiGbBXUk6ve8mfukh/KeYABGUQEJy2T43pL\nHckrnfR9+Ru19XhqM4B/RJ0yJRlnqmEDeE92A3rG/Cv4Gmu+5uiyWHp449/u\nSfRxtxSr4mYtcYXRIRv6aPsLX6I5jHSGLzO+OBANhRC5INeNLaYKqZT8imax\n1aeP\r\n=SfgQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFEIwWjVZFIb3IMv3lp6z+zHRIj8sVPJYdXtcL8+1ABQIgOJqWjkSf/tQMwHnqB9Ek9cRFA8pQ1O/zeGKac1+OdH8="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.4.6_1549258558593_0.6500859797805709"},"_hasShrinkwrap":false},"1.4.7":{"name":"understore","version":"1.4.7","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.4.7","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-2RTg54oL9O6PJMy73/wXr+CIb54jjcW7MxZdRgwTW+oVtQ2lOmZVRW8D0APHv7rVRVVtMh1DYlcNwAolN9A+Yg==","shasum":"a4e6f87a05efd17262201922b2a38cff014e2eb2","tarball":"https://registry.npmjs.org/understore/-/understore-1.4.7.tgz","fileCount":5,"unpackedSize":51215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcV+hzCRA9TVsSAnZWagAAiGMP/2P8ZDtxjj4eMpjDkKTZ\n/l25CYiwrP1Rze7WiySx8ZYXGbLkVyfd+bA0yhziZwc//vV4nwSm8stqaE1R\nIFbIz1fYSiUyoy1nXb27o6e6tdzGZoCHG4QUOKdPR2IPceFKYdRMTST8ph6M\n1TZ8HMg7sW7qvRCcc5OICyqxEOL1WRLxQmwC9SRitsx7Wq0uOxuFg7POyoZ3\nDukjis50kHVzhHDyU4/31mj5rmE9CDbJWT0+BE7NFi6lHuZMExq2Grov/tee\n9DzLFoOdh8dUCX9btRtLUVgGMpdufMTh8uwTjkrV8mPRT+AylXVoIwAzCmQJ\nz9QDFWSDWDuwULUL4633vMNxRfN6dJUGaGge0HkJRwmdTv/G25m1S+R+de/E\neDR6+z91FqrTncPJ8SiE88Wew/foaGTiBzyrVVSqbLSPPGJrDvxSlf8yM7M1\nk5vOxWe9qMRrsH2arpTVoqjyAlX7vmIl+4eY62ZaNhbE6RBXOcqe4kBDwJll\nEDpyyPhW4inknDwLwSbjNqF7ucEIP+oCMKwBA9mZuZBMO/CHdN13RjssLTLC\nKxSc75B63MZirQb7SKOK5VdJMbYGcNs8iF0VdSZtmHEUpi0wiHF2OaRVG802\neMIdLIJs6bLWyXT2Dby/EcQ4kcX8xAijQ1lCdi5UTJTgf3An/2OevNaUA3BC\nxMBz\r\n=JTdJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQFP9KNNqNxHezPXysLrBR7UXu96uZvLskBfu8/jKv3QIgKQbtSVS5ogtTLqjyQtdz23K6MnL99pI4Hp6jL+OgD1s="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.4.7_1549265011212_0.21323926685913563"},"_hasShrinkwrap":false},"1.4.8":{"name":"understore","version":"1.4.8","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.4.8","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-R+AY3lSDC6IczXu7qeIn48KvAH9MqAxAJOAqEBqJuLWEfa34zoXCnA8lbwDtfVqtUJaj+2MI0Ueaw1hoLrX7Jw==","shasum":"0bbc7606bb8266326ca3da731506704628141e5b","tarball":"https://registry.npmjs.org/understore/-/understore-1.4.8.tgz","fileCount":5,"unpackedSize":51299,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWF8fCRA9TVsSAnZWagAAVSMP/2Fxf2KajJKTWtHx6RjF\n2rDBcC8GrUzVywZOZArUzj2bmL6/IC6o2MUj5LV6FgKOosdRnn1xMWQa8TqB\nA8jR/0PeeHkxb6ePcjMeVO+ZAYw5cEeJ04NR++0WLGaWg1OXIMLRciTTi7HZ\nF3SzQ9uHwWM2p+16BEoiOzk9gEbGhdZNuKsfczcxWRkB955Blg5Oib9whYDL\nN1sihb2fc/ZV3KJ5razcoxZILEt+n4xeKhIvkcG0CUzXbcHGFoS3K0ED3QCK\nbA2yjggtT0R7EC+lYE2f2GH4xERjLFctvJc/RE5I5Fd/gTVNzl8ovV+bvaQz\nPB7ZdWHIEpNhRi1lqLJSFWAk8O4lAf6Wf4ThMPauVDj2T+5KC88a9oh8aflG\nX1LFkECCJijo+wTi34wfda7ejCWhFTqA4KfbPbEfK+rQG1u2OWbpky6yrofa\n9c+PPPUDsO1aYLY6ZVqQ+qHBAyVRLuIYAGgqLhzQFB3Q/z5lg4DoGdowoxpL\nFDmdFPzZ6WDytamm1CBoJg9LU1+HNKmD0LYdJvjwpAR1kAgcOkcaG76v+Q1d\n7FewSMrBsA3OobRBJXhX9rurK5LbbAQDc/3nf5gdl//n82t7wHcB7Ty9DC9m\nZgEEXSQEayIMtgallcFGojX3rZQ/H53Is2aKu80bMdJmAYtWQBIvaWHVQans\ngzGv\r\n=L3Xs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWvTiFSMVdXVnXBkZMBGN72ZFArisQjrSlZyXn65YgHwIhAOPGNrYbCbfEhh2Pkfjctwtd8W0/z0UsxVz44gKpJVzw"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.4.8_1549295390397_0.6624137518005788"},"_hasShrinkwrap":false},"1.4.9":{"name":"understore","version":"1.4.9","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.4.9","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-utq/e/PMzOD/CeH2msIvXnUNaCKcJtDjr/ZkFMUt55DjsMK2oMxAK3ma09+7DNFjsAy2LN3DtnOikRGcN4FqfA==","shasum":"df6a81cf4c8e09076a5d869ee2c0d34aa77c0712","tarball":"https://registry.npmjs.org/understore/-/understore-1.4.9.tgz","fileCount":5,"unpackedSize":51299,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWF9PCRA9TVsSAnZWagAAAGYP/29FTiLd8mdAkSbOw2pd\ngxL7Ci88cpeQ6f6jfkj0HHCBCkfjHpEE5THb6xG272POPMIeZwy8ZZN5+TdE\n1oBNdHEgn8m8Hqv+x9pXYn4AbxQZOErmOr9w43Vb6bRu5NCSLwnaZwACEUwL\nuAIG2knTKLpSTq+bYeNeeNBhDrjwAQ0HeImUzqsL1YBXZyKP8p+L0unSOnny\nyGXLEnqI66gQVQTwAIX4vs2Nov/oduzoHAAF7nchpbAbXuPOoayVLrpnOiT/\nlgd+n3p/KJLwNyoJZIzHpfa996L2nsXS/lFcFoZleHWNVYnMrMGi1ikZmQoQ\nHQ1IBBNFz+uzUCy6cIiFErc6anUzfMWmNJve+ZxSOrQ/aJmoIOk+LfzKU0dk\nN6qnNoey5G76ixHJLSymBu8hagINyO8r2qNJrwAyD7F6K40Ac3l1GGwkMPRZ\nySaomRQ6v/FDvN9Lj0oHbW5tEa0/qnOjjq0TdXCfwiQMzx0jgNgc9KoI/jjb\nbbTmNKa6bpb93Wz0tIV4NqMNx7nChfi4WMXlE36sTrZl8r6wReHv3Zuhyaaw\nnibMiVnj+0MvkS4/b+qBntBiC0yHLL+WLxKZXO2h5kq3jpvm1kpDKG+RzgzA\nh/by4MwTW9MxESwVjEXgMszCDYfa/UUfmfbvqB0VytLaTXs+Y5mjkslsCl9X\nLRg0\r\n=haop\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDthPpNDFbuTGCYfLdQhGcpO/JzXbkuxb38Zbvbyf/fAIgF4712u+uVICBl33ihDhRoShEU8PAaH2I2LqZl+eIR9E="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.4.9_1549295439007_0.7138472761104104"},"_hasShrinkwrap":false},"1.5.0":{"name":"understore","version":"1.5.0","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.5.0","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-gKAU9aGWuUG4J4dnoVEPOk8vFCrfqKSxl1EtVZLiUR5ifmTC3/awC3lG+S0qgN+FQ771VgkmGiA02XLFqCYMFg==","shasum":"d700c3bc9505cbb17bb58529752c43868ee6710f","tarball":"https://registry.npmjs.org/understore/-/understore-1.5.0.tgz","fileCount":5,"unpackedSize":51391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWGQ9CRA9TVsSAnZWagAAa5gP/31nxmv7k3bopRZjbckV\nlDV19S2r2K8KBSYzdDUg+dVfsNXCNyrGrZZ+Wz5+bZiy7Qsbw3LqTFeDBKeO\nuLZ84N+sF2plzU5l9B6TYWhriyj8ldpoICzPkS4VIA7RxOiFB0Ap3f40vC4a\nVj+V2wZPwLf0+rBegggpaicyDXeTBL80PbQTSl4g0TVVWb80iJyUvRr7vb59\nOFqPP08EQYfgX0t4OyHgGADfGD9h4FNb8/h9+k0z9ngeljUslCRoX0evCGks\nGuKvLoY5tiGg01/RI9nZ/TqokhzKAJzbgOmlHzw7UQauRKm4X9H2eaz9XR1+\nfUsCafkPuOG1HqJm+NEiN004wFhS7p5LcuWyheu0QMWn10tV9vN1BoE0L1XG\nykS1DXwZHywLqR1ANxmhs2/1awVw+6AX8ozvm42/OAZg+pizWYBoYVWspZTK\nrwjY1ldQN4IESj617zaQ2lYRvByD+2/u9nJ8+fttCCXBLuG3z7Adtnzw0Cwu\nd/3QBxVP/cVSu1LparHfaPgShOw2OoWo5HyWWP50T2QCYFHgmZcXhERDwNsp\nYQEpEJgZycVCl/16IvwS9TLrY5IufFtqApPTfT4gQThPkpreb+354yZ/tciR\nFeDZsxgiKb/uS14n3pIz/7Ad803dJ2dF0Oe9MAP1gTMYR3BA3lZqo7/GmuhJ\nk0iH\r\n=VBqf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA16B0rd40+zjpP5PlVkzCTlWt0Yy1/a7le0au83QEghAiBBq8rq5ExWs/xuQGMKSFrBDIGfVwq7UHdLZ1HcU358Ew=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.5.0_1549296700614_0.352202296082861"},"_hasShrinkwrap":false},"1.5.0-stable":{"name":"understore","version":"1.5.0-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.5.0-stable","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-OJnsDspquI9Tj+GARZpnEYjyrMi993KTufF1XJxhb0/fjC2Y4PgDV4ro0+Ybrt/7H7FsW727xfXH2LOgcta74w==","shasum":"01f036889f64358077173db6ea76b2ba71b811d8","tarball":"https://registry.npmjs.org/understore/-/understore-1.5.0-stable.tgz","fileCount":5,"unpackedSize":51398,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWGRKCRA9TVsSAnZWagAAkv4QAJZSSgsY5PqAJZ4eqNz/\nvuqw5n57xjmyuVZCkEaiTFLwUhWSr6RDwy4PoO6T0vxpzH04P1zvvqhXERnX\nxlKKNWgMxyP5d3sKUjZwX6ZlYyTpjzUxrgIMCC5X/fSTm3gBnJKpKLJxreQm\nHu6lkAWZNq9vpjKqa9653QTkJEkCzzbNrb2UazXSbHR9bu5sqMVM4BCASB2+\nWpbom7zkswC7bWAK7aiflvyh683gtJjt24BdTgtOGQ6TgE5MOiGsEWX9iguo\ntft3AaXfrGCScnvOSaEqXoZ9ZhyrVGh4LlLBEjBJwn4/t71n9m81QqYj2hma\nPC9s9wTsjtqn45qVRNeQYmFwJaxsuFSJMRDxdgDKmueSCscnlo7QSok+bVFm\ntoMfTDsPpTIvD7oQCTq05N7TmStD3hX2+TIJqkrXaKCpBDhQxABPBbFZA+hQ\nFosIMSUgfSRh/nAry3G2a88aRNmoCCLBxzFHXTozHJRKBkkZRaAQisYESdRL\nEsMsGj1diReALL3WuEFdC4Y0UvbrwE7wPOWaNJXinTaEAhlaZc5aFZ1C4Zz/\nhaM0If3XxB8omlG0H9gHXfKruii7cPESDlZ14GZHtorSBMe/jwdqA1Y/GQfO\nq3Uy42yGU0uBfSggGQ2WIPQt2PiN3mRaT5EgnLyiZDj907FqQx6idZAe4Ct1\nEV9B\r\n=w6Op\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIADaFaJftTtw2BKG0xN+vecTmlC/jqICfT4i8OWzdJr6AiBZ/mqapSSOiQXSf2Yxo+NaD6Lt/8KPukrxwnbltSAV2w=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.5.0-stable_1549296713629_0.337325060544966"},"_hasShrinkwrap":false,"deprecated":"remove"},"1.5.0-rc1":{"name":"understore","version":"1.5.0-rc1","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.5.0-rc1","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-12b2vcjU2b2DLtuXt7URUDnx3Xj2Xvgc83HqmDIoJHV2U+F/Vi2ds8kTABnI/KycmW5iUr7PJIFmM4yfGHgQzw==","shasum":"a99ce36e5e6544ff1538ce469933b37531d51b2a","tarball":"https://registry.npmjs.org/understore/-/understore-1.5.0-rc1.tgz","fileCount":5,"unpackedSize":51307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWGXlCRA9TVsSAnZWagAAIIIP/0syDFaXEmypcmkQyu81\nez2Snl5jlmqXFlJwj4XO3LDZe9tCxyEA2Cqa1Q28oVGxuQHzYILUXMGRHMae\nSkLg542sSI8CB+TmvyAGvad8ozU7MC+ZzPD6tdqWQAng3OiQJ2RGNVxhcuov\n/b017ElYrzGh/8GNnC7nIM3RUDOl/N18GNMfPZ6tl0ELSv57W0oPFA3Y37qO\nz518vpPmzQ/zTJv9fQLA+yzv1M51y10nzj6/xvSbRdas4m0T1JB0Xyb7G8T5\nUC17KNdmmvryU3U88+xLg8eIRGShbK+oJmoTx/4yGqqmE2svB9P6sQjRhBK8\nc1vBO1HqbDNhAjXacqZ3Hav5pycCv1D0jZWJtkKJj2aNBDblnK1xzu6hwBSK\n/djHPx5U/JUsNad9YI4jHe1ryx5YVLxX7JYZnHf0wG106nYR7xFNB2+CeTht\nDw64MpYO8xyEpLrK2ZS1NxLXmmvdyZ7Ihk7ap4qQ1uTnLlGXwMJyMRbj5Qev\n7YUpWHI+ubJUxdquQ+VgAS9S2CY/zZY3C/NEywzQDH3HnWUgSmiaiimQdVJm\nJi+A3xbhVaQDSa5hKSHrOzlUqK60YW05P5ArTAJwXTnzrCGKier2GsRtq8sX\n1R2oz0/CnFa+Wy1joVUDOTIhnpXyabzXhSTDPCYeqMlUG5UQNUrVR/RYKyOW\nMc2A\r\n=xXuz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCW9KghmgvUehJEYxt7tkMrjijvwTqlJYFZZHRy07jJ1wIhANVfwcfFbu4TvdWInxgFNxNF1rNeZxNoVCmRbh/Ynjmm"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.5.0-rc1_1549297124639_0.4033146927399929"},"_hasShrinkwrap":false},"1.5.0-rc2":{"name":"understore","version":"1.5.0-rc2","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.5.0-rc2","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-Rc1kgp15IuxRA9KEbJvrX7Uz+kzg/8wQ6PB5xW9eVM86/D2urUb5B59YbIKNgwdsowL6M/Cve6ayjhqmc0C+HA==","shasum":"2448345f2f0ae5aede204c94c464fc3c977abde6","tarball":"https://registry.npmjs.org/understore/-/understore-1.5.0-rc2.tgz","fileCount":5,"unpackedSize":51307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWGX4CRA9TVsSAnZWagAA9eQP/RS04tHV2rp2aCg9KbJo\nCeHEpwp6JzStQlNGTRkT0nYUpiYo4cQpn+55KxeHMw8uEMIIO5ioLvYU6b2o\nrvpLoHv5QKP44nvyC763hPaVAc9anyTstf6IRStKBHF4hGtDNwh/ONjkp3HI\nZYz2xKKZf+lJp6GIYjZJ9cxWJW0B+AVLwkBJ4EKo9s8Lw9irwX/kpRvu/ilq\nTqutlyz2wpfJBazbZPiOpmODuRaTtoWj3SiIYiV0fIiJoLjBlQj1N20xaNK8\nYeW7RdUC+OguuYFly7FcGEYzp3MDAGZtTuJxoPpCHv2lUkChPEB1tvbI3Gem\nTO7fE6OC/C7truFee63xFSjplvSBP1NMIqi6iB+iZbyIl0QE/IWuWOSdpboC\n9QulvDWxxcm7rZ8umhoK4g/D/j7wffKwov+Y4QWouj6Dg0ndPMLQ2YGzCYqN\nbGcURx6aDy4nOsPNUc48LTUnzoDbVHL9fdXVB+PRjl5tBXHHz0Li2lBSi6CE\nyF+K7VwrUzgPpabAimwJWfJX49lheqcUwh4hgGfw8X8KMdY2P9CMF9DqMlRt\nQo9gDPIeps7biEhZfWy7Atub28QuyoMwex4JaoboPWO3heYh5qRX5x4SUhh5\nJ/fR50FzULyeDAMXFMMdgQ8MtI0QyCdtv/QoswN9WcFtMP5ElV+MmnnQlvKK\nmoab\r\n=09KO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXW7aTFEdTAn+MHkL1cel2+ie8FgIxap4/44q5lgx9XwIgW+2ThNSo/VFYOD0pSPrRDfhmfUB4Di/e+LiBlad8CGs="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.5.0-rc2_1549297144025_0.23218067521334063"},"_hasShrinkwrap":false},"1.5.0-rc3":{"name":"understore","version":"1.5.0-rc3","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.5.0-rc3","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-o+vcME9/QDOqOmOyPHgiKsnadhIVQ6z62ktGkjq5v+e43CdFd01KaDsrHloJcx33+4gL3vpGOGqAxPBXir5hRA==","shasum":"2143beb81741cc6082901a2ffad0b2cc890ed950","tarball":"https://registry.npmjs.org/understore/-/understore-1.5.0-rc3.tgz","fileCount":5,"unpackedSize":51426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWPEdCRA9TVsSAnZWagAAWJgP/A2TbAe416OsgY5AKHhd\nzvSKBJbn4kvNG45+EvTtqtfIWhHXMDVNQJEau1bM/OqNCvCHQ5Z/3p4AbWfS\nlp/dqnOoPW52oVkyOClRydV52GnA1FYB1I1q+dmDtkG7iACRxzX3rOSPp8BK\nbX0upTKlCa5kdfdBrmx/q71mhVGVUgmqShN1u7GynM0ziuMgvjSgPcqmtGva\n0YgAo1JNWB1P2+A7eP7WF9qS7eTCVzVrCqsCB64BODycPjMlkwgEtEmCXrA6\ntuy9Bt7U7JLiKH+6gqwkHqjvaIziQ2x1eoRU0b5yuP196xwpCkm/t9E+P8MI\na2TYVAPIxWqiyVMfrTUyAqnWJAceUYrgXcMXMDK5qgr4QrNtq/F1vtG0Mnb4\n6B72j5oduIZvgZ+9SJA5mKtF1P73MFvf0xA3PVbyxw9c9vqEziGQTJQ7SDT2\nBEj6fsuckn7jR+ELT8beDFZUchPOgai1MZbc6h+a9cs/m8tx4nM6s17eThNh\nVqOnoqy2qjJhhrDvTf8N7s/XeGCteBfyrjb7TW3kLkkg62LQ7YOiAknYXETP\nAh5d3/X1bNa4qDlJNnhpb0pVmgWYcfo3VeMRHDc3U064/3iMRRm97xl3P2MN\nrXE0V4zGJdimZ/YHj3UQabv5F5qcs2fFmjCArAkSOfr6Wsm+WDVjvFYMz0e9\n5u1d\r\n=sCnZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID9GpAUT7qq9F8mB6uyOedhy2fJ/zbRh2UmXgap/w+soAiEA+0me59pNQ7xEGUlrmlFHuENrNqBjepMZR75pphOc+r0="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.5.0-rc3_1549332764774_0.7607696774490806"},"_hasShrinkwrap":false},"1.5.0-rc4":{"name":"understore","version":"1.5.0-rc4","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.5.0-rc4","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-B8zjCJwP2Oy9M1/FFs4TejQExpIRQ1oBLAKXG+6cMxYK0I/lxyRGmzhXSVZQZhJWu/KSqmffzhJTUIF5UpOEwA==","shasum":"b4844f2a95804795c1f3b7de73ca979db0edb123","tarball":"https://registry.npmjs.org/understore/-/understore-1.5.0-rc4.tgz","fileCount":5,"unpackedSize":51426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWPExCRA9TVsSAnZWagAAqygP/1CJe8zsiSxsqv6MKmIE\ned40poZ31rjlDLW1rb5xaWZDE9eflF7cBG08aQa5VvGFYgYUmFLsHEatVi4h\naTIQO6vdGp3+yhTGwurIljEsPHVegLDIl5e1zKLnyw8LxHiGGpTJFWF8oPCc\nrepcp0g29lklYUvOF10e2vprtvgic9/kwxA1g9hT9hL/W/z9yrP5uzmCNsR8\nK+xuosCT1gCtB4GEbgBT48ucyJTCMc+NDpDp7lkxF/QDqg7e1Nisz84QsFw7\nF23u9sxp/zpj6uISuEKiYsEGyE8kWA8cDm+4BNpz/HLL5ghYp+DyTHqxABgW\nABimqLB1KG/WMDaPYuB1zfJ9bY3+B4MRBbB1acexJUrgW+A2nbZzMrCf7hGA\nroaewJUP80KPrpsdKSG63mwYatqzTmBA7LErE5Xo08Py1CvWDBt1crgXuC9B\nBrEmcrYsVrLi38Mn6QR1uIDPhwTjMglzt0XNoBCSBxcOOSj5H08hlkG7abYZ\nsSE1Ms9nEqldrkEoq+yUZj/MXfx+pHGc9R3Ll5lHkFkNO6g6wwO0jXO9ZXnw\nYPHoPeRF/Or/9EE2ODRBg9iwfp8qDlCRUvDrZGV/15j1YtOk30KyjtqA6w4Z\n6d8Q9npzx+t0rmWzOI3XbIVNdfGxals5XZWflWpngjlDHbYOJChd6RCi9+r8\nsMN0\r\n=uPZk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOpYSVoLdayUE7C/KR6f3slAxwWfOaw9/+z+cwLqDa3AIgAkkcVXdkzLDmvW6OvzG48nVBDUZNbAGHPtPZKE5ASNM="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.5.0-rc4_1549332784734_0.6782148097036453"},"_hasShrinkwrap":false},"1.5.0-rc5":{"name":"understore","version":"1.5.0-rc5","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.5.0-rc5","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-K2IpPS9JHeCRhrXtydkCVhCjOHfWFc4OuvTymNavmwFX/DoPJpUqMon9CkbLjIwTP86O/VGE6lvHE4nfmuHqwQ==","shasum":"3ddd2695f50e0130b5b47c537e466485571d8f6c","tarball":"https://registry.npmjs.org/understore/-/understore-1.5.0-rc5.tgz","fileCount":5,"unpackedSize":51406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWbVwCRA9TVsSAnZWagAA/kkP/i38o6cTV2MRMmXCh5SR\nsht5BGHxLXRXimuX1m0OEk/kgYIne35FxiVVGJfrbJKPM/qtJ3+Nf2g5d04/\nPM5udHiQQh+H0m3+H7GRMGVWNeE2M640j2jQiN5v3cFzp2rge2knrrvgIcNV\nww7KmUSsIV4n99mgjYIM8TOs2fvLdHAlz6XAOHj47hMOKkQp5s0HTqXRFWOM\nFwz7xpxqB7aQXWBgrSNi3u2YeBLwZCf4VS8kN3GnXPpwl+oRnf6qhCBh1aFj\nQ+2drhCi58sGeLGCKZShjkxqLrrOcW0+UNRQufmJ/hb6Ae74WWYhHw1BvFQJ\nAXTToFeE7IHWz7zW6lTbJJds03k5YtvFHV4uxgTa7SAMUutFsfMC4uVfUDhC\nLIp5+jaevbidTnfpcpWa3WYO5UwMzGdKn9SnBH4YaXT1LXENhKjjRg05NdEQ\nb5rnECGmaML7QaGIkhDMRRuFHqG0KCiP3Cw8iBbInTlyQnWALQuxP7ag004F\nm/fQDaQ3wtYPAp0Mb+iYAzJxa25hT7KHhVSnro393jyPwlx/GAnrL2UJnAOl\nvmeKNvqSSdETvBD0NCa0vFT8U+monGFK4Ei6HwCCIglKPNABI0Hj/sitSCpo\nBGSW2WplOZD2LMTb9QOV4x5ptPV1kbupPiAOf9P07u846V5/LLnpG6OIhEK1\nt/gV\r\n=fcMt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyNf/6zIQac8eltsVXH9h2UERJrGt/fAByAH03UOWYKgIge6LQWWhvYk3rq1a599YClRSmiJF9fnZu/Id/w706Wag="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.5.0-rc5_1549383023783_0.5181397060763966"},"_hasShrinkwrap":false,"deprecated":"remove"},"1.5.0-rc6":{"name":"understore","version":"1.5.0-rc6","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.5.0-rc6","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-C2GpwWo0hEaHPzhXrWIkNBEwC9zvYgsmB7bJp37BKqxIFQkJXoN/dbHvPOagOAN03SVuAN0Eo/bbHU91LpY9Xg==","shasum":"2917b7f9bb1b0c273d4c9a33b4a33f9a3077068e","tarball":"https://registry.npmjs.org/understore/-/understore-1.5.0-rc6.tgz","fileCount":5,"unpackedSize":51406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWbV/CRA9TVsSAnZWagAAWsoP/1/QO/L09kj786b7XuRr\n2ia204Z4do3mZZA8Y4vytkjYhaAmENKnai3KkG/kMEedvGJka0xsUdE7Qp+C\nXQBZ7l6s54276jBfG9uYYsoO6lJZkXVd+zJ/DqyYfaknyxVS44dWvEfSIn34\nnU2Vd7d9I4j0++djd6mWbbVXqFSKJ8ZTnBYoNFQA5OglpAZbaxV5ow8+60qa\n0RIAy0377kodJKCmKn/a/WK0HTllJlSKQi38voo0Mq18+m+O791pPp6HrCUK\njfd+/qPDnCb80Rf+jtFjSqJr4XJ8biYQ1zh4kpiTNP5oAl8f2NG74lsa2PtK\n+HdIWhlFasRlHikeNkvwNxH5P2IsbH3hS29dI/xM62xx+hnX/rLPEGhQmJy5\nyk8R/Mnj7YScEReOIaUufJ1edHqPQ7iwmcjlrrHFnEpW6RMpbV7RwYD/e00Z\nHLwLP3KloHRVgO+qaTZ1+jspr1Eyjn7aFieaPnzpLdv5sthcZMzqM1cZ9OyY\n1IMtYR31/aEmwvm9K9TWqqWyL2Q8hP693JfsQvlYIZu4LcWJ5xCRUpwQXzlK\n1M2KZtEEZGEmXmmFJLUPqF5teIstO1KS4fdtDM5GwcAvjipxGVAgftmhtf4e\np3vfm/RKBfexq2+Z7eqlPKDI7s+uxLO0v1hLjbtgGvdGi38BW67uE9yu+P9P\ntVko\r\n=T70l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDP6iDC8Lebxae0wW4wiCP3cOZa7irxtGRGoWNAuyRiBAIgapE4UK3Nap6J9F8W4dBorIuCGYwZo5lPmPZzu/+gV6g="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.5.0-rc6_1549383038537_0.030368732370429585"},"_hasShrinkwrap":false,"deprecated":"remove"},"1.5.0-rc":{"name":"understore","version":"1.5.0-rc","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.5.0-rc","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-j0yvHyay8Q/RSXzI3BCSK/28usYiMwc21ZEeYw/RLi48czRXdJ4kBiuG8dvYI8My1Z953C3b8QuvxtNzxlajZw==","shasum":"e93ff7ce7bcdd54764ce282f97666ca7a9fce31a","tarball":"https://registry.npmjs.org/understore/-/understore-1.5.0-rc.tgz","fileCount":5,"unpackedSize":51271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWcUyCRA9TVsSAnZWagAATXMP/Ays2cPpeblBTLqRe4cE\n3nD4QbMayHRUGPOz0r6xEjZGg4zhIbAZi2x5SnGEUZWodmuI5v1vCdtWsj+I\ny5kVtF+GDFPzJM1f6zMjhMArakeOFkpgczJVUXrc66ADMz4cn6QxyNlimhgx\ndQjlIAndOwR9l97jxRyWM/bXFaYc1T7FZfPPBvb1iaHBrpwUfmgneuDumSSR\nQB0WPqZCtfoZffE0/wkoRgJeqIzdNnE+JfJhklwk/o2zncbTMHijTHdudG9P\nMY0xTGjWl5XxNkfONtI+5hqUU5EVmKbdPPSFCy8k4vNE72G1SVsiEqfreYfT\nDcm/XU8/hUB1aWvWYbVRF3WYANiJ2V2Hja9PaxvWF4SnnaIUNe0KL3hoFCdZ\n/fz9wKnouEIikG5T6tMaKeAPN8Dpk5UE5+ufwUJn+Ngw7kZCZ/EePyvGpcND\nSCp2es1OKeO2KfHFxIeQ9fFOEhY+/HyKMbSmJ4bmuIPWPSXL4WLnzRH1GmxQ\nYXw2SG4tZgyzIz/dBrAebJbr0fgmu3LLtr5FLndsSQHDc61bhFvQ7iEkSFuX\nrdfzTwiURqGUGMjIiEK+lFNwVKWZB7W3fri6EGsGPffMC2yi6RsOxxjG90k0\n+FFifDRRK/i7SRcirOccEKs3EiI8tBLUVVlIc4TV1AtOyNNTbYI88pNJSfOE\nEicw\r\n=Oa2D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxUL3Pw/eo4qEpUNM9Ab0I5ajonUZ7qBXRalUyykI1AQIgAOJ9FeDYcYRWPZLKhG4QRQP4LM+DNOkl0vQ0yBFGQ0o="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.5.0-rc_1549387058226_0.12486985195389066"},"_hasShrinkwrap":false,"deprecated":"remove"},"1.5.0-Stable":{"name":"understore","version":"1.5.0-Stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.5.0-Stable","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-tMjm16rv5EtTHWv2wDl/vSalZ6Lb31pA7NJsYbaTSORoL9kxXrGQqPnFkIfJ7CSp3VwVElUq1UhrBv6HTNejXg==","shasum":"a7d9df163f67a7e93abfa9e2ec77ef817fad0d55","tarball":"https://registry.npmjs.org/understore/-/understore-1.5.0-Stable.tgz","fileCount":5,"unpackedSize":51275,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWcVSCRA9TVsSAnZWagAAVVAP/R8DaP8X1guEg5BSleWy\nGC5RjgjFZbLi/P1TIaE+EsW5r5HGPb6T6NAQ66g30njYsdkvnP+rPqJ5JCnZ\nd8uU0TVnRii4+F+nRh2awtBPuD4XBbMve8werTfDhE+IvJI/p1hq/hYWM7Mo\nGLKPRbH4d7g3tslciCViDgd2dyTdCa2nxfKk7bwGBq3TC3BSONX0WuXPC/Mw\nETGRU/ULXv19F7/eQ6XLM6SXVaL7yKiBUcwI+OHC0kFJqBfk3r4U3J2LDBpv\nRlfmksELhg/GsZB9Rk47LtztZ/uwtx6U6z7Zb3YGuWBgZlA+CcSs0OEsyW0U\n7H4W5IlC+d/EKfQwW549juX/hkqz0VYyo29qqlbAw2hM8gehighxx4kEkqMR\n0xGajC7Y77YqDBLuNaOOGnM+MoCGHvvjexrpWfzkLATqybY4M4F7l+ngPHZE\nWwy7TVp3JcgctekDDDvDj0hFMj+0OgOOTOx9+1/pk0gxn/Vm3FnRmsbSgLKV\na2ptKUm6ARThiOB4EiAZPk4qoTzN8J+pTpWMRwYK6SHPbwJZW3nAFRS70S7g\n2Hjf54YB4r176UgTl+qGkIz9iIdsXVWeyA5zpMc/f4hJS5XDcNrF4UZG4Jr6\n9bHLXDdNBJBrFY8DBpRU5jrBkf5pzxl6flMVBdlE2wvdBpyZtwApJPv41M88\n/qJW\r\n=JDn2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5PVeWkPPDl9UO9tcK9iaubElqXGyG7PkVyWWtthnEqwIhAI2B7v0eyURWKRU2hKPz5VIpqA2tTxmv8Q0k/BwDDvhE"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.5.0-Stable_1549387089590_0.5016413161603708"},"_hasShrinkwrap":false,"deprecated":"remove"},"1.9.0":{"name":"understore","version":"1.9.0","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.0","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-/oTkfugvJwJjgR6ou5Y86YpeP6lHtZCgUzIufS5AwM/hwwaFdGxdFGJ80EhTMavEKXNPKKHsGnOcBL23r+c33Q==","shasum":"17738b6152c1df08368fd529540aba855980927a","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0.tgz","fileCount":5,"unpackedSize":51228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWcgFCRA9TVsSAnZWagAAt2EP/0IHsX4wpqx1A7dn7DhW\nL5ngXzePvYfO6T6eleeiCYUe55/rX8RpCwsBlcxdaFARxSJKlb9GemOHxxhb\nGTPABAl/e/U0X+IZgI+nTig0qjKWePRLyLevIoKI69tRYeNch3tD3rrfecKW\nlnRrRuYN6pL1K+5YkP5nnF0p5Vmp7qPp1dDzUQRt89mYR2wR22lrU+anN7EZ\nDa1IXuGm4D7Zuf23O6xbvFcwcFbtv0+7TDR1D9aD4UiDANLZB0SwJc6aVvsl\nFj4cBlHS4joqo7nEF1Ats5C0xgYmrnViOuVV6E+/OLbSEiBAgqt2k/QqozG5\nkZ5aVnIHt05OaopvLFTkHy2wMBGo2Z0CMi1Sr5JHLo32Ul8MGEcIXuPieNOj\n5lUQkwB0F6rdqrVxeUqHBBakNVHmPJuWZcW84V0PmBXL8zVzjCbwWnusB8eO\nH1sln30THf3EloGbv5jpmhulkTsbLFrlfD4qv2pBy7A7lJ+vSTUaJaSB94GV\nb+jNWZUB86ZTV6gRPANRULBVpRyi2OY6IMHZrnjXiTgKBdgXXBQtXvdQR+Ol\nE8jBDrkKyBYFKuLWeVwekzJP4DR/WKFR8A3CH2Lj/SkrtaMMpjsNs48T5bbw\n4ZMj5t7+MJs8K/edqZQhYAH8+LQpMtbmlePzyvrPhCooAxe8RIWMBFNHbIAQ\nY90x\r\n=naE0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChwA0pooswXXIRwVq1I0DvnahNLi4supp7Kc2NA5TyTgIhAK0/yfET9HMjS0NlCBWYgw7+sQ8Pu0el7L/SOuI+RsNy"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0_1549387780346_0.1351811535669305"},"_hasShrinkwrap":false},"1.9.0-stable":{"name":"understore","version":"1.9.0-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.0-stable","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-E49FzQNH81xb28lKnCTwfbBsTYFSP3HsuAOazMBzM6vB9MYfs0kaGjnYQAXkd8ph8TwyWenuoL9jbfqVHNSe1w==","shasum":"001dc4b95b599341715392ea6c7d716b0b09172a","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0-stable.tgz","fileCount":5,"unpackedSize":51235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWcgQCRA9TVsSAnZWagAAe+cP/A0g3u6+SbIPA/O+tERB\nVeKUz5MaQkMQCMdFe2rGBr5/Ty19bAp6b/PiY7hARFWVV6axpJ+d3giIER3l\nRLZ78uD8Uz6QqneG6cH2p5lbqKnnlF2r/+sXW734L86k+x15Tse2WWd9dHjy\noc6k02T66yVvDllmzjNSZG7/hA/7N0w+7VEQyCkEWfPtyd39WdKYAh1etlBm\nbU9kpitclaVgIpV0bfRC8DRO4bgYS591e9QMic5+UjJLkoAFMg4sOKSOjygO\nqjJvTKc1nhIjaKys4XllVHopPY0tW+eidJp+XeR6QzIfcdIXMcuNS3Q558Y6\nCRlJjmzPpNdT6x4LS1wX3te36NBf6qaDgHq83ED2iUo7kByy+HVLbYMhqW+V\nBwEcx2r2u6K/pcM0QbyUKpho0xkNuS5kYohIAdPvIdtkAM7Jr0gFzy7llfoI\nhgV9qxDnTDG7FGEZ9EjBpI+er4PKRVAicRqEdjkx6w+QHGUjXiUXTXxDy0mG\nQT63gJj2tSGTZT2D4mqLZ1yUi/1LwfoXr+hZ85O1Ay7sx7VN/0upivGd3AZZ\nw5yX1A53JDURZiqEIf+p7NRTunwyzgUH1MMLmsJPuLQnu9Dj0cXqZx2ENtdk\nWQG/vzQs7VDI3/mPbiIksmmWrJp0B4Yh+75qj7caFMhqas+vLHfDWdiRStzn\nxFQ6\r\n=BvJt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYOWM56vd+iANcq9wA8y+OUG4r/wxh8fTOzErmTmW2xQIhAJMv2OUBFPV8nX3wXAaonQ3IL9RxPDq0ICALmQgQc2rg"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0-stable_1549387791969_0.4176217674547884"},"_hasShrinkwrap":false,"deprecated":"remove"},"1.9.0-final":{"name":"understore","version":"1.9.0-final","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.9.0-final","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-YIgcURUHklHqx8dJO6f4xsq5SznXZ20lY0RtDnBJF7HjChiPM1VMm/NN/D0VyruYsNPdRpl81cHek0m+quGORw==","shasum":"25e65fb3fd5813fa5345a4332bf09144bce31cfb","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0-final.tgz","fileCount":5,"unpackedSize":51234,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWcheCRA9TVsSAnZWagAABI0P/2pbodM2TLyt/dQNJCiE\neSEFbkJ7sfQJ87qqIyjLO33MGUNNxY0suIyxzeCOr+o1EAt2qECQxU+nV6F8\n+F/cxB/pQofqZYOMVIbtx4fyU7K5glkj+noxb+5ciQWXULYK+WpHqoBWyp1Z\n0ePGTWS90mFKLcYmrZFJ1fz7AINR0qAn4wtbjwyBZ8H7hLynolX9anXPR+U7\nHJpSBI7OM1L+88IjussqoY1SBBood8QpsIy2Pshhx/qUy5ZSTH8UqPoauJYF\nNHzGmrW7AW+vz+X6dsYs0J6cP6dfGxIzjSb71eoJJuIIKquoHhM8PUqeDLO9\nls8Wy24KRrz4WjOLXVHQgcF542kSuxo5WXUY5SQ7QRRr+SrShR73nZ95iQLd\ntJavLGvY49leb5MGLdx2tGnZqVYvoH149fkMOuSo/FveCzxSATzi9YO2iSbp\n1GYNpoIICdpGQtsq5u87KIWexcyI7egjj3tmnIRADuzMzHVXQNJfc8Mo8pRF\n5Mk5p+Dl4r81vN0uqtuobybs7LWpMVx2cCxPtbxaFlkNR7+OIVGd7e9HkQp5\nXFDF2ZxDl2eK77AEhlAv2QsW55s314rcR5pkQEk7AVgnk8uboJpPaGfha9GC\nvS4Nx76S2NqTgDWkdZcq6OxmCKdCO2HJpP6b/rd8jcw5gpn81lbDjzX4koU5\n/iX5\r\n=Ye24\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCALpYIhhv3/t7TBikQvEZIwtyZ/m9Y+jpHYN0MsIt9fwIgUvpWD32U3ZJ1zf9OxPME3SluIuyP/4fc/MKksNAIahw="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0-final_1549387869280_0.07673159549359765"},"_hasShrinkwrap":false,"deprecated":"remove"},"1.9.0-rc":{"name":"understore","version":"1.9.0-rc","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.0-rc","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-1L5XcmMUU0VegqrpA7uYbtI2lnry8EASSXN2gYHNspx7sS4wzsROnXVCOknBARoa4qDNl14hu5u+YfOny0gdXQ==","shasum":"5ffd40195819814db70706dd82419bac16e4bc03","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0-rc.tgz","fileCount":5,"unpackedSize":51275,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcW4CeCRA9TVsSAnZWagAAVJ0QAINx7oZBLjpItWKek/88\noZE+3ivpWdV5i9+qZs+RIXFif2EKbScm/eFvkWos0RRzPbBY6UrebSTJJiNg\nMb7N+UdW5JbxrqpFWmJAnF8coqeWqFKNAfuwqXHcRGXX02D78QcK6LXlsbSI\ndeTI71QnsVCQpmlvxSrRUHMEFkyH63/YVwza6rXZaxh4H6LUeGeVNBuAQ4/7\n0M1yuNKlbC0+3qyDrYIJByeyEsezRFWM2ATjIXgedAsWua5I8Tqi938yGLfZ\nWKvYitCQDtGVpzQdnDMcge19v+++YgLkFGsShOSOW89j1VfNt2t2DCNl7da1\n3SyMrRpmWXlAwDFi7uV0BhwgULKwMSn+3AZniTlawsowR6YJAvuFUwMk4bg2\nPoj54vd8W6PiL05AtP8qFIoEioUnf2kMPvEjlrYT+DVo4kd3e7uyqEit2ev6\n7sTaklMGnXmb5qU6IPGZjzT+vP+qbl4eEQcM5UTpMb5NASK/cf7NRu2ScMBd\nI51QHW301KLHt6eKAcfF+qZFZkRe+mPJaHFLG/Kj/tCLBITm1iBnTMz3XD6K\n2LbEAV01h7EPVDKIKx9CqGpNRUOnFHgPWTLGpGTHUCTq+fMdGB72svgOu5Ch\nk4X2xCYkn3DC2RdvA25knRW7kmlA0SF/gCkASac7IJNAKxa4LBZJ+6m4Wxah\nTOVV\r\n=kTDh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBfpcKX175TlkdcJRSt9abMFi6VYnHCWyOToSUQXVrR4AiEAr1ZP3NYwDI4dhT9r7//u0qxJiI078lhOq+3YD1K859Q="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0-rc_1549500574233_0.8986972473363795"},"_hasShrinkwrap":false},"1.9.0-rc1":{"name":"understore","version":"1.9.0-rc1","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.0-rc1","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-DKQXcqrLjpDcIYz23JYzUZRDG3mLBxZ5V50UpNJ/2N8xIERESqW3waiqIV2FQ+VrAh4U3qMjvf3bt/PkiO8QwA==","shasum":"b3ca8df66b4c3990e4a1457fc1197e7d0d895e28","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0-rc1.tgz","fileCount":5,"unpackedSize":51276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcW4CuCRA9TVsSAnZWagAAK/4P/i1/P/BJXiVj/ciuXsM/\nxRilwKKQG/PH0gQuvwkC3/sbmW8kuL5rQJv/CPQpEqSRZYheqx9R2hMVl7i7\n6R+YBz+PxWTwVZ0jroHqN7LJesvykfYPTuYsRXxIG+qWNqEnn6LJ1xcn0Ca7\nqJGRphgD1w4xzs6EXqhyQ2MERs6DiNk509ZSbMi6x0Du3TTKA8bnZs/Lm/7/\nRg+y4kL33Ci0WdjId6EloE4W1mzpF/qt9z/7CwPImUnRPx8qRKYu5JZwp2Ai\n8ek30LKkHRCxTYM91FCzS4GuIixd1iDFUAEFyQnFZ1wtHPfXP9ViHAqNVhy6\nysOtjUAGld7g7JBdH0VUe087JEvBvaM2RPLQSXLMZCO7w3tVn7yg94yjVq11\nYZhy928sKFJpEBVsU/LD1jZKYaUMWlUsW30cLq2XiyQMtRyZ4g/6popBT08z\nsq29vOuxDnvTePyQjYbft9tpVhmRi26Tmrgy7s8oBuJjabUJ/iuCJkL6XDwg\n2ixqVLXN6biYgl7oa4abKA1IVu9K4MoHq3sdsjsXfbOtVQsvlWUelH/yMe2l\nKitwiF+2JcNP5odG5RsxiDYePC4TFVg7SRNP9+5lQ6G47VO80pmgSanlbkWO\nKR/e5Mh1NmhefvcVdpw/k3PwKe0NWyL/7IgcpgmAioFxnxPWkipmE48BDJic\nA3yU\r\n=dvEd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDygFXk3T66/LsEcnmz/M8U1iProUTnNuhk1heGrrq8qgIgIuTyPNFKp1cgIK9ODtXUyANUjZH16drjqG6kjbvma6U="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0-rc1_1549500589199_0.24602870479653638"},"_hasShrinkwrap":false,"deprecated":"remove"},"1.9.0-rc2":{"name":"understore","version":"1.9.0-rc2","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.9.0-rc2","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-bbGZ8OwT2htycnvxRvdIF5lNjNhByCyHPBeCrIHT4QZBcvwvaCbbHmfdEweRasDS3xZyx7cdOC+OvO/u7ClMNw==","shasum":"3a58ea1a0be1f6f29ca27703f902222794dfb1ec","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0-rc2.tgz","fileCount":5,"unpackedSize":51276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcW4DCCRA9TVsSAnZWagAA2W0QAIFRGAjkgWm/z+O+54nb\n8CDsrCp2BzrNpvKkqWyvY2i6ieoA9TICuoHUZg1qucwNT0DoSLhOvMtU/PVP\nWRdbGpC5Fxve5PhNE3RF5vCgzij/SLyznUcxwxeJ6SL53QE5mNDranJlNPxD\nsOdNb4isrv+IuE6sqO9iHcT94NXva83ZPrD1FFn3PwE/gbH8JNux5aYuOu+t\ncyFkt3UVeVQ55Z73YxJu35AypkxscsNYV8PTzguY9rv/3YEQzxV3UOE2efFU\nMMAXFAfsMuTKjf2czvoAsOiXf/Gysk4RYDvXF9bbMsS01pUVWhyvK3YIDyp/\nbZS0c5YO7gDgxMGN18vvL4uNRYSIpCW8m7zGy1de7qaJp43NLuqGqF9renA0\nXhLAbFecbR7Kl/9DINVuC0RoQOQpajEJjZvkJjht/2gpuJXb4tRWg8tcAfkg\njVTvG4qazYYbrbLUJCfB/OrJ2MGOkVpmGUWDo31C2eMLe+aqpfc5l7kAiXdX\nXKoVVViyGeGRUjWy80KqAokX//s5Sdp05RCzwxXCg3qsDw+yUoAE7U4Yvu15\nlTK3Tm9eO10n47Gni6VcbP4gksbfgyjSrAQPEyESrdxfQ8s0u5h85HJQURyf\nTgsUDZBYJFFwku8k6YObvsaKr+/N2Dmh8m14GKXJoIpG3Zx73q9GPCVM6Il+\nueHf\r\n=gX3X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFmBn2z9I+gz5oIp7y+c+Z+T+xVxdKp1KUypoQmKTW5FAiEA98mZBk5oDl07GJRjM+1WFR0ROcssB5g5A5yD3FNb2gY="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0-rc2_1549500609487_0.7873416440001813"},"_hasShrinkwrap":false,"deprecated":"remove"},"1.9.0-rc.1":{"name":"understore","version":"1.9.0-rc.1","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.0-rc.1","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-7J9ZDK1Cw2eDflZ1ti+FSQLhUaKbEYbRR11USLEP4qgwhMmj2yE/p1fh10urdvytYHC6WsD2JC6wUCHHRMfG5w==","shasum":"88e7ccede68040af2c2a4880509e2b3ae210a391","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0-rc.1.tgz","fileCount":5,"unpackedSize":51340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXE3BCRA9TVsSAnZWagAA1KAP/A4ru283GkfeofKTiYUj\nHhsMbhl8vHBXbGrWur8Ac3J6OisxyjuNtMi/cbFy6qEux2jAtTeuGGm1/6mN\nT8ZYO0Q7GCbXufPFHTFUuOzBjnwqErnOmsxLZTcEX26P7YkXJxtlSNXu4Y9G\nyfuDFUOIUzyMWyybPVR61BvpPXIsCKfKVh2F4qE6xeKkB8jZ23o9jxtOHW4f\n8BIHzQzOZormWTExaPg36M35E5BKYk6GUj+jPM4ABwHBtoxQ5eC6ytiPr8rg\nZ4hMkryutwgwPaFvjI70zioP3u554PpoPdRlusm1Tvwq7Vxh+/AmpMXnQz8g\nCwHg/z+kCJKWSMthlN8hzsu2wCYsyqHeZAzYCj7XSBm2VhP58pbjpG2qKjEm\ngEE2qmMEMvWJBDTrFDdo2OSy4siBDq7FL9Z4oyqUr6qcz9fyafKWsSTcWVlp\ngEkyME8jRI5pmUOGtMlf8+Xs8am7IU571E6pGlc78F2lHDfrmgVWtpAGzEba\n6wDZERGqXwKTsNFVlafjS/1tc87lvHOp7ZWNnA/S4f9jjjlltVNAAMuizCae\n5W9+Gxaiwis7wrtVZXzDlJ8LNAnRBKOzam/TeF1m7eaSg4ddoDUq+XDScurW\nSD9hLSixiZhGmFWVHzPeBsHteeik1MoxVo38MTdhZlhzz/9ag1kSuLbcXmv5\nk3SA\r\n=woEL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEgDw5NjmkMrtCPlBfw06OzkiZ67AiyxLHedEwFEJ/GGAiABWXdq9iQfxNZPQJwKaVat3QkZvDmTYh1rmxjYFz3QLg=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0-rc.1_1549553088941_0.4979857847764326"},"_hasShrinkwrap":false},"1.9.0-rc.2":{"name":"understore","version":"1.9.0-rc.2","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.9.0-rc.2","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-FL5N9DHN2VVByUn4vjn1iFnImQr5x08i1lYQtueR8Y3kX5NgypIHjIHfIN7LJvXF0dGqMZVix/JJXxnvzhdGeQ==","shasum":"36dca94c0f458b5b9e50e745ba89ae09f8bd584a","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0-rc.2.tgz","fileCount":5,"unpackedSize":51340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXE3XCRA9TVsSAnZWagAABDkQAI0JcV7o78u6cMaCTNRC\nT+guubzfl+afT4tJnqZPXW3iV881Sl/9MS4n7eZbxhSChl7PN8/FWCvF3/pE\n5u2JLc4gY+XMidnh4Ds0qfV0ClV7+Z9lo7ZlLXqf0kKuWktdmqE97cbcnzy3\nFtEWERjNnlPpqO93TMZmuvyhv7UjyCkRQ8thhB4Otm3/nv4tpMGIRLQNriTm\n0aWCLtFzsSLn0ZVnEGfmcZc5QGx2CEM+k4Ef/JYUKhIJBX4Oa/trLLS2M/92\ny5f7KVub0bH8dfS+g6rxuCnhYQuPoNU5brTbuLS6G56luRchZrh+O1s8AicL\n8HZSmfL1TsqU5sevcS7K270CxculMbGhKzzcCMXYnCWPuZgaZZWMaQGvbmfk\nD68YCQclb7LjtJojj6mlVB38UxKuh+NOuycX3r5xGUNyHY7WbtGBbSIRZ1as\n9OLadij8nEVwVvPBLXjkanUuuVaeDGPUAiHtdb0PsXff/xgyTZ0LDfzVZjen\npEKhrRPlRA3+uaMwRBDwdTRc/X32QHgfguYjh3oaIOjr0b+QuMdhe+/rbcfS\n4HBPBNFHNiyMXKkWiy0CQxwtDyCtmkAtAcheaUmsG0t1hSlZ5X5OFMsHL/0X\n7tYm72IT0Io+pESZ4yc+tIA9D03GyceF68uLhRiFTLenX1uObi3eiZ6R0+gN\nLsU4\r\n=55Xw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBHlOmzRpuqvM6R8JFo5NYUXs2EbncBevbbu3HmfZTFgIgG27CE/zoe2DtAe7IXbKhGO9d9KFCGQJ/z+Rm4pjS9hA="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0-rc.2_1549553110661_0.7734537833441566"},"_hasShrinkwrap":false},"1.9.0-rc.3":{"name":"understore","version":"1.9.0-rc.3","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.0-rc.3","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-Ghtz1Cvyy8y3gfJGgr6cOlV4DsIBsjhDV/GsCrwRufO1fKzN9v5tx0cPl3jS4Axwd0zJhrF6+CjSw5vm/kHa9w==","shasum":"2f61cf0afb054f4dae2db014fa45166e6c9d5dd0","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0-rc.3.tgz","fileCount":5,"unpackedSize":51051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXM/cCRA9TVsSAnZWagAA48oP/2bAXo1uk7fg5kAppiwi\nvAd0YDrgmCPEvS2hB/ZnkUslp6ssUIcinR+qAR6hbU4WJ8prAxJH1IFpJQiK\nSoK72kqaQp3jrzQOKcxKh+4ZhDuj9Wdl3iUS5pmOQtbERDpjZzvWkBR4SWDM\nwmHINBXQQKNGyFe9dQnUpY3IDqi0aoELN+sXnC50XbbYB+wdeo2zNEncX3MW\n+mFwk8+p16JMxDF22XK8IiBnV4yD8wbwx+6ru+m5txqjKjHWRzQtpC4BJvdU\n5i4hvOVQvdT5mYpCd6Oyrjvwygjn4bs+frs8Dr3I5IzR805LnnZ7yZyIxfQp\nPsM3m0nIUi1h+jmfV3dyMxJH8O2E85pzZFVtraS7JqYOBeH1Fk/c/EGT6x6k\njL5M6YGz5q6oqCiLPUo+PUcjkuhhyy3vi5ZPItN4KoPL+gwXdb+jhSCeUObr\neXTI8XYMQRVi9PA97YxfJQNqGB1k0z+GzGFgKaVgMt7+RsgyhQbg7/YiJ5EU\nGtzVM1acIACN9J5EhV+xfvYqJ+5rMUvAXSyR17sINzKHNTlmbZ0RZP1nZJ5k\nD5HFOFE8+16bGbaSRmgY8ePlHLiwqibOU2wV7qbRAavrs2I19QoOWqnL1g8H\n+ZLys3WhDrAoPUu4UwnjkhOiIF8H+aRRCop0xw/5nq6gDQDASUxhfXCeCS9W\nOnod\r\n=wIC2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYYCIPYmhV/9omzihsSN0UurCrdJpJZGBWpI0GrIvdMQIgW7j3oxvZI74SmxR2fJybXQTKcRQkyDqSOwhFRHYptV0="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0-rc.3_1549586395660_0.9178134623128713"},"_hasShrinkwrap":false},"1.9.0-rc.4":{"name":"understore","version":"1.9.0-rc.4","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.9.0-rc.4","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-NjA70/tZvLNCgURBqHS0nOEH9ynwYVAUZN09sWUhxeNNt9OcRTWooEhIVjfHzfzaUulRBZKNl5r4HFfS5XH/HQ==","shasum":"a810521af90b203f41b1fd3facd7daf43c845c29","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0-rc.4.tgz","fileCount":5,"unpackedSize":51051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXM/vCRA9TVsSAnZWagAA1sUP/1wIfluOgsN8u43kRBTv\nlcZs6zaJG4BN+IBi4MyfpDnLNsrhRdEQHpDbfYixQ/ctDWSmjZltGTE9Fu3Y\nIb+tlOWmccef1SLy2T75VvGCHV9Q1aOt6kv8rlsfW7494GafX0AzYjhUcdbo\nmaICvQK7zIZLoC6qngFQ3Q2QWJQLxMbqhEPMKYYTenutpiRrHi0+LWzxnIAj\nCCqbuT+SkQs3ymqbtlQc0X2qyF4SVTMlFmCW5TkmbeJ8vSyr3OWNKN8Q3nVB\nDspLfcwB6rhwCyWPbzzmHYX9MvJidU/oiGK7ihPnfhnRBO/JXxSxJvQk5/Ud\n4JzPH5UGqptFqXjy+K4N3yuFybosAnu4wgGVSws9BZksjaYS48tH/TAcJLcD\nANyhXht74RcaOORF3AFybUuUztBqdBKgHQ3MSH0ciiguMf84KtXezde7G8DC\niqhjDh6O26MIBvOaiZ2JGbSD1zc4FJBeGa03GWs/+moGrscq6MuNwum4Pfrk\nI9sWgfJvTRZwaHeWF6FbJvzuSM7+erpCW3cvLWAKBPB3+rMQ03AzVzChfPB9\nFU/8zeTOnaA3A7kpA7VJw+wXCjxXSn8RgdupSxKdXAfhxYdLzUqM3YDK0S4h\nmuizFBgWTsrrDSPbX8Y9Iqmk51VtsSnbmSgwMIVY50jhWiltnA8MmAZZSbL6\nKwh8\r\n=rjok\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/rVjgpccvebfuRfYDmbSeYYqBOuYW+wLtpOM3h/E3egIgDdsBPErvk2cznGZac7SF9XKQEJwdkQstKXn3lIJ05SA="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0-rc.4_1549586414612_0.8529593420787387"},"_hasShrinkwrap":false},"1.9.0-rc.5":{"name":"understore","version":"1.9.0-rc.5","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.0-rc.5","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-wA1AZKBW5hK6CAV6tP0/ZcuoSZW2kktNQQif5egNTJTzR2fyceHNS52FVglVQDdP2wSmcSLArqiPdkYRmSh58w==","shasum":"02686601b360fd8f110c071546038a427770fc94","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0-rc.5.tgz","fileCount":5,"unpackedSize":51605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXOTZCRA9TVsSAnZWagAAE+AP/1YPhOgbXo2fG4VoaZQn\nJ6V+HNqWmwbYPU00DON7QLapBtAMhh6qgAGJin44nR50cRpnz+DFtFfd7b2A\np+AQ3TO+nO/dmFLo2f903sD7ys5D35ooGvVx1A31QaKpY7nBbbQYULe98XRH\n1ZgAqUahJTqfKOZKEvX5FuXSLKhy6JJPm9odv2H1Lbn5egP45Na5xWsYmYAt\nYHaAMJSpa24SQ0oj3HKuMzn9EKQRv/h/jCHmhm9snB75CEl+QjYxiuKE9+Qi\neRRoT5jOCAT1YrSLL2t3axTNmUF3uQ9I54ptPmzQTJV8U6/xHCSGLdZh1z/O\nDcNEjSFYkue3AGf5nQzsPTo13sWn5NguKPRKSAPkcEt+mAs5P+8j+DFwMwD+\nVTqcyIn4fgzAtMGgGHtfEGjYRCtYxBi2Sn6UHvdsGQzm28xSzRvdy38Z2cAj\n2iNdFZEzOylvGOd3qVsQMjTVzGJJszBtDZvG8aBWpCCxr1AlxhurpYj/qOVN\ntUVitIjDrisar3/IKNCSn+faUe05MlVnsSTI6oZMDZP41hXRZkxuvcr3XDDx\nIdOqRWXjfx0obxN/B3HuYjGWbTNCQO+sPy4s+scsuSyGaI6g/kjhYBBdnAiY\nrMDVzhtzYKWyRWqD7JD8LUv4GyU7ZEd9f7mLIj6c6C+Sv+7OPCcF2tySGPCg\npZZL\r\n=Wvb8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDE5h0FmF9JJM+ffaeJwP23jc9bYf1VsbGN3DEv8ONo2QIhALmVYgSVyKYKz7GimGWSxM+eYj6aUj39JXYmz9rvEEFj"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0-rc.5_1549591768630_0.5481542391357914"},"_hasShrinkwrap":false},"1.9.0-rc.6":{"name":"understore","version":"1.9.0-rc.6","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.9.0-rc.6","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-MiVZH+es0UqUNRhrhV63HeEH0pk6UZ1j8aj617QdPirkqx174Dv4Ex47/WNxxhs4C/Z2Y2nAIh04CcwozspVYw==","shasum":"c6a22b5504e44952b788539ac2f5dc77395012c0","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0-rc.6.tgz","fileCount":5,"unpackedSize":51605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXOTjCRA9TVsSAnZWagAAHTMP/3W1FUun3TJPG5xfTTsn\nunYodRx9P1T/tlSW0scpme/xwv8tyNOxvyzPTIW6XisaeMBa6WEDMsncxLBO\n0hGimpIMc42iTP97ITL7ieHd67MwtMnFfOGhAQ+/rPTXzCjal5k715RE2JTC\nm8jfO69no6mqOKaT5F7/uvm/lrCOHTn4fnaeUjCfqpnIrp5h4thp1UuMET4A\nmHTLwTbOiqhE8RW1MGB5Qe9mfNYOXkOFfnG4OVu2YWzFvDHT3iT+GLkOsmfY\nLGXaDHWiCFm6ZlSglbe4+deIxngjkIOB5z7fVxQNmHVZ+5E6zDKs/9RmYPis\naM4W/Ob8fVpn9JHhlAmlPf7BsQGOI2kNopIfDSiZwx9Oxk2byPjVNaZ1NpZQ\nyN5oRbJzizLAA3yiK1tYvBdcxBs7SETLAODsBueY6Z0n92XBfG8m+aGtqqDI\ng7B1fCW24vAnfA9qvWogN4V1Mas+Eaq5y2unfbmbonb3Qa2iIOEB/L36nAWU\nDQjI7JJJtT9LlIS86+wznd1zHjbzquV576fCpcUDoC80goi6IQ/SziyGkJB7\nYaIDTfOhiAg80jYsGO2OtMnxNU+gaTCMQL+cyectC48rA99Qah0nJdhV/1J9\nubCcPWyLHN1MFznYgW6liXs8DPYboJyzaQOpxEdfuZOByqsshFIC+Jio9rLz\nD8oV\r\n=bES+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmOruzp7hCV1Jix5FJCSyOhgGzKXxtAMzxuylfvYw37AIhAIP/t6Ge+u37AhNczCEgoI78r4VkZC7Bqmd3ns9P5P+v"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0-rc.6_1549591779110_0.01921009320459155"},"_hasShrinkwrap":false},"1.9.0-rc.7":{"name":"understore","version":"1.9.0-rc.7","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.0-rc.7","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-+bp5bKIkTAouwgbX9C5K71gw+uxwuWUJKqT7CLqy6TS3uQy00cyHyQozuLnGEzfevBZGfVq9ubqTGQRNOcQDTw==","shasum":"62517076de65f4527c5a844591803b1d435e93ba","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0-rc.7.tgz","fileCount":5,"unpackedSize":51384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXbrtCRA9TVsSAnZWagAAxLAP/j+MHZ/gd2maUNLtFVzs\nupZXn/EdE2w+38UXJ8B9eKuXapC4iBDKc8Lwi3h0FvWl/ildby/AwwAvAEiV\nALNJnMrQuMCleUfQ4imjWy9sj1nHN8cwPw24B/PukudJnghBcqemhvV54Pf7\nqKlnbxxJyvGQx6eDaKVEBifl+f/og9zDwFOGiYMNq4238aIW9vZsQZkJzwsg\nt77Sea0HjXXa33c40KIkYQUHxsimomZldIAskEqhcYAzt/F2AzUqcxPoVSUY\nqGbRLoy7at2A9khnJipV4qcfRvql488YgU5KB9UlIn4nmFnzOCgaMS/p5xuu\nSfJ0Z9n3Pcv5hJOhtb5FBgvWA6liG1LkPJ85QRNknBc4DSZ7/TSYdyHTl31e\nG8sQt84ZjPpP+RMzzB9bVf3OHNIaj8V5APWSEoxBYim8sSahJfYmOEVm4XVY\nvccYBUE6x/EX61oPSwjs6fprOdNe5HpR0FotK2mAng6icimaREUSbGxxLIOT\nd2A1dq47BIXwx8Q6DFSRJgcHP1QFAlCBoiNghG6LgkJkwhAGSAcC+iBJnJjT\ne3fl3zDfjclQoLO9/J59ufzrVCzMVwGQ5mC9D/6IvkxhnpyzqnDrXq/Wk3+P\neiZUy4bgQWzKg8aRsSESCfHy2gK+2Txm8mUwBwlKiBczNyL9VMTW4++UQItN\nGtnV\r\n=tj/g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGFfO7UNbG/ztDh/d0d7+CejCPC7wcoh1iDWi2eiP9lFAiEAvYOVosCg7T86xDG2H4mtADw+dpbKjwGAz6TpF56UZnc="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0-rc.7_1549646572367_0.8128185288036709"},"_hasShrinkwrap":false},"1.9.0-rc.8":{"name":"understore","version":"1.9.0-rc.8","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.9.0-rc.8","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-x+exKrQmJXd3CRjMYVARKBc325lzUmEkyZ66uezBpnd6Pw6KMrXCmhJ93Eka/Jh1AFwfLc6JW33hJzWLI7l4LQ==","shasum":"bfcaf6ac0654d95ad1d1571b17bbc7b077bae47f","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.0-rc.8.tgz","fileCount":5,"unpackedSize":51384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXbs4CRA9TVsSAnZWagAA1pgP/jtqlPDdfopRd+LHlAq9\nkbobJGIlVIQLM0d3yg1UySyAUn17niuPEpJudhp+8iptvmGe92CYrkfaeETh\ntCifd3fWdIdVCop+Q0AGntLG3LvFpISjT3ADLuoEjVqt3y5Y2n/KXoGUj2BH\noDF40OXKxfMUP/J8SSi2m+eE4jdu93KpCnkVdABFl2E1bE33AZj8Le1G/RpB\nqEB7cYVGjp3tJqo6uEqWfZeHC2aynb4CHNajEWRCEjSyjD2DuIMrnB9V1gMG\nfxJUZFV5Ik2A91TqonBxFFrjMcp0Ne6/77VWmBXY0sOcGGwiL2VzUXDYamYB\nojQDLKlavN/0oc4yY+tv6G+u+QzqaVoHb4yeVSN9aJp7jtzxpgU8a6ONxsQ0\nFHoOXqqZqlQx7U0p0800Yn49SZl64V3l0Nn5WHwF3QerSu4aPO3GrmwFgEvh\ngnHJ9gj7vbVjRU4RG5tvYAq0yKlhmvQ/EZ0GO07XFhTMRAX11xWPosF3OAYX\n2gqjl7roaDATV2pIlsfgtk9biwsPMGE3hcIyJj+ypSNjWUFUSPYvksMfJsqI\nVK+bZy5Nk5KwKvk3ycSHjrmvCLT/imhSF4PN7sTYeqLHo4PtNF0Pgtx8lyZF\nO/H+mH0Vpv2X1nk5rL1/SHYyuoruk18wYe2/CfCLnpPZgC0/63vFvUMRACZC\npQYU\r\n=+i7w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF9/MkyE4YLRCoImpqsrlOgS0t0S+OUcom6VgX1WVxBYAiEA+LTejheW4RYtCPCVmBWqV/Ez2Ynr6MzdJHMdPnVGxIM="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.0-rc.8_1549646648324_0.2626591790599899"},"_hasShrinkwrap":false},"1.9.1":{"name":"understore","version":"1.9.1","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.1","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-9Q9BFuBtiezQYsHPdFFNPRyGf4YKfqHkkaaMpcQgcQjngrOnyIe8mvW8vNjXi2pkThj150UksgaALpMU19T3DQ==","shasum":"3419cb0a282021ee88bf2f539d1ed7c2a803ca28","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.1.tgz","fileCount":5,"unpackedSize":51542,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXdXjCRA9TVsSAnZWagAA+G8P/1Ox34qatyq1B3JmYyU1\nplCB+kmh1/RLtDN77IyIdWcE7TzSGYvvm0bye95n03AToI03+0FV1fQMvmUq\ndvxNitnoSdAr5Ajq2O3N7eVfoaSATLQviH+fX1pwlEZ6tBT1jOI3iD1zKR2n\nleGnyqT+LfQ6P7iSOLbFxEauPkUCQXdWTOZKoPgHwp9o8V4BbMixlpR4x2Ms\nii4fbmiSMn6RJIw4r5u0yH7cwsgbfxIgNH37118mCgVGRBhopu9ELAzzZgib\n0L13MdIc0uVicX3wEV1RwB1+0sW6MnmbVi0lpEudYNTkfXfyByeJ/wtG5C98\nLesn3KLR4V7hv3b43VhyMu5CthThRe+detV+FK3U8DZ+i4kET58SN+2jcfH1\nL0O3zYqL3V0QcwF2B06OwzC+4nRXiWJ8OPTMlGRl6Eiu9rUgJy1FjZDFSahn\nlS4NaK1VPySL4WU3+BsF0yqzq0xkrNAeudFVb7ImXRZH1tI0aUxdxrTCMjz7\nBnv5nfx1w0UH4hfKQ3G9icTgZ1RdDJY3jyNVMZCIxBnXWpg/kt71Tx3LUMsQ\naEi1iz5xOuG+TOTDidMgbDO8Lca9sCr6hCk1koLZB5hcwnQjjq0Kyj3VeHle\nmVRDBei4Qpf/t+VMqU39QYuUtvO4VAxT2QhrWQ8CKWrbaOAnUn0YR4Qc66jp\ngXwW\r\n=tft7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHyFEwxDRDCZaubdSmONibj6BZP8kvKNHZvgTFX/Cc7KAiEAuMvvWqbXr5TQivOAE8JBhgTgzSbn3/wCkOeSVp9oaDw="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.1_1549653474697_0.3275249744550244"},"_hasShrinkwrap":false},"1.9.2":{"name":"understore","version":"1.9.2","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.9.2","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-Sit/QZoEl1uNOlcTBhe90GeWNypehsabk4vDZ2wHvanD2WoWnXL3w66OV7MIZqx5oyqulENebuVWgycCS3i/Qg==","shasum":"2f51d7bba26edc56a753627d9848f5bce325470d","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.2.tgz","fileCount":5,"unpackedSize":51542,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXdX5CRA9TVsSAnZWagAANB0P/01G70Wzgrz5gSjXgUf0\nEWx3qyqXxvWXz8zjptePn/MtymikaNk59ESMVKVCp+ypjsoX0j9EDyAKVHls\n6Cf/PZfUOMpBTyMMmqE8GCrcszH9ioXRzn9aU1gboihKAws1tlac9pkYrxZj\n3M8f280WXkhuVXQu9X1kTmhCIsEImIS6KCBJT5f9LFj8FQ00S4wQNNT5l2Ny\nwUb5ylq0AL5VindCaAgB5q7XNS0tMOrgVTx2rEZKyqUE9QTm+zjNH5588lny\nr6xNQs/QKL4gZjU7RwC4T77swaC8kGdYwX9FgqQdzjrkR/EFF7se7WsShuWO\n5AFUbwsSApDHegYoZ5zSBRfSk+lS/GBp4zMQqsmZLEZEaA4I22q/FbzYasK+\nskTHvZ7g8EuXtKvRn25fdJtlxmcPpv5W+uAzE85eBixL9GkJQE6RtlEgMYTu\nr5hMOh5kAwXjcHrVNvLi7LmbrUuJ07Fb+9uGi08v2iSR5GXKYfTqH0VAc16h\nOwVqRnadon5oEskFIZCiCZEuzPSYppRTJMXvKVDysYKwV32KNDynl1XCm574\nmTRRArWH6J7Ij5GavrVddtllxhyZBKk6P1G93GtNk/YQgX/TsDQdJW6SrZ9g\nAZHaMB5wlwSM/dtnW2x7CW/jvLapWJPvDpQWw6JiJdEkzMk3zN5HiRPnEJrV\nzwfm\r\n=Io1I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFuMgqFIlfwQasWb3LlFzry3zVwKAqB2H7eJ7P3223v0AiBLboca4zmJZvheA31K7Jv1AH9C6/y+eb3F3D3J7pBeJg=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.2_1549653496827_0.9498676372121893"},"_hasShrinkwrap":false},"1.9.3":{"name":"understore","version":"1.9.3","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.3","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-d9Oq6yry3UnkffJAbeqwDvO++UN0zFbsyvWR1uKQoh/gpzcup+Be26aOfJbgwDoMyZ2yXb9fpvnBMTEwZdbBJg==","shasum":"18ce984f59732594fd88421f46c76961d564e282","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.3.tgz","fileCount":5,"unpackedSize":51066,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXvPiCRA9TVsSAnZWagAAtOEP/RObsGdCaPpqZvzNGFsD\n+TaPCTJEZ7ZSzwmvwbmZOyzLGezjTR9KouCaEKx759id5HnDqiZ06jYQPcbM\nEx2yGERmeLcpm0qaFL+Lt1xQHIVCrySAryAffq0D5Ro5poPuTSlr0JYAT+nl\nF6R02KuzysEc+JCWb+m02L8bq2AdrZooGlp6znRwbXiDzBarsEtHrCrnieHT\nj+MwIKmZQOiYmyTQauNAl0GCLkP8MGnCXvffdXLysNjPly3W5pxEF+9N9Hsw\nexDsfNjSsa9cDOcbobmzWF7fX3i0BCweISZdz3lZfEZM+EdMFusu6dAPRtRk\nrLUuurk9VyxWWyVWZT7aKV96QC7HcBDMnR0laQMkfJVa6fQrGR/gjLIopzmL\nT4tclCw0gYlTkBIRUi0gf5a8qTrZEddKhDD6MD6HbZjgpy5K+2JRMv5Z+Cug\n63NdQLN1Oih7/1OcQra5jNAaDGk+t+Zx+SVLeQMQDjHocMigBecr9ZNmxojR\nL57W4GvpGspx3k3wXxgv3P8YQhCbGmWgeIpvB/Gc7NaIjFqpv93Ouc4bAkTm\nMEzYKZfya+QMHVi98YCi4ufaWQY80EitqzLpLnXV3FxgLlRiSi8KuPN6gQCZ\nmPoXA+lxYETbzMYSmLdWDFap/e36771OA8e346UpMjnW4hQU2d1KHnuprqcI\nm9Sx\r\n=5t+f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBkLs+QcupI1gx2zblPnIKXaG5ILXHhrrCQAvVsRHna2AiBmbSt77HchWzrdZvJBtIjkrP2MU5mqcUPmw1RnVp8MCQ=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.3_1549726690078_0.9616143763884297"},"_hasShrinkwrap":false},"1.9.4":{"name":"understore","version":"1.9.4","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.9.4","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-Z6iDvup608zDh9b/4Irh8RDrT5YS7+q/ophyLMuFAI3Gbc/Sqb3Y03SswVnrnmeRh8GYNCa5BQH4Svf7E3C7sA==","shasum":"c53b527686cb64f3b00b2ad1814cbd9b398effc7","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.4.tgz","fileCount":5,"unpackedSize":51066,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXvPzCRA9TVsSAnZWagAAfWkP/0LDko3+Gl7O2WvCw3Mb\nHYLj0hXxcL4ENZnYULssbxl1FtRTqE/GQ/lh7cU5bI9snkNwuLxexyftNThO\nyhi8V/TQx3NaejZUiV2nbyQvPKm8XGlko3NLkFUPjSMma3VcCZYswJ00bjBW\nbrIme7xY0VLDnGkqIqkaKEovseYNkBWwj6MStZEtf8rRth5HZoO9prwtJoI4\nAXo9A3AaZl+YfJU0Sjqqnw2e80jvgFDkrBrVrtwUNMoiAdTli+jrLq1FIlXT\nbdGdxX+ZW/xzOYUFZzB/Jl6p9q4WjwcqdWK1cgfo1kdycRcIkS+9Eo+JdhGZ\nP+fgW7JCMuDUyM/phWHhH4eeSudZZbB5qkKgd+BGvBalORe055pijLNjZN8J\n/RWlu7+KdfFwz+XOiENKfE7bbFQ5CYDM4KOhIHnpmHadswVwwDM8LzYcyZyc\nwW8NrqL1wsT79PVVjeX4eypmDs3oKumc5wQDS8NtBEoOnZt3Fs5ajhzc7RNn\nmczaC/ftmFANJUGp8zZtJz8I/UmEx59wFDG+J22iOEi06s9QnsxTmkmYs1hw\nDne9fg6YASr8UujAqxeYPYwZcZQidByZY2ASDJ2c+WhZwk03fmxvHvYmivA0\nCT0FE9qwanoRvw7Mrja9AYuRcyxK6iM+8zoL3VQ5jVbgMzvUf5ypK8K9WS2P\nRAb0\r\n=9Hcd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF8+iC1FXxMe2gdxDmZLwsdOr8dNKMww2GofiLv3R7/wAiBw6EI0ANhB8EyTUUslBFYoULdnBNXqX+2TzZu2in0cmg=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.4_1549726706091_0.7247834637946455"},"_hasShrinkwrap":false},"1.9.5":{"name":"understore","version":"1.9.5","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.5","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-Gj361G/rD0CJ0SK0HyS+yjk8pPoGQAIBa5bg+kZF+KyYNzyXqUoKb20q8uF3LC3Nwc2IYNfh9eC1dBKgNotKnw==","shasum":"088a51701a6896b024d006812b98e270a3a3b57e","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.5.tgz","fileCount":5,"unpackedSize":54090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcX8PlCRA9TVsSAnZWagAAYvEP/RvS/kL8LJOYhkSganEy\ngSlYeK5yect0UQ0dQk5ynDuw/YijrFqVMYtF/0egMr6nFhPm4WCCY+hVMRb7\n6r8e9EZvng/m2sXCECDzDgBlB3jeU+o1uNGhOayatRFQkw3YAfDV8pDBHl0S\nLghF1LSaImVsrWvzYriyXspNuYuQXTisQINrCAM9o/3QsduTCH3KXqwSU8Q2\ncglWoD4YLKYUgXD80vOpzvmutQYwKe5djZCU0YXK6GPkcHJNbzWJ6dmZFnWo\n+a6lWBM7sPYtPEN4zknZqLaNzFfehOjor9IMDEruOpN9p7Xa+xvF+w6tC3I9\nlLGtJYMqaiwlMcobBamOUB2XK/hA8OdKzWfOBwmzf0KgaX3ieMxLlBdIWZUm\nZp3oV2TUP5Nv5YOJftBOabYfCdBaNtxVFPOwH7jwa/WFdpEhdW0p2li5bAyU\nf+zKpb2zamHHZdAFIC9U2VxcI2NkZw4tEmkc4S9xLTuLZICXEUuvUYteJcUY\nkyOPLi8kJyRi327ndkjqf6KbbTrp/zhAgwnl8HA4u+KKqVl6lPvRuaAfCU1L\nqebtLx8S/Z877kxQhEBA8q1WYyqKvvSZNjVRt1q/4xG4CyTHdRQO5k+bs0Jo\nLnW6N8qHs1p35xw/YwJVu+6Ky8T3f/DHnEreRimdm5sBm4UxvL9V1zRv4KwF\nKQ5J\r\n=XXRv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDEx5aStolAdjxNlRAXUuEfODz4gO4rsUdWwcgO3k9VlAiEAmciVa6G9U2pUtZDLOZuUyGfNMNhJYDr0GOauDWtsFQs="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.5_1549779941105_0.4478944451633704"},"_hasShrinkwrap":false},"1.9.5-rc":{"name":"understore","version":"1.9.5-rc","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.9.5-rc","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-zr/H+NHGlBujujZ/bXAw+lH5KulvSBUveyN7yQjrvO6iD/0IVBxogDscuJG/W0x0FR7w/rCUT6xvvtMC9dK/ug==","shasum":"7b90c990025756e176d8bcecc91255986f51482f","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.5-rc.tgz","fileCount":5,"unpackedSize":54093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcX8QECRA9TVsSAnZWagAAhE0P/0nlYWbFkb/UpRMJ5Qdp\nr9kTaN/Q0+Y7nHjzZQh4QoS/R1tOyCLgxzC97O/NprZY7WAsd5j6xvX1Vc2m\n5a1RarefTOQnGrvLr7IqPSufYps0jJcTLHmeERnGVZ2pZnjvsHdqHl09cyFa\nwl9KX6RS5Al2tXLh1iOFa/bRrBq/V+aP+WwDmGF11bOOBeU5aS544iFvNjyy\nBamTmwEhE3VvIehk3ZS0S0SAj1IP4nXzH5pLmqct3y5rvuXRYr2+AkQEA3Pj\nY+Tkq9MarZ97VaaSXxSX7M6LlqUb7rs4PdqR4XPaWEE/ZJEnQiFUB/71Cb1N\n3eqSd3BLQJQDk14wAn8WRPXR3Qn8XyOOYJzQLEY6NR/ptlxVuCWPf8XDEhee\nKpzq0ACiHftbVBKz8PY7mpFTi/RY4IcRqgDLLDvYE5/zaLuB0CQ0r0XlOFXu\nAi9kGz8WFtKApBS8otrX/WU453oQHkK4/Yx+0XYOA//wP6E7n8d/ghdlDNnd\nDVZupZFXnwMAS++S0ygcEwCEDniwvKEsjTMktTHlMInbBu5xfPFvgdu4Qiex\nGTGfOV6CzLeL7pf2416URNsRoingatnvXGeqk+Bh5/4GKmQL27i3CaEiPQbD\nMv9HvAsrT/0YAl9A61ZKdgfu/gtsxD04qLxPEK7a3hHkdN/zUjXH/aLBrnJo\ng/qQ\r\n=DVVq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDp2SwZQoZ8IOtoAoiftufQkZVcCvUqyiQd6f5sAtFt4gIhALd0eVley/muEVorAPM6lSucT/YY8cHgnlfQ65ZJ3RQk"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.5-rc_1549779972222_0.9767572494825225"},"_hasShrinkwrap":false},"1.9.6":{"name":"understore","version":"1.9.6","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.6","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-dPcigDnW7ldf09PqI1BU4QJr763kipKPzP5iMBEz9xlxCs7ttw6SDEegEYym1bFojfO3YALlq/MbamHIRQkLsw==","shasum":"86564ebaaaaa9ef32f4013cc191bf391ffeddaaa","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.6.tgz","fileCount":5,"unpackedSize":51245,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcX92KCRA9TVsSAnZWagAAcvgP+QBQmSrlaswgaoEgjY6/\nnfbhG9jA9rXOVqieDVCCK7cI08v6nTT05Tu3Wq2/kdd6dTKnmUIQGBhK7ASz\nJSjL2o3zN/K2qQe8W39SIrWz/RzlfuTiRckqRK4lqBYjZwXyb5TFQhIR4FE5\nwmgSP4iEmtr2f8+3yCO+8hAKtblcMpLa3zY6Fjd99GBYoQkI/yJ13OfJXXaQ\nPnhZJhSOStc2YQ6LSb6N7Ljkr8INi2SdnTYeAEuB7aPZ9YCmsthxRqVA4Inx\nq545aAXdbo69OONmW34pas5tHOlH8Mz5+9guF83A1KpE7+f92WKhp2qlyv/n\nPxGYPTU0hKYWy3ooud1Kdcg6jMw/TA2knRcQ0XEjCwL6vbRpBGvwNESyuFb4\naDGmcIcyUD7kbbvlPKdsN5X/lJkHW0zpvYNpOKKj1k0UTNyi5Pd/WnbY0H/3\nSVhORWCF1r3uxE1A3KoOtQU1v3vnu5MdRmAmINKlUUgqSbW0YI/s1E2bO6jo\n6xi840rPelnTsU99HHAo9BjNNcdEwdw0n3Q9cx1zhNNpk8FJH2TxZPeg1ZCa\nh/1VsHPVhMfky0rNcT4iZ/iAkejEZWW9h2EYVPLPlqy0MSKyI7z264X0DF1j\nIFkkzyYagZFLJ4ZCW5iJxMGbTGbInv9lJXfu6tww5seUNMlK2R2sp8dqqZSf\nr1E5\r\n=DdPi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCU5caN++a6Y2YXaNj196WWve2t9jan8xCb3H3y53FT/QIhAP0SkCCVz3FE+m4MxToZ0enwJHpyvERuArEx7xc+Lw/8"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.6_1549786505395_0.7248892003607776"},"_hasShrinkwrap":false},"1.9.6-rc":{"name":"understore","version":"1.9.6-rc","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.9.6-rc","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-q1YI3GzrJvhFR973g13abgZpNLjazti019DbUxUiYqdcfTwfCBw0A502gzyE3lrmIvv+0i7nOL97GHwX9m7t5w==","shasum":"eb87ab01307fb22c3771b5341d4463af0a9e26f7","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.6-rc.tgz","fileCount":5,"unpackedSize":51248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcX92aCRA9TVsSAnZWagAAZJkP/2t1lEqweP3PgR5gt6fb\n9HRpurBcEPyYoRnaRj2cbX3KTyqNbGcrwl61GLMUqlpZeQvcSD8POffnTjuf\nbxgGPKxGsDcp3BIkrlus3y6Nkq4fqQVPSHVQpK4VBIyYhFQA1Gzzz9e6l24Y\ng+CJmpOtE1G+3tfL8YqISsktPHHFDAKMm4UmAReBcmORFx1goyEsQ0zRcKpm\n3V0i1OZ33EFDeZ4+Ho04cEm/Zs62DqhQeGjdc+WHioXrUoKrEOj2MVvo9lV5\nPrWjOk2Nc6C7Ea9MWpuKhV5IFvcnMfRUXvhxNM/8uBaw7c0lTOdM5VQu+aos\nrJmxWNnDZottMb98Og4RZzjoBPnZj3vv/Y9zg1dTsgqDdx+xZzmIqwK1xQi8\nG9P2wFcCrRtP9QdiV0CluZ3E3fdDmictGmxfniNphxBQeuepiN6MBE9R5WzS\neyLMpko0UHLvANqU42wD6L6jozMpBIrwHF31O4+ek+NXsdhkeOyJqdCfIKAM\n5ipkh4SqSgK5g6FM27dqjI5JsBw2T6CGI7KXmvS8Yc7kNLMIw/v2/6bFEbXF\naGfeu58UupcjuL90rPFnhGAyZHpNkLNxJRJB5R1Y0Nsbhd0O341TiAD3vo2J\nP80t5Tm6oDr4TujmFqmrbLk1L/+k76EGHLDhc1YEDnDdFs3/3+Aj3qUDdHju\nAdwv\r\n=mT80\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCe9eOAyxPAXbpVH5n+aXeiAyDFWOdNA4HnQVKO93yZCQIgIkaE2gTpOQqZHs5j3vaHVshiQu/l4DjZy8rSYG1LjNo="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.6-rc_1549786522376_0.7713927084036147"},"_hasShrinkwrap":false},"1.9.7":{"name":"understore","version":"1.9.7","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.7","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-tA9gr9zffZsamDLlvC5xREj7tERibFcjnokddzdYOeHAZy4QBiYDXACa2s5rvTRdj+OYpT0bWXURam20LRtsdA==","shasum":"6e9a5c34d74399f11c1bcf8a32be38639263e6aa","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.7.tgz","fileCount":5,"unpackedSize":50610,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYECVCRA9TVsSAnZWagAAp+kP/32dW09wszmO3FygmIzT\nInuuY5uiYKlWKyU0Naeo5M7h4g78DP/So/IuGAXkejRXzsd9K22jdrr1a/T2\nPfsVVL4w7wnzgTO7QEtybgnB44CNOWjpHf2qk7QGkXMOmN4tDSwgmPhGmKP2\n+MmcZEQFmhNtF7atl1MGfcLOkBcxUrsYDxrHrupQTZw9qnjbf20A137VD6jL\nYQLlsomjitig9a1SPRHyOIF2dzlYskWgnqiSRDt8CvOJKV/Tq2mHUBO+0dN+\nXTpHbWicMDzZxs72W+txkfNb6+oYcfcIQRYAQriNGtvZaKb0W5gMxWGJZGXN\nd8cKXs9ioEEmMnVu1mcTjB9oR6bUabQTpRvZ91d4RyOMIAAEofCxDDYeWR0V\nGMo9YR+qogISLfl0V1F1mIo8gzduhUhnFND1mRA4cjZ7RDxCp75kf6KoyVRg\n5GPjuQjt716wNA2cqWY+pfiDdKus69xfN/zMLz9TsIEQ25ymRnXhqDAHHNOC\ntmoScfYUvKyWMYzdB/tHYV+gtJ52ptr12HaoOYYwbIczs9eQSjdErPtBWBcz\nI3Gig0k6sts2/TzBZ/QOVP+tGv+9h/7S1+WT1vabgZUJrd+CDeINN5ns33C3\nhJkmqksVEkCw9ZM7IuutR0da8Jjxb0erR6IQshV+WEfVBBtr0ODSLG5a00ZH\nY0tW\r\n=9zbH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBmco20y2UZMSRqy1/w3vywAYa6m/w7o5Trj70jhWdbAAiA/jhPWP9ER/6A3FSK2HTdngKu9LN9KjCY6Ld+WcZzyAQ=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.7_1549811860956_0.30727788262105804"},"_hasShrinkwrap":false},"1.9.7-rc":{"name":"understore","version":"1.9.7-rc","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.9.7-rc","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-b4BnQwdgT/7SyoTSG+NxVr8diB3BsdsrtE5IzuybavIlcQllrM6SFxHi2RPBmED+oc8r3U1VAEscl+R/rBTIXA==","shasum":"5deeb2aef644fd884e4b89de444e8a4038f2bd96","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.7-rc.tgz","fileCount":5,"unpackedSize":50613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYECgCRA9TVsSAnZWagAAPjMP/2BjviWlZWe7FM5YbIU/\n/QOZpgIfLhNaneHTayNujORAnxYhP7MHIcyTnMniPQLcWwqQItY8E72TgT1o\nKKq02oP3+RIRijC4C937i2Opnb0UDLVLapRhPbWvpBzQo+5PHWT0R2WFJhy4\nNHtWA/AYlFyo8oaxIjTMQ2DIrqqf+/BZJ+ZOx2PaX6IL+ltjiw/lVgKg9Xhi\n+EJ11FORR1BIg+VoHEtAjRywLZh0GHNSG7QBiO3ON7+kVJf4TDaip4II1DXz\nY/8CJyiMqMACNCtuP1/XwNbYNw83PDtvrlxoUH32Ex7ynk5qeg+89Iuv+NiX\nkjh0ImaS2t/3nNNB3mkWa2BO3Lss6pqOj4Y85jHp1gtGBBHwrZaQJA3TS67F\nbjk4418YqRs01oZ5T/0uA/gwIUN2+o710V31e4lcDIZIdoYFO1JVjkUGfzx9\nIEcRWcGpe2nAgHHPFTdF6OLCK2Nc4SV0VFTqnuQdT8ifmeAXQBYWU7x7kZPd\nnV01g2/pIzAXl4cxcfFTRFkve1vwMBG8P7SaNACmLwKsa0LHnWp03JAg5GWS\nEAg+7/8rZlf+EZoQVjL9VMZ/HGGc1eWMbFAI2s3m4/T6R2JY51GViYju7qBf\nIs4OUZoyixUVsyrUbB9dG0kYy/DRgf8MnIlVjPtf63rZichTLE2re0VAAx5c\nZ4pO\r\n=hfOP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBQ1H2ToGS9rwPYCXgr5HEYO+3Xtz0s1Vjv71Aw/LW7VAiAnCSPBXf7UaAtWY5iC2o2iYZg3dFL+REZjXoKkxfFIDw=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.7-rc_1549811871507_0.25152392248283606"},"_hasShrinkwrap":false},"1.9.8":{"name":"understore","version":"1.9.8","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.8","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-NA+eQVenR25ukGXNqK4JLK0oX5sgxfLlYy2J/x6rCOzK9TL1vpSJ66osEnxDKpA0ky4t/r9fGnJtiBWcKm0hYw==","shasum":"8eec7e7dc341fe7e29668b842a9067b3f0232ad7","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.8.tgz","fileCount":5,"unpackedSize":50582,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYEfbCRA9TVsSAnZWagAA70MP/RVaqVBsDRWJvYLJtADq\n8WllL22PCkMgfmIVGQLcKq0r86hvt0EZp6Fqv1BBxpaTQXBOxK38g6RlZXe8\nyMNcuQm2jPj5b1zPwjhN6NQRhxMNkKXY2InOBdla9jrLMJkjsZhAlXQ6JWWD\nSbCGs5z7KSGvb+4+G4qZ5puymSGj+T3w75icTYt0H0lvJPrlpV+F+0+TNsqk\nPCj0DcjVnPIitwvdjWB3hS2I6zha+Cyeg1jhI+EPauR1ViiJwOeHVH+YfpAS\nBOPR5oyfziQk5FZNWAARm7zh7Xc6EgcYUE9nZwQ2VOhlCk4x77rQA/UQpcqi\nQgESw+CrjgUp2mBGIIXgPdlsyAGM0B82ZzYzbyaSW4uuAE43E7zn5nEnqfD/\nLM/4WhGUsrYBNZ/4XV9P+alU5iBhpoGqtmRWna8uLNvISCte03O/bVLt+CJv\ne4JaWNlSIgyJs5RQsXei20afSH6084RCH+PZL56pr1hpu7fVDW7nDyf4jzne\neDJeWSU3cU1YyZFXNuBicbTgSq/VB1E8KFzKDBFNy5g3AWgX3YwyLi2winqG\n0K6+VDPMRhnqtnnON2D5n+TNFrtoZ0wpktt2yateSvYMnE+Q3RA33XSodV6N\nWQsZEPZ496+b/LjW+EPZPMN5PfCVubws88PI3fr6YZ0ZabLDY6H8Q13Yy810\n0hxA\r\n=hsKA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC8WhK4prblaNYsZuGZ9OqaeuyxS28ikeFslq5rSPnomAiAsmIWLvhEUVi0daf7NTth5Pnv61HXloMlfMJR1mRRbVQ=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.8_1549813722813_0.3132994410352459"},"_hasShrinkwrap":false},"1.9.8-stable":{"name":"understore","version":"1.9.8-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.9.8-stable","_npmVersion":"6.5.0","_nodeVersion":"9.2.1","_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"dist":{"integrity":"sha512-WgtPgMocEc3Bsbc7lsbWC1Pl7c5H4NchfXd+w0siy3XtqQGgo50o/ikD4b+l71iaOC8nnTjgKrzAchSyVPlxKQ==","shasum":"48dab0e7cfcffa4dfa0df84a233f774d0e9778c1","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.8-stable.tgz","fileCount":5,"unpackedSize":50589,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYEfnCRA9TVsSAnZWagAA2eIP/jh48It4zyt3ue6psJoP\ny9ULWr33RxdNevytWI92/8EXNH34Ww/38w1z6Kti/Maj6xS+ZcJE2EctroCZ\nmq5p19Mn3abHdUuMyYIiLSWhBY6u3veJHCdLtLz3YdzaB17r2+c8AFv2023j\nSMsDqa/C5WAJDkBmhLVi8AJLUqN99XjgOAIDxI9pRi7kOhpKzdzARl/zGW68\nqDYNqlCxzqDIRP/krRTZGMJNDkxFG7QMziw25riEgz3ARiqZ6xvdr7kVoejD\n1l6w9V2DnEI4KflkU0VSvUjvoxe2RZTgMLqbabjxmgRZrR164EiyKb137soq\nYzvrajs+qSv+InxyfIYXPFH6PazFGKqq/LQID7vQZyHLslpxQi/n5y2NUKJo\n1KSlHwyGgmmfdCaJSAmWoVeekHdfKN7JL3KX3NQ/sDWutDAFrQ0piNdwFIyN\nR2li1dEyacHod66kXLQXLqeZ92C7h5J2CEpyvYZQS53531rPQA+PdQf/Tng0\n0XhIVQqa+LhZZztp8xwACL8SbzFr//V1+DKYqHPcr/Rv2OPgIKETBEmshGlo\nbfqUvX6x2iJr4NrOhOtGHk9zTA9y2mSUH55DK+qzcxtbpTxa7Derw5RiuTxF\nKJ0lBYJB+Sc5QCL+rWs/VTLL+FCbOaRWZotCS/rJW78j/lpqmT8VZhXZrJG/\nhzgc\r\n=sNi8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHp46ymI/sy/HrF0d2O8W1FkepjXYTYWI0vJwHBjNlLMAiEAhP+XUu+jkWSWTdLp3BwfsWr6Xx5dmOcf1mZ9p3w3F40="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.8-stable_1549813735101_0.5122296129319706"},"_hasShrinkwrap":false},"1.9.9":{"name":"understore","version":"1.9.9","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@1.9.9","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-qeVCM9n6WjPF+4JiEwKpy3piFM7BsxTJobCAl+gLhc2tYWnQqHe+VebZFE4B0100LhO2PqJSw7+JZMDCe7FJmA==","shasum":"8cfd6c6c8ee89f23e746b1b564ba3b433174e6b3","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.9.tgz","fileCount":5,"unpackedSize":50826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYFFYCRA9TVsSAnZWagAAa+cP/2Y0e2GA2hziSJDlskPN\njHC3hHNyKggD4wBPGyk/mBjNTTZMIcXtHM3plYCC992pUcj1fbXsQIlgzN4y\nYRTdGaCdL6JWZPLE9LzK5Aow3w9shS1jtc7Yt/hCmZS7QLtGCTpriNvxo5lJ\nTyknlAXkG28Qf985Dqr9Q4yn1s76fsULufwwJRVm8C0v1swRpiEmNYa+cMEs\n2IHyyOXQFtSpyK5BXtiYi9uZp697PvE/oFw9ohKRfwkRUAivOaCO+ERVq/DR\nu0VW/3Tgr03POYoBh0GCgOx1Mpg6IVz5zv0pbUz/nMojOKmMnrjg6VzABRek\nllK6ZrHYKmlc1XaOsKxS9cQLEFvOkRav02wPKn/YdML4bkA6C8M9iN+mb27V\ngySBrR2Q3HB3nq6FpxMLnQ7CaWF9i/u1cpFkwkoqTxFvc375JXpMbAvPQ3Lj\nTuyyl4KFXOOxb4dlQSk9ZdE4O6IZc1QiOuEKFlMn0apNjJ6FtXcO4a6v0Nr0\no9lgXKxCQeedK1YJGqfXLL7X+E5Z5DWuut7CqiZF1vNX2LT9ut6OtAE+hI82\nlpAqBIJ4/9rYoYGzupU2Kis22zmbAD9Yu8zLwlz1Ks2hWqHaKoZ6m0CyzU/T\n5LSh4IGCGueEPh0yaj5SVZgRJoUP4in7CQh61kqwThv8jSGOmQpha62PIfjP\nuBCS\r\n=aaYq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC09aso9Gg7jctWF8Xrp/kRk2GMcVqHgPrt0VCBqxGsiQIgWKAhJlhk2sEGEP1kq9Fe8CBN5IdSi5JyNJnn0jXVEmA="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.9_1549816152187_0.1871605937012084"},"_hasShrinkwrap":false},"1.9.9-stable":{"name":"understore","version":"1.9.9-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@1.9.9-stable","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-j3UrKpm5mOsBSvcFZSbNYwYogJ47FVLSp3RedMwOE/EZnQTEMG9PeCPxDXol5ZoAGHWXesJ7P/XvFem+TLZZew==","shasum":"595e4f564c8cf5df63a83e1c61805c1c0be021a9","tarball":"https://registry.npmjs.org/understore/-/understore-1.9.9-stable.tgz","fileCount":5,"unpackedSize":50833,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYFFnCRA9TVsSAnZWagAAsPQP/0stQUCIzwdDvJsLRpmJ\nfxXtfQCkPJDxlH3KxoCJBZGhkvGfwCTuJWErmGHCbqgvg4pDwkxFh5YFl6Cu\nqaEEz00aBIc5HV50nLFZQA132jFSSy68hv+tem546HncSKwH5qjne4pEOSLW\n1mXBnUZP1i5cyfno5bvnVzTLfRX2LAf6ReN96S6Z9w5yseZ2SHwOPM3nwGKd\n5+uXcEuc1kx8wQxQRKW7D5sGrUnm8GXvOOanWcxjVabwfoFtl+XnLrqUMXDA\nTaVMzi0ChvxlUpjUnoMmEiM65I0iXxIjsx1JsBbt7aXMoin+GwfA7lu404He\nlhALus/qtVpBk+iQQPO2aUcChce5StwhBJUawpHuzo4I2Qb+QWTW/w39P7HS\nEGzIA1hMcEPxFiNT995Q5Z+YNM45fGmW48piVWYkjGVeDRs2gWAo4uD7oXtc\nVgymkhVg1QY0mJrev9w01k3gqsOXhUoFmnaZBoX0lkmwjsPDs2lSI1W9Lawk\nyl4lcrrIKx13jB6xU9z6mV5HQB3C4OGt/3b6CkcJXDZOXGujLoe0smNj6zRq\nxV9vEgOsjg+Mb8/mnaCDgl9nZ6sXUlbhY5dJqfUeTfJ+q3F2k3aoePDGAird\nTXQb3vL1x9x5pIWzahzngUnzEGWveqEc3BMYYjNA5gn7ZvtldPUsOEDIbDnb\n5vox\r\n=C1Rb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEYjwIu4AL46s4sxgFq6mIQOr4RKNcOHiS+tO6ms9eOZAiEAl8WnrO/flIZ/L6Y5azoy5+rAce9Okl+G0PH5FJCwDWg="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_1.9.9-stable_1549816166473_0.6078630436837147"},"_hasShrinkwrap":false},"2.0.0":{"name":"understore","version":"2.0.0","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.0.0","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-EW6eR3SHA8SWzBr0ZpBHYa17tSH5K1urZJ9JtMby+5yKiWPfcY6QqLfPbxVxDArfIgbr3wsgWjqxVLO3hU2rzw==","shasum":"04bad37dda5186e4be54bcc0d38312c9c4f857c5","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.0.tgz","fileCount":5,"unpackedSize":50893,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYvwDCRA9TVsSAnZWagAASyMP/27v4JBXQF/xw1PGRv73\nc5yuBntpCMvNxxPZYI7ACcXLqy6T8ENhVehcUArhgwHycNhJZ99Swp6z05cl\nwgK93GtR+irk3Mu6LNS7oU8CCZLl5I+RuiLzocVYNU+TKw1TLnzroucOtT4w\n73t25urNsukGAmyodW/MKsEzZWDi9UYQKJ5wy107gtcUbeiiTFTNQMJxDr9V\n5HAJmrBor+/y+SSIdBC7wrnYU8TrVKeExMtmCwcox0g6zNCKpQanNBod8/O3\n7JXhLW5Q5aGqv5cLI6cwMdS8r+miTqiByvwAizTu7l4X+PsyrR55SlAbmE2F\ngCDqhPDyZLJwizq4ewvPBHflhqtUp1RLHjtab+Qtrt5lcNv7cfKXqqhcGejx\nWkdF1ddfQZNmOFIHfMtbeXwKyNoBDPyLjn2m0ACaqMYefFhJ5g2SZ3zIf8Bq\nyuY6YCE8Ssd6YYXM7pcL0VHtOPaXCyDRFDPHZZTG23QJa/zEefe6JYPKZ5Pd\nT0rLq2KMyy6RsMR5xGy97VxekShp0xIgoOKNFZ11zrawfioKZuEp5EFQifme\nLl6a6NuX0nwHLx06x0dOw1VJiEtQHYPBIz83vxRP3B7VCKE9wQsEdEVuzsgE\nZyNO99x82pgqTNR2ObwnBn1pyCMGnFnrsrQ4hzmlJaAFW8lIontPDBsk4nUF\n54Si\r\n=TFoq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDks2g/toFRcoNVlgZ/owjiOkcujrRPjlTXJAoc1xFadwIhAISwUXPcMDI21P5EhLIl7NWOKls0nfTZPeu4C0CefSqv"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.0_1549990914612_0.513800491761383"},"_hasShrinkwrap":false},"2.0.0-stable":{"name":"understore","version":"2.0.0-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.0.0-stable","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-yYwfGn0P8yAP13aWT43UtqJRAWAL0eFbMqK5lmBqldKNfeExq3s1OMbq5nSq0EWabtMGT2SxU9ToT8l0lxP0Og==","shasum":"454ccbf55cafa7fa0b7eddc9650190641280fd4f","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.0-stable.tgz","fileCount":5,"unpackedSize":50900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYvwXCRA9TVsSAnZWagAAreoP/0t2haoomgz4OuyWKNwx\n7YWzqhk1zX4CPTZRTkqOHqYfAtgabKMx3URjNLTnTGKa8JnOfmX2pOHjGunl\nAYxZ5gZf/G9NLPJoMfr7f6P2q0fpQe2D07w+DdeYqqZM3apYAsQcG5C5s9ai\n4AdWhX1rj2VV3TNrvTmYrhWHkwVQL1WkynphxzOuVqYdVzmBv4lCWSWXp+2q\niPt9fUbFGxbkN+uZM7AEg5WmNnq3cgpOSZ6YaUFX2nTm1jFGY7LnXmF9kMt/\n+awsLo6Jd42R6DSCD15cZv7YmWle4Ol54hRYmYEZJVK42Swuwramxw9vMRH7\n22s9DAZCFAL5ZFbROFm7y2nehGLV55N0hh++Z8rCOWRBVBSgfVQpUaKD4qoR\nGoaJtdQp2EmREVtI+bR5YFS2SxROY9qedHvZD8AVzbZcy2IVFhoxEHr1SajU\nlZaJgMGb8DOQyba5YHl0JDlu6TIOkNySPyzUbw/4trXbK5WdSZ6ACGjT5sVs\nf9/WKsb5+VkMg7Jya1To+Z9cKSqp3+4FZaWhRLutsVNQp0DRrP52B6uxpyNV\nAP9t1bN16iPyMP2+kgioK5d0l72Do1gmPWHnuwMw11VRu6baaidGMcRAoXeZ\nDZ1tsGxuoExDCNk9uCjoMNO3pPLMwd/zSgNZGpMWqRuZJlUhaiD1T9I7dGy0\nQcmn\r\n=C2cq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC06x2baRpEP6KpOkh44KPmKEqizHYzoVa+2q2tlUVnIgIhAOR7pcbb9tZTI0SdLkPrXP0x0+EW43aQyI8pn2R57pgu"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.0-stable_1549990935050_0.8845799504011242"},"_hasShrinkwrap":false},"2.0.1":{"name":"understore","version":"2.0.1","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.0.1","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-8uQcjXZlsryeUn9pF70Y5Ek0A5DH6R4gRXMEqGMJ5/TAeU6oCN8KJ6bfvpIVpi9TFKyLCat9rezPDTYwsUFHiQ==","shasum":"7f5741bc23a71c33687565c05aa50253b061dcea","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.1.tgz","fileCount":5,"unpackedSize":50856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaXmoCRA9TVsSAnZWagAAXQsP/Art8etnC+8KL33Uou4Q\nFDb5bzoeCUR9FdNqwNIAANFaKaj7gWFxmHI0nrSuEG7RFxb8Q+oRb5TIcZhZ\nKQTRMWdm/Tt8S5pHyhRjq6vSvgItGJCijhHXicm1IUZgIZbCeu2jUm1npIIx\nufRkwZ4HPO6rE6QDjhdGmNihCgTbK5qQsxozs+o1iMS6jvEsQtwYakOU7YER\n3v7Wt461Q2qaeTnBM4KrFxSTUhM68IgXsHn4MJ4k5BX8zyGAvZGieNQx4tkW\nudkHhIWw1Tn8An5PtP5d9QXA+gzSbSwokLiB+nV7R+zcZGwuHeLaWr7tYyhb\n9VzNcFEQwuFzZDDjXSq7Dl4vj2xhdMen0WTtVUGhqVMEyFHDZvHUTTDzPS+W\nnEJOanSmxY1WLsshvE9JzZvZ5NTk/3Tb1qoQXIeYjfpTD4h362dEFvYI21Uk\nEaUz7go7w9AkuExIGumTWKvDkCvURMWTMoHe1NZI2sAHbvliFxxEW4jPKlsw\nPQhcL+rwNpbFo0/QygMmj96UyFSjZl7W5ZuxKwawq9jnNa+CnUDllWXzYg0r\nrnr5op7VkY7ZXJ8FuPd/kQUlIfHiSGDB1QeuNQmZu+QKswp6NcyJtV6JhiUb\nlbZ+gwS69D3doidbbPIPjaVLzLhVkfiVWk5hnb39HCpTRa4nFGbh2xPj5Zka\njWvl\r\n=5ZEr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKEiD7yp6kyz1hj+R7Zme9DOhkQdncAKvuCq6TT1D+ugIgCtYJ3BbL+GfIzSrHJHgahGF40ovCV1W5AcPVAoXgFXY="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.1_1550416294753_0.7056319973468976"},"_hasShrinkwrap":false},"2.0.1-rc":{"name":"understore","version":"2.0.1-rc","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.0.1-rc","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-pAk5aJhzrQNKQOqR7GYQfTH8MuyGRrtS9FgX60NTIUcMHE8ueLp9MBv5NJgw+aE1TP5gapMywK8fcHHXrcxHnA==","shasum":"57b2405d2d165daeeaeb494b604db0265d7a78da","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.1-rc.tgz","fileCount":5,"unpackedSize":50937,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaYQACRA9TVsSAnZWagAA3dsQAJQLdLFXOld8mLf7nmED\nQemtQz7NUYvVAE/UX3QpmCZ7QJ9hB4S6gUjZ0p+0iQh3B8t1ZYaw5www7Q/E\nT4mTyC6nLmefuWj/xpLKKYYfqf6fNerd5yxZ/XlKH553SLJWkojd3yhxoSBs\naaFl+uYYs4Tp9obi7Ob1ClDJtcTeakeqPgTDmHBCEhpAtcFjAEFyjFmay+OX\nYT/rl1rMBcDy2bLk3SHpo3qHuWwMKeecdPA/kXxnVu0+/yxOBcpyly/qyFwy\nDVBNprhgH3RoQwnbOkDOqAoB8MtTbY+Xbdckwdwfu0zukjWdT/tKuM4PnnNB\nmerUbuUPEEDrQ+usvWjLx9jFF8060VB61/r6hCisH8qM3kvH4/zNaSQW1CXn\nvwH+cPDa2z7pmPDvAeMSAtSQoT1QO6bBk+HWzh8KfhefvE8sbwfvFQ9UwCyL\nxBYEgX6YtiCVjmWMtya4fX6coGKAM8yUcPytG9zSPYkUUXqEUPbvIf9+ldx2\ne1AtmezuphG0mgxP6FDXmbLZOBkRlGu1qsy9+0fOAJ6cXlN5i62IU5RwQfIk\njMbvLFM9w7IcX2MAUV2kTZZ72Qm2PLCW5J8ZnMKiSN301X4Ek/GMptLaht9K\npzzGOxqpjNMZHHpuuWNJaOQkM+QYlMCLowI7GHN0o3Ce2m67cVJWKzoMpL10\nM/n2\r\n=t7y1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4L0LhSo2TbJ3GjR7kLMWo1aYpSWpEk0GpLpeFH09GaAIhAOTqsp1raGjkCOpFiAzfvqdxwTQl7Alz/wEYzz9RwaPn"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.1-rc_1550418944104_0.28708189912079773"},"_hasShrinkwrap":false},"2.0.1-stable":{"name":"understore","version":"2.0.1-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.0.1-stable","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-bLufvvFjxY5HwicVh69usVykHdQ7UDMrQD3U1aRkeVFLQJs2GQkueBDjORUfqpqs3+TVlYeQ+8KlPeaNXOECVw==","shasum":"574560495026f7cd1f33e586f88173b715138ca9","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.1-stable.tgz","fileCount":5,"unpackedSize":50941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaYQPCRA9TVsSAnZWagAA6pUP/0iFz/s2N+QBLQDYMDNB\nBly3ZfdcFYWGPNfyHSydCFeFECfU5G0zqwIGzbIeU1Mn80ZbvN6CmI6d9is/\nzj4el8D9xwUNOeisIgW2akx9IYyXOPU2y6SE9wbynjbghQ467ELvm5WpsdMj\nSDMOhbZodtxaeCmIcaUwK4/f+a7Mo6DDvmanHKmeRQcYfPg5fGPlUTVQjbmY\nQ1KaHSFdaFFWTK/GQoIiQPTSqxaEY9T83g2MwowE6ibIrQwf/rugu2oVLsM7\nMLYJMPDzq8VLQ7ibipOACmtkwBZSfHVqaC9XxwjB48/EFT9hIJRMTDHsqXsG\nA/gYNbnDAsUqY9qKUid1LS1ipCmsnwZmNHGuWk+MWUVA3W11GJywVLlOE+C3\ngu6ItaKX+HoMaTqAE4Y/0S5lHmnn4PPj3Wnr0Xxyt6OWYMTlxa1rHJgYfyy4\nilIb/rw3/OnReql3Qw/SSbbVL3XQbot7OqOVDi+Wc9DpzMSgk0suKq2U2ZxD\njrSsKa8D6s4bTeQa7QKZrFEX93VfIsHHWxax03OC6K8t2+Jw1/obSLNfoFLw\n+Icw1vlpUk0nOfi5jDGJ5ITQbRfi3KfCpVw0DPkbZ3od0aeW/UO54OioBY/t\n9lwrHU8oHTc5yP282Ka8MYVG6Pv8o4dxy80/4TFdVoimLwdVqFwrtsPjgDBt\n9XMn\r\n=uuuK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHoRJDHg/4NnGtGvGywqHoau7cZXCoBC/40Zoj/pTh65AiA8CSVicUCfYT6OCvIhHxcoTbmaK91jeiPcRYXFx5Caog=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.1-stable_1550418959076_0.09293292207458625"},"_hasShrinkwrap":false},"2.0.2":{"name":"understore","version":"2.0.2","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.0.2","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-z8QoNGGY+JzLsV9BWHAyBquP1B1ROil4zUhFBZDwlEPdqlovJOGanxFR+vIWZt3kV0MnWejRgeHzU1LYFJ3LjA==","shasum":"5a22cc6e1e4fa353d5f68078c13f0a4397c19e38","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.2.tgz","fileCount":5,"unpackedSize":50841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaY6wCRA9TVsSAnZWagAA5V8P+wUTAnBwNj9i92oww21B\nzQTPjUuHS7zCa2iQlftN61sB02m3kwfoWWB93DG6RfAg0lz0dYjRttoufvWJ\nOC6bCfOtB//PBsBkJldjRoDL0IIgZpsT0rf2/amtLnXn/GGkXNaquhlSQANV\nsC85f2n5kzfJiE+uADlLSqmxuoASdXvK0uEFuxMrG3CW5mgmB8winNNqPM5S\nyBLHwDQeyj1d2n+FWdTJ9L/dd+Bk3fMW67xzxBnUTG5eBkHc1xd+R+toRpv7\neNKR5yYSE0o7XiZe/uCNox3+LDYkVMf9ZtZRARJZ5icaBQgBEJIDsRW1MD0Q\nAa5VtsDTzLqCaw3KpGKijtLQ84W9ELYd1Qu35d+ENBEfR1GruP0Tdo5T8gdE\nQ50dxMsBu2lQrrAYrJHvbG26EvQ7OLjfh38PRBK8sMalvfeFui6nJxfKWMvt\nqacdrVD2HUH6Qhv1ZwhDLVf0dghtwjetzpsRCt8IXoWy2JAOuvL4uHKv1Syn\notpupVq6IZ7JRCF0SbXuakDE0VXgUi9wPOEZq+BXpOlsKQAcWRlv5dGeXrna\ngCkvkp3gFHBCxQUpuhg6wd9WNkCj1kedT89APrfO7hj5WguGAuh45tDus7xQ\nY98Q1oqzeAv4uXA11T2B98lZJG7vL1QInyD9OdZpMFc0qDNDdm6r3LLbN8Tc\nGGli\r\n=eIVs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCA7kpAO33dWGc3tdx3JT+8Wf4PtSLOMO3EuVr9xJM5JwIhAOs3nLHCB7F03U4roKzNVwQybGdfxBf59hB2i7TU9Ykk"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.2_1550421679637_0.872017016041466"},"_hasShrinkwrap":false},"2.0.2-stable":{"name":"understore","version":"2.0.2-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.0.2-stable","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-XyPiC3ob85+WASLxdDRdCRdp9coZrn1opGwGgBLO5cX50DCkB9rczy973heT620WmOfNatOTWR4oG6Ej5wQ49A==","shasum":"117e0e53b6ffbb5b93d13cfbbea6d1a54a8b20b8","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.2-stable.tgz","fileCount":5,"unpackedSize":50848,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaY6/CRA9TVsSAnZWagAAKUYQAIAjWCQLyQb4rszptnjE\nqZoJypBC011mXKqJSvprtNov2tM9p1joVdxFO2PHF3xjpqlAlQm5+Yr+Tpxz\nVoNLGB9s1dLKNdam3aRNShM7BjYnO5Fx4bUsyXFsg6yLijgG3UndCjbpN/JO\n9oYA/0q+61USLCe0d5lrCeCdKy7KvzVbIu9QPnCN3B4OX8U4Z5Keqh7GvaSi\nRwBB8N5exOI4qfzNkJBsrtqXRt2AQVAaIjmE6W6f9CDpOuZ4FiS/heI0v2pk\nUqCc9PfUSpMbqVYI8XsclsDi34t1pbFCZ6rBRC0YfSCu353FHAjgeMEmEdgv\nSycQ+V/00noSIZywo5dCNu1xpGE0B7z8iA7NuCjN+Kz3dwSK26uK0hfom3oP\nijPYdAGeXBe0tHBjG/ZNKwqOKLQOJvI0rxaQjh/eGZZK4Fbjp1pTnsKR1u+L\nFO9cFY4Jr8WreL2DtAxuLQGmt18cskG6CbBTvKRESp5O6h4NWOJ/EmrlbR/L\ntUrJUHCQP0cRY2dkIpX9MfHv3jO5VcFsrchPOB5soeKUI4WuV9YbQWezsRhZ\nODTmjvJn5nckiu7IyoJlCVRrhnxCSR74YZwuxBJvmFQfD0SsE5HHvH+fEUf0\nzNqzoftht3jvvBji7Zg2aXmzhPs6ZlsqYltip8fefKiLI0bQgrD9o3+JhXEQ\nNMph\r\n=12gb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICiHU+zpYxliPm0va30eChd2f47B0w8A4MSyCBPj+9yCAiEA9XlJOP7We6WOexmjdfF1OWMXjeC0AyL9Li9HU67jMzw="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.2-stable_1550421694652_0.19320442886944322"},"_hasShrinkwrap":false},"2.0.3":{"name":"understore","version":"2.0.3","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.0.3","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-FuJfGY4V2LU5xd0XLibktTzUu8yUiB8PCqiknQ5G6Tl17jrNSXn1aY8oX1rqlkN2a9j57/NR4txgfegludgwKw==","shasum":"2540f10f524b5cb2273e5d8f49dc396713b650e5","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.3.tgz","fileCount":5,"unpackedSize":50881,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaY/oCRA9TVsSAnZWagAAkckP/RZfH/17fL/AIBocQuzH\noo5M6BR32/WwGpHQ7pipqJNsjwC1lAkdY5/DZfVWpOQU717qlZin2+bkwRO7\nXXG8K42rn77tGdTycIaPUXxnxjeddFs5YIyocyGrkcfhFggmnJ9yBymP8njg\nE7V7CrkeVRtnit91q/n4AWk1psC9jeY8MiSKMP9nRgv5Iz2mzx4UYjWQyy3N\n5N178m/qvU/G4jtw0r2XDxEqND1uyPQYPYNcQ8ajMBYYBznzPODILMakELs2\nusq9WdNIQKIOmPhrrf4Ec02ml6WACfhp6fTEQj3YDVIxujoaj6uLNkC3UNAp\nn92Wx66L8nQR4tr5lhSmD0l28MhBx6B4Ba+lp/cSVtla8S900BBILuBDQPIm\nV/qHhUx+e4/xaWhvdQ1Hf8ONOGYpSBUTy0Gme+7FJjt/Hm4cbVt8Ym1ZJPrq\n/QUfSWLH0UPJOKoMwMgbVB+p/+8AsnOkky5K88nvPt6cWl7tn7RwCw6s1Vic\nD3HzpAqBuDJMl9H43gOmNjXp1oIbK5Q4kKU56c3oW0iAukxI7qeKdq6CC5p7\nGqGI+Q0SpOwXsWl5BDibWBCwtnj8M8tXzYo82tcrwPRgZMkbBuh3HzRgtE/l\nWXEoGM1yJk3AaXIwyuTJwY+ltp0uyAmmLByQBmxc/DhoKMNPylN7eJ8+HYRe\nhOVu\r\n=yHZd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAGNfWTIcYRVX9YYOh4oYRvpaSUxMWwupihf6lMuuCGgIhANPhr72M5IVk7ixtAuO/WWhssoJ+mbKfqkK1CI/6cVDD"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.3_1550421991936_0.3835650182001398"},"_hasShrinkwrap":false},"2.0.3-stable":{"name":"understore","version":"2.0.3-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.0.3-stable","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-s/55Iz5NFfx3r31NRJgvmqN4WmeZHGuCdx1UH4Nx2oGBb7Ww+9tziC8YmDl5AbT/JqpymwCBd/W11CN2WKXRnQ==","shasum":"f78df319ff948420a72e1530e392a88049a88c33","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.3-stable.tgz","fileCount":5,"unpackedSize":50888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaZAACRA9TVsSAnZWagAAaCIP/jTlnJAKVMvk1/DWC/7y\n9YBIKfBixooChKnhoFpvoB8IYp4HlHcEEfdc6as+qzwPmDpR/DVBDJt0LVyH\n6Fc7XRsAnoAHzqk2GX62tpupHhxs2oP8MUEjXeCXE6XkX5VbSzLVW09gseur\nBEYoc/5huZ9j2nb5ApFliwXuZ5LfjU2ERKCNeq9Qxqe+WvW7/ox6b05Rtx3l\n9e3t2cvcrNbLZfoDjSQnpk4KHdpoT1Rabudgf1PzzMa7RmuNShyrCjkqqsQt\nJqmwvFHoHpxvf2SSrRtMewthwYeJuB8TxprvJXhWVuQYcIS5HlJ1Sgk08yo8\nwoapSQbcWfrmMnLimFaTVE05iQG9tEelAeO+jUu3DSNOnaANdJf7gkT8vJEb\nOTe3sqfH+obT/n+dmQD8lfghGGge/NDEaWCuNHN5qCjNimHtZeqbefTFbXG6\nQyO7J6hOJ1Dc4yglTSx+3toNb5m1azkLWDxklYMg+uPC4CKoK/MMQshKyNI8\nzK8THTYris01H7aL0a+yfACcc0iNRVn5DgYe7H398rMcLqaJ+imS2gf884Ob\nhWsrslD3RldcxKUuPPVrVxME4LUWQF9O6dRMZ+lz6rffkEd45/F9OJkbDaKd\nUGYK9/EXU+pjrKtaOqP3UgxT2oOhun9yPJUDWACkPMap/Y7kD8Syy4thS6KJ\nV5fI\r\n=A0ow\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBdvhigXSttigm9Sa2QuXlQItP7a2ckNIBxl1tP075RgIgaQqsZ84Uzd09kcgmMHu7e19vSirjZx0/PcCoO4GH7vQ="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.3-stable_1550422015439_0.5964476164662913"},"_hasShrinkwrap":false},"2.0.4":{"name":"understore","version":"2.0.4","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.0.4","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-scIK9UvfY+hAx1Dq+OUr1kbPnSOBWU7sxmY0K9uVJCZKJWStX785rF8r+fO3NLlLbsYG2/GYIDJTjyT/ycBzdQ==","shasum":"27a9ca00053c859f1e90a41b80ef13b783418d79","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.4.tgz","fileCount":5,"unpackedSize":50942,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcd6NYCRA9TVsSAnZWagAAezQP/2Z1az4YFHc5l+1PWL+P\nhz6uysIlxdg8U2K+PxTJuCLL9WM29W+t8Mxscakfczfxw+XS7cDOAPxdDXBV\n3dVYqUBDzn8DyG4lalXXu2czgZD6gZzb+TLh58xHgLvt0wD6GPltCio+O+/K\nJq09XlUkS59wacNUfkaXQGY9LmTV4ddz5T9WurMOF3eUoWPr4NP5goV/5w7C\ntjFgfZ6U1TKJ/SfPLThqKoZ4kREDTOhjmY5ZaNiRnQ9HC3W3cumGPPwFccC5\n20vs1AMks2bgPkMsl5J0BjBjzdb60Ddy+xO/IEm7oA33sutvO8qeWE6qfJHs\nAZda4UBGYcVw/y3w3MqlUG6yPceEbSnCdYy2SKuVS1OHebHhNx7N9T50IUOB\n3Uhm+61rmAFtxIyYeINzJRsN69gawOINoIzYTVRgFDhCiVjUfgaKaB2WaOMs\nOFoquV8qg68ipgPjJ3B/1ojgD3qgrLg2QKVPl6VD8t90YzW2FW97nnkLfSu9\nTLTuHtV2ozssVLfnKGG+7BNT1L6ASgEciv8iypkYMR6Me2GI/exESvqaCwTl\nRb8MUswuKB+tB3wnMWQ8owrJfxr20Av0jCwRQXNBk1J1s7oP8NhH+fIA3GTD\nuVxs7MPVFF8r9UAtD7Z3vj93rjG/P9nM7LMzVZ7LeBYoc2IbLpyv6o3xjhSI\new0q\r\n=jIEf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/2gP/B/S4DgRO+znMRPlMMOdDpFHhFCAAe/yzZ4Q9IgIhAKBSoMFfCiIQuLfjEGf7PiF3FR6qHJg88H9uX9pO0upy"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.4_1551344472087_0.8918723526916885"},"_hasShrinkwrap":false},"2.0.4-stable":{"name":"understore","version":"2.0.4-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.0.4-stable","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-o6BWEgU0otSZTwHQZAmLE7yV9Leg4PVtlm4gvdvux0F/9kMefeEk9FSBk2+Nu50P5R64imQOQLWFZgZUtlgXrA==","shasum":"3deb177e000835a0e4695962c5106bbcc937c87c","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.4-stable.tgz","fileCount":5,"unpackedSize":50949,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcd6NiCRA9TVsSAnZWagAAUUIP/3mBciQCxsowDOcaeLpk\nz48FAkFIZ1JMLyP/vMSVsn8pbWZz5gkEmICpEZl3u4Kv5uKReeZ+r3iNVQVs\n0Qjjg4+sb01gV0sRw4t2jN4+tKaMuVnOJyb292TgX6zIRMTAOAQyaIvrH/+H\nir5QEnag3G1xIDkZ5BZFtkTNd6LgIeMp3fBsTNNe//wSmUbYbztOsuogWnsS\nM5YUK90Tyq/cj4TpyU/6BDgpZbK2AJWjBNp41Kzh533u6NjoOVknvZxt/IrK\nHS4ZMD2HHzS9K6TK8iR6TPUqvVwxqJozfbGglCHcGnnsewD3fEWCKMxUqgcT\nhYUOQ+8P/SH6fRriU+O7+mfgWMsoNSfalZILwxty8f9d1WFOLOLTcVR6zJcE\n4wSGiNJ14lvUzbKh+E0O30KemKgBEQVfSpTIrwiVL5r7koEZA1ACxLk7zt75\niQnlGVxKzCva8NkoqcIz42gBDAFSvGAugFa95b1HOye5uJ7OoSeU7LghcseB\nnGwftP+/l/ZRhlvKKdd+g5vUT0MJ/uwdvBOUZIgyIBeflopMA8vJamRCKIdL\nk2Td3hI8xptsxh30XB+fqhHaWgeQzSpZ3L5hu20t0PFqPOqS75qcqZfK8yh2\n1hvetkzE24ZZDZn1f2J5UFw8Moz0WTBF/9IxIe0zILUrl/bgXAzBHWBVN9il\nkbOI\r\n=jAYe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxYdAaqBFC/QrqEcO3uUq5kl84Yvbo6rpRF5yG1mIS1AIgZoBuW/wqva63Bnf3Mr7snugGSqLu4B0pK8aNca0qo0s="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.4-stable_1551344482372_0.2826761472148973"},"_hasShrinkwrap":false},"2.0.5":{"name":"understore","version":"2.0.5","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.0.5","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-t/uZ9i2UoLLOAAGcwcpZxvP58iB8B5rfGMZP48++uRB7a1HEES6hOgAbZ8DhKHx6rQmJvrblGmNeMkJ3A9ub/Q==","shasum":"d9f91475438fc54a557b8744eea1040bd1b8eae3","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.5.tgz","fileCount":5,"unpackedSize":50898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJceM8+CRA9TVsSAnZWagAA/wEP/1SYdm3XOVvsWs7a7CLs\nfGCCMjh5tCbkoM5Fsy78Ctgz+19tUkVHoVIoc9hsmb8Gh5vXTF5M5JeLsq9n\neYjE8/FvZNUndiMwLnzfibO/6aM4pa8dh5EuKj/fcQbhMvE0+1OsiXrzCB2n\nO+MOSnGlDG68MrnM7npP9BVRgRCWxbmo/RImN7Q0T+XEjPyFfjRSlPFXpCfo\nAD42Y/92PG0UYsgpV1vXJ2mCni3Xwq9/2ZpwbnHggRdWKt608btExsf5ZU6z\nJrfEk0b5ec6qTwUzYziWW09vAq/dLr4l5EtQEd0+Q3TbUjfVeUQ5yAk91Eel\nPjh5DLVU/y2+XkDzLpgAPp8I9d0moDUXlgGAMYk3rtffXIKVbAysITB1Av52\nfXSPgDqH/VKjYwjcvKCEWSEzRjx80zPVEhxBxyF8SYOgbtErxIicQ19gLVbK\n+xWGeUCtyVAv3PyNU1cRBD6q/bAnre06mxqfzl7WWH9B3KoHgj6ZncfAzXuc\ndP57ZVHMgmwxWaNv6+LWs0/O/YyadmJ+/jcGeQPDW81PTm6L/OPpwf0tynE9\nnpdVR3Dz59VWm+z1ygooMBAvgVjxeHWY4bLpe23+OMMBDuhquYdh2JM4TtO+\nEBcGWmRCrJHTLpEdoENPncwk4Obz9hsXvtTDEEvipmCgv2JeWOkoP/qtVhMM\nwdDd\r\n=zgfu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCXCd4uMBSIOIwzk/TzS4yJPv9GyUj9h/xHn1tA19XNQIhAPheibgDG0NNjrONqdqXa9rLxwddtdFxn9/J2z5EMOkz"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.5_1551421244565_0.5063190950149226"},"_hasShrinkwrap":false},"2.0.6":{"name":"understore","version":"2.0.6","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.0.6","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-NE0b6EIMsf0+0sejtvOXpFdQwM4Yq5CuMkQgA0Ra3XtkmFTMuonTHLKGLmv504dmM2zCHXHMctJZeiFtTnCI6w==","shasum":"8c42b8802bd0d93b99295378897faf12cfeff5c3","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.6.tgz","fileCount":5,"unpackedSize":50836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJceM/ZCRA9TVsSAnZWagAAAsgP/jg8kU8iBUwgqzWWAswD\nvbIxa3uXOERX6WiD08Z11kPqCU82dw9MaQVOWMyohYdE2u66X4rnxKWAUhvK\nyhU88qKYDpcHMZXqICzt+9pFaOIMkBifOWrhvKKSCvnNwtol4OmD8Fz6E5e2\nMICBwjH60LYwjEi5QVvwCeOB+JhHgEp2iZ05V1omogFsxLBS8MrEDTSbcQDf\n/xbAWFxCwWX7wTxCbdgxSYWVUrDEA8lTxeCW7iX9ueT2t59dQpNlIiSPjDCb\nsMJt/cuf/px1q9GMaAOEH9uKfh2C3i4qCoSlGnAv6SDlixZd9Bbv2LW3v6rz\nOLC1uOvL2sjr6WhxhMYJtrSaylE0GXmuiHCRctDDo6y1VQD4LhxJzKVTLT5k\n+zjZznkBNIR0xeA3Quyx8fCXvbzdNtxaLLbfvsVdp9eayXgUfC4c0xQqIwPz\nk/SrgZ5YbBc/Y+cSm1FuA90mLyluhbrI4ZWqCtrvMCM7Gu9y8qze1sjtpYe/\nRHDwUzJiakm/ERElTJMImhCY3HZF7rNv6lJ444UP6LQAUlNdX7Y5Cx1KviFq\nqBjpwGSNtNbAtaI0qSj/oRgqev0mUOIAON/sknqWbHF/b3Op0QzL0Dx21vYh\nm8Jfje/OX7tGwDgUP4z8DeX7J7WekwhZ0nSz/jXXdFOwuVYPnEChV7+oJ2v7\ny5bO\r\n=oObG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHzRDfD+oPKtP5F9BGGWmuYdxGaMgilavU1DU8zAuIdrAiA5TFE7AQKqJyixkjA1puL6f8Bmoj0OmBXI9UL7+sxOtg=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.6_1551421400975_0.6427919875588828"},"_hasShrinkwrap":false},"2.0.7":{"name":"understore","version":"2.0.7","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.0.7","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-D33Z/hQe6VNyat0Hu61IkTd6a9ftI8xKGDKcvEpQUr9h3vIbQoSd4K9aLDzh7RrPeKr2pEfxrCtFqkQcOzbULA==","shasum":"5a4ae07c1cc6de107367e47a99cb6429b6017422","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.7.tgz","fileCount":5,"unpackedSize":50838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcenKKCRA9TVsSAnZWagAAj3oQAJWhNiLUNLKSYAYR7k1i\n92JWpngP8rxmcMQzPR2nFH7TgtuxijQrbDoyg0M5hPlc1Fc1pRAueNh1tB9+\nfc6VzdU82E4aue0ZNj04EW5cBkYbaNLIxZR8P3WavELUipMGSAg43b5TR5Cy\njHyvC2NrgKRmWbSXn7Ck/gP0nJu2CEriphB5k60BxzngZxFCF91aA3ur/lWT\nzVtnU32AxBDqSsiTVO4muDSe0LTeYlDFDFinU3rZ2Pz0raOPKGElQwZBmqMR\nDZlmrXRC5PFM5WGssnKk9hO0JRF1NPrqpfvq+GQXqFmhw/TeSPxUqdz5qADL\nEV70f4xkcM/u66GhJiknIskl0P8V4XFOLxS2ugmqWVxW7OF+pVR48B+rXjD6\nGO2quXJ7h2xLp2hATXXtJP13Fy8G1kKXuoLYmqIC5LH2m7Qe30zvN6Hmi2cH\n3cdahLQ547l3i64vhOZe6Xa4NNXUjWhyCXw2ADxa3dweD2i0nzFYpDyYAmHG\n1YTT09EnO3CvirwngHcHIMRWauFdPWz/WB5r/0sR9osC8KJPxmVLcno6a9KJ\nSp1heaT6PUrlWqyAPAyR8q2eFkPHVizCqWd+MQ6492P82Ngy2WWOX2j+ZFYv\n/POI9eys5gTfrJLdHtkQxksQa59urtEuPpc9eQq3oPSpDB91XTS2SfMXnfjY\n5cnZ\r\n=3C0u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGsKAcX+L7wKuWksrJEu2iwAcxCV3SOkn3guAE+XYto7AiEA3idy5zvZKm/3dSK9ooSk5peOX4zx4w/2DYj4SojWt14="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.7_1551528585296_0.14757670525809208"},"_hasShrinkwrap":false},"2.0.7-stable":{"name":"understore","version":"2.0.7-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.0.7-stable","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-P9NzMwtTVmMVyUfA/+RV3a0j+p4PAHtpN3B5hM1IcfsRK4bhEaSLBcKLkJbYkQal+g1TJFhJypjEMBxDdyCv9Q==","shasum":"8dfd75a9a0f0173251a9b6d56e445d7d587cbfbb","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.7-stable.tgz","fileCount":5,"unpackedSize":50845,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcenKXCRA9TVsSAnZWagAA940P/j5Zy0pGCXOG37hHuHzl\nbYHELnshVm0aOD18S7dR4NuFN/69w/ul0hS3ju3KlR3qFO4/vxbJi84G6Qf/\nunUMblkEBwspgZ5p3jET5UFJkKpTiO0Wk0+fhedKtTy7uiOo1lRKgO7Cdm/h\nT34IweHgxSpzuWeQlZ4kxIdMkpnLhgHoVPQctUfnZLG2PFw6t4XNCzrkIoAn\nak9yeawnO4ClnIMW3yCiGuUkAw3LJoIsMPDSJ69cBSXHZW7DeCrBXMqH7xqB\n+k0joTFgkbNgZUIEz5NtsDgl8TUYeG6rPj2gjJdNfXDMaERYmpB1xDNuVNkn\ndsORV13wPtceWqtYQm8EJyfbP2MDysL72OGKn6orMO3YFRSBeqmh3ldGdNFJ\npo/ax3dQ13bv0uE3Qcwk9hH5okVA2BB5nW8lhq40f/2g3a+SDtTdllz4QoK+\nEqc5qg2JN3bX8/YL4KpqBrgtf5J+FtmKx9itqX8AhVQ57AW+npaa4488HZel\nhnn/iXm7midzrARH86h0agoxNN1iGBOhe1XkwQJMCz2IarIvztXIZhV35x5P\niDIeOzJOcAEgMjUBL+/PYBQZQ6WdcoxA+eHtdmUd/18RnKXXs7IcmsldF75S\nXHVTjLbqPMePQx92FCBlqoCntbq7SPcJxMXVJpoMNikmIxFJ9II+clLCsoJX\nYScN\r\n=9SdD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDpSDgS7uabnpR5myejCD4UnszULWLLYWT0C21y0cBVAAiA7yfWsVCf1pJCfsOleDp8OFKEj4Sj7CjDqrNNzkDqqQQ=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.7-stable_1551528598650_0.8704199234884067"},"_hasShrinkwrap":false},"2.0.8":{"name":"understore","version":"2.0.8","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.0.8","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-1duwbz9tqKMkMizmfJ8/e7Eu2gD+/zb7jVu8FbZqGadC00CJHpWLG7l2WbXICeeuzjLqjwJuwdTQyhE5k2Q44g==","shasum":"b57727e7c5e7f36f6dfc384b4d181adfccf11897","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.8.tgz","fileCount":5,"unpackedSize":50840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJceq3bCRA9TVsSAnZWagAAKzMP+gJdmNsm3XEK/J6FfzWP\nC9jZJ4jrKICnWB8iuger+k0ZjwNPSU7k1/Rng9ol/X+aVelui50r+zvwdXmD\nrV3wy+izaaoLRgYSXGm2O60m63HPZykmYqlCZ7ca0Vpr3ZIVRd9MdIAs1iYi\n7A96X8udxtdVFUS3cSBYeIxjKXYWDi3OUHYvBMUpM/G+/9VdOvGboW1pvXod\ngonls0GKp3wNCEHXJRQMP+24JWnJ4wUtpsCyyogrAITJgjOJNnI5urw7EaWr\nofBoisOX/iNGupDrwtGlv8W5un4/65fJLdrAAOFDXsjCxNJhGEM7kem/a9b/\nxoeTaCOPPdkTW4gNtxLt4L+suPD5VCMlvHGzkX/rJnJF0i3U2lCbli0ISW9N\njDdIUSvvFCqEWx2adkN3cde+zQhTTCiGRhzj/wtfubSgErfGHjtxY5yPcbIx\nbZT/Myv5l380eHxnpOYBjL+Gmdgi47nWXf8EHxpZzvBmlfL2VphxvcZnKe2q\nZR1Y0tGLck2n6lFENyENisJ/ZUys9rRMTVrT7cWb8ufi/vERTF2jaZ1a+OBK\ndCDNFwYdfyQvks8RdCr1qGFKQcxdJgXTe4ZA4RMsNufIn+95j6ZR+HgahZQ2\nxy07VFRHdjTvUGE6plANi6tQ+gKfd9ZoF6wmUXV5p8Jca0EDpNyEa8RyKKCW\nSvYp\r\n=m9bn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDpDkIZDeC5YhTsOPNkSQDq46XBXsqc7pCXDcvYy+aEwIhAJ5fEG1oMXzHPHgrxYVQ98y+P3eNmeq3ir1PUJVOz+eB"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.8_1551543771234_0.5187788364430681"},"_hasShrinkwrap":false},"2.0.8-stable":{"name":"understore","version":"2.0.8-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.0.8-stable","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-xbEm6jPvD4O4K8IDLWR6R02PZUQtxNmqmTIbUri8sk/bfKTdc1N8kOD6WXS9jPfgiu2Tq8MqY6SQIQur+8FBCA==","shasum":"702be3ad111a1e69da0b33837df4261fb153eb71","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.8-stable.tgz","fileCount":5,"unpackedSize":50847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJceq3pCRA9TVsSAnZWagAAmWsP+QFU3vZXLr9Lvk+qxfM2\nzPoFtkg6swC57MVCIhZXRXLvWHeY7lPrSIkXA1hYLrpNhxsktmUMCrKMA9bW\niBEVFqXf2ehYQ5eANW1H6DsMr7+dvm2DPCzdpU5xtJGE5RscPKsgXHGfMGzR\nhkLewOqSYkA4NLtfit0vsAkLXJDplMSueGEob2nYAxjv+NUFiXrXvefUUnt2\ng2gGdXqbwSwNaG4ROfAx3e5QNRRckoiWtc350/Ousrhc+75clAfMaKg2paDI\nM0YGlgJHpBejfs6kJfBDpzvu7bw1VRcq9Q53uA7ZOkUO3wTqXDuTNKhFGPK+\n0FhztFaZ17dpVYp3o5GszkGgUq0nag3RLGaxwX7Nt30T4EfYTO4Gc64YJqnd\nRpSf39y3lbQpBo8Oeyq0kOU5/47hojuv0Sq5xVsbfdCYbLZxeQ63PVbtrfql\nH1vOHW9qJWGD0weq0RGaG0kyTLWRYsWo95hKk5hr/dTMcjpGid/9u9WTUNCZ\nHWnf8XhKI7TuRnSCQAopQxlDUgmYpA7XiLlQaEgMJ3mUKRqlO11/sqWL5mMk\nCYsw6rKQuMiOXL3Lhy3lGz5iIjPNZ1+9cNyNiMqFs0WNQKywSm90E2G4/0dI\nIgvOInYZCArRv1W//IfkskO5MP15LPbWyz+85sbBHkCbsHm0/co3JmgeArF0\n1B3J\r\n=Pgdt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDlhyGZ1fE3ACFXTac11ATyw6drzbwd5e0PoxtpoGc4nAiEAoevg6IrhyV6zAs6QFj/Xi21MK674tryCCfBF6/qsemk="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.8-stable_1551543784810_0.4853669285600051"},"_hasShrinkwrap":false},"2.0.9":{"name":"understore","version":"2.0.9","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.0.9","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-68Wu2neFxqvEFso1skaaCx78e0RrukBb3Yks4dtxX+X1A/vmjXsyiqvSWpFVJ7GqIDsgwU8id0zGyDIIKGYEtg==","shasum":"10c57434ee89c53f62a4c561a442854731eb6872","tarball":"https://registry.npmjs.org/understore/-/understore-2.0.9.tgz","fileCount":5,"unpackedSize":50986,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcerWjCRA9TVsSAnZWagAAIKIP/j/czgXfCT3Wfk9/fbrc\ndUKUSgXAu7enevi5nowKxWSDSc//FJ2GG0vdZzd6SvBYrM0sgj0gAKab92y8\n6PSw5YbLbTEgb5ilr5R2AaVKHNRnQq4uV0Dp/kp+ntzPF6uYSBZjG8n6a5oo\nZ6Frv7dnspk1SpW7i33gxAFfLybfwUxcgwr/l0ZfzYDTaDuhzJs+y5OaafzS\nxqjxUDT5ZnA/Kw2wCK4nmKwKmJK+TVsDE37kH0shO977FiX/XLFDMpikWT08\n4QexoQokuF0cnSKBCsj9H4pwzJZtHmScBecA+Iddj3f7RVsx82ZL6Qen3SCD\nwkXFUvsVepqbgN5/tj6Fh1Z4UKVKEJkYbhWfcpXMAwCbw7+q05XVgTRbqbuk\nrRfZOaFl2/obhLLylpqWb8J9ecQbLiIY7TYmLX2tK/Y6h4zGdwQLx17X5qsB\n4Hj6dvR9YLA0KAZROICS7lK8ql8HOzlaPYo+Xow5VKwFi2nFI1xHjAz9Uw7P\n6ZN19UHF5dla8XC/nZjGgYMqMhMJoim/dINuLJZ7pVc5xnUvbjsS8Mr0iKYX\n65CVyO/zt69Emyf7tVuQWH22fNPz0QXdJfno1NBCUiKTedh+APnYVyf9BrfH\nfSwaT7lyfkw4FTxsNavYqCVzO1HHaagwMhYO/8T8C+M2n4jQjH5Te/AvZ98G\nO1N7\r\n=tJY7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBKL0sBGxxy0kK6v8i/mxRfSDTZPqh0J5x1JihakH4mAIhALt9+oMTQQDxvyevvmUofyAMGs0bPoEo1wgAaYo3K0Pm"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.0.9_1551545762774_0.3639275280956469"},"_hasShrinkwrap":false},"2.1.0":{"name":"understore","version":"2.1.0","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.1.0","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-wuCBmLldSDbSJVVHdhTWJp6nS3BlPX8oEP4/her9FSXFIcnDna4FLmUmQyxTUeKLxB6MlsHh0LUyvWXaJEJJTw==","shasum":"b431ec500acf28e15874f684ea0409a376170183","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.0.tgz","fileCount":5,"unpackedSize":50949,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcerXlCRA9TVsSAnZWagAAvMsP/2P08/Rc12eSsiwSV+Do\nDVXhQFIU0BFI7sPmkd13g/KBMLyahtUcgPnPOt3FJRIIoux+jCqwRr/BGeQT\nPdB3+6vmj9revf2GAJrItLaJ+mLJH17zBBx6HWyruAoJbqfH2Ly7d741wKYQ\nVUiY1kzlRnqwjpJZThDHDsroPds5nPItKKax1a6DsgN8bXg3pwohSfRdx1LB\nWaCeGG1UXez2B469O7h+5M4gTGwqMisnjU4PdWkLC++JrWqeJGZt3AM+n0Ya\nTHGA6BuLhTKTluq4QLlInoW7AbCauJcIMpcfgZRzwBHxw+0OvEsoDksWA4SI\nvuBZT61YH6BO270YgMg9YUV+v4CtOykECR5D7B9DUx2HgHeDPUrBEH9NCiBK\n4SyCMgviIyYBfYWLZ4QPCnN+z3f/1f8xlQkQ4JM4Qt6WN01aFNN0EQ1tblsI\n+y8wOceV8UQ4wKSdzz6qnVCVf5e/dsy2x/ZYKS9IRI10Bf+neessH80cmPT+\np3KrYAvjpLpqAyFfdjMWIflIP9OPa/1m8QVtk7Oe/ipx+bl2ROt6h4asefXX\nuDDVy5i1LTvBWlGUKBWUN4wJ+x8iwRHe04TbBA8loWlmA2hgPn/J3ycyLdKX\nRa3gCbkdyb7RrgS5MV8kFJnoDezw8k4NlqY6YUWUJISZA8PFulQOjiOv/fWo\n+zRQ\r\n=gWJl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQAS37S2w4JSx4ZATi0wavsa2Z7QBe21NnZ9h01DEwkwIhAJYTvIyG2xAnXzKc/2TEM+VP+4DL/lWXjBjWbR3HfnMf"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.0_1551545828832_0.1334836651083866"},"_hasShrinkwrap":false},"2.1.0-stable":{"name":"understore","version":"2.1.0-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.1.0-stable","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-154xc7nEoeKNnngbqHppG5Eim3pLE8VIdymD8iw09SFZGB8pcaMRt1nn4LyjYzAvzIvK+IzrkfTiztPJ4JpJ4A==","shasum":"b52cbb46a2a64c771496381b57069412ddb4d1f7","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.0-stable.tgz","fileCount":5,"unpackedSize":50956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcerXzCRA9TVsSAnZWagAAmjYP/R6b7zlbBXkO8Qft2dXx\nGKRAuM77kuAXxOUPv9O2eiYf+zPy1dYDvVkHf09m098ZHF7yMN00LxXcikv4\nhvFEInFdoeaQetLa6FK4Pdh2yB3oF/ebY03fGxKpoPlb9luwS/Mkki5oxd2X\nGRFrhuOCX5IrcsMl31Y+tV7iy6UOoVDdpEhhuuIbDuIzXMq7E5sfjtu5jQM+\ng7geqyovpERJ7tzBP3J2Vl1MxdZlTWSPrUfz5RsaPcm1WUSfvTvF1p7cALG9\nkUXXkQ3lrYPzSMXpOIuDC3HsBe/vQN6/c/WgIvE7LgKxccmRgOVo2xXFYEF6\nfLY9HhgEmmMQsd9UcV0GIb8Fyu+QgzpE1nxKudYuhn8dc7QEsC8B+9IXcyfH\nUzLwECGnZyLtjMlGaHWrKC5A5bwwxg6Yi0DlI7ap3hmEZ0d0AFXxBejg4PYq\nLEnWWNKpwCEQkBZUeucVji33RPATiXGqpeFvbRm6oPvuBgabdXu1z6O+dM03\nHGCr2MoDVJLSp6nKSv+I/SthiNQ3VleoNVN/GsY+Nc0yUHisQgBmjVnJy0JO\n1+Saw7YQuOBxFmBr/K/E8k83qjceQiv0b9Teclj18AZiIkS0gR6GAFugumBx\nnwSOTFOD/hblnxP2k6UCL1yJf5OKcvseX4NyTucZJSgrMuQdVd53OXBatKGJ\ncqr4\r\n=//Ot\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDSVSo7jQObELB3D9D4dJXv5LuqwwMX9x+QCreIYz8DCAiEA2KtTdXyccUZKts3fos1Z0Ffk9jRrbISfjupPv5cAYZY="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.0-stable_1551545843154_0.4562237012312791"},"_hasShrinkwrap":false},"2.1.0-rc":{"name":"understore","version":"2.1.0-rc","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.1.0-rc","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-OJsVuwGt7dkuumMqCWictJgWFz8F1QBx6w9zW9jRYzUi/drsvW/nXiNvq5Fb+KuBSPMxGO2NVencoIoyQ8rnCw==","shasum":"ac4f6205cd0c41f17cd766ed1b953636ec81226d","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.0-rc.tgz","fileCount":5,"unpackedSize":50945,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcerluCRA9TVsSAnZWagAA4FEQAJVggeF6N6kOD5qKRztg\nNet0Sp6bntjHoYLINvfybWbT1W7QU5qQyQ/qTQgKuoQXAuf1ObF+VJI1Am35\nKAKM97AXrjWjPNWoteBkpLEBTWYyRjtqdV5wnHZbAMuU3JC2r12FsHX3L0ST\nZ3e3sNo54+WFgzee5cPmYiM0RmoQIOuxoOl7MJCW8fP8uQhpbpEwOYZ78JI8\n8lAHoT68PRmHuTbKdximQzfOk/9E2j6xl4frNdYtYSPuFLvg1DiB/nn6JYeF\ntHHs2iOHNWAazMf6wVHgTxhm737n7gkbkUb5Tu3GcKnw8/dUJ4SSQIF6DKc9\n6zAaZ2DpJgxH2w2u0Wy0xxqsNU6UVqDqK8ShtmSRTeSkxEakt8Osxo1uFE1i\nGcFF6nNCge9CY5ea0P1qbZ6k9f63irlXzVEM5YnqG7W5FkwkGLD3hezX48gU\nRuxK18tVvZfxlkSneuAjvjwbZgvmAmhbgytn8K4DXcPf8xn3/xQ3wFieFqOg\n50ksompUB1Y4fYTwFaTCb89Gl2vSP5exIceZdEaHoVfjScgzAWnWpeVkn+5w\nFG1ylZscDmzdNbprdrj+kIfGGyRzB1to58CnIWFsNj/1mLnkGlIFOemn/Jkx\nrtp+H1cSjAuBQmornROOjyJQJTQZF/uSACYu4nDhLlB8kNWHzTAU1UN94eBE\nU3Jy\r\n=1Td7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSq9jilALWgu6jWma7qSLwGOzrP7nE7z9GldwCVOLs2QIhANUoALCMXB/qogbC/1mqu3QsX9QF6F142P/fQiAuXdHM"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.0-rc_1551546733843_0.938379855062559"},"_hasShrinkwrap":false},"2.1.0-rc1":{"name":"understore","version":"2.1.0-rc1","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.1.0-rc1","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-7P6NcTHMx3pNe1TKUGheWc1eHMxMZk2z9qiodR+hCsIzzL7e00C8B5hv0ryKrPmO3QPGIZhk0NbYkutG2jy4cw==","shasum":"edcbe3386d44b8488c67b95dfc90db2dc130d1ba","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.0-rc1.tgz","fileCount":5,"unpackedSize":50946,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcerl+CRA9TVsSAnZWagAAbxsP/2RRnREcybBuVEq/3oh/\nsS86rgtoP038Dd4JejGqWewpwDg2M+qYfnp+cp4Biy0F5/mxFvW3Jl3HJ0YB\nMAoCidgIqeUhYvYMVa7ZOvcNqZ5+CwzNes77BJ0oqZra/9COSQHPwxB1ZJuP\nFmLASi1+KY/YWbwSgsInhrAXEBuFJdB2hCNrfoPw4NmSo1OpVX1JsM7VGp2y\nUa8g3wGXYga3o72BK+BgTDhz0cAHRIHPARY4ccYlL9ac4eZgkYfjSZLFqrYg\nDvnhajScFARRyUabMJOrGpXfkw6jSkqE0+xf9zgJd3+v/nyIHXC94RSaFl+g\nB6YWRC50gqsMSH4LOR2AidUU/x+lghkgS8XJx5CcDLmO3T0JDQDXniva/wL3\n1/nOjqR8hTs/dYMc7g9qAsB20P1oQ3b9I+oXvlm0T6+G1UKk4AFAkHvo94Ga\n7Vs8jzFdh0kCnk7w4ujN5Wv3OhnRek3m8GP8pBUkFcmIRgORCR6AFwJ+mcMP\nDeQH3Z/ySC39qvCW6uXfazYgKSK9GTfW1ZQgfD/rpBflKus/6nseCNeDgdFT\nTxk0CMwsInnuxxHLQAaloHKoNLf7U5oBM4Gbuqv6MHUiNfvXsD7aPtVEY37K\nnt5WjNAxUw9zB8SC71KBN0Kz2QbYUyvPXkd65aA+H25wc9ySLvGMhgwWRPLB\nc8/U\r\n=qBXC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxYHwGq0oNOS1SzflZ9i+EPkj2qcwqFV2utd6LBRRh9wIhAKFLZK5ZH9ciPP7eXV80hLM+B3IkGCyvNQz+4RqNFJ5Y"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.0-rc1_1551546750115_0.16877059050637322"},"_hasShrinkwrap":false},"2.1.0-rc2":{"name":"understore","version":"2.1.0-rc2","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.1.0-rc2","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-Fm/dYXN+NxHrLLxmFpWEx2lkY/7rc2ZX5hnHw0v90e21wTs7a8PUBdJfCxVci2b38Lmnum1wN5Yt5gQE6iLL4g==","shasum":"11fd336976b84ae4285106be8120ccf7aad9f3f6","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.0-rc2.tgz","fileCount":5,"unpackedSize":51031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfRCcCRA9TVsSAnZWagAA6/8P/0MNJ1py/G5pm2YlQ+NE\n/DS5LR7Tg40K1eFF32xX5OzNsDqoAPz6PmNsjw0vxa1gQ202r7c7AewjpZiY\n3DfDwnIpNY8i2PTAC/WCtd1NisOfFoN5BfQUlbf52D7Jyrdm9miL2ywMBX/c\nc/DLI55Ck4sB1+wT2roYMKQieGN7Cygx/qJgVOsQYjNEbGCZSSCfChnYcsTo\nf5I9qWbqXXGkVmiwA3FuVJbgT+i/zcahv0Q1NXcJTg143G8scEBGzi/tZBW4\nVirBToqdbmteO5dM8gwdOFyFbGvJ3Kwewh+kcaubJTVTJ+n8NTnw4Cv9t5jI\nSNgXWapwQoAyXrNIG1cdLKB0McXySaF9WV4CVg9CnLlyL0RWTPrCTJKKc2x1\nK2t1toKuUJxaTZ9SaAfZ7nx/a88Ep882gJ8oSMMDq/nF3l9BO9Zr/lNmeYTA\nwIXBcc2uKE8zrfHDpv49dSqRt170YVkAoUFlwSMiuMKAAtnZC92Z2Pf9D4rS\n2HFzsvwdsTQ8VuykJExYwZYqvX7+rZ5+oA0kZD1dM5o8bk1RQPNZ7NpOR39o\nmhk3b2KO41DhbcYmBdy8h8oJdpoYxc692Gy9QcTNpzkgmDRP3+WK8TJeWaH9\noWypv/ZRtcxCFYu/RiDfLa3qCS9klWm9DiThNHL0vTa1iHgY1STBGjmYjjER\ndn27\r\n=vd8Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID721P7TyIUH0qdOgQKOoSoM/RbrxhM3vvtERh2XxZUbAiEAoTyf+2dpLLWGZ3pOWvERiFjY/QhQVDOLMYs0l9o0VeA="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.0-rc2_1551700124190_0.6650151241894784"},"_hasShrinkwrap":false},"2.1.0-rc3":{"name":"understore","version":"2.1.0-rc3","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.1.0-rc3","_nodeVersion":"9.2.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-wfrBC1vjSfZREsrxDVV1/EvxNyu+wXOrLllFDgibe63UdXs6ftHyg241t4/4WbieP0jJabCyvkuNK4piof8iWQ==","shasum":"31c8bd3a54600c4f907d12c622355bbd3ffcb43c","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.0-rc3.tgz","fileCount":5,"unpackedSize":51031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfRC5CRA9TVsSAnZWagAA6kIP/RLVAV26GaoxYqrbniaZ\nxUt837UZDNcjMBOY/q7n5ue+3P8QhrxtDCqfjCzHiMMSAwn7bckydeA/jrHh\nXUu3MWheAZr3ELXzchySBpGyzEL+OBWhMHwtcJ9hml7YkRQuaQeikpn9hhE9\nVR7WHny0bSnC0ZwnKBWShvi3d+jKMrlUHOOGH/euUCk95Opv2YcaSoK6KXn7\nO890RG01puzl7sEcJVrAXFzy8hwS+myH0sOQRGSA/Fzp7lDltQdqKsLjJ6cO\nba2zuvD1zEVkDsgSgKs6/b5vDaap3eiiG0/tqBvtUFSpbVqdlryZCVfFsa/s\nbV29/TEDDJhSZc2KJ3BHBPlx7+Lnpu3NvQoxfcnwSO+v+5E3BTmCfGoLXSu9\nZ7+grapz7BzXRvDaRAGJ+V/l87pTEuaiKYaY1H7ntCugn4bwQ8IEEATpynM3\nB8p1ii6ttF4Sc2pDloRGaVRG4sqeSuq90l3rNgJfsucPsn2uEiFkMOr6H7Sx\ncW2J7fAwsO1sTUpB9L3j8bS8OI6tCDQMRnyY+kgFaZYrEqmarVzJ2pIwog1W\njkiz0hpsLAIzGbMKjCjZdYUxBClGpyd70z1Gnt4fqN/yw+Y83pIw15BLpx8W\nHM/L7aaVa6kOr1jXgn8QE/6Z00Cu/x/b2CK5TaMFfQFZomap59oxVMZf5eZg\nmVSe\r\n=Pr9B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCngSGL56qi0r1Ues4vT0cf738BOvpUMWl4zOIQPk0d7AIhAMR2pFJ4XndXPTtLEMEPX/CjgwZKD1Py0AuWEri58Ytp"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.0-rc3_1551700152748_0.34540434658276165"},"_hasShrinkwrap":false},"2.1.1":{"name":"understore","version":"2.1.1","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.1.1","_nodeVersion":"9.2.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-7Dg/i/039ZHWAvLLXgEBr3g7c5PRQuHa0i8EWRv2OilZjfpIz+wEGLywutSvUJAAaiDcnVtQjozZJgZvHFcH4Q==","shasum":"42845ac456eae94d99b43b620c2e5dfc2e06fc45","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.1.tgz","fileCount":5,"unpackedSize":51077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcf92+CRA9TVsSAnZWagAAGSUP/RxiDV7wG5qRGmkFmBuE\n04zcbRk+MSHxhV+/7CFdnFQTJsKoeRFXxV30D1q3FeJl2qluPlNvbMkqiofG\nXLxTMMsDAcb/j/7E4uW4hSNBNjW+xL2VJ/8qR2MaHJW1vW1fhck2RHAWnBng\nGLG4m6uRHBcresGq4MbYlAs36Egejvc6BNLO/OUUgpcu9w+3n4uKkBPaP8no\nhPilggYoHsw/6Sw9f/kPvcG650oJiUvVt6sXKbOALkgE8qrMv1m1dJNlotjj\nNRrYVaXuRhAU9i81EvkGawUyoehJQ9vrIDG15W4qRbnFLo7TUm0k5leSXbGt\nvppCt+JbsBjEkrs+7DGCyOZYewr9ew7JigzF03YxcZY9uzh6wqTJKaxFkcnF\nLFRF08DYLdgN95QxDR0pIvdZseezwDKZG7e69s7OvQIA8DpF5tpEnyITNMbu\nPDyPfRqaDw35HW9zumOkep0cAXckacJTSYtmIe30/FeIITLR0uZ+2Ehaxfsw\n7CIfCoSR68DYvrjt3wV9qxt6HADWMlqlnKnvnMFKvco9ZkvOe0psUk3V8OxY\nJuK2AJFSf5Ts6N7htfHmtVwgaqSifJqg/1yOaqoibE4Na+EWXmAlc2iGmp2q\nG7zGGHaPN+IIiGDs9sXWZ0mVl0eCqKbT68F6lP1XYSUTLY7Mtor8RJQfPwaR\nfBBA\r\n=X+od\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAC1GOjwhGqpnF9Kohgx6AKXejusncd6kPTgRXWYsQSaAiBcU9HVYYGTLeOrA6i3yG16Fa3Hy0NcCdUPBCJH6m/mNQ=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.1_1551883709323_0.6756574295457174"},"_hasShrinkwrap":false},"2.1.1-stable":{"name":"understore","version":"2.1.1-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.1.1-stable","_nodeVersion":"9.2.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-mD9Ig7QnVXTGdYdC+ZsEusTgeEiW7tqNqlWSg4fs76nRGSki22rT+fKZH65gSXNbF2Qe9WmcerMpjR5+toRm9g==","shasum":"b92b7a339c10658118cec9d9ba6cd14237837e1e","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.1-stable.tgz","fileCount":5,"unpackedSize":51084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcf93tCRA9TVsSAnZWagAA+pkP/1GYJ7jjRDEav3Oi7kED\n3A9SgAO0IxJjUPR+n3MsQeGZfNRtS7r81W4axW3r7Y/RdXjqlU/353ro/aYB\nwSRWs4Z9UzcpaKoEpYuiCg0EQ5UZ73L3njOMpAEulXPVx9GhawETZArIFl8C\nJ0wriNGAgJjVtYx+4h842KpjTaY6Qf3vfjH23yTDNEOOOJF75f2LZGYTI1vE\npIcrUhxp5fKlnpHL9kcPjyWVcc1xWUwCvzeg7r7jmKywkTxm7GYms1Ak9Y+t\nadTjiVJ1A8E7dyuWPdwixqwMJu/7l/QCM5lLS/KQFOCcELgjy4IvuAEnT+mf\nj3TCBbSLxK3K5eMpb0gSkSFt1VHxpzr/1jrn5YBNvRhWQUPt80W60NVMuNd5\nnC9tfYWAOAe8Tud8Wyt8wzoBe2DHWbO9UHMZXRMRFOMotqbEOM0rpxBrjW0a\nZmQ60p/N63EXYxo5sqTZOw/vc47IMuc5BoVbcgHUO/aScuiZUkV01QUIQr90\nFr9Eb696IEH1GJ7IDkq00CV4H8GBrvSV8e5gRkhaHQ/zolgImX8lIqMzNTHi\n7pxmEbvm3YDt/69wQ5H8gbUuMA6Sz8y0rfx2PRKWaIEwITFpT2TvrnW2FYuB\nNuqpTaozrJ109Hi5llzzoeszy5tSVcPKkHSajD7u7o2cCpVfR/2BIJJjSPFp\n4SjH\r\n=K+sl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDVxko43qSGNysiBsaZWeB2V4klg6tY6zHRDu4shl81dAiALKxtinGn18nW+z9rJKIBejR7mmYXiRVaY6YrLmPlYTw=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.1-stable_1551883756574_0.6288624449976252"},"_hasShrinkwrap":false},"2.1.2":{"name":"understore","version":"2.1.2","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.1.2","_nodeVersion":"9.2.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-YcsVU36kA5xGi7b9I81uV4scItso/xIXDHeIYCXXOWcevEwQim2k+XbvCrJNm82bMeoeslUZz/lDeMJRGCfbhg==","shasum":"fddd625797cb6f9390f867b0cbc89ebbd6c630c2","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.2.tgz","fileCount":5,"unpackedSize":51199,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJciwSzCRA9TVsSAnZWagAAAhIP/RiDh04t9mGyplA3hFvg\ny9gSrbxo3nA9hMWyGSqIU3S0Nkv1wmrwIJ40ERJrENayzLcPDMzKWuTs1pD9\nFrTk5AqndtSnHIYG4vfnX7zfO/rIFVQ/qCBRqGWGcLlRPUuCnrkQ4Hv/WnXS\n17JYv4KoA0i23epCx45f7D1GdH1E3IwcfluXnpO9tl2En4t4KPgYtEfUGF7t\nldVpJbJtNyiD57kZmomWpYbf9ao8uaDbpDUA4LuScY9zO8WYXAwC5pnWmNbC\nC8hZ7Gnu947YgWdiBC6mCNlgI8EiJ4RR8DxJovEwkrl5N+1BvKs9oKnHsyGN\nifsSH5VQYVM8VCdze1v0sOsVC8dqbXLEDKYdogSz41QfRGi5wwNZHE3aTDzn\nRGRMXrSqiQhrrQB/pZA7gTYN/0CFCOuH8xZdyKCWV+VR3R1LbVyVU2bCxS0F\nmooFkggY0mxIt0v6mVOnHmGc5hV6TojaCQ0sdWPFCxRDd2ef9k1TRnG5no0U\nacDHQVp70nR4K8d9dFi0H2D3BDCckKdbr6806GsNIcVG/Fqwb7JyPC2lASE1\nTcjMYzNIR6VZmusiUMGCUUyoxsSOudwWVLh0UhBrQSAiJ8tKe3JTi/yglVXQ\nAXvcsnrMbVhTDpu64MKLisABRRoIU1iDiZjtoMsJt7Yq/zF0DxJ80Gk8DlV2\n3yv3\r\n=r5l0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGrlph+aanwainR1L4EudV94RNvHXEvXLYsLnAEK7F0TAiArZ0Cqr8hEwz+nuN8b7ALxGn/02JBtb37gfvEVOhsniQ=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.2_1552614578623_0.6493938896751965"},"_hasShrinkwrap":false},"2.1.2-stable":{"name":"understore","version":"2.1.2-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.1.2-stable","_nodeVersion":"9.2.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-lFkoSjkxoCfSfvKX7FPttbIcUMEzE+tw+T3mNkUaP4SYoQWMcdOOl9CGcMZo5LtjJRuWXAAVT3Yegu+SbspRnQ==","shasum":"8e35691b788e0b089f4d0e9ef66b6673653f928b","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.2-stable.tgz","fileCount":5,"unpackedSize":51206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJciwS/CRA9TVsSAnZWagAApSkP/365G3C+GOgAqqq2dTWO\nzEFVYAk2igSlagniOkKh0D6rjf1DN8J/PBV6s754jdspdHYamwikQHyifAI8\n/JO3YIu4oiEMYXZek4pGc+1DBhu8jy/hV0UjGxxX1WlnpnA4mXE9WPDplHmx\nzuIFD4GP087SOEc87NDPzsty2UtL5DgLiqil1buZnY0LHeDzAgY38/H0Qhjp\n3K7lHeP2kJ4n9aU4GTeey4QgyLa4XukvQpzR8L+CMag0XRCraGK1M+6oUU/M\nsDsp4an9kpF35JRX66ayn/xXbyuwMUGHwnGdnXiORqMPZk+N3KaaWFds1+43\nNwjZ1Jx1pxcYmutpUaM2Pu4NQhbgcEM+1V6YTB8RMUuGlTio0aObPot+PvLK\nYpyFBJz1jj7MpF7O3i3xEX6hqkMUZhTe2YcYm9A8/NRC2HndXlyRwdJbXOG5\n8aXQc9XhbDgcTOGLt+uTfkMw6zMzqnvHG5HnqsfFAIeyfVx3Nkr3QRRj9nWi\n5qkVpcdwql11n0P7tLr25llvc8zuR7VM08OfR24DdRmxnzlp+Mxypz1gdoe8\nXK9sold8GdrC4l9TRJ42XSsFO9j8UIHDkrFZfB/xAqbIo85hxcbzV63wqFvG\nqLw9ms69g2i+eCaxcG3pD8zAVYLhdxhOIHD5Ly2XcAD+i5vlkmVovQXZuA0E\nYZ/q\r\n=w6Vp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICQ4fudZTd3OLRuTeD0cJa+CbCYXWx/dGm4QFaUy0WgeAiEA3BD7p1kZyCmqcBabkHdl2XK47Ex8WCAznKq1FR3b5YE="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.2-stable_1552614590744_0.8614066393199582"},"_hasShrinkwrap":false},"2.1.3":{"name":"understore","version":"2.1.3","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.1.3","_nodeVersion":"9.2.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-LBW6kFPmeQhdUBCdRmKYLjCMM+ipH8Eg0vR0KXHbwDu12UcUq1LxqrRjpau7yHOBkAL6aEgoAbMBwbrkmYVGAw==","shasum":"660a0ecd0ecbc4c94c65c674dabeafbd41d1f846","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.3.tgz","fileCount":6,"unpackedSize":108344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpcl5CRA9TVsSAnZWagAAlg0P/0ONcmZ01aszlfl9Vj/G\neBTtLR0PhoMgPUEosyrB15d3re9GyhzKIheaY8LBUH4mYEdNH/Cpocz0bl51\na9laivW/vG+On0BE8LdN5yLOUlwnXQa8d0VArd6P8v69oFIYsRQ1DX4fGZf7\nP9E5sCE397tmo38KdUiORdLNiWD3XcLWSwZt4vk7eEmHX8nzM6nDlRbg2fJY\nipCB1tM2WKV8QhiBzdKICt/Su5680yC+svuDcBWXJ7bOrLb66kkNroMSH5jn\ntjG2P9RVY8bsTM38zZVgqAkOv5ZPPZF6RdjHmbsFrQTPZQZnjVqFrlIG1EVk\n4mIE8HBDfkURnmkTsVXvS7zRD684LTOtPbQ6Lv4vxFQfbJwSq3+6c/vtTpy0\nTa3LYlGmAKrLY8andrUqfsXXzFOl0/hWfeQ8VqxwzRiXLSv0Ai6PfStpUdSH\nj/CiLziOiR9uSVSXJtu3ThkUB/0Z9USwNo0PAFHxwCF6G8jpjAcKJqnvWd+g\nkd9n0I55DqJaB3bpGLwJ/cGsbHDgDZsTqAtXTilAbndDJejhfeQU8KNlBtmt\ndgzFrCoLFxR8lYOCCBXrbGObTfG5NVQ4uqYvX3vi1UB9AeBG3gA4JMcsv19j\nHnLz2vszeKWb20deVf+MFfbE7RZG+y4czp4pjc7azLxb2yInDIX2Al0TLO3B\nPVI2\r\n=q+Sk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhRCreGg0OsSIsO4KzJZY1JcfCCyEBRX291s/Q+HBuawIhAPJ7u3CminW/q/j/MxrcWrwKKABunP/4SbjoP3H7R5F2"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.3_1554368888567_0.3255573340630147"},"_hasShrinkwrap":false},"2.1.3-stable":{"name":"understore","version":"2.1.3-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.1.3-stable","_nodeVersion":"9.2.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-CQRH04eDt+uCjsyz/KYhrkul9XtGrfjZN36T2JKgOKD2XxZ8nw1EQNA4aD4PJ4XpfKp0DXMz2pPdVx0FfEoVbQ==","shasum":"10a4b0d16ba7f3957fa87642d7bad8920cb1fa1f","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.3-stable.tgz","fileCount":6,"unpackedSize":108351,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpcmGCRA9TVsSAnZWagAAD00QAIUNNmS7NHT4O+d/HPY1\nFMwMHQDWSOJ7tDiaNdatU8g2pDrTjnrZmDgWW2MgAODQfI8TWatiB2q0bC4L\nfzhiaPgqADETnklv20cIxUwyVl0pb2lL9z9fNiII0HgJyBjOm2xlCD1SFFQv\nhswQn8CUsb/o9/iH7Q8GpOcdykWUBco+QXClZ6GfEtel59LCIjLu1RtY8HBs\nZEm9KAG8xk58aPXbycJcCvVTijZhQG1Ff++N2ASsv212K7CWE86OyPBYYyLc\nGAt2gGVGIT0rC/yId3U/zDmvQNSadXYrkmWdM4n6JNjgAR3eYyqypUP2ZRiB\nDnnyDia+FWSRUJzg9EVzjeVwu5+KUuGGADsE4SIDGI3XdRa9Rs9jTRFvxIkk\nMY27zA3Ew3OMFJVzGxABq3kE0OcCzopF6MgZaBxq93p7TdmdpHtUUYYn3XRG\nJFhAR3DWcHiu3OxtDr20H8vuMGg5WuJvOqcZ4DLoOlyZejJtUB+hVVDk2r8L\n9RawXNZdUXOMleGPEEh08/2vcyeAFBSxqxOchUNFhNVS3yim3gWwwrhaW4lV\nQ4pjxg1pL26HSu3QBjY4DBfvDUpIsc95/hKuXdU4EOWlkce3OUr+WyETy50b\nbV7j+MJHXernpgWTrc+NrK8drEjdKuLz0ZDtLXnQOTO5ZRWWOQe4nUCDouZ6\nHGnm\r\n=ZTiP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIACqxM0hXJ+rkDewjX+xAYF1SkxCRCQGe/Bymr7aPKRZAiBiTJrA7OmNIL1kZsF40KwzJooVC9aWs7Bj3vwdrjd6KA=="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.3-stable_1554368901380_0.3010824412183646"},"_hasShrinkwrap":false},"2.1.4":{"name":"understore","version":"2.1.4","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.1.4","_nodeVersion":"9.2.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-OPbE97e8Jd3Zq+apanPfcA3oF22wk+AV7X8hmP+/CSyeqZz9J6qxHkkYVTJ1dn6swiM21Mg8nf0SxshKnoqeTw==","shasum":"d549300c5bfe0f2bf94ece085ffbe7d7e32d5a56","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.4.tgz","fileCount":6,"unpackedSize":108750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpdsxCRA9TVsSAnZWagAAQq4QAI8XzRkujOH5SEHe3jmV\n5j74ZF0q4+4130eOjyR4poTjLpFbD7pJovvIkDBkNdbaUwh6lUeBGE45Ml4V\nSDQTLs5sFC8slt6fOKokKl/i/zC/w4ToO7c8EljSJrfeZ8kFlkm0zvtLcxF0\nk/HdVBkzFwUQGHbUP+8/5K9Pst7WV4TVtrHsc0YyfDm1JM0JlewxK8jIjqPN\nNFvgCtbxDofJ88RgTSvh4H9yHhbSLDNNKACU5JQblvcZx7UReyTOTmmJbtvg\n2+wH2r8jDMWR6/BWlerli+hlLIvVXPVtz9MbeH/ZQFarbOHpDltoE4XqNh1k\nHUrGgajqfctTtnulxv9C34mORHQql0WYzqSzd6PGWEtjBwu8zaqY2p5n1uQX\nW21kp93W3RFlgvuyy9dY8Qp3F/V3KVPnjZjYbqa1lAaceNFG/XdGxwcfmljG\nwtrWLIYrwXiVsGWLeagDPtzqd42Napmlr3goxz2PIFQuMONYB7ssRtmeElui\nvvzuX9vLAKawa2clcfBQPww7nCbADBBeuZtx5sDXuxSEXoWVvgPUE3VoKieq\nrFt3YSO6DsyGl+zcHBm5NmOW50W11hpWg+iIz5zKXPQubLFHQb+HAYJUzJDQ\nkkL6JZO2Uks2zrMyXSHafxwVYYBZrCvMTi/IqdZx4UuwCkUMm222k7E0JEMn\ntvj4\r\n=ZUbS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDk1DJKCtzRi3qEuy6WFjFVhXav/fdF2kcBQnGQDcYI6AIhAJmBgHhPo+PAUpojNevRNT7k47DqNSin1akmMrjWVwOo"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.4_1554373425044_0.41925844193031314"},"_hasShrinkwrap":false},"2.1.4-stable":{"name":"understore","version":"2.1.4-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.1.4-stable","_nodeVersion":"9.2.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-XnX9cgCdJviLVlJ7i1+GFYe18ZrcF09TYVTfsi/Mj/mQb9prk6Jikk6cu42rm1PRmJU9xyZQg0CrzbIWQTVfDw==","shasum":"4bca31772264762a84c041746d7b2c792122d6cc","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.4-stable.tgz","fileCount":6,"unpackedSize":108757,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpdtQCRA9TVsSAnZWagAAx0YP/2BtWUxbm0v1MEYOFjdq\n4KAz8IU47zZO9EEIxhzDXLXtpWDiBdGcy8W/qv8mq6q4mrY2KDDI0GvY64hU\nGJ5tOXeRxRQvgiZ4ycsqU2+yiCuZCt2yikOonYmKWpydPa5gTNtzfrnjVopq\nozyU+TAjyR3FpqOnBxyMw8YyN4zLrFJy36TcE2lf6ozyiIcQQwn9L1YRk8ul\nSvfO3bnUBZpdc8e/2/m23qfwiVjpnbAZmWER01sVTqGp7TjT1UV3z+CHAPCW\nWhoTDqZnW3n2W3n9rGCZooYthhqyxFcoBgGYIhxyRoisoLZUd/dCkoSAZbLb\nW8kLpUAMVRKdVG5QoB6sce2ev5qkIa7Hh7f6yxcE4njc7aY1v17NSkCgoMDq\n6Al4eo7vkh4qNRzVlsg772hHOlLe5NHcFuyRNINQI8OC1l2Sjn53lCf84w0p\n3CKBc+qe91MGV8bGsPUDm6FvTtmnfz8S5uVxWdlFuXG6jFfg4AmkFG/2A9FU\nQkKwu/w10LLFr6CcxPg3a35uI2Fjwc0aaJgpb/lx+9pVu08aMn8qbC0Nkks2\nhLlCjSAWoQDWP1jEbTAjKUQEWbrdALmF486aXku47begDZyv+HzII99b2tXi\n8LNXRAUSrimWju4TqU9iDYw9D35Med7GMFCEhDMk5XNL0OBdto9DrJCsa0e0\na/rK\r\n=vudo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrADSW1TpC61f90C+MZCuCi6yVfSvgX2dv38vOkWaLpAIhAO3t0gytwmuL6dYiaosyJATO+i6fzYKkNDoW0W7+tRDt"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.4-stable_1554373455977_0.1916329506584058"},"_hasShrinkwrap":false},"2.1.5":{"name":"understore","version":"2.1.5","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.1.5","_nodeVersion":"9.2.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-8t4mo2l1uxjHdRVu8qoI2b4LLOY20QDSLvxAQJetVgOqyuM4g9lswSVjmR/ydvROBBYwO/zuPoMIq5HPu7B80Q==","shasum":"f52b99991b6d4e1f7157d1dbb19ffdb2472e0aa4","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.5.tgz","fileCount":6,"unpackedSize":108714,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpd05CRA9TVsSAnZWagAArNwP/1y7BU9ePs6k8h+2t6OI\n5rAtxFn3yWxo3OnCYe4GFQzryQ8MTbI3gluVtI9ogalqlnlh2d/0FKFb/YBQ\neBuaYmXPW2G0NS2Eat5GUGBlCesZXdXYLMW47GvxXm4jDRpjXzKUqnabxvtU\nm75aUkoM/Dlaja2cAaUEe3DqD60SBsZtJhDemFh3FuZuyWl/iqM4uQHx9jOF\nHwn1UW1/ecvMwhBm7sXlwlwtKq6dET/D1jglMM8+q1ac+FRd39cVc8wmqtSB\nFatIHqpSxr8pdHcayfgZ6YMyBKJfwBvtRWBOjf/DOwIu9T1GS2mShn+HmqyA\nHKVyCzVHWUc94l9D9UILLshhmdii8bD0PYwiRuieIVMVsGlfz8EsI5dTJ6a7\n9xk+TFXarf9/IczNsuimolh6+u1TirauQDn7Wpeu7R6f5MDzlKfuhjW4AssH\n36/HEjYPWzMksfYql+Z8+NlsFm/R4yKFOnTb87cFkkPle6T6MBx4movvf1S7\nkpnSoppDEKsNcRZIivDQtTPCYrxRiV4kNPLMJoJu41YCzPdNdqXg/gjCK9fb\nhyM2Cx1TP6WQeJNeyuMQt7HsncIfFG6vEnDjhfQx+uRT2UcZ3A57Tti5McoA\n4F4JNzqRwP3ZWsIdS/3y3p0Rw7o6Ms9+eh5X3R8Rac890UwhL+XXzCT0t1LJ\ndMAH\r\n=GtyB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRSxXlTZCOMGz8QEfBqzrWAFEydJGZaP1WGAPLP+WajAIhAPvsVAn/+RAYjD2B5/7baFN1YoU5fFvNc3Qz4c6o99DF"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.5_1554373945289_0.8230991592413248"},"_hasShrinkwrap":false},"2.1.5-stable":{"name":"understore","version":"2.1.5-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"README.md","_id":"understore@2.1.5-stable","_nodeVersion":"9.2.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-eWpzUkvEdB4s6RtXSVBVupyiQB1vJ1HwgEdkMfbNJL8494/ZeW2CZZCNyVmmYjarHqqkiPpxyLe+x3UChzinvQ==","shasum":"0a51b1f99e48ed8beb2c703696792b2cab305acc","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.5-stable.tgz","fileCount":6,"unpackedSize":108721,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpd1FCRA9TVsSAnZWagAA/IwP/2jl9uki7cqSulYrbg1q\nYj18ynnEnS9c7WoLgGV+42wwzYvkfLSwWn6ICFJzs39pR2vE3jc502BjZxdb\nz+IjTlTrOD6kyCAQrouIXiWTga3NVkXfy6UUNmVJ1th8s9XFFqsGdzto/4oj\n5TO5hsLgWaShFQWC7oeoVMHBUwVSmEz5ZR0o/NY1FNKeVevq5zJAbEYwL+Oh\nN4wd2azidTAW1rGsFBJ0FUfNepfY2bGPDHKiwyFZKLMca3W0TbXz8KEp7MfJ\nLBSYGNdhlLWMD/xfkSQ1iIIx1F2VJ3c3IhOuobhYq6lw0uojYgJEnwgBzwM4\nYR+1s4NxuT5OE0gyyu8NizxN2lAD7Rt3lNS3qG5IyaROYJuNC1kd9ifHw4zZ\nnoSGhYhdkUDvPlSv4nS4hiyjoSloNJyqu1lCcjuN6/RJTrKb8DmiCTAF4jNa\n3xH36BKK+Ks3xrmQrH6hEPkkc6bTn7BTauJPFK01sO3yhBrE0apjjS4LzJiO\nFC7T+oH3JCSwbeYLnEGJgjDHtqPW7c3v5mqnrlnlMFi6KuM45IBax7kqDsjx\n8AcERMFxTZf3AZ2LnliOJ3kcyK6iu2+S33NiUYySozQb+aauxg0Gv43I46fC\nGknCG0W2oGms9U1UCMloagGM9TwJoTTiIgn+H8q0i3ds8yh53Cx3L6xqHUHT\naHrn\r\n=KNDh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFQivQze80PcLdIjeN18B0NBIXbb25Txt4rUyKBh0YfUAiEAsSHt1Q7c/xPnrzEOWXXRn95EY2TVKSWjvu3McVq+HZk="}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.5-stable_1554373956514_0.039371875523990685"},"_hasShrinkwrap":false},"2.1.6":{"name":"understore","version":"2.1.6","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","_id":"understore@2.1.6","_nodeVersion":"9.2.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-XNQCG1mZAIg6Jnfn+thSaWF+uwLSffmaWRWYqvl3YG0d2P5BswAW7bvz2ZR51gO4Ga1TRq91vnKjcN3vG9rr7A==","shasum":"edc02b8a30e36767bb0accfbd02d4d2d02db923b","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.6.tgz","fileCount":5,"unpackedSize":60597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJct0LkCRA9TVsSAnZWagAAuEQP/RNflroF1hvaGeIGklw5\nXQ7CtMB5ynEgfoAu1mYvFa9SJCP6WiOD6GVwfpbWEIOjnuHxNtf3PoALwxhK\nCwqZvRKFnkBivRtdof6Q5tADon060MKMMnLdcV6JHI5BFgXLL2DZJoDi1Og5\nTeHFShYXeKE0TsGotI5G7Ytde9kCwYGArKTl1HCfuVXEENILjW8On3xBflZM\nkpuGM4TXAtlx3qTAGe969zBNWcKnwE1Dp2Q3fjJreStn9XtrxBMsIHGjTyCE\nhGYd9ea69EtxBkk29p2tjwg4QfGsIEcVMBGfpZOce2L/k1VDE/5Tqc/klgHs\nnptohoekZN+K4QdjaWrBCiOJwuumbBvxWkgDYlsWXh/ebFb04V0xHloQAoDQ\nqIbDewimZVsvmHuY/OHCmCA0JZlDmSHf0pPfMQ63i7dIpYM0SrchO38Vw/RE\n6tKLezxnXVVs8EL6wSk7AbhqjYsAy46x2MCmW5/WBNMdVK06CuS/D6kDzVPu\nisnknenoej/1zdm0RtPwDUsEy6kX97vMzL3BZ28UGRHAsycnuyvOciDmFjen\navhBni1xg77U9bgmwcrK5JV2o40C8zSA14APPNrIBeXPD3QZT3UEJIOGpfO0\nVVGvnM+wP5JgtIpdLd7rjL85teLBFpxoaYFmfiELAQ7RLVo6DbcKvgI1DN72\nSz6i\r\n=pwFx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuh37lobwPDcrRMbU+xPukk2lGy8doWsGu49atPqsRCQIhALD3e0WDtYGil1V46XflBjciFfDK5JZkuqyjJVtdz8gG"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.6_1555514083222_0.27183359396831475"},"_hasShrinkwrap":false},"2.1.6-stable":{"name":"understore","version":"2.1.6-stable","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며","main":"understore.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"license":"ISC","bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"homepage":"https://understore.github.io","readme":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와**\n> **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며\n\n>데이터의 업데이트에 따라 **각 탭**에 있는  **Virual Dom** 기반의 동일한 웹 컴포넌트의 데이터 싱크를 유지가능하게 해줍니다\n\n>SNS 알림, 메일 알림등\t탭간 다르게 보여지는 각 상태를 **새로고침 없이 동기화**를 가능하게 합니다.\n\n**ajax 요청 구현시 유지보수 및 코드의 향상성을 떨어뜨리는 콜백 패턴이 아닌**\n\n**[Promise](https://caniuse.com/#feat=async-functions) 패턴의 체이닝 메서드 구현을 통해 유지보수 및 코드의 향상성 관리가 가능합니다.**\n\n> chrome, safari, firefox, Internet Explorer9 more than / cross browsing support\n\n>자세한 내용은 아래 API 문서와 예제를 참조해주세요\n\n\n\n## API\n\n### _.addItem\n\naddItem은 컴포넌트의 **생성**과 **추가**에 사용되는 메서드입니다.\n\n\n**parameter** : {\n\n>id: {string},\n\n>template : {string},\n\n>target : {dom.element},\n\n>parent : {\n\n>>id : {string},\n\n>>idx : {number}\n\n>},\n\n>data : {object},\n\n>created : {function},\n\n>changed : {function},\n\n>css : {url address}\n\n}\n\n**return** : {\n> id : {string},\n\n> idx : {number}\n\n}\n\n&nbsp;\n\n\n\n**template** 과 **data** 바인딩\n\n>script 태그 내에 삽입하는 방식과 자바스크립트 변수안에 템플릿을 삽입하는 방식을 사용하고 있으며 \n\n>virtual dom 방식의 dom관리를 통해 스토어의 수정 발생시 템플릿의 해당 보간자 영역의 repaint의 가벼운 수정 방식을 사용하고 있습니다.\n\n> [template type1 on jsfiddle](https://jsfiddle.net/understore/xjgxouLa/)\n\n> [template type2 on jsfiddle](https://jsfiddle.net/understore/bzvxvL1w/)\n\n\n**css**\n\n>스타일은 css 파일의 경로 넣어 사용되며, 스타일 모듈화는 스타일과 중복되지 않도록 scoped 방식을 채용하고 있으며 있습니다. \n\n>컴포넌트(custom element) 셀렉터는 **:root** 입니다 \n\n>[css import on jsfiddle](https://jsfiddle.net/understore/4y78mtpj/)\n\n\n**events**는 이벤트 바인딩이며 @click=\"function_name\"으로 바인딩이 가능하며 아래 예제를 참조\n\n>[event bind on jsfiddle](https://jsfiddle.net/understore/z8c9ngku/)\n\n&nbsp;\n\n**생성**에서의 필수옵션은 id, template, target, data이며\n추가 옵션은 events, css, sync 이며 아래 예제를 참조\n\n\n_.addItem({ \n\n> id : \"example_component\", \n\n> template : '<example_component><span>{this.text}</span></example_component>',\n\n> css : \"http://example.com/css/style.css\",\n\n> target : document.querySelector(\".target\"), \n\n> data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> },\n\n> events : {\n\n>> onEvent : {\n\n>>>function(event){ } \n\n>>}\n\n>}\n\n});\n\n&nbsp;\n\n**추가**에서의 필수옵션은 id, data 이며 아래 예제를 참조\n\n_.addItem({ \n>id : \"example_component\", \n\n>data : {text : \"hello world\"},\n\n> parent : {\n\n>> id: {string},\n\n>> idx : {number}\n\n> }\n\n});\n\n\n&nbsp;\n\n## _.setItem\n\nsetItem은 컴포넌트의 **수정**에 사용되는 메서드입니다.\n\n**parameter** : {\n>id: {string},\n\n>idx : {number}, // idx default : 0\n\n> data : {object}\n\n}\n\n**return** : undefined\n\n\n\n\n\n\n```\n_.setItem({ \n\tid : \"example_component\", \n\tdata : {text : \"텍스트를 수정\"} \n});\n```\n\n```\n=> undefined\n```\n&nbsp;\n\n## _.getItem\n\ngetItem은 컴포넌트  **이벤트, 컴포넌트, 데이터, 확장 컴포넌트**의 값을 가져오는데 사용되는 메서드입니다.\n\n**parameter** : {\n\n>id : {string},\n\n>idx : {number}\n\n}\n\n**return** : {\n\n>target : {element},\n\n>data : {object},\n\n>element : {component element},\n\n>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n}\n\n```\nvar item = _.getItem({\n\tid : \"example_component\",\n\tidx : 1\n});\n  \nconsole.log(item);\n```\n\n```\n=> { Event object......, data : addItem add data!, elment : ▶<example_component>...</example_component>  }\n```\n\n&nbsp;\n\n## _.getItems\n\ngetItems은 **getItem**의 확장 유틸리티 메서드로 컴포넌트의 정보를 배열 값으로 모두 가져오는데 사용됩니다.\n\n**parameter** : {\n\n> id : { string }\n\n}\n\n**return** : [\n\n>event :{\n\n>>target : {element},\n\n>>data : {object},\n\n>>element : {component element},\n\n>>[event params...](https://developer.mozilla.org/ko/docs/Web/API/Event)\n\n>}\n\n> event : {same object},\n\n> event : {same object},\n\n> more ...\n\n]\n\n```\nvar item = _.getItems({\n\tid : \"example_component\"\n});\n  \nconsole.log(item);\n```\n\n```\n=> [Array Extend event object]\n```\n\n&nbsp;\n## _.removeItem\n\nremoveItem은 컴포넌트를  **삭제**의 할때 사용되며 해당 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제하는 메서드입니다,\n\n**parameter** : { \n>id : \"example_component\", \n\n>idx : 2\n\n};\n\n**return** : undefined\n\n```\n_.removeItem({ \n\tid : \"example_component\", \n\tidx : 2\n});\n```\n\n```\n=> undefined\n```\n\n&nbsp;\n\n## _.clear\n\nclear는 removeItem 확장 유틸리티 메서드이며 컴포넌트를  **모두삭제**의 할때 사용되며 모든 컴포넌트, 바인딩된 이벤트, 데이터를 한번에 삭제합니다.\n\n**parameter** : {\n> id : {string}\n\n}\n\n**return** : undefined\n\n```\nvar item = _.clear({id: “example_component”});\n\nconsole.log(item);\n```\n\n```\n=> 17  // example_component items removed length\n```\n&nbsp;\n\n\n## _.fetch\n\npromise 패턴 기반의 ajax 요청 메소드입니다.\n\n**parameter** : \n\nurl : {string},\n\n{\n\n> method : {string},\n\n> headers : {object},\n\n> cache : {boolean},\n\n> timeout : {number}\n\n}\n\n**return** : {\n> status : {number},\n\n> body : {JSON or string}\n\n}\n\n체인 메서드를 위한 확장 유틸리티 **then** 메서드를 추가 제공하며.\n> callback hell 패턴이 아닌 체이닝 메서드 형식으로 코드의 가독성 관리가 가능하며\n\n> 사용방법은 아래 \"fetch & then example\" 예제를 참고\n\n요청취소를 위한 **abort** 메서드를 추가 제공합니다.\n> _.abort(); // 호출시 기존에 요청한 체이닝 메서드 요청을 block하고 제거합니다.\n\n\n```\n// fetch & then example\n// example01.json\n{\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n// example02.json\n{\n\tdata : {\n\t\tvalue : \"library\"\n\t}\n}\n```\n\n```\n_.fetch(\"example01.json\", {\n    // method : \"GET\", default method value \"GET\"\n\tcache: true,\n\t// headers :{\"Accept\": \"text/json\",\"goooood\": \"understore\"} <- example case\n}).then(function(res){\n    this.v = res.data.name;\n}).then(function(){\n    console.log(\"example01 ajax : \", res);\n})\n.fetch(\"example02.json\", {\n    method : \"GET\",\n\tcache: true,\n\theaders :{\"Accept\": \"text/text\",\"goooood\": 11111}\n}).then(function(res){\n    console.log(\"example02 ajax : \", res);\n    this.v = this.v + \" \" + res.data.name;\n}).then(function(){\n    console.log(this.v);\n})console.log(item);\n```\n\n```\n=> \"example01 ajax : \", {\n\tdata : {\n\t\tname : \"understore\"\n\t}\n}\n\n=> \"example02 ajax : \", {\n\tdata : {\n\t\tname : \"web component library\"\n\t}\n}\n\n=> \"understore web component library\"\n```\n\n&nbsp;\n\n## _.then\n\npromise 패턴 기반의 체인 메소드입니다.\n\n**parameter** : {function}\n\n**return** : undefined\n```\n_.then(function(){\n\tthis.v = 0;\n\tfor(var i = 0, len = 5; i < len; i++){\n\t\tthis.v += i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n}).then(function(){\n    for(var i = 0, len = 5; i < len; i++){\n\t\tthis.v -= i;\t\n\t}\n}).then(function(){\n    console.log(\"count v : \", this.v);\n})\n```\n\n```\n=> count v :  10\n=> count v :  0\n```\n&nbsp;\n\n\n\n\n## 예제\n\n[Todomvc example on jsfiddle](https://fiddle.jshell.net/understore/x2seku4z/show/)\n>창 혹은 탭을 두개 여시고 컴포넌트간의 데이터의 동기화를 확인하세요","readmeFilename":"readme.md","_id":"understore@2.1.6-stable","_nodeVersion":"9.2.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-x9d9eqgGVLIKndJpQ/uXhauyar7GJwtMKAr+0UrFpxBPFllSWYS7wwdwkV5Y5kh95y9UiF8fier+Lsd0wvRvdA==","shasum":"5bf29f57c9fe840b6604cd4f76fc8f20da40ed55","tarball":"https://registry.npmjs.org/understore/-/understore-2.1.6-stable.tgz","fileCount":5,"unpackedSize":60604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJct0L1CRA9TVsSAnZWagAArV8P/jkpt41v89CCAWMpCzXe\nqAn2GReT1oP/ciu2GDO6nj7QNtVRse5Bkp0qO0gHNArH3oeLf/H5I1AUvOsK\nwzjL0rWF/3JaIP8V6yR/3LkIAHcbB6j4BNjP1c+nftP9dtyGAfgSUzv7lTrs\nkjobVCgTQqA3+FCESX0ALj0UkRkLgNhapHK7ja0dy4mu66ttgyzi+GSyxmwa\njv04UiKJXwosvDq5QzylpNYk/8XUTCbOkpO/w4LV96v7JmwioOH/jJFwD8pR\nFb/CtQ8nw8P0k8ovh/h5yh7VeslB809JKUty34fdm6ZixuOcFrmA4H391vdG\nX/WGU+aFcZFsaBXSy70jvPPD5OF+O0vZjyAq561IJabW0ItpmScPxBkai/Te\nJmC/RGPgFQc0nb7bNj95jVvVLhsMKyURbAyyWl2QnY6gQZ9y2CpLdq37nD2x\nlz5k/r+TL9bIMFzAZWjp3thNgGUom9Yj4Isost+5Vm0efm2IJHUBpNZmweNb\nYgg+bTZ6U9qMev6qCenRqhQph650whsj5rQ611YH4rSuS2FPR5Gn2J4c5+3h\nhhHspBjfXFqc0J7WT4sQniAE4pj+6LYt1ZG6uU5KIf2WUYdLeC5G+jYZFiHe\nNJ0q+ouaPtTPUh/EO6E5fiVgT3upjurMV6KqmyWzDSQjA9r9dMeU1JFe+d2x\nEp6s\r\n=JCkf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDztSDXqiLVo/v9BMUnU6wirK5Rqhf933GVawNjWqzEAQIhAIzF/TtJ/aMVB6LC22W6/hdBd0oHcBQBWm233oyk+Gwa"}]},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"_npmUser":{"name":"scv","email":"sungu.che@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/understore_2.1.6-stable_1555514099968_0.6390715927861936"},"_hasShrinkwrap":false}},"time":{"created":"2018-11-15T06:02:15.693Z","0.0.1":"2018-11-15T06:02:15.880Z","modified":"2022-05-22T17:59:02.916Z","0.0.2":"2018-11-15T12:03:54.175Z","0.0.3":"2018-11-15T13:44:49.078Z","0.0.4":"2018-11-15T15:22:37.160Z","0.0.5":"2018-11-16T01:17:42.235Z","0.0.6":"2018-11-16T01:38:24.979Z","0.0.7":"2018-11-16T02:07:33.891Z","0.0.8":"2018-11-16T02:39:01.407Z","0.0.9":"2018-11-16T12:18:34.549Z","0.1.0":"2018-11-17T06:57:11.270Z","0.1.1":"2018-11-17T19:48:03.687Z","0.1.2":"2018-11-18T06:17:55.125Z","0.1.3":"2018-11-18T14:25:54.169Z","0.1.4":"2018-11-18T14:31:18.339Z","0.1.5":"2018-11-19T01:48:08.711Z","0.1.6":"2018-11-19T02:25:48.204Z","0.1.7":"2018-11-19T02:41:11.689Z","0.1.8":"2018-11-19T14:52:38.027Z","0.1.9":"2018-11-19T14:57:45.791Z","0.2.0":"2018-11-19T15:14:23.014Z","0.2.1":"2018-11-19T16:01:42.416Z","0.2.2":"2018-11-19T16:03:24.542Z","0.2.3":"2018-11-20T06:25:38.185Z","0.2.4":"2018-11-20T06:27:26.350Z","0.2.5":"2018-11-20T06:46:40.932Z","0.2.6":"2018-11-20T06:47:42.816Z","0.2.7":"2018-11-20T06:49:21.068Z","0.2.8":"2018-11-20T06:50:59.911Z","0.2.9":"2018-11-20T08:57:09.115Z","0.3.0":"2018-11-20T15:03:58.344Z","0.3.1":"2018-11-20T15:07:47.356Z","0.3.2":"2018-11-21T08:36:41.521Z","0.3.3":"2018-11-22T04:21:05.128Z","0.3.4":"2018-11-22T11:35:53.538Z","0.3.5":"2018-11-22T12:01:47.776Z","0.3.6":"2018-11-22T12:14:10.734Z","0.3.7":"2018-11-22T12:16:24.765Z","0.3.8":"2018-11-23T11:49:01.697Z","0.3.9":"2018-11-24T06:08:46.138Z","0.4.0":"2018-11-24T10:17:25.150Z","0.4.1":"2018-11-24T10:19:46.346Z","0.4.2":"2018-11-25T12:01:22.093Z","0.4.3":"2018-11-25T12:20:40.203Z","0.4.4":"2018-11-25T14:13:27.923Z","0.4.5":"2018-11-30T05:19:19.969Z","0.4.6":"2018-12-01T14:54:22.001Z","0.4.7":"2018-12-01T16:08:27.114Z","0.4.8":"2018-12-03T11:24:26.621Z","0.4.9":"2018-12-03T14:09:32.830Z","0.5.0-rc.0":"2018-12-03T14:45:03.990Z","0.5.0-stable":"2018-12-03T14:53:08.695Z","0.5.1":"2018-12-04T01:58:03.437Z","0.5.2":"2018-12-04T12:32:53.832Z","0.5.3":"2018-12-04T12:35:46.132Z","0.5.4":"2018-12-04T12:41:10.566Z","0.5.5":"2018-12-04T12:48:31.970Z","1.0.0":"2018-12-04T12:52:13.363Z","1.0.0-stable":"2018-12-05T07:06:29.317Z","1.0.0-rc1":"2018-12-11T04:10:32.221Z","1.0.0-rc2":"2018-12-12T00:44:41.159Z","1.0.0-rc.3":"2018-12-12T04:52:18.699Z","1.0.0-rc.4":"2018-12-12T04:58:09.544Z","1.0.0-rc.5":"2018-12-12T07:32:40.649Z","1.0.0-rc.6":"2018-12-12T07:37:15.714Z","1.0.0-rc.final":"2018-12-12T07:41:24.376Z","1.0.0-release":"2018-12-13T13:05:11.937Z","1.0.0-Release":"2018-12-13T13:20:53.486Z","0.5.0-rc.1":"2018-12-14T01:13:12.999Z","0.5.0-rc.2":"2018-12-14T04:21:13.092Z","0.0.0":"2018-12-14T14:11:40.941Z","1.0.0-rc":"2018-12-14T14:12:56.454Z","1.0.1":"2018-12-14T14:13:44.364Z","1.0.2":"2018-12-17T14:41:48.822Z","1.0.3-rc":"2018-12-17T15:28:37.051Z","1.0.3-rc.0":"2018-12-17T15:29:12.153Z","1.0.4":"2018-12-17T15:31:25.071Z","1.0.5":"2018-12-17T15:31:47.419Z","1.0.6":"2018-12-17T15:36:27.083Z","1.0.7":"2018-12-17T15:43:27.983Z","1.0.8":"2018-12-17T15:44:26.316Z","1.0.9":"2018-12-18T02:34:46.274Z","1.1.0-rc":"2018-12-18T02:35:23.162Z","1.1.0":"2018-12-18T02:36:11.381Z","1.1.1":"2018-12-18T09:02:27.797Z","1.1.2":"2018-12-22T13:38:53.029Z","1.1.3":"2019-01-02T12:55:57.843Z","1.1.3-rc":"2019-01-02T12:56:47.570Z","1.1.4":"2019-01-02T12:57:22.071Z","1.1.5":"2019-01-11T13:37:14.947Z","1.1.6":"2019-01-11T15:06:25.984Z","1.1.7":"2019-01-12T06:45:42.771Z","1.1.8":"2019-01-12T06:45:59.676Z","1.1.9":"2019-01-13T09:30:59.546Z","1.2.0":"2019-01-13T09:38:52.931Z","1.2.1":"2019-01-13T10:23:45.561Z","1.2.2":"2019-01-13T10:23:55.185Z","1.2.3":"2019-01-15T08:52:20.298Z","1.2.4":"2019-01-15T08:52:31.451Z","1.2.5":"2019-01-24T05:40:05.926Z","1.2.6":"2019-01-24T05:40:19.548Z","1.2.7":"2019-01-27T11:26:20.328Z","1.2.8":"2019-01-27T11:26:36.505Z","1.2.9":"2019-01-27T12:52:06.068Z","1.3.0":"2019-01-27T12:52:23.368Z","1.3.0-rc1":"2019-01-27T13:12:25.825Z","1.3.1":"2019-01-27T13:20:56.514Z","1.3.9":"2019-01-27T13:51:09.677Z","1.4.0":"2019-01-27T13:51:23.713Z","1.4.0-rc":"2019-01-29T16:18:08.055Z","1.4.0-stable":"2019-01-29T16:18:35.242Z","1.4.1":"2019-02-02T10:39:31.707Z","1.4.2":"2019-02-02T10:40:10.201Z","1.4.3":"2019-02-04T03:01:12.094Z","1.4.3-rc":"2019-02-04T03:01:35.249Z","1.4.4":"2019-02-04T05:08:40.529Z","1.4.5":"2019-02-04T05:35:48.042Z","1.4.6":"2019-02-04T05:35:58.791Z","1.4.7":"2019-02-04T07:23:31.325Z","1.4.8":"2019-02-04T15:49:50.486Z","1.4.9":"2019-02-04T15:50:39.084Z","1.5.0":"2019-02-04T16:11:40.765Z","1.5.0-stable":"2019-02-04T16:11:53.764Z","1.5.0-rc1":"2019-02-04T16:18:44.732Z","1.5.0-rc2":"2019-02-04T16:19:04.148Z","1.5.0-rc3":"2019-02-05T02:12:44.914Z","1.5.0-rc4":"2019-02-05T02:13:04.859Z","1.5.0-rc5":"2019-02-05T16:10:23.875Z","1.5.0-rc6":"2019-02-05T16:10:38.660Z","1.5.0-rc":"2019-02-05T17:17:38.337Z","1.5.0-Stable":"2019-02-05T17:18:09.786Z","1.9.0":"2019-02-05T17:29:40.570Z","1.9.0-stable":"2019-02-05T17:29:52.083Z","1.9.0-final":"2019-02-05T17:31:09.439Z","1.9.0-rc":"2019-02-07T00:49:34.354Z","1.9.0-rc1":"2019-02-07T00:49:49.315Z","1.9.0-rc2":"2019-02-07T00:50:09.616Z","1.9.0-rc.1":"2019-02-07T15:24:49.053Z","1.9.0-rc.2":"2019-02-07T15:25:10.774Z","1.9.0-rc.3":"2019-02-08T00:39:55.857Z","1.9.0-rc.4":"2019-02-08T00:40:14.723Z","1.9.0-rc.5":"2019-02-08T02:09:28.764Z","1.9.0-rc.6":"2019-02-08T02:09:39.250Z","1.9.0-rc.7":"2019-02-08T17:22:52.491Z","1.9.0-rc.8":"2019-02-08T17:24:08.635Z","1.9.1":"2019-02-08T19:17:54.791Z","1.9.2":"2019-02-08T19:18:16.929Z","1.9.3":"2019-02-09T15:38:10.288Z","1.9.4":"2019-02-09T15:38:26.291Z","1.9.5":"2019-02-10T06:25:41.302Z","1.9.5-rc":"2019-02-10T06:26:12.322Z","1.9.6":"2019-02-10T08:15:05.487Z","1.9.6-rc":"2019-02-10T08:15:22.496Z","1.9.7":"2019-02-10T15:17:41.044Z","1.9.7-rc":"2019-02-10T15:17:51.626Z","1.9.8":"2019-02-10T15:48:42.936Z","1.9.8-stable":"2019-02-10T15:48:55.219Z","1.9.9":"2019-02-10T16:29:12.302Z","1.9.9-stable":"2019-02-10T16:29:26.622Z","2.0.0":"2019-02-12T17:01:54.754Z","2.0.0-stable":"2019-02-12T17:02:15.227Z","2.0.1":"2019-02-17T15:11:35.305Z","2.0.1-rc":"2019-02-17T15:55:44.327Z","2.0.1-stable":"2019-02-17T15:55:59.221Z","2.0.2":"2019-02-17T16:41:19.815Z","2.0.2-stable":"2019-02-17T16:41:34.846Z","2.0.3":"2019-02-17T16:46:32.091Z","2.0.3-stable":"2019-02-17T16:46:55.633Z","2.0.4":"2019-02-28T09:01:12.244Z","2.0.4-stable":"2019-02-28T09:01:22.492Z","2.0.5":"2019-03-01T06:20:45.516Z","2.0.6":"2019-03-01T06:23:21.247Z","2.0.7":"2019-03-02T12:09:45.471Z","2.0.7-stable":"2019-03-02T12:09:58.850Z","2.0.8":"2019-03-02T16:22:51.406Z","2.0.8-stable":"2019-03-02T16:23:04.971Z","2.0.9":"2019-03-02T16:56:02.935Z","2.1.0":"2019-03-02T16:57:09.014Z","2.1.0-stable":"2019-03-02T16:57:23.253Z","2.1.0-rc":"2019-03-02T17:12:13.967Z","2.1.0-rc1":"2019-03-02T17:12:30.260Z","2.1.0-rc2":"2019-03-04T11:48:44.308Z","2.1.0-rc3":"2019-03-04T11:49:12.982Z","2.1.1":"2019-03-06T14:48:29.661Z","2.1.1-stable":"2019-03-06T14:49:16.660Z","2.1.2":"2019-03-15T01:49:38.872Z","2.1.2-stable":"2019-03-15T01:49:50.869Z","2.1.3":"2019-04-04T09:08:08.739Z","2.1.3-stable":"2019-04-04T09:08:21.527Z","2.1.4":"2019-04-04T10:23:45.160Z","2.1.4-stable":"2019-04-04T10:24:16.204Z","2.1.5":"2019-04-04T10:32:25.420Z","2.1.5-stable":"2019-04-04T10:32:36.683Z","2.1.6":"2019-04-17T15:14:43.461Z","2.1.6-stable":"2019-04-17T15:15:00.198Z"},"maintainers":[{"name":"scv","email":"sungu.che@gmail.com"}],"homepage":"https://understore.github.io","repository":{"type":"git","url":"git+https://github.com/understore/understore.github.io.git"},"author":{"name":"scv","email":"sungu.che@gmail.com","url":"https://gitlab.com/scvjs/scv"},"bugs":{"url":"https://github.com/understore/understore.github.io/issues"},"license":"ISC","readme":"","readmeFilename":"","description":"**웹 컴포넌트 개발시, 가상 돔과 데이터의 효율적인 상태관리와** > **백그라운드 스토어** 에코시스템 기반의 **데이터 상태관리**를 사용하며 상태관리를 하며"}