こんにちは。
JavaScriptで、シンプルな自分用のライブラリを作っています。
コンパイル系の言語はよく使えるのですが、JavaScriptはまだ経験が浅いです。

改行で区切られた文字列に関する処理を行いたいと思っています。
(名前が適切かどうかはともかくとしまして)

var doc = new Document(改行含む文字列);

このような記述で、インスタンスを作り、行ごとにアクセスできるようなものを作りたいのです。doc.getLine(i)とか、doc.setLine(i)とか。

このときに、¥r¥n¥r¥nの全ての改行コードに対応したいなと思っています。
¥r¥nは1行の空行、¥n¥rは2行の空行として扱いたいです。

例えば、ですが文字列が、次のようなものの場合

'0123¥r456¥n789¥r¥n0123¥r¥r456¥n¥n789¥r¥n¥r¥n0123¥n¥r¥n¥r456'

配列に

0123¥r
456¥n
789¥r¥n
0123¥r
¥r
456¥n
¥n
789¥r¥n
¥r¥n
0123¥n
¥r¥n
¥r
456

このような形で分解したいのです。
※少し分解例を間違えていたので修正しました。
単に ¥r¥n¥r¥n、混在のテキストファイルに対しても読み込めるように処理をしたいと思ってます。¥rのテキストなんて実際にはほぼ存在しないとは思っています。
また、'¥r¥n'を¥n¥r¥nにしてしまえば、全部¥nにして扱いやすそうですが、そのライブラリを使って何らかの加工をして戻す場合に、改行コードが勝手に変えられるのはライブラリの性質としてはちょっと残念だな、と思ってまして、どうせなら、改行コードが不一致しててもそのまま返してあげたいなと、そんな思いです。(ちょっと固執すぎかもしれません)

単純なsplitではうまくいかないのは当たり前のことなのですが
何か、シンプルで簡単な解決策などありますでしょうか。
すでにどこかにこのようなコードはあるような気がしますが
改行でSplitとかで検索しても
たんに¥nでsplitする初心者向けの解決策がみつかるだけなので、検索でみつけることもできません。

文字列で先頭からサーチしていってArraypushかなにかをするのがいいのかな、と思っているのですが
JavaScriptは文字列処理自体が遅いので、そのような処理が適切(スピードやシンプルさ)なのかが、わからなく、自信がもてないところではあります。

もっとよい解決策はあるのかな、もしかして正規表現の応用とかで高速に処理できるのかな、と思ってお聞きします。

何か、知見をお持ちの方に、例えば、すでにどこそこライブラリの実装があるよとか、書いたことあるから貼り付けるよとか、そういう情報を教えていただけますと助かります。
よろしくおねがいします。