{"_id":"runes","_rev":"3772833","name":"runes","description":"Unicode-aware JS string splitting","dist-tags":{"latest":"0.4.3"},"maintainers":[{"name":"dotcypress","email":"dotcypress@gmail.com"}],"time":{"modified":"2025-05-06T07:50:46.000Z","created":"2016-08-19T16:47:16.857Z","0.4.3":"2017-10-02T05:45:34.508Z","0.4.2":"2017-06-28T00:47:44.286Z","0.4.1":"2017-06-26T18:21:27.720Z","0.4.0":"2016-12-12T02:39:12.963Z","0.3.0":"2016-08-26T20:56:15.236Z","0.2.0":"2016-08-26T20:41:17.714Z","0.1.0":"2016-08-19T18:05:54.157Z","0.0.0":"2016-08-19T16:47:16.857Z"},"users":{},"author":{"name":"Vitaly Domnikov","email":"dotcypress@gmail.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/dotcypress/runes.git"},"versions":{"0.4.3":{"name":"runes","version":"0.4.3","description":"Unicode-aware JS string splitting","main":"index.js","scripts":{"test":"eslint . && ava test"},"repository":{"type":"git","url":"git+ssh://git@github.com/dotcypress/runes.git"},"keywords":["unicode","emoji","runes","split","split string"],"author":{"name":"Vitaly Domnikov","email":"dotcypress@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/dotcypress/runes/issues"},"homepage":"https://github.com/dotcypress/runes#readme","engines":{"node":">=4.0.0"},"files":["index.js"],"devDependencies":{"ava":"^0.22.0","eslint":"^4.1.1","eslint-config-standard":"^10.2.1","eslint-plugin-ava":"^4.0.0","eslint-plugin-import":"^2.6.0","eslint-plugin-node":"^5.1.0","eslint-plugin-promise":"^3.4.0","eslint-plugin-standard":"^3.0.1"},"gitHead":"ccceb0f19d9fab0e29ce4830be5286c71f55c5b4","_id":"runes@0.4.3","_npmVersion":"5.4.2","_nodeVersion":"8.6.0","_npmUser":{"name":"dotcypress","email":"dotcypress@gmail.com"},"dist":{"shasum":"32f7738844bc767b65cc68171528e3373c7bb355","size":3634,"noattachment":false,"key":"/runes/-/runes-0.4.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/runes/download/runes-0.4.3.tgz"},"maintainers":[{"name":"dotcypress","email":"dotcypress@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/runes-0.4.3.tgz_1506923133563_0.3182796554174274"},"directories":{},"publish_time":1506923134508,"_hasShrinkwrap":false,"_cnpm_publish_time":1506923134508,"_cnpmcore_publish_time":"2021-12-17T04:45:38.027Z"},"0.4.2":{"name":"runes","version":"0.4.2","description":"Unicode-aware JS string splitting","main":"index.js","scripts":{"test":"eslint . && ava test"},"repository":{"type":"git","url":"git+ssh://git@github.com/dotcypress/runes.git"},"keywords":["unicode","emoji","runes","split","split string"],"author":{"name":"Vitaly Domnikov","email":"dotcypress@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/dotcypress/runes/issues"},"homepage":"https://github.com/dotcypress/runes#readme","engines":{"node":">=4.0.0"},"files":["index.js"],"devDependencies":{"ava":"^0.19.1","eslint":"^4.1.1","eslint-config-standard":"^10.2.1","eslint-plugin-ava":"^4.0.0","eslint-plugin-import":"^2.6.0","eslint-plugin-node":"^5.1.0","eslint-plugin-promise":"^3.4.0","eslint-plugin-standard":"^3.0.1"},"gitHead":"fd00450b6ca2ec2fbf8e1e41c483ae9a6d3d6661","_id":"runes@0.4.2","_shasum":"1ddc1ea41de769cb32fc068a64fbbc45cd21052e","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"dotcypress","email":"dotcypress@gmail.com"},"dist":{"shasum":"1ddc1ea41de769cb32fc068a64fbbc45cd21052e","size":3598,"noattachment":false,"key":"/runes/-/runes-0.4.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/runes/download/runes-0.4.2.tgz"},"maintainers":[{"name":"dotcypress","email":"dotcypress@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/runes-0.4.2.tgz_1498610864155_0.8767825004179031"},"directories":{},"publish_time":1498610864286,"_hasShrinkwrap":false,"_cnpm_publish_time":1498610864286,"_cnpmcore_publish_time":"2021-12-17T04:45:38.232Z"},"0.4.1":{"name":"runes","version":"0.4.1","description":"Unicode-aware JS string splitting","main":"index.js","scripts":{"test":"eslint . && ava test"},"repository":{"type":"git","url":"git+ssh://git@github.com/dotcypress/runes.git"},"keywords":["unicode","emoji","runes","split","split string"],"author":{"name":"Vitaly Domnikov","email":"dotcypress@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/dotcypress/runes/issues"},"homepage":"https://github.com/dotcypress/runes#readme","engines":{"node":">=4.0.0"},"files":["index.js"],"devDependencies":{"ava":"^0.19.1","eslint":"^4.1.1","eslint-config-standard":"^10.2.1","eslint-plugin-ava":"^4.0.0","eslint-plugin-import":"^2.6.0","eslint-plugin-node":"^5.1.0","eslint-plugin-promise":"^3.4.0","eslint-plugin-standard":"^3.0.1"},"gitHead":"c28680deb2a12e9547df3236e0009bd41f25b563","_id":"runes@0.4.1","_shasum":"8fe5ca2cf7d7a384c6456beeeff6c4e9dc3e8502","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"dotcypress","email":"dotcypress@gmail.com"},"dist":{"shasum":"8fe5ca2cf7d7a384c6456beeeff6c4e9dc3e8502","size":3268,"noattachment":false,"key":"/runes/-/runes-0.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/runes/download/runes-0.4.1.tgz"},"maintainers":[{"name":"dotcypress","email":"dotcypress@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/runes-0.4.1.tgz_1498501287636_0.2605479462072253"},"directories":{},"publish_time":1498501287720,"_hasShrinkwrap":false,"_cnpm_publish_time":1498501287720,"_cnpmcore_publish_time":"2021-12-17T04:45:38.428Z"},"0.4.0":{"name":"runes","version":"0.4.0","description":"Unicode-aware JS string splitting","main":"index.js","scripts":{"test":"eslint . && ava test"},"repository":{"type":"git","url":"git+ssh://git@github.com/dotcypress/runes.git"},"keywords":["unicode","emoji","runes","split","split string"],"author":{"name":"Vitaly Domnikov","email":"dotcypress@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/dotcypress/runes/issues"},"homepage":"https://github.com/dotcypress/runes#readme","engines":{"node":">=4.0.0"},"files":["index.js"],"devDependencies":{"ava":"^0.16.0","eslint":"^3.3.1","eslint-config-standard":"^6.0.0","eslint-plugin-ava":"^3.0.0","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.0","should":"^11.1.0"},"gitHead":"f4b383cc6556304be92b0e601ffb97f0f73e2a9f","_id":"runes@0.4.0","_shasum":"791e605ac73c0c8eff17d631e12c8d8137f35b8a","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"dotcypress","email":"dotcypress@gmail.com"},"dist":{"shasum":"791e605ac73c0c8eff17d631e12c8d8137f35b8a","size":3293,"noattachment":false,"key":"/runes/-/runes-0.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/runes/download/runes-0.4.0.tgz"},"maintainers":[{"name":"dotcypress","email":"dotcypress@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/runes-0.4.0.tgz_1481510351182_0.5712935484480113"},"directories":{},"publish_time":1481510352963,"_hasShrinkwrap":false,"_cnpm_publish_time":1481510352963,"_cnpmcore_publish_time":"2021-12-17T04:45:38.621Z"},"0.3.0":{"name":"runes","version":"0.3.0","description":"Unicode-aware JS string splitting","main":"index.js","scripts":{"test":"eslint . && ava test"},"repository":{"type":"git","url":"git+ssh://git@github.com/dotcypress/runes.git"},"keywords":["unicode","emoji","runes","split","split string"],"author":{"name":"Vitaly Domnikov","email":"dotcypress@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/dotcypress/runes/issues"},"homepage":"https://github.com/dotcypress/runes#readme","engines":{"node":">=4.0.0"},"files":["index.js"],"devDependencies":{"ava":"^0.16.0","eslint":"^3.3.1","eslint-config-standard":"^6.0.0","eslint-plugin-ava":"^3.0.0","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.0","should":"^11.1.0"},"gitHead":"ed16f40a50eff363bb0b47205128dbecd4bc99a2","_id":"runes@0.3.0","_shasum":"826eb123d25a4297bb7b6cdf22fc082f4d8d2b5a","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"dotcypress","email":"dotcypress@gmail.com"},"dist":{"shasum":"826eb123d25a4297bb7b6cdf22fc082f4d8d2b5a","size":3046,"noattachment":false,"key":"/runes/-/runes-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/runes/download/runes-0.3.0.tgz"},"maintainers":[{"name":"dotcypress","email":"dotcypress@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/runes-0.3.0.tgz_1472244973137_0.04258036706596613"},"directories":{},"publish_time":1472244975236,"_hasShrinkwrap":false,"_cnpm_publish_time":1472244975236,"_cnpmcore_publish_time":"2021-12-17T04:45:39.097Z"},"0.2.0":{"name":"runes","version":"0.2.0","description":"Unicode-aware JS string splitting","main":"index.js","scripts":{"test":"eslint . && ava test"},"repository":{"type":"git","url":"git+ssh://git@github.com/dotcypress/runes.git"},"keywords":["unicode","emoji","runes","split","split string"],"author":{"name":"Vitaly Domnikov","email":"dotcypress@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/dotcypress/runes/issues"},"homepage":"https://github.com/dotcypress/runes#readme","engines":{"node":">=4.0.0"},"files":["index.js"],"devDependencies":{"ava":"^0.16.0","eslint":"^3.3.1","eslint-config-standard":"^6.0.0","eslint-plugin-ava":"^3.0.0","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.0","should":"^11.1.0"},"gitHead":"9a6192be6ba6c0f2f1a3b2b40922f4c697ddeb50","_id":"runes@0.2.0","_shasum":"cdd86ab309b5fd6c05f5ae82f277f57c9599c6ba","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"dotcypress","email":"dotcypress@gmail.com"},"dist":{"shasum":"cdd86ab309b5fd6c05f5ae82f277f57c9599c6ba","size":3042,"noattachment":false,"key":"/runes/-/runes-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/runes/download/runes-0.2.0.tgz"},"maintainers":[{"name":"dotcypress","email":"dotcypress@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/runes-0.2.0.tgz_1472244077481_0.569252411602065"},"directories":{},"publish_time":1472244077714,"_hasShrinkwrap":false,"_cnpm_publish_time":1472244077714,"_cnpmcore_publish_time":"2021-12-17T04:45:39.312Z"},"0.1.0":{"name":"runes","version":"0.1.0","description":"Unicode-aware JS string splitting","main":"index.js","scripts":{"test":"eslint . && mocha test"},"repository":{"type":"git","url":"git+ssh://git@github.com/dotcypress/runes.git"},"keywords":["unicode","runes","split","split string"],"author":{"name":"Vitaly Domnikov","email":"dotcypress@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/dotcypress/runes/issues"},"homepage":"https://github.com/dotcypress/runes#readme","engines":{"node":">=4.0.0"},"files":["index.js"],"devDependencies":{"eslint":"^3.3.1","eslint-config-standard":"^5.3.1","eslint-plugin-mocha":"^4.3.0","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.0","mocha":"^3.0.2","should":"^11.1.0"},"gitHead":"9a6192be6ba6c0f2f1a3b2b40922f4c697ddeb50","_id":"runes@0.1.0","_shasum":"8d76facff15c7f2fc087661b52803d1df50a9b29","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"dotcypress","email":"dotcypress@gmail.com"},"dist":{"shasum":"8d76facff15c7f2fc087661b52803d1df50a9b29","size":2849,"noattachment":false,"key":"/runes/-/runes-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/runes/download/runes-0.1.0.tgz"},"maintainers":[{"name":"dotcypress","email":"dotcypress@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/runes-0.1.0.tgz_1471629953902_0.3689468221273273"},"directories":{},"publish_time":1471629954157,"_hasShrinkwrap":false,"_cnpm_publish_time":1471629954157,"_cnpmcore_publish_time":"2021-12-17T04:45:39.512Z"},"0.0.0":{"name":"runes","version":"0.0.0","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"MIT","_id":"runes@0.0.0","_shasum":"558f4811df299d9271689c00f1997d11f57fe909","_from":".","_npmVersion":"3.9.3","_nodeVersion":"6.2.1","_npmUser":{"name":"dotcypress","email":"dotcypress@gmail.com"},"dist":{"shasum":"558f4811df299d9271689c00f1997d11f57fe909","size":247,"noattachment":false,"key":"/runes/-/runes-0.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/runes/download/runes-0.0.0.tgz"},"maintainers":[{"name":"dotcypress","email":"dotcypress@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/runes-0.0.0.tgz_1471625236374_0.8855587337166071"},"directories":{},"publish_time":1471625236857,"_hasShrinkwrap":false,"_cnpm_publish_time":1471625236857,"_cnpmcore_publish_time":"2021-12-17T04:45:39.695Z"}},"readme":"# ✂️ Runes\n[![NPM Version](https://img.shields.io/npm/v/runes.svg?style=flat-square)](https://www.npmjs.com/package/runes)\n[![Build Status](https://img.shields.io/travis/dotcypress/runes.svg?branch=master&style=flat-square)](https://travis-ci.org/dotcypress/runes)\n\n> Unicode-aware JS string splitting with full Emoji support.\n\nSplit a string into its constituent characters, without munging emoji and other non-BMP code points.\n\n## Why?\n\nThe native `String#split` implementation does not pay attention to [surrogate pairs](http://en.wikipedia.org/wiki/UTF-16). When the code units of a surrogate pair are split apart, they are not intelligible on their own. Unless they are put back together in the correct order, individual code units will cause problems in code that handles strings.\n\n## Installation\n\n```js\n$ npm install runes\n```\n\n## Example\n  \n```js\nconst runes = require('runes')\n\n// Standard String.split\n'♥️'.split('') => ['♥', '️']\n'Emoji ????'.split('') => ['E', 'm', 'o', 'j', 'i', ' ', '�', '�']\n'????‍????‍????‍????'.split('') => ['�', '�', '‍', '�', '�', '‍', '�', '�', '‍', '�', '�']\n\n// ES6 string iterator\n[...'♥️'] => [ '♥', '️' ]\n[...'Emoji ????'] => [ 'E', 'm', 'o', 'j', 'i', ' ', '????' ]\n[...'????‍????‍????‍????'] => [ '????', '', '????', '', '????', '', '????' ]\n\n// Runes\nrunes('♥️') => ['♥️']\nrunes('Emoji ????') => ['E', 'm', 'o', 'j', 'i', ' ', '????']\nrunes('????‍????‍????‍????') => ['????‍????‍????‍????']\n\n```\n\n## Substring example\n\n```js\nconst runes = require('runes')\n\n// String.substring\n'????‍????‍????‍????a'.substring(1) => '�‍????‍????‍????a'\n\n// Runes\nrunes.substr('????‍????‍????‍????a', 1) => 'a'\n\n```\n","_attachments":{},"homepage":"https://github.com/dotcypress/runes#readme","bugs":{"url":"https://github.com/dotcypress/runes/issues"},"license":"MIT"}