kuroshiro-browser
Version:
Kuroshiro+Analyzer+Kuromoji Combined and Optimized for Browser Usage Only
20 lines (19 loc) • 45.7 kB
JavaScript
(function(D,S){typeof exports=="object"&&typeof module<"u"?S(exports):typeof define=="function"&&define.amd?define(["exports"],S):(D=typeof globalThis<"u"?globalThis:D||self,S(D["kuroshiro-browser"]={}))})(this,function(D){"use strict";var rt=Object.defineProperty;var tt=(D,S,N)=>S in D?rt(D,S,{enumerable:!0,configurable:!0,writable:!0,value:N}):D[S]=N;var gr=(D,S,N)=>(tt(D,typeof S!="symbol"?S+"":S,N),N);var S=typeof document<"u"?document.currentScript:null;const N=12353,pr=12438,dr=12353,vr=12438,_r=12449,mr=12540,br=12449,wr=12534,kr=19968,Ar=40959,xr=13312,Cr=19903,Fr=131072,Dr=173791,Sr=96,Tr=-96,U={NIPPON:"nippon",PASSPORT:"passport",HEPBURN:"hepburn"},rr={nippon:{"1":"1","2":"2","3":"3","4":"4","5":"5","6":"6","7":"7","8":"8","9":"9","0":"0","!":"!","“":'"',"”":'"',"#":"#","$":"$","%":"%","&":"&","’":"'","(":"(",")":")","=":"=","~":"~","|":"|","@":"@","‘":"`","+":"+","*":"*",";":";",":":":","<":"<",">":">","、":",","。":".","/":"/","?":"?","_":"_","・":"・","「":'"',"」":'"',"{":"{","}":"}","¥":"\\","^":"^",あ:"a",い:"i",う:"u",え:"e",お:"o",ア:"a",イ:"i",ウ:"u",エ:"e",オ:"o",か:"ka",き:"ki",く:"ku",け:"ke",こ:"ko",カ:"ka",キ:"ki",ク:"ku",ケ:"ke",コ:"ko",さ:"sa",し:"si",す:"su",せ:"se",そ:"so",サ:"sa",シ:"si",ス:"su",セ:"se",ソ:"so",た:"ta",ち:"ti",つ:"tu",て:"te",と:"to",タ:"ta",チ:"ti",ツ:"tu",テ:"te",ト:"to",な:"na",に:"ni",ぬ:"nu",ね:"ne",の:"no",ナ:"na",ニ:"ni",ヌ:"nu",ネ:"ne",ノ:"no",は:"ha",ひ:"hi",ふ:"hu",へ:"he",ほ:"ho",ハ:"ha",ヒ:"hi",フ:"hu",ヘ:"he",ホ:"ho",ま:"ma",み:"mi",む:"mu",め:"me",も:"mo",マ:"ma",ミ:"mi",ム:"mu",メ:"me",モ:"mo",や:"ya",ゆ:"yu",よ:"yo",ヤ:"ya",ユ:"yu",ヨ:"yo",ら:"ra",り:"ri",る:"ru",れ:"re",ろ:"ro",ラ:"ra",リ:"ri",ル:"ru",レ:"re",ロ:"ro",わ:"wa",ゐ:"wi",ゑ:"we",を:"wo",ワ:"wa",ヰ:"wi",ヱ:"we",ヲ:"wo",が:"ga",ぎ:"gi",ぐ:"gu",げ:"ge",ご:"go",ガ:"ga",ギ:"gi",グ:"gu",ゲ:"ge",ゴ:"go",ざ:"za",じ:"zi",ず:"zu",ぜ:"ze",ぞ:"zo",ザ:"za",ジ:"zi",ズ:"zu",ゼ:"ze",ゾ:"zo",だ:"da",ぢ:"di",づ:"du",で:"de",ど:"do",ダ:"da",ヂ:"di",ヅ:"du",デ:"de",ド:"do",ば:"ba",び:"bi",ぶ:"bu",べ:"be",ぼ:"bo",バ:"ba",ビ:"bi",ブ:"bu",ベ:"be",ボ:"bo",ぱ:"pa",ぴ:"pi",ぷ:"pu",ぺ:"pe",ぽ:"po",パ:"pa",ピ:"pi",プ:"pu",ペ:"pe",ポ:"po",きゃ:"kya",きゅ:"kyu",きょ:"kyo",しゃ:"sya",しゅ:"syu",しょ:"syo",ちゃ:"tya",ちゅ:"tyu",ちょ:"tyo",にゃ:"nya",にゅ:"nyu",にょ:"nyo",ひゃ:"hya",ひゅ:"hyu",ひょ:"hyo",みゃ:"mya",みゅ:"myu",みょ:"myo",りゃ:"rya",りゅ:"ryu",りょ:"ryo",キャ:"kya",キュ:"kyu",キョ:"kyo",シャ:"sya",シュ:"syu",ショ:"syo",チャ:"tya",チュ:"tyu",チョ:"tyo",ニャ:"nya",ニュ:"nyu",ニョ:"nyo",ヒャ:"hya",ヒュ:"hyu",ヒョ:"hyo",ミャ:"mya",ミュ:"myu",ミョ:"myo",リャ:"rya",リュ:"ryu",リョ:"ryo",ぎゃ:"gya",ぎゅ:"gyu",ぎょ:"gyo",じゃ:"zya",じゅ:"zyu",じょ:"zyo",ぢゃ:"dya",ぢゅ:"dyu",ぢょ:"dyo",びゃ:"bya",びゅ:"byu",びょ:"byo",ぴゃ:"pya",ぴゅ:"pyu",ぴょ:"pyo",くゎ:"kwa",ぐゎ:"gwa",ギャ:"gya",ギュ:"gyu",ギョ:"gyo",ジャ:"zya",ジュ:"zyu",ジョ:"zyo",ヂャ:"dya",ヂュ:"dyu",ヂョ:"dyo",ビャ:"bya",ビュ:"byu",ビョ:"byo",ピャ:"pya",ピュ:"pyu",ピョ:"pyo",クヮ:"kwa",グヮ:"gwa",ぁ:"a",ぃ:"i",ぅ:"u",ぇ:"e",ぉ:"o",ゃ:"ya",ゅ:"yu",ょ:"yo",ゎ:"wa",ァ:"a",ィ:"i",ゥ:"u",ェ:"e",ォ:"o",ャ:"ya",ュ:"yu",ョ:"yo",ヮ:"wa",ヵ:"ka",ヶ:"ke",ん:"n",ン:"n"," ":" ",いぇ:"ye",きぇ:"kye",くぃ:"kwi",くぇ:"kwe",くぉ:"kwo",ぐぃ:"gwi",ぐぇ:"gwe",ぐぉ:"gwo",イェ:"ye",キェ:"kya",クィ:"kwi",クェ:"kwe",クォ:"kwo",グィ:"gwi",グェ:"gwe",グォ:"gwo",しぇ:"sye",じぇ:"zye",すぃ:"swi",ずぃ:"zwi",ちぇ:"tye",つぁ:"twa",つぃ:"twi",つぇ:"twe",つぉ:"two",にぇ:"nye",ひぇ:"hye",ふぁ:"hwa",ふぃ:"hwi",ふぇ:"hwe",ふぉ:"hwo",ふゅ:"hwyu",ふょ:"hwyo",シェ:"sye",ジェ:"zye",スィ:"swi",ズィ:"zwi",チェ:"tye",ツァ:"twa",ツィ:"twi",ツェ:"twe",ツォ:"two",ニェ:"nye",ヒェ:"hye",ファ:"hwa",フィ:"hwi",フェ:"hwe",フォ:"hwo",フュ:"hwyu",フョ:"hwyo"},passport:{"1":"1","2":"2","3":"3","4":"4","5":"5","6":"6","7":"7","8":"8","9":"9","0":"0","!":"!","“":'"',"”":'"',"#":"#","$":"$","%":"%","&":"&","’":"'","(":"(",")":")","=":"=","~":"~","|":"|","@":"@","‘":"`","+":"+","*":"*",";":";",":":":","<":"<",">":">","、":",","。":".","/":"/","?":"?","_":"_","・":"・","「":'"',"」":'"',"{":"{","}":"}","¥":"\\","^":"^",あ:"a",い:"i",う:"u",え:"e",お:"o",ア:"a",イ:"i",ウ:"u",エ:"e",オ:"o",か:"ka",き:"ki",く:"ku",け:"ke",こ:"ko",カ:"ka",キ:"ki",ク:"ku",ケ:"ke",コ:"ko",さ:"sa",し:"shi",す:"su",せ:"se",そ:"so",サ:"sa",シ:"shi",ス:"su",セ:"se",ソ:"so",た:"ta",ち:"chi",つ:"tsu",て:"te",と:"to",タ:"ta",チ:"chi",ツ:"tsu",テ:"te",ト:"to",な:"na",に:"ni",ぬ:"nu",ね:"ne",の:"no",ナ:"na",ニ:"ni",ヌ:"nu",ネ:"ne",ノ:"no",は:"ha",ひ:"hi",ふ:"fu",へ:"he",ほ:"ho",ハ:"ha",ヒ:"hi",フ:"fu",ヘ:"he",ホ:"ho",ま:"ma",み:"mi",む:"mu",め:"me",も:"mo",マ:"ma",ミ:"mi",ム:"mu",メ:"me",モ:"mo",や:"ya",ゆ:"yu",よ:"yo",ヤ:"ya",ユ:"yu",ヨ:"yo",ら:"ra",り:"ri",る:"ru",れ:"re",ろ:"ro",ラ:"ra",リ:"ri",ル:"ru",レ:"re",ロ:"ro",わ:"wa",ゐ:"i",ゑ:"e",を:"o",ワ:"wa",ヰ:"i",ヱ:"e",ヲ:"o",が:"ga",ぎ:"gi",ぐ:"gu",げ:"ge",ご:"go",ガ:"ga",ギ:"gi",グ:"gu",ゲ:"ge",ゴ:"go",ざ:"za",じ:"ji",ず:"zu",ぜ:"ze",ぞ:"zo",ザ:"za",ジ:"ji",ズ:"zu",ゼ:"ze",ゾ:"zo",だ:"da",ぢ:"ji",づ:"zu",で:"de",ど:"do",ダ:"da",ヂ:"ji",ヅ:"zu",デ:"de",ド:"do",ば:"ba",び:"bi",ぶ:"bu",べ:"be",ぼ:"bo",バ:"ba",ビ:"bi",ブ:"bu",ベ:"be",ボ:"bo",ぱ:"pa",ぴ:"pi",ぷ:"pu",ぺ:"pe",ぽ:"po",パ:"pa",ピ:"pi",プ:"pu",ペ:"pe",ポ:"po",きゃ:"kya",きゅ:"kyu",きょ:"kyo",しゃ:"sha",しゅ:"shu",しょ:"sho",ちゃ:"cha",ちゅ:"chu",ちょ:"cho",にゃ:"nya",にゅ:"nyu",にょ:"nyo",ひゃ:"hya",ひゅ:"hyu",ひょ:"hyo",みゃ:"mya",みゅ:"myu",みょ:"myo",りゃ:"rya",りゅ:"ryu",りょ:"ryo",キャ:"kya",キュ:"kyu",キョ:"kyo",シャ:"sha",シュ:"shu",ショ:"sho",チャ:"cha",チュ:"chu",チョ:"cho",ニャ:"nya",ニュ:"nyu",ニョ:"nyo",ヒャ:"hya",ヒュ:"hyu",ヒョ:"hyo",ミャ:"mya",ミュ:"myu",ミョ:"myo",リャ:"rya",リュ:"ryu",リョ:"ryo",ぎゃ:"gya",ぎゅ:"gyu",ぎょ:"gyo",じゃ:"ja",じゅ:"ju",じょ:"jo",ぢゃ:"ja",ぢゅ:"ju",ぢょ:"jo",びゃ:"bya",びゅ:"byu",びょ:"byo",ぴゃ:"pya",ぴゅ:"pyu",ぴょ:"pyo",ギャ:"gya",ギュ:"gyu",ギョ:"gyo",ジャ:"ja",ジュ:"ju",ジョ:"jo",ヂャ:"ja",ヂュ:"ju",ヂョ:"jo",ビャ:"bya",ビュ:"byu",ビョ:"byo",ピャ:"pya",ピュ:"pyu",ピョ:"pyo",ぁ:"a",ぃ:"i",ぅ:"u",ぇ:"e",ぉ:"o",ゃ:"ya",ゅ:"yu",ょ:"yo",ゎ:"wa",ァ:"a",ィ:"i",ゥ:"u",ェ:"e",ォ:"o",ャ:"ya",ュ:"yu",ョ:"yo",ヮ:"wa",ヵ:"ka",ヶ:"ke",ん:"n",ン:"n"," ":" ",ヴ:"b"},hepburn:{"1":"1","2":"2","3":"3","4":"4","5":"5","6":"6","7":"7","8":"8","9":"9","0":"0","!":"!","“":'"',"”":'"',"#":"#","$":"$","%":"%","&":"&","’":"'","(":"(",")":")","=":"=","~":"~","|":"|","@":"@","‘":"`","+":"+","*":"*",";":";",":":":","<":"<",">":">","、":",","。":".","/":"/","?":"?","_":"_","・":"・","「":'"',"」":'"',"{":"{","}":"}","¥":"\\","^":"^",あ:"a",い:"i",う:"u",え:"e",お:"o",ア:"a",イ:"i",ウ:"u",エ:"e",オ:"o",か:"ka",き:"ki",く:"ku",け:"ke",こ:"ko",カ:"ka",キ:"ki",ク:"ku",ケ:"ke",コ:"ko",さ:"sa",し:"shi",す:"su",せ:"se",そ:"so",サ:"sa",シ:"shi",ス:"su",セ:"se",ソ:"so",た:"ta",ち:"chi",つ:"tsu",て:"te",と:"to",タ:"ta",チ:"chi",ツ:"tsu",テ:"te",ト:"to",な:"na",に:"ni",ぬ:"nu",ね:"ne",の:"no",ナ:"na",ニ:"ni",ヌ:"nu",ネ:"ne",ノ:"no",は:"ha",ひ:"hi",ふ:"fu",へ:"he",ほ:"ho",ハ:"ha",ヒ:"hi",フ:"fu",ヘ:"he",ホ:"ho",ま:"ma",み:"mi",む:"mu",め:"me",も:"mo",マ:"ma",ミ:"mi",ム:"mu",メ:"me",モ:"mo",や:"ya",ゆ:"yu",よ:"yo",ヤ:"ya",ユ:"yu",ヨ:"yo",ら:"ra",り:"ri",る:"ru",れ:"re",ろ:"ro",ラ:"ra",リ:"ri",ル:"ru",レ:"re",ロ:"ro",わ:"wa",ゐ:"i",ゑ:"e",を:"o",ワ:"wa",ヰ:"i",ヱ:"e",ヲ:"o",が:"ga",ぎ:"gi",ぐ:"gu",げ:"ge",ご:"go",ガ:"ga",ギ:"gi",グ:"gu",ゲ:"ge",ゴ:"go",ざ:"za",じ:"ji",ず:"zu",ぜ:"ze",ぞ:"zo",ザ:"za",ジ:"ji",ズ:"zu",ゼ:"ze",ゾ:"zo",だ:"da",ぢ:"ji",づ:"zu",で:"de",ど:"do",ダ:"da",ヂ:"ji",ヅ:"zu",デ:"de",ド:"do",ば:"ba",び:"bi",ぶ:"bu",べ:"be",ぼ:"bo",バ:"ba",ビ:"bi",ブ:"bu",ベ:"be",ボ:"bo",ぱ:"pa",ぴ:"pi",ぷ:"pu",ぺ:"pe",ぽ:"po",パ:"pa",ピ:"pi",プ:"pu",ペ:"pe",ポ:"po",きゃ:"kya",きゅ:"kyu",きょ:"kyo",しゃ:"sha",しゅ:"shu",しょ:"sho",ちゃ:"cha",ちゅ:"chu",ちょ:"cho",にゃ:"nya",にゅ:"nyu",にょ:"nyo",ひゃ:"hya",ひゅ:"hyu",ひょ:"hyo",みゃ:"mya",みゅ:"myu",みょ:"myo",りゃ:"rya",りゅ:"ryu",りょ:"ryo",キャ:"kya",キュ:"kyu",キョ:"kyo",シャ:"sha",シュ:"shu",ショ:"sho",チャ:"cha",チュ:"chu",チョ:"cho",ニャ:"nya",ニュ:"nyu",ニョ:"nyo",ヒャ:"hya",ヒュ:"hyu",ヒョ:"hyo",ミャ:"mya",ミュ:"myu",ミョ:"myo",リャ:"rya",リュ:"ryu",リョ:"ryo",ぎゃ:"gya",ぎゅ:"gyu",ぎょ:"gyo",じゃ:"ja",じゅ:"ju",じょ:"jo",ぢゃ:"ja",ぢゅ:"ju",ぢょ:"jo",びゃ:"bya",びゅ:"byu",びょ:"byo",ぴゃ:"pya",ぴゅ:"pyu",ぴょ:"pyo",ギャ:"gya",ギュ:"gyu",ギョ:"gyo",ジャ:"ja",ジュ:"ju",ジョ:"jo",ヂャ:"ja",ヂュ:"ju",ヂョ:"jo",ビャ:"bya",ビュ:"byu",ビョ:"byo",ピャ:"pya",ピュ:"pyu",ピョ:"pyo",ぁ:"a",ぃ:"i",ぅ:"u",ぇ:"e",ぉ:"o",ゃ:"ya",ゅ:"yu",ょ:"yo",ゎ:"wa",ァ:"a",ィ:"i",ゥ:"u",ェ:"e",ォ:"o",ャ:"ya",ュ:"yu",ョ:"yo",ヮ:"wa",ヵ:"ka",ヶ:"ke",ん:"n",ン:"n"," ":" ",いぇ:"ye",うぃ:"wi",うぇ:"we",うぉ:"wo",きぇ:"kye",くぁ:"kwa",くぃ:"kwi",くぇ:"kwe",くぉ:"kwo",ぐぁ:"gwa",ぐぃ:"gwi",ぐぇ:"gwe",ぐぉ:"gwo",イェ:"ye",ウィ:"wi",ウェ:"we",ウォ:"wo",ヴ:"vu",ヴァ:"va",ヴィ:"vi",ヴェ:"ve",ヴォ:"vo",ヴュ:"vyu",ヴョ:"vyo",キェ:"kya",クァ:"kwa",クィ:"kwi",クェ:"kwe",クォ:"kwo",グァ:"gwa",グィ:"gwi",グェ:"gwe",グォ:"gwo",しぇ:"she",じぇ:"je",ちぇ:"che",つぁ:"tsa",つぃ:"tsi",つぇ:"tse",つぉ:"tso",てぃ:"ti",てゅ:"tyu",でぃ:"di",でゅ:"dyu",とぅ:"tu",どぅ:"du",にぇ:"nye",ひぇ:"hye",ふぁ:"fa",ふぃ:"fi",ふぇ:"fe",ふぉ:"fo",ふゅ:"fyu",ふょ:"fyo",シェ:"she",ジェ:"je",チェ:"che",ツァ:"tsa",ツィ:"tsi",ツェ:"tse",ツォ:"tso",ティ:"ti",テュ:"tyu",ディ:"di",デュ:"dyu",トゥ:"tu",ドゥ:"du",ニェ:"nye",ヒェ:"hye",ファ:"fa",フィ:"fi",フェ:"fe",フォ:"fo",フュ:"fyu",フョ:"fyo"}},O=function(n=""){const r=(n[0]||"").charCodeAt(0);return r>=N&&r<=pr},M=function(n=""){const r=(n[0]||"").charCodeAt(0);return r>=_r&&r<=mr},P=function(n=""){return O(n)||M(n)},j=function(n=""){const r=([...n][0]||"").codePointAt(0);return r>=kr&&r<=Ar||r>=xr&&r<=Cr||r>=Fr&&r<=Dr},tr=function(n=""){return P(n)||j(n)},er=function(n=""){for(let r=0;r<n.length;r++)if(O(n[r]))return!0;return!1},ar=function(n=""){for(let r=0;r<n.length;r++)if(M(n[r]))return!0;return!1},Ur=function(n=""){for(let r=0;r<n.length;r++)if(P(n[r]))return!0;return!1},ir=function(n=""){n=[...n];for(let r=0;r<n.length;r++)if(j(n[r]))return!0;return!1},X=function(n=""){n=[...n];for(let r=0;r<n.length;r++)if(tr(n[r]))return!0;return!1},B=function(n=""){return[...n].map(r=>r.codePointAt(0)>=br&&r.codePointAt(0)<=wr?String.fromCharCode(r.charCodeAt(0)+Tr):r).join("")},R=function(n=""){return[...n].map(r=>r.codePointAt(0)>=dr&&r.codePointAt(0)<=vr?String.fromCharCode(r.charCodeAt(0)+Sr):r).join("")},$=function(n="",r){r=r||U.HEPBURN;const t=/(っ|ッ)([bcdfghijklmnopqrstuvwyz])/gm,a=/っ|ッ/gm;let e=0,i,s,o="";if(r===U.PASSPORT&&(n=n.replace(/ー/gm,"")),r===U.NIPPON||r===U.HEPBURN){const m=new RegExp(/(ん|ン)(?=あ|い|う|え|お|ア|イ|ウ|エ|オ|ぁ|ぃ|ぅ|ぇ|ぉ|ァ|ィ|ゥ|ェ|ォ|や|ゆ|よ|ヤ|ユ|ヨ|ゃ|ゅ|ょ|ャ|ュ|ョ)/g);let A;const b=[];for(;(A=m.exec(n))!==null;)b.push(A.index+1);if(b.length!==0){let _="";for(let C=0;C<b.length;C++)C===0?_+=`${n.slice(0,b[C])}'`:_+=`${n.slice(b[C-1],b[C])}'`;_+=n.slice(b[b.length-1]),n=_}}const u=n.length;for(;e<=u;)(s=rr[r][n.substring(e,e+2)])?(o+=s,e+=2):(o+=(s=rr[r][i=n.substring(e,e+1)])?s:i,e+=1);return o=o.replace(t,"$2$2"),(r===U.PASSPORT||r===U.HEPBURN)&&(o=o.replace(/cc/gm,"tc")),o=o.replace(a,"tsu"),(r===U.PASSPORT||r===U.HEPBURN)&&(o=o.replace(/nm/gm,"mm"),o=o.replace(/nb/gm,"mb"),o=o.replace(/np/gm,"mp")),r===U.NIPPON&&(o=o.replace(/aー/gm,"â"),o=o.replace(/iー/gm,"î"),o=o.replace(/uー/gm,"û"),o=o.replace(/eー/gm,"ê"),o=o.replace(/oー/gm,"ô")),r===U.HEPBURN&&(o=o.replace(/aー/gm,"ā"),o=o.replace(/iー/gm,"ī"),o=o.replace(/uー/gm,"ū"),o=o.replace(/eー/gm,"ē"),o=o.replace(/oー/gm,"ō")),o},Br=function(n=""){n=[...n];let r=!1,t=!1;for(let a=0;a<n.length;a++)j(n[a])?r=!0:(O(n[a])||M(n[a]))&&(t=!0);return r&&t?1:r?0:t?2:3},Ir=function(n){for(let r=0;r<n.length;r++)X(n[r].surface_form)?n[r].reading?er(n[r].reading)&&(n[r].reading=R(n[r].reading)):n[r].surface_form.split("").every(P)?n[r].reading=R(n[r].surface_form):n[r].reading=n[r].surface_form:n[r].reading=n[r].surface_form;for(let r=0;r<n.length;r++)n[r].pos&&n[r].pos==="助動詞"&&(n[r].surface_form==="う"||n[r].surface_form==="ウ")&&r-1>=0&&n[r-1].pos&&n[r-1].pos==="動詞"&&(n[r-1].surface_form+="う",n[r-1].pronunciation?n[r-1].pronunciation+="ー":n[r-1].pronunciation=`${n[r-1].reading}ー`,n[r-1].reading+="ウ",n.splice(r,1),r--);for(let r=0;r<n.length;r++)n[r].pos&&(n[r].pos==="動詞"||n[r].pos==="形容詞")&&n[r].surface_form.length>1&&(n[r].surface_form[n[r].surface_form.length-1]==="っ"||n[r].surface_form[n[r].surface_form.length-1]==="ッ")&&r+1<n.length&&(n[r].surface_form+=n[r+1].surface_form,n[r].pronunciation?n[r].pronunciation+=n[r+1].pronunciation:n[r].pronunciation=`${n[r].reading}${n[r+1].reading}`,n[r].reading+=n[r+1].reading,n.splice(r+1,1),r--);return n},Er=function(n){return B(n)},jr=function(n){return R(n)},Nr=function(n,r){return $(n,r)};class H{constructor(r,t,a,e,i,s,o,u){this.name=r,this.cost=t,this.start_pos=a,this.length=e,this.left_id=s,this.right_id=o,this.prev=null,this.surface_form=u,i==="BOS"?this.shortest_cost=0:this.shortest_cost=Number.MAX_VALUE,this.type=i}}class Rr{constructor(){this.nodes_end_at=[],this.nodes_end_at[0]=[new H(-1,0,0,0,"BOS",0,0,"")],this.eos_pos=1}append(r){var t=r.start_pos+r.length-1;this.eos_pos<t&&(this.eos_pos=t);var a=this.nodes_end_at[t];a==null&&(a=[]),a.push(r),this.nodes_end_at[t]=a}appendEos(){var r=this.nodes_end_at.length;this.eos_pos++,this.nodes_end_at[r]=[new H(-1,0,this.eos_pos,0,"EOS",0,0,"")]}}class K{constructor(r){this.str=r,this.index_mapping=[];for(var t=0;t<r.length;t++){var a=r.charAt(t);this.index_mapping.push(t),K.isSurrogatePair(a)&&t++}this.length=this.index_mapping.length}static isSurrogatePair(r){var t=r.charCodeAt(0);return t>=55296&&t<=56319}slice(r){if(this.index_mapping.length<=r)return"";var t=this.index_mapping[r];return this.str.slice(t)}charAt(r){if(this.str.length<=r)return"";var t=this.index_mapping[r],a=this.index_mapping[r+1];return a==null?this.str.slice(t):this.str.slice(t,a)}charCodeAt(r){if(this.index_mapping.length<=r)return NaN;var t=this.index_mapping[r],a=this.str.charCodeAt(t),e;return a>=55296&&a<=56319&&t<this.str.length&&(e=this.str.charCodeAt(t+1),e>=56320&&e<=57343)?(a-55296)*1024+e-56320+65536:a}toString(){return this.str}}class zr{constructor(r){this.trie=r.trie,this.token_info_dictionary=r.token_info_dictionary,this.unknown_dictionary=r.unknown_dictionary}build(r){for(var t=new Rr,a=new K(r),e,i,s,o,u,m=0;m<a.length;m++){for(var A=a.slice(m),b=this.trie.commonPrefixSearch(A),_=0;_<b.length;_++){i=b[_].v,e=b[_].k;for(var C=this.token_info_dictionary.target_map[i],E=0;E<C.length;E++){var k=parseInt(C[E]);s=this.token_info_dictionary.dictionary.getShort(k),o=this.token_info_dictionary.dictionary.getShort(k+2),u=this.token_info_dictionary.dictionary.getShort(k+4),t.append(new H(k,u,m+1,e.length,"KNOWN",s,o,e))}}var T=new K(A),Y=new K(T.charAt(0)),f=this.unknown_dictionary.lookup(Y.toString());if(b==null||b.length===0||f.is_always_invoke===1){if(e=Y,f.is_grouping===1&&1<T.length)for(var y=1;y<T.length;y++){var d=T.charAt(y),g=this.unknown_dictionary.lookup(d);if(f.class_name!==g.class_name)break;e+=d}for(var c=this.unknown_dictionary.target_map[f.class_id],l=0;l<c.length;l++){var h=parseInt(c[l]);s=this.unknown_dictionary.dictionary.getShort(h),o=this.unknown_dictionary.dictionary.getShort(h+2),u=this.unknown_dictionary.dictionary.getShort(h+4),t.append(new H(h,u,m+1,e.length,"UNKNOWN",s,o,e.toString()))}}}return t.appendEos(),t}}class Lr{constructor(r){this.connection_costs=r}search(r){return r=this.forward(r),this.backward(r)}forward(r){var t,a,e;for(t=1;t<=r.eos_pos;t++){var i=r.nodes_end_at[t];if(i!=null)for(a=0;a<i.length;a++){var s=i[a],o=Number.MAX_VALUE,u,m=r.nodes_end_at[s.start_pos-1];if(m!=null){for(e=0;e<m.length;e++){var A=m[e],b;s.left_id==null||A.right_id==null?(console.log("Left or right is null"),b=0):b=this.connection_costs.get(A.right_id,s.left_id);var _=A.shortest_cost+b+s.cost;_<o&&(u=A,o=_)}s.prev=u,s.shortest_cost=o}}}return r}backward(r){var t=[],a=r.nodes_end_at[r.nodes_end_at.length-1][0],e=a.prev;if(e==null)return[];for(;e.type!=="BOS";){if(t.push(e),e.prev==null)return[];e=e.prev}return t.reverse()}}class Mr{constructor(){}formatEntry(r,t,a,e){var i={};return i.word_id=r,i.word_type=a,i.word_position=t,i.surface_form=e[0],i.pos=e[1],i.pos_detail_1=e[2],i.pos_detail_2=e[3],i.pos_detail_3=e[4],i.conjugated_type=e[5],i.conjugated_form=e[6],i.basic_form=e[7],i.reading=e[8],i.pronunciation=e[9],i}formatUnknownEntry(r,t,a,e,i){var s={};return s.word_id=r,s.word_type=a,s.word_position=t,s.surface_form=i,s.pos=e[1],s.pos_detail_1=e[2],s.pos_detail_2=e[3],s.pos_detail_3=e[4],s.conjugated_type=e[5],s.conjugated_form=e[6],s.basic_form=e[7],s}}var Kr=/、|。/;class W{constructor(r){this.token_info_dictionary=r.token_info_dictionary,this.unknown_dictionary=r.unknown_dictionary,this.viterbi_builder=new zr(r),this.viterbi_searcher=new Lr(r.connection_costs),this.formatter=new Mr}static splitByPunctuation(r){for(var t=[],a=r;a!=="";){var e=a.search(Kr);if(e<0){t.push(a);break}t.push(a.substring(0,e+1)),a=a.substring(e+1)}return t}tokenize(r){for(var t=W.splitByPunctuation(r),a=[],e=0;e<t.length;e++){var i=t[e];this.tokenizeForSentence(i,a)}return a}tokenizeForSentence(r,t){t==null&&(t=[]);var a=this.getLattice(r),e=this.viterbi_searcher.search(a),i=0;t.length>0&&(i=t[t.length-1].word_position);for(var s=0;s<e.length;s++){var o=e[s],u,m,A;o.type==="KNOWN"?(A=this.token_info_dictionary.getFeatures(o.name),A==null?m=[]:m=A.split(","),u=this.formatter.formatEntry(o.name,i+o.start_pos,o.type,m)):o.type==="UNKNOWN"?(A=this.unknown_dictionary.getFeatures(o.name),A==null?m=[]:m=A.split(","),u=this.formatter.formatUnknownEntry(o.name,i+o.start_pos,o.type,m,o.surface_form)):u=this.formatter.formatEntry(o.name,i+o.start_pos,o.type,[]),t.push(u)}return t}getLattice(r){return this.viterbi_builder.build(r)}}function Or(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var nr={exports:{}};(function(n){(function(){var r="\0",t=0,a=0,e=-1,i=!0,s=!0,o=4,u=4,m=2,A=function(f){f==null&&(f=1024);var y=function(p,v,w){for(var F=v;F<w;F++)p[F]=-F+1;if(0<h.array[h.array.length-1]){for(var L=h.array.length-2;0<h.array[L];)L--;p[v]=-L}},d=function(p,v,w){for(var F=v;F<w;F++)p[F]=-F-1},g=function(p){var v=p*m,w=C(l.signed,l.bytes,v);y(w,l.array.length,v),w.set(l.array),l.array=null,l.array=w;var F=C(h.signed,h.bytes,v);d(F,h.array.length,v),F.set(h.array),h.array=null,h.array=F},c=a+1,l={signed:i,bytes:o,array:C(i,o,f)},h={signed:s,bytes:u,array:C(s,u,f)};return l.array[a]=1,h.array[a]=a,y(l.array,a+1,l.array.length),d(h.array,a+1,h.array.length),{getBaseBuffer:function(){return l.array},getCheckBuffer:function(){return h.array},loadBaseBuffer:function(p){return l.array=p,this},loadCheckBuffer:function(p){return h.array=p,this},size:function(){return Math.max(l.array.length,h.array.length)},getBase:function(p){return l.array.length-1<p?-p+1:l.array[p]},getCheck:function(p){return h.array.length-1<p?-p-1:h.array[p]},setBase:function(p,v){l.array.length-1<p&&g(p),l.array[p]=v},setCheck:function(p,v){h.array.length-1<p&&g(p),h.array[p]=v},setFirstUnusedNode:function(p){c=p},getFirstUnusedNode:function(){return c},shrink:function(){for(var p=this.size()-1;!(0<=h.array[p]);)p--;l.array=l.array.subarray(0,p+2),h.array=h.array.subarray(0,p+2)},calc:function(){for(var p=0,v=h.array.length,w=0;w<v;w++)h.array[w]<0&&p++;return{all:v,unused:p,efficiency:(v-p)/v}},dump:function(){var p="",v="",w;for(w=0;w<l.array.length;w++)p=p+" "+this.getBase(w);for(w=0;w<h.array.length;w++)v=v+" "+this.getCheck(w);return console.log("base:"+p),console.log("chck:"+v),"base:"+p+" chck:"+v}}};function b(f){this.bc=A(f),this.keys=[]}b.prototype.append=function(f,y){return this.keys.push({k:f,v:y}),this},b.prototype.build=function(f,y){if(f==null&&(f=this.keys),f==null)return new _(this.bc);y==null&&(y=!1);var d=f.map(function(g){return{k:k(g.k+r),v:g.v}});return y?this.keys=d:this.keys=d.sort(function(g,c){for(var l=g.k,h=c.k,p=Math.min(l.length,h.length),v=0;v<p;v++)if(l[v]!==h[v])return l[v]-h[v];return l.length-h.length}),d=null,this._build(a,0,0,this.keys.length),new _(this.bc)},b.prototype._build=function(f,y,d,g){var c=this.getChildrenInfo(y,d,g),l=this.findAllocatableBase(c);this.setBC(f,c,l);for(var h=0;h<c.length;h=h+3){var p=c[h];if(p!==t){var v=c[h+1],w=c[h+2],F=l+p;this._build(F,y+1,v,w)}}},b.prototype.getChildrenInfo=function(f,y,d){var g=this.keys[y].k[f],c=0,l=new Int32Array(d*3);l[c++]=g,l[c++]=y;for(var h=y,p=y;h<y+d;h++){var v=this.keys[h].k[f];g!==v&&(l[c++]=h-p,l[c++]=v,l[c++]=h,g=v,p=h)}return l[c++]=h-p,l=l.subarray(0,c),l},b.prototype.setBC=function(f,y,d){var g=this.bc;g.setBase(f,d);var c;for(c=0;c<y.length;c=c+3){var l=y[c],h=d+l,p=-g.getBase(h),v=-g.getCheck(h);h!==g.getFirstUnusedNode()?g.setCheck(p,-v):g.setFirstUnusedNode(v),g.setBase(v,-p);var w=f;if(g.setCheck(h,w),l===t){var F=y[c+1],L=this.keys[F].v;L==null&&(L=0);var Qr=-L-1;g.setBase(h,Qr)}}},b.prototype.findAllocatableBase=function(f){for(var y=this.bc,d,g=y.getFirstUnusedNode();;){if(d=g-f[0],d<0){g=-y.getCheck(g);continue}for(var c=!0,l=0;l<f.length;l=l+3){var h=f[l],p=d+h;if(!this.isUnusedNode(p)){g=-y.getCheck(g),c=!1;break}}if(c)return d}},b.prototype.isUnusedNode=function(f){var y=this.bc,d=y.getCheck(f);return f===a?!1:d<0};function _(f){this.bc=f,this.bc.shrink()}_.prototype.contain=function(f){var y=this.bc;f+=r;for(var d=k(f),g=a,c=e,l=0;l<d.length;l++){var h=d[l];if(c=this.traverse(g,h),c===e)return!1;if(y.getBase(c)<=0)return!0;g=c}return!1},_.prototype.lookup=function(f){f+=r;for(var y=k(f),d=a,g=e,c=0;c<y.length;c++){var l=y[c];if(g=this.traverse(d,l),g===e)return e;d=g}var h=this.bc.getBase(g);return h<=0?-h-1:e},_.prototype.commonPrefixSearch=function(f){for(var y=k(f),d=a,g=e,c=[],l=0;l<y.length;l++){var h=y[l];if(g=this.traverse(d,h),g!==e){d=g;var p=this.traverse(g,t);if(p!==e){var v=this.bc.getBase(p),w={};v<=0&&(w.v=-v-1),w.k=T(E(y,0,l+1)),c.push(w)}continue}else break}return c},_.prototype.traverse=function(f,y){var d=this.bc.getBase(f)+y;return this.bc.getCheck(d)===f?d:e},_.prototype.size=function(){return this.bc.size()},_.prototype.calc=function(){return this.bc.calc()},_.prototype.dump=function(){return this.bc.dump()};var C=function(f,y,d){if(f)switch(y){case 1:return new Int8Array(d);case 2:return new Int16Array(d);case 4:return new Int32Array(d);default:throw new RangeError("Invalid newArray parameter element_bytes:"+y)}else switch(y){case 1:return new Uint8Array(d);case 2:return new Uint16Array(d);case 4:return new Uint32Array(d);default:throw new RangeError("Invalid newArray parameter element_bytes:"+y)}},E=function(f,y,d){var g=new ArrayBuffer(d),c=new Uint8Array(g,0,d),l=f.subarray(y,d);return c.set(l),c},k=function(f){for(var y=new Uint8Array(new ArrayBuffer(f.length*4)),d=0,g=0;d<f.length;){var c,l=f.charCodeAt(d++);if(l>=55296&&l<=56319){var h=l,p=f.charCodeAt(d++);if(p>=56320&&p<=57343)c=(h-55296)*1024+65536+(p-56320);else return null}else c=l;c<128?y[g++]=c:c<2048?(y[g++]=c>>>6|192,y[g++]=c&63|128):c<65536?(y[g++]=c>>>12|224,y[g++]=c>>6&63|128,y[g++]=c&63|128):c<1<<21&&(y[g++]=c>>>18|240,y[g++]=c>>12&63|128,y[g++]=c>>6&63|128,y[g++]=c&63|128)}return y.subarray(0,g)},T=function(f){for(var y="",d,g,c,l,h,p,v,w=0;w<f.length;)g=f[w++],g<128?d=g:g>>5===6?(c=f[w++],d=(g&31)<<6|c&63):g>>4===14?(c=f[w++],l=f[w++],d=(g&15)<<12|(c&63)<<6|l&63):(c=f[w++],l=f[w++],h=f[w++],d=(g&7)<<18|(c&63)<<12|(l&63)<<6|h&63),d<65536?y+=String.fromCharCode(d):(d-=65536,p=55296|d>>10,v=56320|d&1023,y+=String.fromCharCode(p,v));return y},Y={builder:function(f){return new b(f)},load:function(f,y){var d=A(0);return d.loadBaseBuffer(f),d.loadCheckBuffer(y),new _(d)}};n.exports=Y})()})(nr);var Pr=nr.exports;const q=Or(Pr);var $r=function(n){for(var r=new Uint8Array(n.length*4),t=0,a=0;t<n.length;){var e,i=n.charCodeAt(t++);if(i>=55296&&i<=56319){var s=i,o=n.charCodeAt(t++);if(o>=56320&&o<=57343)e=(s-55296)*1024+65536+(o-56320);else return null}else e=i;e<128?r[a++]=e:e<2048?(r[a++]=e>>>6|192,r[a++]=e&63|128):e<65536?(r[a++]=e>>>12|224,r[a++]=e>>6&63|128,r[a++]=e&63|128):e<1<<21&&(r[a++]=e>>>18|240,r[a++]=e>>12&63|128,r[a++]=e>>6&63|128,r[a++]=e&63|128)}return r.subarray(0,a)},Hr=function(n){for(var r="",t,a,e,i,s,o,u,m=0;m<n.length;)a=n[m++],a<128?t=a:a>>5===6?(e=n[m++],t=(a&31)<<6|e&63):a>>4===14?(e=n[m++],i=n[m++],t=(a&15)<<12|(e&63)<<6|i&63):(e=n[m++],i=n[m++],s=n[m++],t=(a&7)<<18|(e&63)<<12|(i&63)<<6|s&63),t<65536?r+=String.fromCharCode(t):(t-=65536,o=55296|t>>10,u=56320|t&1023,r+=String.fromCharCode(o,u));return r};class I{constructor(r){var t;if(r==null)t=1024*1024;else if(typeof r=="number")t=r;else if(r instanceof Uint8Array){this.buffer=r,this.position=0;return}else throw typeof r+" is invalid parameter type for ByteBuffer constructor";this.buffer=new Uint8Array(t),this.position=0}size(){return this.buffer.length}reallocate(){var r=new Uint8Array(this.buffer.length*2);r.set(this.buffer),this.buffer=r}shrink(){return this.buffer=this.buffer.subarray(0,this.position),this.buffer}put(r){this.buffer.length<this.position+1&&this.reallocate(),this.buffer[this.position++]=r}get(r){return r==null&&(r=this.position,this.position+=1),this.buffer.length<r+1?0:this.buffer[r]}putShort(r){if(65535<r)throw r+" is over short value";var t=255&r,a=(65280&r)>>8;this.put(t),this.put(a)}getShort(r){if(r==null&&(r=this.position,this.position+=2),this.buffer.length<r+2)return 0;var t=this.buffer[r],a=this.buffer[r+1],e=(a<<8)+t;return e&32768&&(e=-(e-1^65535)),e}putInt(r){if(4294967295<r)throw r+" is over integer value";var t=255&r,a=(65280&r)>>8,e=(16711680&r)>>16,i=(4278190080&r)>>24;this.put(t),this.put(a),this.put(e),this.put(i)}getInt(r){if(r==null&&(r=this.position,this.position+=4),this.buffer.length<r+4)return 0;var t=this.buffer[r],a=this.buffer[r+1],e=this.buffer[r+2],i=this.buffer[r+3];return(i<<24)+(e<<16)+(a<<8)+t}readInt(){var r=this.position;return this.position+=4,this.getInt(r)}putString(r){for(var t=$r(r),a=0;a<t.length;a++)this.put(t[a]);this.put(0)}getString(r){var t=[],a;for(r==null&&(r=this.position);!(this.buffer.length<r+1||(a=this.get(r++),a===0));)t.push(a);return this.position=r,Hr(t)}}class Z{constructor(){this.dictionary=new I(10*1024*1024),this.target_map={},this.pos_buffer=new I(10*1024*1024)}buildDictionary(r){for(var t={},a=0;a<r.length;a++){var e=r[a];if(!(e.length<4)){var i=e[0],s=e[1],o=e[2],u=e[3],m=e.slice(4).join(",");(!isFinite(s)||!isFinite(o)||!isFinite(u))&&console.log(e);var A=this.put(s,o,u,i,m);t[A]=i}}return this.dictionary.shrink(),this.pos_buffer.shrink(),t}put(r,t,a,e,i){var s=this.dictionary.position,o=this.pos_buffer.position;return this.dictionary.putShort(r),this.dictionary.putShort(t),this.dictionary.putShort(a),this.dictionary.putInt(o),this.pos_buffer.putString(e+","+i),s}addMapping(r,t){var a=this.target_map[r];a==null&&(a=[]),a.push(t),this.target_map[r]=a}targetMapToBuffer(){var r=new I,t=Object.keys(this.target_map).length;r.putInt(t);for(var a in this.target_map){var e=this.target_map[a],i=e.length;r.putInt(parseInt(a)),r.putInt(i);for(var s=0;s<e.length;s++)r.putInt(e[s])}return r.shrink()}loadDictionary(r){return this.dictionary=new I(r),this}loadPosVector(r){return this.pos_buffer=new I(r),this}loadTargetMap(r){var t=new I(r);for(t.position=0,this.target_map={},t.readInt();!(t.buffer.length<t.position+1);)for(var a=t.readInt(),e=t.readInt(),i=0;i<e;i++){var s=t.readInt();this.addMapping(a,s)}return this}getFeatures(r){var t=parseInt(r);if(isNaN(t))return"";var a=this.dictionary.getInt(t+6);return this.pos_buffer.getString(a)}}class or{constructor(r,t){this.forward_dimension=r,this.backward_dimension=t,this.buffer=new Int16Array(r*t+2),this.buffer[0]=r,this.buffer[1]=t}put(r,t,a){var e=r*this.backward_dimension+t+2;if(this.buffer.length<e+1)throw"ConnectionCosts buffer overflow";this.buffer[e]=a}get(r,t){var a=r*this.backward_dimension+t+2;if(this.buffer.length<a+1)throw"ConnectionCosts buffer overflow";return this.buffer[a]}loadConnectionCosts(r){this.forward_dimension=r[0],this.backward_dimension=r[1],this.buffer=r}}class sr{constructor(r,t,a,e,i){this.class_id=r,this.class_name=t,this.is_always_invoke=a,this.is_grouping=e,this.max_length=i}}class G{constructor(){this.map=[],this.lookup_table={}}static load(r){for(var t=new G,a=[],e=new I(r);e.position+1<e.size();){var i=a.length,s=e.get(),o=e.get(),u=e.getInt(),m=e.getString();a.push(new sr(i,m,s,o,u))}return t.init(a),t}init(r){if(r!=null)for(var t=0;t<r.length;t++){var a=r[t];this.map[t]=a,this.lookup_table[a.class_name]=t}}getCharacterClass(r){return this.map[r]}lookup(r){var t=this.lookup_table[r];return t??null}toBuffer(){for(var r=new I,t=0;t<this.map.length;t++){var a=this.map[t];r.put(a.is_always_invoke),r.put(a.is_grouping),r.putInt(a.max_length),r.putString(a.class_name)}return r.shrink(),r.buffer}}var Q="DEFAULT";class z{constructor(){this.character_category_map=new Uint8Array(65536),this.compatible_category_map=new Uint32Array(65536),this.invoke_definition_map=null}static load(r,t,a){var e=new z;return e.character_category_map=r,e.compatible_category_map=t,e.invoke_definition_map=G.load(a),e}static parseCharCategory(r,t){var a=t[1],e=parseInt(t[2]),i=parseInt(t[3]),s=parseInt(t[4]);if(!isFinite(e)||e!==0&&e!==1)return console.log("char.def parse error. INVOKE is 0 or 1 in:"+e),null;if(!isFinite(i)||i!==0&&i!==1)return console.log("char.def parse error. GROUP is 0 or 1 in:"+i),null;if(!isFinite(s)||s<0)return console.log("char.def parse error. LENGTH is 1 to n:"+s),null;var o=e===1,u=i===1;return new sr(r,a,o,u,s)}static parseCategoryMapping(r){var t=parseInt(r[1]),a=r[2],e=3<r.length?r.slice(3):[];return(!isFinite(t)||t<0||t>65535)&&console.log("char.def parse error. CODE is invalid:"+t),{start:t,default:a,compatible:e}}static parseRangeCategoryMapping(r){var t=parseInt(r[1]),a=parseInt(r[2]),e=r[3],i=4<r.length?r.slice(4):[];return(!isFinite(t)||t<0||t>65535)&&console.log("char.def parse error. CODE is invalid:"+t),(!isFinite(a)||a<0||a>65535)&&console.log("char.def parse error. CODE is invalid:"+a),{start:t,end:a,default:e,compatible:i}}initCategoryMappings(r){var t;if(r!=null)for(var a=0;a<r.length;a++){var e=r[a],i=e.end||e.start;for(t=e.start;t<=i;t++){this.character_category_map[t]=this.invoke_definition_map.lookup(e.default);for(var s=0;s<e.compatible.length;s++){var o=this.compatible_category_map[t],u=e.compatible[s];if(u!=null){var m=this.invoke_definition_map.lookup(u);if(m!=null){var A=1<<m;o=o|A,this.compatible_category_map[t]=o}}}}}var b=this.invoke_definition_map.lookup(Q);if(b!=null)for(t=0;t<this.character_category_map.length;t++)this.character_category_map[t]===0&&(this.character_category_map[t]=1<<b)}lookupCompatibleCategory(r){var t=[],a=r.charCodeAt(0),e;if(a<this.compatible_category_map.length&&(e=this.compatible_category_map[a]),e==null||e===0)return t;for(var i=0;i<32;i++)if(e<<31-i>>>31===1){var s=this.invoke_definition_map.getCharacterClass(i);if(s==null)continue;t.push(s)}return t}lookup(r){var t,a=r.charCodeAt(0);return K.isSurrogatePair(r)?t=this.invoke_definition_map.lookup(Q):a<this.character_category_map.length&&(t=this.character_category_map[a]),t==null&&(t=this.invoke_definition_map.lookup(Q)),this.invoke_definition_map.getCharacterClass(t)}}class ur extends Z{constructor(){super(),this.dictionary=new I(10*1024*1024),this.target_map={},this.pos_buffer=new I(10*1024*1024),this.character_definition=null}characterDefinition(r){return this.character_definition=r,this}lookup(r){return this.character_definition.lookup(r)}lookupCompatibleCategory(r){return this.character_definition.lookupCompatibleCategory(r)}loadUnknownDictionaries(r,t,a,e,i,s){this.loadDictionary(r),this.loadPosVector(t),this.loadTargetMap(a),this.character_definition=z.load(e,i,s)}}class lr{constructor(r,t,a,e){r!=null?this.trie=r:this.trie=q.builder(0).build([{k:"",v:1}]),t!=null?this.token_info_dictionary=t:this.token_info_dictionary=new Z,a!=null?this.connection_costs=a:this.connection_costs=new or(0,0),e!=null?this.unknown_dictionary=e:this.unknown_dictionary=new ur}loadTrie(r,t){return this.trie=q.load(new Int32Array(r),new Int32Array(t)),console.debug(`Successfully Loaded Kuromoji Trie Dict Files!
De-compressed Size of Loaded Dicts:
base: ~${(r.byteLength/1024/1024).toFixed(1)} MB
check: ~${(t.byteLength/1024/1024).toFixed(1)} MB`),this}loadTokenInfoDictionaries(r,t,a){return this.token_info_dictionary.loadDictionary(new Uint8Array(r)),this.token_info_dictionary.loadPosVector(new Uint8Array(t)),this.token_info_dictionary.loadTargetMap(new Uint8Array(a)),console.debug(`Successfully Loaded Kuromoji Token Info Dict Files!
De-compressed Size of Loaded Dict Files:
token_info: ~${(r.byteLength/1024/1024).toFixed(1)} MB
pos: ~${(t.byteLength/1024/1024).toFixed(1)} MB
target_map: ~${(a.byteLength/1024/1024).toFixed(1)} MB`),this}loadConnectionCosts(r){return this.connection_costs.loadConnectionCosts(new Int16Array(r)),console.debug(`Successfully Loaded Kuromoji Connection Cost Dict Files!
De-compressed Size of Loaded Dict Files:
cc: ~${(r.byteLength/1024/1024).toFixed(1)} MB`),this}loadUnknownDictionaries(r,t,a,e,i,s){return this.unknown_dictionary.loadUnknownDictionaries(new Uint8Array(r),new Uint8Array(t),new Uint8Array(a),new Uint8Array(e),new Uint32Array(i),new Uint8Array(s)),console.debug(`Successfully Loaded Kuromoji Unknown Dict Files!
De-compressed Size of Loaded Dict Files:
unk: ~${(r.byteLength/1024/1024).toFixed(1)} MB
unk_pos: ~${(t.byteLength/1024/1024).toFixed(1)} MB
unk_map: ~${(a.byteLength/1024/1024).toFixed(1)} MB
cat_map: ~${(e.byteLength/1024/1024).toFixed(1)} MB
compat_cat_map: ~${(i.byteLength/1024/1024).toFixed(1)} MB
invoke_def: ~${(s.byteLength/1024/1024).toFixed(1)} MB`),this}}const cr=(typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:S&&S.src||new URL("kuroshiro-browser.umd.cjs",document.baseURI).href).split("/").at(-2)!="loader",Gr=!0;console.info(`Kuromoji is being loaded as a ${cr?"Package/Library.":`Standalone Application.
Dictionary File paths will be adjusted once built and Loaded as a Package/Library`}`);const x=class x{constructor(){this.dic=new lr}static getActualDictlUrl(r,t){return cr?t?`.${r}`:`./node_modules/kuroshiro-browser/dist${r}`:`../../..${r}`}static getDictUrls(){return x.dictURLs}static generateDictUrls(r){x.dictURLs={trie:{base_buffer:x.getActualDictlUrl("/dict/base.dat.br",r),check_buffer:x.getActualDictlUrl("/dict/check.dat.br",r)},tokenInfo:{token_info_buffer:x.getActualDictlUrl("/dict/tid.dat.br",r),pos_buffer:x.getActualDictlUrl("/dict/tid_pos.dat.br",r),target_map_buffer:x.getActualDictlUrl("/dict/tid_map.dat.br",r)},connectionCost:{cc_buffer:x.getActualDictlUrl("/dict/cc.dat.br",r)},unknown:{unk_buffer:x.getActualDictlUrl("/dict/unk.dat.br",r),unk_pos_buffer:x.getActualDictlUrl("/dict/unk_pos.dat.br",r),unk_map_buffer:x.getActualDictlUrl("/dict/unk_map.dat.br",r),cat_map_buffer:x.getActualDictlUrl("/dict/unk_char.dat.br",r),compat_cat_map_buffer:x.getActualDictlUrl("/dict/unk_compat.dat.br",r),invoke_def_buffer:x.getActualDictlUrl("/dict/unk_invoke.dat.br",r)}}}static loadArrayBuffer(r){return new Promise((t,a)=>{fetch(r).then(e=>{!e.ok||e.headers.get("Content-Type")=="text/html"?a(e.statusText):e.arrayBuffer().then(i=>t(i)).catch(i=>console.warn(i))}).catch(e=>{console.warn(e),a(e)})})}static loadDictCategoryBuffers(r){const a=Object.entries(r).map(([e,i])=>x.loadArrayBuffer(i));return Promise.all(a)}static loadAllDictUrls(){const t=Object.entries(x.dictURLs).map(([a,e])=>x.loadDictCategoryBuffers(e));return Promise.all(t)}load(r){var t=this.dic;x.dictURLs||x.generateDictUrls(Gr),x.loadAllDictUrls().then(a=>{let e={trie:a[0],tokenInfo:a[1],connectionCost:a[2],unknown:a[3]};t.loadTrie(...e.trie),t.loadTokenInfoDictionaries(...e.tokenInfo),t.loadConnectionCosts(...e.connectionCost),t.loadUnknownDictionaries(...e.unknown),r(null,t)}).catch(a=>{console.error("Failed to Load Dicts!"),r(a,t)})}};gr(x,"dictURLs",null);let J=x;class Jr{constructor(){}build(r){var t=new J;t.load(function(a,e){r(a,new W(e))})}}class Vr{constructor(){this.lines=0,this.connection_cost=null}putLine(r){if(this.lines===0){var t=r.split(" "),a=t[0],e=t[1];if(a<0||e<0)throw"Parse error of matrix.def";return this.connection_cost=new or(a,e),this.lines++,this}var i=r.split(" ");if(i.length!==3)return this;var s=parseInt(i[0]),o=parseInt(i[1]),u=parseInt(i[2]);if(s<0||o<0||!isFinite(s)||!isFinite(o)||this.connection_cost.forward_dimension<=s||this.connection_cost.backward_dimension<=o)throw"Parse error of matrix.def";return this.connection_cost.put(s,o,u),this.lines++,this}build(){return this.connection_cost}}var Yr=/^(\w+)\s+(\d)\s+(\d)\s+(\d)/,Xr=/^(0x[0-9A-F]{4})(?:\s+([^#\s]+))(?:\s+([^#\s]+))*/,Wr=/^(0x[0-9A-F]{4})\.\.(0x[0-9A-F]{4})(?:\s+([^#\s]+))(?:\s+([^#\s]+))*/;class qr{constructor(){this.char_def=new z,this.char_def.invoke_definition_map=new G,this.character_category_definition=[],this.category_mapping=[]}putLine(r){var t=Yr.exec(r);if(t!=null){var a=this.character_category_definition.length,e=z.parseCharCategory(a,t);if(e==null)return;this.character_category_definition.push(e);return}var i=Xr.exec(r);if(i!=null){var s=z.parseCategoryMapping(i);this.category_mapping.push(s)}var o=Wr.exec(r);if(o!=null){var u=z.parseRangeCategoryMapping(o);this.category_mapping.push(u)}}build(){return this.char_def.invoke_definition_map.init(this.character_category_definition),this.char_def.initCategoryMappings(this.category_mapping),this.char_def}}class Zr{constructor(){this.tid_entries=[],this.unk_entries=[],this.cc_builder=new Vr,this.cd_builder=new qr}addTokenInfoDictionary(r){var t=r.split(",");return this.tid_entries.push(t),this}putCostMatrixLine(r){return this.cc_builder.putLine(r),this}putCharDefLine(r){return this.cd_builder.putLine(r),this}putUnkDefLine(r){return this.unk_entries.push(r.split(",")),this}build(){var r=this.buildTokenInfoDictionary(),t=this.buildUnknownDictionary();return new lr(r.trie,r.token_info_dictionary,this.cc_builder.build(),t)}buildTokenInfoDictionary(){var r=new Z,t=r.buildDictionary(this.tid_entries),a=this.buildDoubleArray();for(var e in t){var i=t[e],s=a.lookup(i);r.addMapping(s,e)}return{trie:a,token_info_dictionary:r}}buildUnknownDictionary(){var r=new ur,t=r.buildDictionary(this.unk_entries),a=this.cd_builder.build();r.characterDefinition(a);for(var e in t){var i=t[e],s=a.invoke_definition_map.lookup(i);r.addMapping(s,e)}return r}buildDoubleArray(){var r=0,t=this.tid_entries.map(function(e){var i=e[0];return{k:i,v:r++}}),a=q.builder(1024*1024);return a.build(t)}}var hr={builder:function(){return new Jr},dictionaryBuilder:function(){return new Zr}};class fr{constructor(){this._analyzer=null}init(){return new Promise((r,t)=>{const a=this;this._analyzer==null?hr.builder().build((e,i)=>{if(e)return t(e);a._analyzer=i,r()}):t(new Error("This analyzer has already been initialized."))})}parse(r=""){return new Promise((t,a)=>{if(r.trim()==="")return t([]);const e=this._analyzer.tokenize(r);for(let i=0;i<e.length;i++)e[i].verbose={},e[i].verbose.word_id=e[i].word_id,e[i].verbose.word_type=e[i].word_type,e[i].verbose.word_position=e[i].word_position,delete e[i].word_id,delete e[i].word_type,delete e[i].word_position;t(e)})}}const yr={isHiragana:O,isKatakana:M,isKana:P,isKanji:j,isJapanese:tr,hasHiragana:er,hasKatakana:ar,hasKana:Ur,hasKanji:ir,hasJapanese:X,kanaToHiragna:Er,kanaToKatakana:jr,kanaToRomaji:Nr};class V{constructor(){this._analyzer=null,this.Util=yr}async init(r,t=!0){if(J.generateDictUrls(t),!r||typeof r!="object"||typeof r.init!="function"||typeof r.parse!="function")throw new Error("Invalid initialization parameter.");if(this._analyzer==null)await r.init(),this._analyzer=r;else throw new Error("Kuroshiro has already been initialized.")}static buildAndInitWithKuromoji(r){const t=new V;return new Promise((a,e)=>{t.init(new fr,r).then(()=>a(t)).catch(e)})}getFurigana(r,t={...console,success:console.log}){return new Promise((a,e)=>{this.convert(r,{to:"hiragana",mode:"furigana"}).then(i=>{t.success(`Furigana Added to Message:
${i}`),a(i)}).catch(i=>{t.error(`failed to get furigana: ${i}`),e(i)})})}async convert(r,t){if(t=t||{},t.to=t.to||"hiragana",t.mode=t.mode||"normal",t.romajiSystem=t.romajiSystem||U.HEPBURN,t.delimiter_start=t.delimiter_start||"(",t.delimiter_end=t.delimiter_end||")",r=r||"",["hiragana","katakana","romaji"].indexOf(t.to)===-1)throw new Error("Invalid Target Syllabary.");if(["normal","spaced","okurigana","furigana"].indexOf(t.mode)===-1)throw new Error("Invalid Conversion Mode.");if(Object.keys(U).map(s=>U[s]).indexOf(t.romajiSystem)===-1)throw new Error("Invalid Romanization System.");const e=await this._analyzer.parse(r),i=Ir(e);if(t.mode==="normal"||t.mode==="spaced")switch(t.to){case"katakana":return t.mode==="normal"?i.map(o=>o.reading).join(""):i.map(o=>o.reading).join(" ");case"romaji":const s=o=>{let u;return X(o.surface_form)?u=o.pronunciation||o.reading:u=o.surface_form,$(u,t.romajiSystem)};return t.mode==="normal"?i.map(s).join(""):i.map(s).join(" ");case"hiragana":for(let o=0;o<i.length;o++)if(ir(i[o].surface_form))if(!ar(i[o].surface_form))i[o].reading=B(i[o].reading);else{i[o].reading=B(i[o].reading);let u="",m="";for(let _=0;_<i[o].surface_form.length;_++)j(i[o].surface_form[_])?m+="(.*)":m+=M(i[o].surface_form[_])?B(i[o].surface_form[_]):i[o].surface_form[_];const b=new RegExp(m).exec(i[o].reading);if(b){let _=0;for(let C=0;C<i[o].surface_form.length;C++)j(i[o].surface_form[C])?(u+=b[_+1],_++):u+=i[o].surface_form[C];i[o].reading=u}}else i[o].reading=i[o].surface_form;return t.mode==="normal"?i.map(o=>o.reading).join(""):i.map(o=>o.reading).join(" ");default:throw new Error("Unknown option.to param")}else if(t.mode==="okurigana"||t.mode==="furigana"){const s=[];for(let u=0;u<i.length;u++)switch(Br(i[u].surface_form)){case 0:s.push([i[u].surface_form,1,B(i[u].reading),i[u].pronunciation||i[u].reading]);break;case 1:let A="",b=!1;const _=[];for(let k=0;k<i[u].surface_form.length;k++)j(i[u].surface_form[k])?b?_[_.length-1]+=i[u].surface_form[k]:(b=!0,A+="(.+)",_.push(i[u].surface_form[k])):(b=!1,_.push(i[u].surface_form[k]),A+=M(i[u].surface_form[k])?B(i[u].surface_form[k]):i[u].surface_form[k]);const E=new RegExp(`^${A}$`).exec(B(i[u].reading));if(E){let k=1;for(let T=0;T<_.length;T++)j(_[T][0])?(s.push([_[T],1,E[k],R(E[k])]),k+=1):s.push([_[T],2,B(_[T]),R(_[T])])}else s.push([i[u].surface_form,1,B(i[u].reading),i[u].pronunciation||i[u].reading]);break;case 2:for(let k=0;k<i[u].surface_form.length;k++)s.push([i[u].surface_form[k],2,B(i[u].reading[k]),i[u].pronunciation&&i[u].pronunciation[k]||i[u].reading[k]]);break;case 3:for(let k=0;k<i[u].surface_form.length;k++)s.push([i[u].surface_form[k],3,i[u].surface_form[k],i[u].surface_form[k]]);break;default:throw new Error("Unknown strType")}let o="";switch(t.to){case"katakana":if(t.mode==="okurigana")for(let u=0;u<s.length;u++)s[u][1]!==1?o+=s[u][0]:o+=s[u][0]+t.delimiter_start+R(s[u][2])+t.delimiter_end;else for(let u=0;u<s.length;u++)s[u][1]!==1?o+=s[u][0]:o+=`<ruby>${s[u][0]}<rp>${t.delimiter_start}</rp><rt>${R(s[u][2])}</rt><rp>${t.delimiter_end}</rp></ruby>`;return o;case"romaji":if(t.mode==="okurigana")for(let u=0;u<s.length;u++)s[u][1]!==1?o+=s[u][0]:o+=s[u][0]+t.delimiter_start+$(s[u][3],t.romajiSystem)+t.delimiter_end;else{o+="<ruby>";for(let u=0;u<s.length;u++)o+=`${s[u][0]}<rp>${t.delimiter_start}</rp><rt>${$(s[u][3],t.romajiSystem)}</rt><rp>${t.delimiter_end}</rp>`;o+="</ruby>"}return o;case"hiragana":if(t.mode==="okurigana")for(let u=0;u<s.length;u++)s[u][1]!==1?o+=s[u][0]:o+=s[u][0]+t.delimiter_start+s[u][2]+t.delimiter_end;else for(let u=0;u<s.length;u++)s[u][1]!==1?o+=s[u][0]:o+=`<ruby>${s[u][0]}<rp>${t.delimiter_start}</rp><rt>${s[u][2]}</rt><rp>${t.delimiter_end}</rp></ruby>`;return o;default:throw new Error("Invalid Target Syllabary.")}}}}V.Util=yr,D.Kuromoji=hr,D.Kuroshiro=V,D.KuroshiroAnalyzerKuromoji=fr,Object.defineProperty(D,Symbol.toStringTag,{value:"Module"})});