{"_id":"rope-sequence","_rev":"4067746","name":"rope-sequence","description":"Rope-based persistent sequence type","dist-tags":{"latest":"1.3.4"},"maintainers":[{"name":"marijn","email":"marijnh@gmail.com"}],"time":{"modified":"2025-10-13T19:27:41.000Z","created":"2016-07-13T11:01:34.854Z","1.3.4":"2023-05-17T08:25:11.198Z","1.3.3":"2022-05-13T14:41:38.841Z","1.3.2":"2019-11-20T14:23:14.645Z","1.3.1":"2019-11-20T14:16:49.208Z","1.3.0":"2019-11-08T06:47:35.744Z","1.2.2":"2016-12-01T15:30:07.348Z","1.2.1":"2016-09-21T18:15:12.491Z","1.2.0":"2016-07-15T08:10:14.479Z","1.1.0":"2016-07-14T16:01:32.098Z","1.0.0":"2016-07-13T11:01:34.854Z"},"users":{},"author":{"name":"Marijn Haverbeke","email":"marijn@haverbeke.berlin"},"repository":{"type":"git","url":"git+https://github.com/marijnh/rope-sequence.git"},"versions":{"1.3.4":{"name":"rope-sequence","version":"1.3.4","description":"Rope-based persistent sequence type","main":"dist/index.cjs","type":"module","module":"dist/index.js","exports":{"import":"./dist/index.js","require":"./dist/index.cjs"},"scripts":{"build":"rollup -c","prepare":"npm run build","test":"node test.js"},"repository":{"type":"git","url":"git+https://github.com/marijnh/rope-sequence.git"},"keywords":["persistent","data","structure","rope","sequence"],"author":{"name":"Marijn Haverbeke","email":"marijn@haverbeke.berlin"},"license":"MIT","devDependencies":{"@rollup/plugin-buble":"^0.20.0","rollup":"^1.26.3"},"types":"./dist/index.d.ts","gitHead":"11db1ba5aa2abf31ff8040bdf01fabdb9db34c7a","bugs":{"url":"https://github.com/marijnh/rope-sequence/issues"},"homepage":"https://github.com/marijnh/rope-sequence#readme","_id":"rope-sequence@1.3.4","_nodeVersion":"19.7.0","_npmVersion":"9.6.5","dist":{"shasum":"df85711aaecd32f1e756f76e43a415171235d425","size":5305,"noattachment":false,"key":"/rope-sequence/-/rope-sequence-1.3.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/rope-sequence/download/rope-sequence-1.3.4.tgz"},"_npmUser":{"name":"marijn","email":"marijn@haverbeke.berlin"},"directories":{},"maintainers":[{"name":"marijn","email":"marijnh@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rope-sequence_1.3.4_1684311911092_0.7529465605637531"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-05-17T08:25:11.198Z","publish_time":1684311911198,"_source_registry_name":"default","_cnpm_publish_time":1684311911198},"1.3.3":{"name":"rope-sequence","version":"1.3.3","description":"Rope-based persistent sequence type","main":"dist/index.js","module":"dist/index.es.js","scripts":{"build":"rollup -c","prepare":"npm run build","test":"node test.js"},"repository":{"type":"git","url":"git+https://github.com/marijnh/rope-sequence.git"},"keywords":["persistent","data","structure","rope","sequence"],"author":{"name":"Marijn Haverbeke","email":"marijnh@gmail.com"},"license":"MIT","devDependencies":{"@rollup/plugin-buble":"^0.20.0","rollup":"^1.26.3","rollup-plugin-commonjs":"^10.1.0"},"types":"./dist/index.d.ts","gitHead":"824c48a89daf8f0127276d88d401dcf00d1a3e90","bugs":{"url":"https://github.com/marijnh/rope-sequence/issues"},"homepage":"https://github.com/marijnh/rope-sequence#readme","_id":"rope-sequence@1.3.3","_nodeVersion":"16.13.1","_npmVersion":"8.4.0","dist":{"shasum":"3f67fc106288b84b71532b4a5fd9d4881e4457f0","size":5302,"noattachment":false,"key":"/rope-sequence/-/rope-sequence-1.3.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/rope-sequence/download/rope-sequence-1.3.3.tgz"},"_npmUser":{"name":"marijn","email":"marijnh@gmail.com"},"directories":{},"maintainers":[{"name":"marijn","email":"marijnh@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rope-sequence_1.3.3_1652452898616_0.6077348116114394"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-05-13T16:10:36.270Z","publish_time":1652452898841,"_cnpm_publish_time":1652452898841},"1.3.2":{"name":"rope-sequence","version":"1.3.2","description":"Rope-based persistent sequence type","main":"dist/index.js","module":"dist/index.es.js","scripts":{"build":"rollup -c","prepare":"npm run build","test":"node test.js"},"repository":{"type":"git","url":"git+https://github.com/marijnh/rope-sequence.git"},"keywords":["persistent","data","structure","rope","sequence"],"author":{"name":"Marijn Haverbeke","email":"marijnh@gmail.com"},"license":"MIT","devDependencies":{"@rollup/plugin-buble":"^0.20.0","rollup":"^1.26.3","rollup-plugin-commonjs":"^10.1.0"},"gitHead":"1d35177f273d5eaeca28360fc199db628d6e4aed","bugs":{"url":"https://github.com/marijnh/rope-sequence/issues"},"homepage":"https://github.com/marijnh/rope-sequence#readme","_id":"rope-sequence@1.3.2","_nodeVersion":"12.10.0","_npmVersion":"6.13.0","_npmUser":{"name":"marijn","email":"marijnh@gmail.com"},"dist":{"shasum":"a19e02d72991ca71feb6b5f8a91154e48e3c098b","size":5182,"noattachment":false,"key":"/rope-sequence/-/rope-sequence-1.3.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/rope-sequence/download/rope-sequence-1.3.2.tgz"},"maintainers":[{"name":"marijn","email":"marijnh@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rope-sequence_1.3.2_1574259794554_0.05450146945751344"},"_hasShrinkwrap":false,"publish_time":1574259794645,"_cnpm_publish_time":1574259794645,"_cnpmcore_publish_time":"2021-12-16T17:20:38.677Z"},"1.3.1":{"name":"rope-sequence","version":"1.3.1","description":"Rope-based persistent sequence type","main":"dist/index.js","module":"dist/index.es.js","scripts":{"build:cjs":"buble index.js -o dist/index.js","build:mjs":"rollup -c","build":"npm run build:cjs && npm run build:mjs","prepare":"npm run build","test":"node test.js"},"repository":{"type":"git","url":"git+https://github.com/marijnh/rope-sequence.git"},"keywords":["persistent","data","structure","rope","sequence"],"author":{"name":"Marijn Haverbeke","email":"marijnh@gmail.com"},"license":"MIT","devDependencies":{"buble":"^0.19.8","rollup":"^1.26.3","rollup-plugin-commonjs":"^10.1.0"},"gitHead":"ddec9844f2dd32156807d195b795a32acb484364","bugs":{"url":"https://github.com/marijnh/rope-sequence/issues"},"homepage":"https://github.com/marijnh/rope-sequence#readme","_id":"rope-sequence@1.3.1","_nodeVersion":"12.10.0","_npmVersion":"6.13.0","_npmUser":{"name":"marijn","email":"marijnh@gmail.com"},"dist":{"shasum":"2cd3459536914070a1285a0ea5d649e7f189301d","size":5318,"noattachment":false,"key":"/rope-sequence/-/rope-sequence-1.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/rope-sequence/download/rope-sequence-1.3.1.tgz"},"maintainers":[{"name":"marijn","email":"marijnh@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rope-sequence_1.3.1_1574259409117_0.5576754920862594"},"_hasShrinkwrap":false,"publish_time":1574259409208,"_cnpm_publish_time":1574259409208,"_cnpmcore_publish_time":"2021-12-16T17:20:38.879Z"},"1.3.0":{"name":"rope-sequence","version":"1.3.0","description":"Rope-based persistent sequence type","main":"dist/index.js","module":"dist/index.mjs","scripts":{"build:cjs":"buble index.js -o dist/index.js","build:mjs":"rollup -c","build":"npm run build:cjs && npm run build:mjs","prepare":"npm run build","test":"node test.js"},"repository":{"type":"git","url":"git+https://github.com/marijnh/rope-sequence.git"},"keywords":["persistent","data","structure","rope","sequence"],"author":{"name":"Marijn Haverbeke","email":"marijnh@gmail.com"},"license":"MIT","devDependencies":{"buble":"^0.19.8","rollup":"^1.26.3","rollup-plugin-commonjs":"^10.1.0"},"gitHead":"ad7e1e7c2fdde9483b636d7b570fd6302c0adc8f","bugs":{"url":"https://github.com/marijnh/rope-sequence/issues"},"homepage":"https://github.com/marijnh/rope-sequence#readme","_id":"rope-sequence@1.3.0","_nodeVersion":"12.10.0","_npmVersion":"6.11.3","_npmUser":{"name":"marijn","email":"marijnh@gmail.com"},"dist":{"shasum":"7b8bc1db96f8696f93db05282f799c6078eacce2","size":5241,"noattachment":false,"key":"/rope-sequence/-/rope-sequence-1.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rope-sequence/download/rope-sequence-1.3.0.tgz"},"maintainers":[{"name":"marijn","email":"marijnh@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rope-sequence_1.3.0_1573195655623_0.48930714900043126"},"_hasShrinkwrap":false,"publish_time":1573195655744,"_cnpm_publish_time":1573195655744,"_cnpmcore_publish_time":"2021-12-16T17:20:39.083Z"},"1.2.2":{"name":"rope-sequence","version":"1.2.2","description":"Rope-based persistent sequence type","main":"dist/index.js","scripts":{"test":"node test.js","prepublish":"buble index.js -o dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/marijnh/rope-sequence.git"},"keywords":["persistent","data","structure","rope","sequence"],"author":{"name":"Marijn Haverbeke","email":"marijnh@gmail.com"},"license":"MIT","devDependencies":{"buble":"^0.14.0"},"gitHead":"81a46e17711a94dae832e9c148c60c817999736d","bugs":{"url":"https://github.com/marijnh/rope-sequence/issues"},"homepage":"https://github.com/marijnh/rope-sequence#readme","_id":"rope-sequence@1.2.2","_shasum":"49c4e5c2f54a48e990b050926771e2871bcb31ce","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"marijn","email":"marijnh@gmail.com"},"maintainers":[{"name":"marijn","email":"marijnh@gmail.com"}],"dist":{"shasum":"49c4e5c2f54a48e990b050926771e2871bcb31ce","size":4991,"noattachment":false,"key":"/rope-sequence/-/rope-sequence-1.2.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/rope-sequence/download/rope-sequence-1.2.2.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/rope-sequence-1.2.2.tgz_1480606205275_0.8991398771759123"},"directories":{},"publish_time":1480606207348,"_hasShrinkwrap":false,"_cnpm_publish_time":1480606207348,"_cnpmcore_publish_time":"2021-12-16T17:20:39.269Z"},"1.2.1":{"name":"rope-sequence","version":"1.2.1","description":"Rope-based persistent sequence type","main":"dist/index.js","scripts":{"test":"node test.js","prepublish":"buble index.js -o dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/marijnh/rope-sequence.git"},"keywords":["persistent","data","structure","rope","sequence"],"author":{"name":"Marijn Haverbeke","email":"marijnh@gmail.com"},"license":"MIT","devDependencies":{"buble":"^0.14.0"},"gitHead":"b57891d6505c7a09057c046def938dea25e7293e","bugs":{"url":"https://github.com/marijnh/rope-sequence/issues"},"homepage":"https://github.com/marijnh/rope-sequence#readme","_id":"rope-sequence@1.2.1","_shasum":"7da14c04fdc06f60bacdb9d26936c56265ffee2e","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"marijn","email":"marijnh@gmail.com"},"maintainers":[{"name":"marijn","email":"marijnh@gmail.com"}],"dist":{"shasum":"7da14c04fdc06f60bacdb9d26936c56265ffee2e","size":4876,"noattachment":false,"key":"/rope-sequence/-/rope-sequence-1.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/rope-sequence/download/rope-sequence-1.2.1.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/rope-sequence-1.2.1.tgz_1474481709835_0.9890185876283795"},"directories":{},"publish_time":1474481712491,"_hasShrinkwrap":false,"_cnpm_publish_time":1474481712491,"_cnpmcore_publish_time":"2021-12-16T17:20:39.508Z"},"1.2.0":{"name":"rope-sequence","version":"1.2.0","description":"Rope-based persistent sequence type","main":"dist/index.js","scripts":{"test":"node test.js","prepublish":"buble index.js -o dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/marijnh/rope-sequence.git"},"keywords":["persistent","data","structure","rope","sequence"],"author":{"name":"Marijn Haverbeke","email":"marijnh@gmail.com"},"license":"MIT","devDependencies":{"buble":"^0.12.5"},"gitHead":"4df4996bc7679272e4848c5a4cb1059410eb9945","bugs":{"url":"https://github.com/marijnh/rope-sequence/issues"},"homepage":"https://github.com/marijnh/rope-sequence#readme","_id":"rope-sequence@1.2.0","_shasum":"5c6a70ccf40f24e84c80ec3fd8aaa1bfa1837f97","_from":".","_npmVersion":"3.9.3","_nodeVersion":"6.2.1","_npmUser":{"name":"marijn","email":"marijnh@gmail.com"},"maintainers":[{"name":"marijn","email":"marijnh@gmail.com"}],"dist":{"shasum":"5c6a70ccf40f24e84c80ec3fd8aaa1bfa1837f97","size":4077,"noattachment":false,"key":"/rope-sequence/-/rope-sequence-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rope-sequence/download/rope-sequence-1.2.0.tgz"},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/rope-sequence-1.2.0.tgz_1468570211908_0.4779171282425523"},"directories":{},"publish_time":1468570214479,"_hasShrinkwrap":false,"_cnpm_publish_time":1468570214479,"_cnpmcore_publish_time":"2021-12-16T17:20:39.755Z"},"1.1.0":{"name":"rope-sequence","version":"1.1.0","description":"Rope-based persistent sequence type","main":"dist/index.js","scripts":{"test":"node test.js","prepublish":"buble index.js -o dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/marijnh/rope-sequence.git"},"keywords":["persistent","data","structure","rope","sequence"],"author":{"name":"Marijn Haverbeke","email":"marijnh@gmail.com"},"license":"MIT","devDependencies":{"buble":"^0.12.5"},"gitHead":"383c60c3011458a0ff688f73605a88ee05e6ccb4","bugs":{"url":"https://github.com/marijnh/rope-sequence/issues"},"homepage":"https://github.com/marijnh/rope-sequence#readme","_id":"rope-sequence@1.1.0","_shasum":"2a124fe997e75d5bbd06345889d323c5214f57fd","_from":".","_npmVersion":"3.9.3","_nodeVersion":"6.2.1","_npmUser":{"name":"marijn","email":"marijnh@gmail.com"},"maintainers":[{"name":"marijn","email":"marijnh@gmail.com"}],"dist":{"shasum":"2a124fe997e75d5bbd06345889d323c5214f57fd","size":3940,"noattachment":false,"key":"/rope-sequence/-/rope-sequence-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rope-sequence/download/rope-sequence-1.1.0.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/rope-sequence-1.1.0.tgz_1468512089565_0.21351731289178133"},"directories":{},"publish_time":1468512092098,"_hasShrinkwrap":false,"_cnpm_publish_time":1468512092098,"_cnpmcore_publish_time":"2021-12-16T17:20:39.961Z"},"1.0.0":{"name":"rope-sequence","version":"1.0.0","description":"Rope-based persistent sequence type","main":"dist/index.js","scripts":{"test":"node test.js","prepublish":"buble index.js -o dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/marijnh/rope-sequence.git"},"keywords":["persistent","data","structure","rope","sequence"],"author":{"name":"Marijn Haverbeke","email":"marijnh@gmail.com"},"license":"MIT","devDependencies":{"buble":"^0.12.5"},"gitHead":"3e4e0b73e166a8534e711dacf22b51796a0b6c12","bugs":{"url":"https://github.com/marijnh/rope-sequence/issues"},"homepage":"https://github.com/marijnh/rope-sequence#readme","_id":"rope-sequence@1.0.0","_shasum":"b4e60554f40dbe37ffbc30d378c1578b147c8ca3","_from":".","_npmVersion":"3.9.3","_nodeVersion":"6.2.1","_npmUser":{"name":"marijn","email":"marijnh@gmail.com"},"maintainers":[{"name":"marijn","email":"marijnh@gmail.com"}],"dist":{"shasum":"b4e60554f40dbe37ffbc30d378c1578b147c8ca3","size":3662,"noattachment":false,"key":"/rope-sequence/-/rope-sequence-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rope-sequence/download/rope-sequence-1.0.0.tgz"},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/rope-sequence-1.0.0.tgz_1468407693031_0.6930203132797033"},"directories":{},"publish_time":1468407694854,"_hasShrinkwrap":false,"_cnpm_publish_time":1468407694854,"_cnpmcore_publish_time":"2021-12-16T17:20:40.167Z"}},"readme":"# rope-sequence\n\nThis module implements a single data type, `RopeSequence`, which is a\npersistent sequence type implemented as a loosely-balanced\n[rope](https://www.cs.rit.edu/usr/local/pub/jeh/courses/QUARTERS/FP/Labs/CedarRope/rope-paper.pdf).\nIt supports appending, prepending, and slicing without doing a full\ncopy. Random access is somewhat more expensive than in an array\n(logarithmic, with some overhead), but should still be relatively\nfast.\n\nLicensed under the MIT license.\n\n## class `RopeSequence<T>`\n\n`static `**`from`**`(?union<[T], RopeSequence<T>>) → RopeSequence<T>`\n\nCreate a rope representing the given array, or return the rope itself\nif a rope was given.\n\n`static `**`empty`**`: RopeSequence<T>`\n\nThe empty rope.\n\n**`length`**`: number`\n\nThe length of the rope.\n\n**`append`**`(union<[T], RopeSequence<T>>) → RopeSequence<T>`\n\nAppend an array or other rope to this one, returning a new rope.\n\n**`prepend`**`(union<[T], RopeSequence<T>>) → RopeSequence<T>`\n\nPrepend an array or other rope to this one, returning a new rope.\n\n**`slice`**`(from: ?number = 0, to: ?number = this.length) → RopeSequence<T>`\n\nCreate a rope repesenting a sub-sequence of this rope.\n\n**`get`**`(index: number) → T`\n\nRetrieve the element at the given position from this rope.\n\n**`forEach`**`(f: fn(element: T, index: number) → ?bool, from: ?number, to: ?number)`\n\nCall the given function for each element between the given indices.\nThis tends to be more efficient than looping over the indices and\ncalling `get`, because it doesn't have to descend the tree for every\nelement.\n\n`to` may be less then `from`, in which case the iteration will happen\nin reverse (starting at index `from - 1`, down to index `to`.\n\nThe iteration function may return `false` to abort iteration early.\n\n**`map`**`(f: fn(element: T, index: number) → U, from: ?number, to: ?number) → [U]`\n\nMap the given functions over the elements of the rope, producing a\nflat array.\n\n**`flatten`**`() → [T]`\n\nReturn the content of this rope as an array.\n","_attachments":{},"homepage":"https://github.com/marijnh/rope-sequence#readme","bugs":{"url":"https://github.com/marijnh/rope-sequence/issues"},"license":"MIT"}