xml-tokenizer 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/cjs/get-q-name.js +1 -0
  2. package/dist/cjs/index.js +1 -1
  3. package/dist/cjs/selector/TokenSelectState.js +1 -0
  4. package/dist/cjs/selector/TokenSelectStateMachine.js +1 -0
  5. package/dist/cjs/selector/TokenSelector.js +1 -0
  6. package/dist/cjs/selector/select.js +1 -0
  7. package/dist/cjs/token-to-xml.js +1 -0
  8. package/dist/cjs/tokenizer/XmlStream.js +1 -1
  9. package/dist/cjs/tokenizer/ascii-constants.js +1 -0
  10. package/dist/cjs/tokenizer/tokenize.js +1 -0
  11. package/dist/cjs/tokenizer/utils.js +1 -1
  12. package/dist/cjs/tokens-to-xml.js +1 -0
  13. package/dist/cjs/xml-to-object.js +1 -1
  14. package/dist/esm/get-q-name.js +1 -0
  15. package/dist/esm/index.js +1 -1
  16. package/dist/esm/selector/TokenSelectState.js +1 -0
  17. package/dist/esm/selector/TokenSelectStateMachine.js +1 -0
  18. package/dist/esm/selector/TokenSelector.js +1 -0
  19. package/dist/esm/selector/select.js +1 -0
  20. package/dist/esm/token-to-xml.js +1 -0
  21. package/dist/esm/tokenizer/XmlStream.js +1 -1
  22. package/dist/esm/tokenizer/ascii-constants.js +1 -0
  23. package/dist/esm/tokenizer/tokenize.js +1 -0
  24. package/dist/esm/tokenizer/utils.js +1 -1
  25. package/dist/esm/tokens-to-xml.js +1 -0
  26. package/dist/esm/xml-to-object.js +1 -1
  27. package/dist/types/get-q-name.d.ts +7 -0
  28. package/dist/types/get-q-name.d.ts.map +1 -0
  29. package/dist/types/index.d.ts +3 -1
  30. package/dist/types/index.d.ts.map +1 -1
  31. package/dist/types/selector/TokenSelectState.d.ts +32 -0
  32. package/dist/types/selector/TokenSelectState.d.ts.map +1 -0
  33. package/dist/types/selector/TokenSelectStateMachine.d.ts +26 -0
  34. package/dist/types/selector/TokenSelectStateMachine.d.ts.map +1 -0
  35. package/dist/types/selector/TokenSelector.d.ts +15 -0
  36. package/dist/types/selector/TokenSelector.d.ts.map +1 -0
  37. package/dist/types/selector/index.d.ts +6 -0
  38. package/dist/types/selector/index.d.ts.map +1 -0
  39. package/dist/types/selector/select.d.ts +4 -0
  40. package/dist/types/selector/select.d.ts.map +1 -0
  41. package/dist/types/selector/types.d.ts +72 -0
  42. package/dist/types/selector/types.d.ts.map +1 -0
  43. package/dist/types/token-to-xml.d.ts +3 -0
  44. package/dist/types/token-to-xml.d.ts.map +1 -0
  45. package/dist/types/tokenizer/XmlStream.d.ts +1 -1
  46. package/dist/types/tokenizer/XmlStream.d.ts.map +1 -1
  47. package/dist/types/tokenizer/ascii-constants.d.ts +33 -0
  48. package/dist/types/tokenizer/ascii-constants.d.ts.map +1 -0
  49. package/dist/types/tokenizer/index.d.ts +2 -1
  50. package/dist/types/tokenizer/index.d.ts.map +1 -1
  51. package/dist/types/tokenizer/tokenize.d.ts +12 -0
  52. package/dist/types/tokenizer/tokenize.d.ts.map +1 -0
  53. package/dist/types/tokenizer/types.d.ts +2 -2
  54. package/dist/types/tokenizer/utils.d.ts +0 -32
  55. package/dist/types/tokenizer/utils.d.ts.map +1 -1
  56. package/dist/types/tokens-to-xml.d.ts +3 -0
  57. package/dist/types/tokens-to-xml.d.ts.map +1 -0
  58. package/dist/types/xml-to-object.d.ts +0 -1
  59. package/dist/types/xml-to-object.d.ts.map +1 -1
  60. package/package.json +2 -1
  61. package/dist/cjs/parse-string.js +0 -1
  62. package/dist/cjs/tokenizer/tokenizer.js +0 -1
  63. package/dist/esm/parse-string.js +0 -1
  64. package/dist/esm/tokenizer/tokenizer.js +0 -1
  65. package/dist/types/parse-string.d.ts +0 -3
  66. package/dist/types/parse-string.d.ts.map +0 -1
  67. package/dist/types/tokenizer/tokenizer.d.ts +0 -11
  68. package/dist/types/tokenizer/tokenizer.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ "use strict";function l(t,e=null){return e!=null&&e.length>0?`${e}:${t}`:t}exports.getQName=l;
package/dist/cjs/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var S=require("./parse-string.js"),R=require("./tokenizer/tokenizer.js"),E=require("./tokenizer/utils.js"),r=require("./tokenizer/XmlError.js"),e=require("./tokenizer/XmlStream.js"),A=require("./xml-to-object.js");exports.parseString=S.parseString,exports.parseXmlStream=R.parseXmlStream,exports.AMPERSAND=E.AMPERSAND,exports.CARRIAGE_RETURN=E.CARRIAGE_RETURN,exports.COLON=E.COLON,exports.DOUBLE_QUOTE=E.DOUBLE_QUOTE,exports.EQUALS=E.EQUALS,exports.EXCLAMATION_MARK=E.EXCLAMATION_MARK,exports.GREATER_THAN=E.GREATER_THAN,exports.HASH=E.HASH,exports.HORIZONTAL_TAB=E.HORIZONTAL_TAB,exports.HYPHEN=E.HYPHEN,exports.LESS_THAN=E.LESS_THAN,exports.LINE_FEED=E.LINE_FEED,exports.LOWERCASE_A=E.LOWERCASE_A,exports.LOWERCASE_F=E.LOWERCASE_F,exports.LOWERCASE_X=E.LOWERCASE_X,exports.LOWERCASE_Z=E.LOWERCASE_Z,exports.NINE=E.NINE,exports.OPEN_BRACKET=E.OPEN_BRACKET,exports.PERCENT=E.PERCENT,exports.PERIOD=E.PERIOD,exports.QUESTION_MARK=E.QUESTION_MARK,exports.SEMICOLON=E.SEMICOLON,exports.SINGLE_QUOTE=E.SINGLE_QUOTE,exports.SLASH=E.SLASH,exports.SPACE=E.SPACE,exports.UNDERSCORE=E.UNDERSCORE,exports.UPPERCASE_A=E.UPPERCASE_A,exports.UPPERCASE_F=E.UPPERCASE_F,exports.UPPERCASE_P=E.UPPERCASE_P,exports.UPPERCASE_S=E.UPPERCASE_S,exports.UPPERCASE_Z=E.UPPERCASE_Z,exports.ZERO=E.ZERO,exports.isAsciiDigit=E.isAsciiDigit,exports.isXmlChar=E.isXmlChar,exports.isXmlName=E.isXmlName,exports.isXmlNameByte=E.isXmlNameByte,exports.isXmlNameStart=E.isXmlNameStart,exports.isXmlSpaceByte=E.isXmlSpaceByte,exports.XmlError=r.XmlError,exports.XmlStream=e.XmlStream,exports.getTagName=A.getTagName,exports.xmlToObject=A.xmlToObject;
1
+ "use strict";var t=require("./selector/select.js"),A=require("./selector/TokenSelector.js"),S=require("./selector/TokenSelectState.js"),R=require("./selector/TokenSelectStateMachine.js"),i=require("./token-to-xml.js"),e=require("./tokenizer/ascii-constants.js"),r=require("./tokenizer/tokenize.js"),E=require("./tokenizer/utils.js"),a=require("./tokenizer/XmlError.js"),T=require("./tokenizer/XmlStream.js"),o=require("./tokens-to-xml.js"),N=require("./xml-to-object.js");exports.select=t.select,exports.TokenSelector=A.TokenSelector,exports.EToCacheNodeProps=S.EToCacheNodeProps,exports.ETokenMatchCriteria=S.ETokenMatchCriteria,exports.TokenSelectState=S.TokenSelectState,exports.TokenSelectStateMachine=R.TokenSelectStateMachine,exports.tokenToXml=i.tokenToXml,exports.AMPERSAND=e.AMPERSAND,exports.CARRIAGE_RETURN=e.CARRIAGE_RETURN,exports.COLON=e.COLON,exports.DOUBLE_QUOTE=e.DOUBLE_QUOTE,exports.EQUALS=e.EQUALS,exports.EXCLAMATION_MARK=e.EXCLAMATION_MARK,exports.GREATER_THAN=e.GREATER_THAN,exports.HASH=e.HASH,exports.HORIZONTAL_TAB=e.HORIZONTAL_TAB,exports.HYPHEN=e.HYPHEN,exports.LESS_THAN=e.LESS_THAN,exports.LINE_FEED=e.LINE_FEED,exports.LOWERCASE_A=e.LOWERCASE_A,exports.LOWERCASE_F=e.LOWERCASE_F,exports.LOWERCASE_X=e.LOWERCASE_X,exports.LOWERCASE_Z=e.LOWERCASE_Z,exports.NINE=e.NINE,exports.OPEN_BRACKET=e.OPEN_BRACKET,exports.PERCENT=e.PERCENT,exports.PERIOD=e.PERIOD,exports.QUESTION_MARK=e.QUESTION_MARK,exports.SEMICOLON=e.SEMICOLON,exports.SINGLE_QUOTE=e.SINGLE_QUOTE,exports.SLASH=e.SLASH,exports.SPACE=e.SPACE,exports.UNDERSCORE=e.UNDERSCORE,exports.UPPERCASE_A=e.UPPERCASE_A,exports.UPPERCASE_F=e.UPPERCASE_F,exports.UPPERCASE_P=e.UPPERCASE_P,exports.UPPERCASE_S=e.UPPERCASE_S,exports.UPPERCASE_Z=e.UPPERCASE_Z,exports.ZERO=e.ZERO,exports.tokenize=r.tokenize,exports.tokenizeXmlStream=r.tokenizeXmlStream,exports.isAsciiDigit=E.isAsciiDigit,exports.isXmlChar=E.isXmlChar,exports.isXmlName=E.isXmlName,exports.isXmlNameByte=E.isXmlNameByte,exports.isXmlNameStart=E.isXmlNameStart,exports.isXmlSpaceByte=E.isXmlSpaceByte,exports.XmlError=a.XmlError,exports.XmlStream=T.XmlStream,exports.tokensToXml=o.tokensToXml,exports.xmlToObject=N.xmlToObject;
@@ -0,0 +1 @@
1
+ "use strict";var h=require("../get-q-name.js"),l=Object.defineProperty,o=(e,t,s)=>t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,r=(e,t,s)=>o(e,typeof t!="symbol"?t+"":t,s);class c{constructor(t){r(this,"_segment"),r(this,"_matchCriteria",0),r(this,"_toCacheNodeProps",0),r(this,"_enteredDepth",null),this._segment=t,this.applyLevels()}get matchCriteria(){return this._matchCriteria}get toCacheNodeProps(){return this._toCacheNodeProps}get enteredDepth(){return this._enteredDepth}applyLevels(){let t=0,s=0;(this._segment.local!=null||this._segment.prefix!=null)&&(t|=1),this._segment.attributes!=null&&(t|=2,s|=2),this._segment.containsText!=null&&(t|=4),this._segment.predicate!=null&&(t|=8,s|=7),this._matchCriteria=t,this._toCacheNodeProps=s}matchesName(t,s){return(this._segment.local==null||this._segment.local==="*"||this._segment.local===t)&&(this._segment.prefix==null||this._segment.prefix===s)}matchesAttributes(t){if(this._segment.attributes!=null)for(const s of this._segment.attributes){const i=h.getQName(s.local,s.prefix);if(!(i in t)||s.value!=null&&t[i]!==s.value)return!1}return!0}matchesText(t){return this._segment.containsText==null||t.includes(this._segment.containsText)}matchesDepth(t,s){switch(this._segment.axis){case"child":return t===s+1;case"self-or-descendant":return t>=s}}match(t){this._enteredDepth=t}unmatch(){this._enteredDepth=null}}var a=(e=>(e[e.None=0]="None",e[e.Name=1]="Name",e[e.Attributes=2]="Attributes",e[e.Text=4]="Text",e))(a||{}),n=(e=>(e[e.None=0]="None",e[e.Name=1]="Name",e[e.Attributes=2]="Attributes",e[e.Text=4]="Text",e[e.Node=8]="Node",e))(n||{});exports.EToCacheNodeProps=a,exports.ETokenMatchCriteria=n,exports.TokenSelectState=c;
@@ -0,0 +1 @@
1
+ "use strict";var d=require("../get-q-name.js"),s=require("./TokenSelectState.js"),_=Object.defineProperty,C=(o,t,e)=>t in o?_(o,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[t]=e,i=(o,t,e)=>C(o,typeof t!="symbol"?t+"":t,e);class S{constructor(t){i(this,"_states"),i(this,"_currentState",null),i(this,"_hasActiveCache",!1),i(this,"_toCacheNodeProps",s.EToCacheNodeProps.None),i(this,"_cachedNodeProps",{prefix:null,local:null,attributes:null,text:null}),i(this,"_cachedTokens",[]),i(this,"_toRecordTokens",[]),this._states=t.map(e=>new s.TokenSelectState(e))}getNextState(){var t;const e=this._currentState!=null?this._currentState+1:0;return e<this._states.length&&(t=this._states[e])!=null?t:null}getCurrentState(){var t;return this._currentState!=null&&this._currentState<this._states.length&&(t=this._states[this._currentState])!=null?t:null}record(t){this._hasActiveCache&&this.getOffsetToFinal()<=1&&this._cachedTokens.push(t)}takeRecordedTokens(){if(this._toRecordTokens.length>0){const t=this._toRecordTokens;return this._toRecordTokens=[],t}return null}transitionIfNameMatch(t,e,r){var a;const h=this.getNextState(),n=this.getCurrentState();return h!=null&&h.matchesName(t,e)&&h.matchesDepth(r,(a=n==null?void 0:n.enteredDepth)!=null?a:0)?h.matchCriteria&(s.ETokenMatchCriteria.Attributes|s.ETokenMatchCriteria.Text|s.ETokenMatchCriteria.Node)?(this._hasActiveCache=!0,this._toCacheNodeProps|=h.toCacheNodeProps,this._toCacheNodeProps&s.EToCacheNodeProps.Name&&(this._cachedNodeProps.local=t,this._cachedNodeProps.prefix=e),!1):(this.transitionForward(r),!0):!1}transitionIfAttributesMatch(t,e,r,a){var h,n;const c=this.getNextState(),u=this.getCurrentState(),l=(h=this._cachedNodeProps.attributes)!=null?h:{};return l[d.getQName(t,e)]=r,c!=null&&c.matchesAttributes(l)&&c.matchesDepth(a,(n=u==null?void 0:u.enteredDepth)!=null?n:0)?c.matchCriteria&(s.ETokenMatchCriteria.Text|s.ETokenMatchCriteria.Node)?(this._hasActiveCache=!0,this._toCacheNodeProps|=c.toCacheNodeProps,this._toCacheNodeProps&s.EToCacheNodeProps.Attributes&&(this._cachedNodeProps.attributes=l),!1):(this.transitionForward(a),!0):!1}transitionIfTextMatch(t,e){var r;const a=this.getNextState(),h=this.getCurrentState();return a!=null&&a.matchesText(t)&&a.matchesDepth(e,(r=h==null?void 0:h.enteredDepth)!=null?r:0)?a.matchCriteria&s.ETokenMatchCriteria.Node?(this._hasActiveCache=!0,this._toCacheNodeProps|=a.toCacheNodeProps,this._toCacheNodeProps&s.EToCacheNodeProps.Text&&(this._cachedNodeProps.text=t),!1):(this.transitionForward(e),!0):!1}transitionForward(t){const e=this.getCurrentState();e!=null&&e.unmatch(),this._currentState=this._currentState!=null?this._currentState+1:0;const r=this.getCurrentState();r!=null&&r.match(t),this.isFinalState()&&(this._toRecordTokens=this._cachedTokens),this.resetCurrentStateCache()}transitionBack(t){const e=this.getCurrentState();e!=null&&e.unmatch(),this._currentState=this._currentState!=null?this._currentState-1:0;const r=this.getCurrentState();r!=null&&r.match(t),this.resetCurrentStateCache()}isFinalState(){return this._currentState!=null&&this._currentState>=this._states.length-1}getOffsetToFinal(){return this._currentState==null?this._states.length:this._states.length-1-this._currentState}resetCurrentStateCache(){this._hasActiveCache=!1,this._toCacheNodeProps=s.EToCacheNodeProps.None,this._cachedNodeProps.prefix=null,this._cachedNodeProps.local=null,this._cachedNodeProps.attributes=null,this._cachedNodeProps.text=null,this._cachedTokens=[]}}exports.TokenSelectStateMachine=S;
@@ -0,0 +1 @@
1
+ "use strict";var a=require("./TokenSelectState.js"),l=require("./TokenSelectStateMachine.js"),u=Object.defineProperty,S=(r,t,i)=>t in r?u(r,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):r[t]=i,s=(r,t,i)=>S(r,typeof t!="symbol"?t+"":t,i);class p{constructor(t){s(this,"_currentDepth",0),s(this,"_tspStateMachines"),s(this,"_isRecording",!1),this._tspStateMachines=t.map(i=>new l.TokenSelectStateMachine(i))}pipeToken(t,i){let e=!1,n=!1;switch(t.type){case"ElementStart":e=this.handleElementStart(t);break;case"Attribute":e=this.handleAttribute(t);break;case"Text":e=this.handleText(t);break;case"ElementEnd":{n=this.handleElementEnd(t);break}}e&&!this._isRecording&&this.record();for(const c of this._tspStateMachines){c.record(t);const h=c.takeRecordedTokens();h!=null&&h.forEach(o=>{i(o)})}this._isRecording&&i(t),n&&(this._isRecording=!1)}handleElementStart(t){this._currentDepth+=1;let i=!1;for(const e of this._tspStateMachines){if(e.resetCurrentStateCache(),e.isFinalState())continue;const n=e.getNextState();n==null||!(n.matchCriteria&a.ETokenMatchCriteria.Name)||e.transitionIfNameMatch(t.local,t.prefix,this._currentDepth)&&e.isFinalState()&&(i=!0)}return i}handleAttribute(t){let i=!1;for(const e of this._tspStateMachines){if(e.isFinalState())continue;const n=e.getNextState();n==null||!(n.matchCriteria&a.ETokenMatchCriteria.Attributes)||e.transitionIfAttributesMatch(t.local,t.prefix,t.value,this._currentDepth)&&e.isFinalState()&&(i=!0)}return i}handleText(t){let i=!1;for(const e of this._tspStateMachines){if(e.isFinalState())continue;const n=e.getNextState();n==null||!(n.matchCriteria&a.ETokenMatchCriteria.Text)||e.transitionIfTextMatch(t.text,this._currentDepth)&&e.isFinalState()&&(i=!0)}return i}handleElementEnd(t){if(t.end.type==="Close"||t.end.type==="Empty"){this._currentDepth-=1;let i=!1;for(const e of this._tspStateMachines){const n=e.getCurrentState();n!=null&&(n.enteredDepth!=null&&this._currentDepth<n.enteredDepth&&e.transitionBack(this._currentDepth),i=i||e.isFinalState())}return!i}return!1}record(){this._isRecording=!0}}exports.TokenSelector=p;
@@ -0,0 +1 @@
1
+ "use strict";var i=require("../tokenizer/tokenize.js"),k=require("./TokenSelector.js");function s(e,n,t){const o=new k.TokenSelector(n);i.tokenize(e,!1,r=>{o.pipeToken(r,c=>{t(c)})})}exports.select=s;
@@ -0,0 +1 @@
1
+ "use strict";function n(t){let e="";switch(t.type){case"ProcessingInstruction":e+=`<?${t.target}`,t.content&&(e+=` ${t.content}`),e+="?>";break;case"Comment":e+=`<!--${t.text}-->`;break;case"EntityDeclaration":e+=`<!ENTITY ${t.name} "${t.definition}">`;break;case"ElementStart":e+=`<${t.prefix.length>0?`${t.prefix}:`:""}${t.local}`;break;case"Attribute":e+=` ${t.prefix.length>0?`${t.prefix}:`:""}${t.local}="${t.value}"`;break;case"ElementEnd":t.end.type==="Open"?e+=">":t.end.type==="Close"?e+=`</${t.end.prefix.length>0?`${t.end.prefix}:`:""}${t.end.local}>`:e+="/>";break;case"Text":e+=t.text;break;case"Cdata":e+=`<![CDATA[${t.text}]]>`;break}return e}exports.tokenToXml=n;
@@ -1 +1 @@
1
- "use strict";var s=require("./utils.js"),o=require("./XmlError.js"),u=Object.defineProperty,m=(h,t,e)=>t in h?u(h,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[t]=e,l=(h,t,e)=>m(h,typeof t!="symbol"?t+"":t,e);class c{constructor(t,e=0){l(this,"_text"),l(this,"_pos"),l(this,"_end"),this._text=t,this._pos=e,this._end=this._text.length}clone(){return new c(this._text,this._pos)}getPos(){return this._pos}atEnd(){return this._pos>=this._end}currCodeUnit(){if(this._pos>=this._end)throw new o.XmlError({type:"UnexpectedEndOfStream"});return this._text.charCodeAt(this._pos)}currCodeUnitUnchecked(){return this._text.charCodeAt(this._pos)}nextCodeUnit(){if(this._pos+1>=this._end)throw new o.XmlError({type:"UnexpectedEndOfStream"});return this._text.charCodeAt(this._pos+1)}advance(t){this._pos+=t}goTo(t){this._pos=t}startsWith(t){return this._text.startsWith(t,this._pos)}consumeCodeUnit(t){const e=this.currCodeUnit();if(e!==t)throw new o.XmlError({type:"InvalidChar",expected:t,actual:e},this.genTextPos());this._pos+=1}tryConsumeCodeUnit(t){return this.currCodeUnit()===t?(this._pos+=1,!0):!1}skipString(t){if(!this.startsWith(t))throw new o.XmlError({type:"InvalidString",expected:t},this.genTextPos());this._pos+=t.length}consumeCodeUnitsWhile(t){const e=this._pos;return this.skipCodeUnitsWhile(t),this.sliceBack(e)}skipCodeUnitsWhile(t){for(;this._pos<this._end&&t(this.currCodeUnitUnchecked());)this._pos+=1}consumeCharsWhile(t){const e=this._pos;return this.skipCharsWhile(t),this.sliceBack(e)}skipCharsWhile(t){for(;this._pos<this._end;){const e=this._text[this._pos];if(e==null||!s.isXmlChar(e.codePointAt(0)))throw new o.XmlError({type:"NonXmlChar",char:e!=null?e:"\uFFFD"},this.genTextPos());if(t(this,e))this._pos+=e.length;else break}}sliceBack(t){return this._text.slice(t,this._pos)}rangeFrom(t){return{start:t,end:this._pos}}skipSpaces(){for(;this.startsWithSpace();)this._pos+=1}startsWithSpace(){return this._pos<this._end&&s.isXmlSpaceByte(this.currCodeUnitUnchecked())}consumeSpaces(){if(this._pos>=this._end)throw new o.XmlError({type:"UnexpectedEndOfStream"},this.genTextPos());if(!this.startsWithSpace())throw new o.XmlError({type:"InvalidChar",expected:"a whitespace",actual:this.currCodeUnitUnchecked()},this.genTextPos());this.skipSpaces()}tryConsumeReference(){const t=this._pos,e=this.clone(),r=e.consumeReference();return r!=null?(this._pos+=e.getPos()-t,r):null}consumeReference(){if(!this.tryConsumeCodeUnit(s.AMPERSAND))return null;let t;if(this.tryConsumeCodeUnit(s.HASH)){let e,r;this.tryConsumeCodeUnit(s.LOWERCASE_X)?(e=this.consumeCodeUnitsWhile(i=>i>=s.ZERO&&i<=s.NINE||i>=s.UPPERCASE_A&&i<=s.UPPERCASE_F||i>=s.LOWERCASE_A&&i<=s.LOWERCASE_F),r=16):(e=this.consumeCodeUnitsWhile(i=>s.isAsciiDigit(i)),r=10);const n=parseInt(e,r);isNaN(n)||!s.isXmlChar(n)?t=null:t={type:"Char",value:String.fromCodePoint(n)}}else{const e=this.consumeName();switch(e){case"quot":t={type:"Char",value:'"'};break;case"amp":t={type:"Char",value:"&"};break;case"apos":t={type:"Char",value:"'"};break;case"lt":t={type:"Char",value:"<"};break;case"gt":t={type:"Char",value:">"};break;default:t={type:"Entity",value:e}}}return this.tryConsumeCodeUnit(s.SEMICOLON)?t:null}consumeName(){const t=this._pos;this.skipName();const e=this.sliceBack(t);if(e.length===0)throw new o.XmlError({type:"InvalidName"},this.genTextPosFrom(t));return e}skipName(){const t=this._pos;for(;this._pos<this._end;){const e=this.currCodeUnitUnchecked();if(this._pos===t){if(!s.isXmlNameStart(e))throw new o.XmlError({type:"InvalidName"},this.genTextPosFrom(t))}else if(!s.isXmlName(e))break;this._pos+=1}}consumeQName(){var t,e;const r=this._pos;let n=null;for(;this._pos<this._end;){const p=this.currCodeUnitUnchecked();if(p===s.COLON)if(n==null)n=this._pos,this._pos+=1;else throw new o.XmlError({type:"InvalidName"},this.genTextPosFrom(r));else if(s.isXmlName(p))this._pos+=1;else break}let i,a;if(n!=null?(i=this._text.slice(r,n),a=this.sliceBack(n+1)):(i="",a=this.sliceBack(r)),i.length>0&&!s.isXmlNameStart((t=i[0])==null?void 0:t.codePointAt(0)))throw new o.XmlError({type:"InvalidName"},this.genTextPosFrom(r));if(a.length>0){if(!s.isXmlNameStart((e=a[0])==null?void 0:e.codePointAt(0)))throw new o.XmlError({type:"InvalidName"},this.genTextPosFrom(r))}else throw new o.XmlError({type:"InvalidName"},this.genTextPosFrom(r));return[i,a]}consumeQuote(){const t=this.currCodeUnit();if(t===s.SINGLE_QUOTE||t===s.DOUBLE_QUOTE)return this._pos+=1,t;throw new o.XmlError({type:"InvalidChar",expected:"a quote",actual:t},this.genTextPos())}genTextPos(){return this.genTextPosFrom(this._pos)}genTextPosFrom(t){const e=Math.min(t,this._end);let r=1,n=1;for(let i=0;i<e;i++)this._text.charCodeAt(i)===s.LINE_FEED?(r++,n=1):n++;return{row:r,col:n}}}exports.XmlStream=c;
1
+ "use strict";var r=require("./ascii-constants.js"),h=require("./utils.js"),o=require("./XmlError.js"),m=Object.defineProperty,d=(a,t,e)=>t in a?m(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,c=(a,t,e)=>d(a,typeof t!="symbol"?t+"":t,e);class p{constructor(t,e=0){c(this,"_text"),c(this,"_pos"),c(this,"_end"),this._text=t,this._pos=e,this._end=this._text.length}clone(){return new p(this._text,this._pos)}getPos(){return this._pos}atEnd(){return this._pos>=this._end}currCodeUnit(){if(this._pos>=this._end)throw new o.XmlError({type:"UnexpectedEndOfStream"});return this._text.charCodeAt(this._pos)}currCodeUnitUnchecked(){return this._text.charCodeAt(this._pos)}nextCodeUnit(){if(this._pos+1>=this._end)throw new o.XmlError({type:"UnexpectedEndOfStream"});return this._text.charCodeAt(this._pos+1)}advance(t){this._pos+=t}goTo(t){this._pos=t}startsWith(t){return this._text.startsWith(t,this._pos)}consumeCodeUnit(t){const e=this.currCodeUnit();if(e!==t)throw new o.XmlError({type:"InvalidChar",expected:t,actual:e},this.genTextPos());this._pos+=1}tryConsumeCodeUnit(t){return this.currCodeUnit()===t?(this._pos+=1,!0):!1}skipString(t){if(!this.startsWith(t))throw new o.XmlError({type:"InvalidString",expected:t},this.genTextPos());this._pos+=t.length}consumeCodeUnitsWhile(t){const e=this._pos;return this.skipCodeUnitsWhile(t),this.sliceBack(e)}skipCodeUnitsWhile(t){for(;this._pos<this._end&&t(this.currCodeUnitUnchecked());)this._pos+=1}consumeCharsWhile(t){const e=this._pos;return this.skipCharsWhile(t),this.sliceBack(e)}skipCharsWhile(t){for(;this._pos<this._end;){const e=this._text[this._pos];if(e==null||!h.isXmlChar(e.codePointAt(0)))throw new o.XmlError({type:"NonXmlChar",char:e!=null?e:"\uFFFD"},this.genTextPos());if(t(this,e))this._pos+=e.length;else break}}sliceBack(t){return this._text.slice(t,this._pos)}rangeFrom(t){return{start:t,end:this._pos}}skipSpaces(){for(;this.startsWithSpace();)this._pos+=1}startsWithSpace(){return this._pos<this._end&&h.isXmlSpaceByte(this.currCodeUnitUnchecked())}consumeSpaces(){if(this._pos>=this._end)throw new o.XmlError({type:"UnexpectedEndOfStream"},this.genTextPos());if(!this.startsWithSpace())throw new o.XmlError({type:"InvalidChar",expected:"a whitespace",actual:this.currCodeUnitUnchecked()},this.genTextPos());this.skipSpaces()}tryConsumeReference(){const t=this._pos,e=this.clone(),i=e.consumeReference();return i!=null?(this._pos+=e.getPos()-t,i):null}consumeReference(){if(!this.tryConsumeCodeUnit(r.AMPERSAND))return null;let t;if(this.tryConsumeCodeUnit(r.HASH)){let e,i;this.tryConsumeCodeUnit(r.LOWERCASE_X)?(e=this.consumeCodeUnitsWhile(s=>s>=r.ZERO&&s<=r.NINE||s>=r.UPPERCASE_A&&s<=r.UPPERCASE_F||s>=r.LOWERCASE_A&&s<=r.LOWERCASE_F),i=16):(e=this.consumeCodeUnitsWhile(s=>h.isAsciiDigit(s)),i=10);const n=parseInt(e,i);isNaN(n)||!h.isXmlChar(n)?t=null:t={type:"Char",value:String.fromCodePoint(n)}}else{const e=this.consumeName();switch(e){case"quot":t={type:"Char",value:'"'};break;case"amp":t={type:"Char",value:"&"};break;case"apos":t={type:"Char",value:"'"};break;case"lt":t={type:"Char",value:"<"};break;case"gt":t={type:"Char",value:">"};break;default:t={type:"Entity",value:e}}}return this.tryConsumeCodeUnit(r.SEMICOLON)?t:null}consumeName(){const t=this._pos;this.skipName();const e=this.sliceBack(t);if(e.length===0)throw new o.XmlError({type:"InvalidName"},this.genTextPosFrom(t));return e}skipName(){const t=this._pos;for(;this._pos<this._end;){const e=this.currCodeUnitUnchecked();if(this._pos===t){if(!h.isXmlNameStart(e))throw new o.XmlError({type:"InvalidName"},this.genTextPosFrom(t))}else if(!h.isXmlName(e))break;this._pos+=1}}consumeQName(){var t,e;const i=this._pos;let n=null;for(;this._pos<this._end;){const u=this.currCodeUnitUnchecked();if(u===r.COLON)if(n==null)n=this._pos,this._pos+=1;else throw new o.XmlError({type:"InvalidName"},this.genTextPosFrom(i));else if(h.isXmlName(u))this._pos+=1;else break}let s,l;if(n!=null?(s=this._text.slice(i,n),l=this.sliceBack(n+1)):(s="",l=this.sliceBack(i)),s.length>0&&!h.isXmlNameStart((t=s[0])==null?void 0:t.codePointAt(0)))throw new o.XmlError({type:"InvalidName"},this.genTextPosFrom(i));if(l.length>0){if(!h.isXmlNameStart((e=l[0])==null?void 0:e.codePointAt(0)))throw new o.XmlError({type:"InvalidName"},this.genTextPosFrom(i))}else throw new o.XmlError({type:"InvalidName"},this.genTextPosFrom(i));return[s,l]}consumeQuote(){const t=this.currCodeUnit();if(t===r.SINGLE_QUOTE||t===r.DOUBLE_QUOTE)return this._pos+=1,t;throw new o.XmlError({type:"InvalidChar",expected:"a quote",actual:t},this.genTextPos())}genTextPos(){return this.genTextPosFrom(this._pos)}genTextPosFrom(t){const e=Math.min(t,this._end);let i=1,n=1;for(let s=0;s<e;s++)this._text.charCodeAt(s)===r.LINE_FEED?(i++,n=1):n++;return{row:i,col:n}}}exports.XmlStream=p;
@@ -0,0 +1 @@
1
+ "use strict";const E=9,A=10,R=13,S=32,O=33,_=34,C=35,N=37,P=38,L=39,T=45,U=46,I=47,H=48,D=57,M=58,Q=59,W=60,Z=61,B=62,F=63,G=65,K=70,X=80,s=83,t=90,Y=91,c=95,e=97,i=102,n=120,o=122;exports.AMPERSAND=38,exports.CARRIAGE_RETURN=13,exports.COLON=58,exports.DOUBLE_QUOTE=34,exports.EQUALS=61,exports.EXCLAMATION_MARK=33,exports.GREATER_THAN=62,exports.HASH=35,exports.HORIZONTAL_TAB=9,exports.HYPHEN=45,exports.LESS_THAN=60,exports.LINE_FEED=10,exports.LOWERCASE_A=97,exports.LOWERCASE_F=102,exports.LOWERCASE_X=120,exports.LOWERCASE_Z=122,exports.NINE=57,exports.OPEN_BRACKET=91,exports.PERCENT=37,exports.PERIOD=46,exports.QUESTION_MARK=63,exports.SEMICOLON=59,exports.SINGLE_QUOTE=39,exports.SLASH=47,exports.SPACE=32,exports.UNDERSCORE=95,exports.UPPERCASE_A=65,exports.UPPERCASE_F=70,exports.UPPERCASE_P=80,exports.UPPERCASE_S=83,exports.UPPERCASE_Z=90,exports.ZERO=48;
@@ -0,0 +1 @@
1
+ "use strict";var r=require("./ascii-constants.js"),i=require("./XmlError.js"),P=require("./XmlStream.js");function w(t,n,s){T(new P.XmlStream(t),n,s)}function T(t,n,s){if(t.startsWith("\uFEFF")&&t.advance(1),t.startsWith("<?xml ")&&A(t),m(t,s),t.skipSpaces(),t.startsWith("<!DOCTYPE")){if(!n)throw new i.XmlError({type:"DtdDetected"});W(t,s),m(t,s)}if(t.skipSpaces(),!t.atEnd()&&t.currCodeUnit()===r.LESS_THAN&&S(t,s),m(t,s),!t.atEnd())throw new i.XmlError({type:"UnknownToken",message:"Not at end"},t.genTextPos())}function m(t,n){for(;!t.atEnd();)if(t.skipSpaces(),t.startsWith("<!--"))h(t,n);else if(t.startsWith("<?"))f(t,n);else break}function A(t){if(t.advance(5),E(t),!t.startsWith("version"))throw new i.XmlError({type:"InvalidString",expected:"version"},t.genTextPos());d(t),E(t),t.startsWith("encoding")&&(d(t),E(t)),t.startsWith("standalone")&&d(t),t.skipSpaces(),t.skipString("?>")}function E(t){if(t.startsWithSpace())t.skipSpaces();else if(!t.startsWith("?>")&&!t.atEnd())throw new i.XmlError({type:"InvalidChar",expected:"a whitespace",actual:t.currCodeUnitUnchecked()},t.genTextPos())}function h(t,n){const s=t.getPos();t.advance(4);const o=t.consumeCharsWhile((e,a)=>!(a==="-"&&e.startsWith("-->")));if(t.skipString("-->"),o.includes("--")||o.endsWith("-"))throw new i.XmlError({type:"InvalidComment"},t.genTextPosFrom(s));n({type:"Comment",text:o,range:t.rangeFrom(s)})}function f(t,n){if(t.startsWith("<?xml "))throw new i.XmlError({type:"UnexpectedDeclaration"},t.genTextPos());const s=t.getPos();t.advance(2);const o=t.consumeName();t.skipSpaces();const e=t.consumeCharsWhile((a,c)=>!(c==="?"&&a.startsWith("?>")));t.skipString("?>"),n({type:"ProcessingInstruction",target:o,content:e.length===0?void 0:e,range:t.rangeFrom(s)})}function W(t,n){const s=t.getPos();if(v(t),t.skipSpaces(),t.currCodeUnit()===r.GREATER_THAN){t.advance(1);return}for(t.advance(1);!t.atEnd();)if(t.skipSpaces(),t.startsWith("<!ENTITY"))y(t,n);else if(t.startsWith("<!--"))h(t,n);else if(t.startsWith("<?"))f(t,n);else if(t.startsWith("]"))if(t.advance(1),t.skipSpaces(),t.currCodeUnit()===r.GREATER_THAN){t.advance(1);break}else throw new i.XmlError({type:"InvalidChar",expected:"'>'",actual:t.currCodeUnitUnchecked()},t.genTextPos());else if(t.startsWith("<!ELEMENT")||t.startsWith("<!ATTLIST")||t.startsWith("<!NOTATION"))try{N(t)}catch(o){throw new i.XmlError({type:"UnknownToken",message:"Failed to consume declaration"},t.genTextPosFrom(s))}else throw new i.XmlError({type:"UnknownToken",message:"Failed to parse doctype"},t.genTextPos())}function v(t){t.advance(9),t.consumeSpaces(),t.skipName(),t.skipSpaces(),g(t),t.skipSpaces();const n=t.currCodeUnit();if(n!==r.OPEN_BRACKET&&n!==r.GREATER_THAN)throw new i.XmlError({type:"InvalidChar",expected:"'[' or '>'",actual:n},t.genTextPos())}function g(t){if(t.startsWith("SYSTEM")||t.startsWith("PUBLIC")){const n=t.getPos();t.advance(6);const s=t.sliceBack(n);t.consumeSpaces();const o=t.consumeQuote();if(t.consumeCodeUnitsWhile(e=>e!==o),t.consumeCodeUnit(o),s==="PUBLIC"){t.consumeSpaces();const e=t.consumeQuote();t.consumeCodeUnitsWhile(a=>a!==e),t.consumeCodeUnit(e)}return!0}return!1}function y(t,n){t.advance(8),t.consumeSpaces();const s=!t.tryConsumeCodeUnit(r.PERCENT);s||t.consumeSpaces();const o=t.consumeName();t.consumeSpaces();const e=x(t,s);e!==null&&n({type:"EntityDeclaration",name:o,definition:e}),t.skipSpaces(),t.consumeCodeUnit(r.GREATER_THAN)}function x(t,n){const s=t.currCodeUnit();if(s===r.DOUBLE_QUOTE||s===r.SINGLE_QUOTE){const o=t.consumeQuote(),e=t.getPos();t.skipCodeUnitsWhile(c=>c!==o);const a=t.sliceBack(e);return t.consumeCodeUnit(o),a}else if(s===r.UPPERCASE_S||s===r.UPPERCASE_P){if(g(t))return n&&(t.skipSpaces(),t.startsWith("NDATA")&&(t.advance(5),t.consumeSpaces(),t.skipName())),null;throw new i.XmlError({type:"InvalidExternalID"},t.genTextPos())}else throw new i.XmlError({type:"InvalidChar",expected:"a quote, SYSTEM or PUBLIC",actual:s},t.genTextPos())}function N(t){t.skipCodeUnitsWhile(n=>n!==r.GREATER_THAN),t.consumeCodeUnit(r.GREATER_THAN)}function S(t,n){const s=t.getPos();t.advance(1);const[o,e]=t.consumeQName();n({type:"ElementStart",prefix:o,local:e,start:s});let a=!1;for(;!t.atEnd();){const c=t.startsWithSpace();t.skipSpaces();const p=t.getPos(),u=t.currCodeUnit();if(u===r.SLASH){t.advance(1),t.consumeCodeUnit(r.GREATER_THAN);const l=t.rangeFrom(p);n({type:"ElementEnd",end:{type:"Empty"},range:l});break}else if(u===r.GREATER_THAN){t.advance(1);const l=t.rangeFrom(p);n({type:"ElementEnd",end:{type:"Open"},range:l}),a=!0;break}else{if(!c)throw new i.XmlError({type:"InvalidChar",expected:"a whitespace",actual:t.currCodeUnitUnchecked()},t.genTextPos());const[l,C,k]=d(t),U=t.getPos();n({type:"Attribute",range:{start:p,end:U},prefix:l,local:C,value:k})}}a&&R(t,n)}function d(t){const[n,s]=t.consumeQName();let o;const e=t.getPos();if(t.skipSpaces(),t.tryConsumeCodeUnit(r.EQUALS)){t.skipSpaces();const a=t.consumeQuote(),c=String.fromCharCode(a),p=t.getPos();t.skipCharsWhile((u,l)=>l!==c&&l!=="<"),o=t.sliceBack(p),t.consumeCodeUnit(a)}else t.goTo(e),o="true";return[n,s,o]}function R(t,n){for(;!t.atEnd();)if(t.currCodeUnit()===r.LESS_THAN){const s=t.nextCodeUnit();if(s===r.EXCLAMATION_MARK)if(t.startsWith("<!--"))h(t,n);else if(t.startsWith("<![CDATA["))X(t,n);else throw new i.XmlError({type:"UnknownToken",message:"Failed to parse content"},t.genTextPos());else if(s===r.QUESTION_MARK)f(t,n);else if(s===r.SLASH){I(t,n);break}else S(t,n)}else _(t,n)}function X(t,n){const s=t.getPos();t.advance(9);const o=t.consumeCharsWhile((a,c)=>!(c==="]"&&a.startsWith("]]>")));t.skipString("]]>");const e=t.rangeFrom(s);n({type:"Cdata",text:o,range:e})}function I(t,n){const s=t.getPos();t.advance(2);const[o,e]=t.consumeQName();t.skipSpaces(),t.consumeCodeUnit(r.GREATER_THAN);const a=t.rangeFrom(s);n({type:"ElementEnd",end:{type:"Close",prefix:o,local:e},range:a})}function _(t,n){const s=t.getPos(),o=t.consumeCharsWhile((e,a)=>a!=="<");if(o.includes(">")&&o.includes("]]>"))throw new i.XmlError({type:"InvalidCharacterData"},t.genTextPos());n({type:"Text",text:o,range:t.rangeFrom(s)})}exports.tokenize=w,exports.tokenizeXmlStream=T;
@@ -1 +1 @@
1
- "use strict";const C=9,P=10,L=13,T=32,U=33,i=34,I=35,t=37,H=38,n=39,e=45,r=46,s=47,D=48,l=57,m=58,u=59,X=60,M=61,B=62,a=63,c=65,Q=70,W=80,Z=83,F=90,G=91,K=95,o=97,f=102,y=120,Y=122;function S(E){return E>=48&&E<=57}function N(E){return E==null?!1:E<=128?E>=65&&E<=90||E>=97&&E<=122||E===58||E===95:E>=192&&E<=214||E>=216&&E<=246||E>=248&&E<=767||E>=880&&E<=893||E>=895&&E<=8191||E>=8204&&E<=8205||E>=8304&&E<=8591||E>=11264&&E<=12271||E>=12289&&E<=55295||E>=63744&&E<=64975||E>=65008&&E<=65533||E>=65536&&E<=983039}function O(E){return E==null?!1:E<=128?R(E):E===183||E>=192&&E<=214||E>=216&&E<=246||E>=248&&E<=767||E>=768&&E<=879||E>=880&&E<=893||E>=895&&E<=8191||E>=8204&&E<=8205||E>=8255&&E<=8256||E>=8304&&E<=8591||E>=11264&&E<=12271||E>=12289&&E<=55295||E>=63744&&E<=64975||E>=65008&&E<=65533||E>=65536&&E<=983039}function _(E){return E==null?!1:E<32?A(E):E!==65535&&E!==65534}function A(E){return E===32||E===9||E===10||E===13}function R(E){return E>=48&&E<=57||E>=65&&E<=90||E>=97&&E<=122||E===58||E===95||E===45||E===46}exports.AMPERSAND=38,exports.CARRIAGE_RETURN=13,exports.COLON=58,exports.DOUBLE_QUOTE=34,exports.EQUALS=61,exports.EXCLAMATION_MARK=33,exports.GREATER_THAN=62,exports.HASH=35,exports.HORIZONTAL_TAB=9,exports.HYPHEN=45,exports.LESS_THAN=60,exports.LINE_FEED=10,exports.LOWERCASE_A=97,exports.LOWERCASE_F=102,exports.LOWERCASE_X=120,exports.LOWERCASE_Z=122,exports.NINE=57,exports.OPEN_BRACKET=91,exports.PERCENT=37,exports.PERIOD=46,exports.QUESTION_MARK=63,exports.SEMICOLON=59,exports.SINGLE_QUOTE=39,exports.SLASH=47,exports.SPACE=32,exports.UNDERSCORE=95,exports.UPPERCASE_A=65,exports.UPPERCASE_F=70,exports.UPPERCASE_P=80,exports.UPPERCASE_S=83,exports.UPPERCASE_Z=90,exports.ZERO=48,exports.isAsciiDigit=S,exports.isXmlChar=_,exports.isXmlName=O,exports.isXmlNameByte=R,exports.isXmlNameStart=N,exports.isXmlSpaceByte=A;
1
+ "use strict";var i=require("./ascii-constants.js");function e(E){return E>=i.ZERO&&E<=i.NINE}function r(E){return E==null?!1:E<=128?E>=i.UPPERCASE_A&&E<=i.UPPERCASE_Z||E>=i.LOWERCASE_A&&E<=i.LOWERCASE_Z||E===i.COLON||E===i.UNDERSCORE:E>=192&&E<=214||E>=216&&E<=246||E>=248&&E<=767||E>=880&&E<=893||E>=895&&E<=8191||E>=8204&&E<=8205||E>=8304&&E<=8591||E>=11264&&E<=12271||E>=12289&&E<=55295||E>=63744&&E<=64975||E>=65008&&E<=65533||E>=65536&&E<=983039}function R(E){return E==null?!1:E<=128?n(E):E===183||E>=192&&E<=214||E>=216&&E<=246||E>=248&&E<=767||E>=768&&E<=879||E>=880&&E<=893||E>=895&&E<=8191||E>=8204&&E<=8205||E>=8255&&E<=8256||E>=8304&&E<=8591||E>=11264&&E<=12271||E>=12289&&E<=55295||E>=63744&&E<=64975||E>=65008&&E<=65533||E>=65536&&E<=983039}function s(E){return E==null?!1:E<32?t(E):E!==65535&&E!==65534}function t(E){return E===i.SPACE||E===i.HORIZONTAL_TAB||E===i.LINE_FEED||E===i.CARRIAGE_RETURN}function n(E){return E>=i.ZERO&&E<=i.NINE||E>=i.UPPERCASE_A&&E<=i.UPPERCASE_Z||E>=i.LOWERCASE_A&&E<=i.LOWERCASE_Z||E===i.COLON||E===i.UNDERSCORE||E===i.HYPHEN||E===i.PERIOD}exports.isAsciiDigit=e,exports.isXmlChar=s,exports.isXmlName=R,exports.isXmlNameByte=n,exports.isXmlNameStart=r,exports.isXmlSpaceByte=t;
@@ -0,0 +1 @@
1
+ "use strict";var n=require("./token-to-xml.js");function r(e){let o="";return e.forEach(t=>{o+=n.tokenToXml(t)}),o}exports.tokensToXml=r;
@@ -1 +1 @@
1
- "use strict";var s=require("./tokenizer/tokenizer.js"),m=require("./tokenizer/XmlStream.js");function u(a,l=!1){const c={tagName:"root",attributes:{},children:[]},n=[c];let r=c;return s.parseXmlStream(new m.XmlStream(a),l,t=>{switch(t.type){case"ElementStart":{const e={tagName:i(t.local,t.prefix),attributes:{},children:[]};r.children.push(e),n.push(e),r=e;break}case"ElementEnd":{if(t.end.type==="Close"||t.end.type==="Empty"){n.pop();const e=n[n.length-1];e!=null&&(r=e)}break}case"Attribute":{r.attributes[i(t.local,t.prefix)]=t.value;break}case"Text":case"Cdata":{t.text.trim().length>0&&r.children.push(t.text);break}}}),c.children[0]}function i(a,l){return l.length>0?`${l}:${a}`:a}exports.getTagName=i,exports.xmlToObject=u;
1
+ "use strict";var n=require("./get-q-name.js"),s=require("./tokenizer/tokenize.js");function o(c,l=!1){const i={tagName:"root",attributes:{},children:[]},r=[i];let a=i;return s.tokenize(c,l,t=>{switch(t.type){case"ElementStart":{const e={tagName:n.getQName(t.local,t.prefix),attributes:{},children:[]};a.children.push(e),r.push(e),a=e;break}case"ElementEnd":{if(t.end.type==="Close"||t.end.type==="Empty"){r.pop();const e=r[r.length-1];e!=null&&(a=e)}break}case"Attribute":{a.attributes[n.getQName(t.local,t.prefix)]=t.value;break}case"Text":case"Cdata":{t.text.trim().length>0&&a.children.push(t.text);break}}}),i.children[0]}exports.xmlToObject=o;
@@ -0,0 +1 @@
1
+ function n(l,e=null){return e!=null&&e.length>0?`${e}:${l}`:l}export{n as getQName};
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- import{parseString as S}from"./parse-string.js";import{parseXmlStream as r}from"./tokenizer/tokenizer.js";import{AMPERSAND as N,CARRIAGE_RETURN as O,COLON as e,DOUBLE_QUOTE as _,EQUALS as C,EXCLAMATION_MARK as P,GREATER_THAN as t,HASH as o,HORIZONTAL_TAB as L,HYPHEN as T,LESS_THAN as a,LINE_FEED as U,LOWERCASE_A as i,LOWERCASE_F as X,LOWERCASE_X as l,LOWERCASE_Z as p,NINE as s,OPEN_BRACKET as I,PERCENT as H,PERIOD as x,QUESTION_MARK as f,SEMICOLON as D,SINGLE_QUOTE as B,SLASH as M,SPACE as g,UNDERSCORE as Q,UPPERCASE_A as W,UPPERCASE_F as Z,UPPERCASE_P as c,UPPERCASE_S as F,UPPERCASE_Z as G,ZERO as K,isAsciiDigit as y,isXmlChar as b,isXmlName as h,isXmlNameByte as j,isXmlNameStart as n,isXmlSpaceByte as Y}from"./tokenizer/utils.js";import{XmlError as k}from"./tokenizer/XmlError.js";import{XmlStream as u}from"./tokenizer/XmlStream.js";import{getTagName as w,xmlToObject as z}from"./xml-to-object.js";export{N as AMPERSAND,O as CARRIAGE_RETURN,e as COLON,_ as DOUBLE_QUOTE,C as EQUALS,P as EXCLAMATION_MARK,t as GREATER_THAN,o as HASH,L as HORIZONTAL_TAB,T as HYPHEN,a as LESS_THAN,U as LINE_FEED,i as LOWERCASE_A,X as LOWERCASE_F,l as LOWERCASE_X,p as LOWERCASE_Z,s as NINE,I as OPEN_BRACKET,H as PERCENT,x as PERIOD,f as QUESTION_MARK,D as SEMICOLON,B as SINGLE_QUOTE,M as SLASH,g as SPACE,Q as UNDERSCORE,W as UPPERCASE_A,Z as UPPERCASE_F,c as UPPERCASE_P,F as UPPERCASE_S,G as UPPERCASE_Z,k as XmlError,u as XmlStream,K as ZERO,w as getTagName,y as isAsciiDigit,b as isXmlChar,h as isXmlName,j as isXmlNameByte,n as isXmlNameStart,Y as isXmlSpaceByte,S as parseString,r as parseXmlStream,z as xmlToObject};
1
+ import{select as o}from"./selector/select.js";import{TokenSelector as t}from"./selector/TokenSelector.js";import{EToCacheNodeProps as A,ETokenMatchCriteria as m,TokenSelectState as R}from"./selector/TokenSelectState.js";import{TokenSelectStateMachine as C}from"./selector/TokenSelectStateMachine.js";import{tokenToXml as T}from"./token-to-xml.js";import{AMPERSAND as P,CARRIAGE_RETURN as i,COLON as l,DOUBLE_QUOTE as a,EQUALS as p,EXCLAMATION_MARK as L,GREATER_THAN as x,HASH as f,HORIZONTAL_TAB as U,HYPHEN as X,LESS_THAN as c,LINE_FEED as s,LOWERCASE_A as n,LOWERCASE_F as I,LOWERCASE_X as k,LOWERCASE_Z as H,NINE as M,OPEN_BRACKET as D,PERCENT as B,PERIOD as h,QUESTION_MARK as Q,SEMICOLON as W,SINGLE_QUOTE as Z,SLASH as F,SPACE as G,UNDERSCORE as K,UPPERCASE_A as y,UPPERCASE_F as z,UPPERCASE_P as b,UPPERCASE_S as d,UPPERCASE_Z as g,ZERO as j}from"./tokenizer/ascii-constants.js";import{tokenize as q,tokenizeXmlStream as u}from"./tokenizer/tokenize.js";import{isAsciiDigit as w,isXmlChar as J,isXmlName as V,isXmlNameByte as $,isXmlNameStart as EE,isXmlSpaceByte as eE}from"./tokenizer/utils.js";import{XmlError as rE}from"./tokenizer/XmlError.js";import{XmlStream as SE}from"./tokenizer/XmlStream.js";import{tokensToXml as mE}from"./tokens-to-xml.js";import{xmlToObject as NE}from"./xml-to-object.js";export{P as AMPERSAND,i as CARRIAGE_RETURN,l as COLON,a as DOUBLE_QUOTE,p as EQUALS,A as EToCacheNodeProps,m as ETokenMatchCriteria,L as EXCLAMATION_MARK,x as GREATER_THAN,f as HASH,U as HORIZONTAL_TAB,X as HYPHEN,c as LESS_THAN,s as LINE_FEED,n as LOWERCASE_A,I as LOWERCASE_F,k as LOWERCASE_X,H as LOWERCASE_Z,M as NINE,D as OPEN_BRACKET,B as PERCENT,h as PERIOD,Q as QUESTION_MARK,W as SEMICOLON,Z as SINGLE_QUOTE,F as SLASH,G as SPACE,R as TokenSelectState,C as TokenSelectStateMachine,t as TokenSelector,K as UNDERSCORE,y as UPPERCASE_A,z as UPPERCASE_F,b as UPPERCASE_P,d as UPPERCASE_S,g as UPPERCASE_Z,rE as XmlError,SE as XmlStream,j as ZERO,w as isAsciiDigit,J as isXmlChar,V as isXmlName,$ as isXmlNameByte,EE as isXmlNameStart,eE as isXmlSpaceByte,o as select,T as tokenToXml,q as tokenize,u as tokenizeXmlStream,mE as tokensToXml,NE as xmlToObject};
@@ -0,0 +1 @@
1
+ import{getQName as h}from"../get-q-name.js";var l=Object.defineProperty,o=(e,t,s)=>t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,r=(e,t,s)=>o(e,typeof t!="symbol"?t+"":t,s);class c{constructor(t){r(this,"_segment"),r(this,"_matchCriteria",0),r(this,"_toCacheNodeProps",0),r(this,"_enteredDepth",null),this._segment=t,this.applyLevels()}get matchCriteria(){return this._matchCriteria}get toCacheNodeProps(){return this._toCacheNodeProps}get enteredDepth(){return this._enteredDepth}applyLevels(){let t=0,s=0;(this._segment.local!=null||this._segment.prefix!=null)&&(t|=1),this._segment.attributes!=null&&(t|=2,s|=2),this._segment.containsText!=null&&(t|=4),this._segment.predicate!=null&&(t|=8,s|=7),this._matchCriteria=t,this._toCacheNodeProps=s}matchesName(t,s){return(this._segment.local==null||this._segment.local==="*"||this._segment.local===t)&&(this._segment.prefix==null||this._segment.prefix===s)}matchesAttributes(t){if(this._segment.attributes!=null)for(const s of this._segment.attributes){const i=h(s.local,s.prefix);if(!(i in t)||s.value!=null&&t[i]!==s.value)return!1}return!0}matchesText(t){return this._segment.containsText==null||t.includes(this._segment.containsText)}matchesDepth(t,s){switch(this._segment.axis){case"child":return t===s+1;case"self-or-descendant":return t>=s}}match(t){this._enteredDepth=t}unmatch(){this._enteredDepth=null}}var a=(e=>(e[e.None=0]="None",e[e.Name=1]="Name",e[e.Attributes=2]="Attributes",e[e.Text=4]="Text",e))(a||{}),n=(e=>(e[e.None=0]="None",e[e.Name=1]="Name",e[e.Attributes=2]="Attributes",e[e.Text=4]="Text",e[e.Node=8]="Node",e))(n||{});export{a as EToCacheNodeProps,n as ETokenMatchCriteria,c as TokenSelectState};
@@ -0,0 +1 @@
1
+ import{getQName as _}from"../get-q-name.js";import{EToCacheNodeProps as l,TokenSelectState as p,ETokenMatchCriteria as n}from"./TokenSelectState.js";var S=Object.defineProperty,C=(i,t,e)=>t in i?S(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,h=(i,t,e)=>C(i,typeof t!="symbol"?t+"":t,e);class N{constructor(t){h(this,"_states"),h(this,"_currentState",null),h(this,"_hasActiveCache",!1),h(this,"_toCacheNodeProps",l.None),h(this,"_cachedNodeProps",{prefix:null,local:null,attributes:null,text:null}),h(this,"_cachedTokens",[]),h(this,"_toRecordTokens",[]),this._states=t.map(e=>new p(e))}getNextState(){var t;const e=this._currentState!=null?this._currentState+1:0;return e<this._states.length&&(t=this._states[e])!=null?t:null}getCurrentState(){var t;return this._currentState!=null&&this._currentState<this._states.length&&(t=this._states[this._currentState])!=null?t:null}record(t){this._hasActiveCache&&this.getOffsetToFinal()<=1&&this._cachedTokens.push(t)}takeRecordedTokens(){if(this._toRecordTokens.length>0){const t=this._toRecordTokens;return this._toRecordTokens=[],t}return null}transitionIfNameMatch(t,e,s){var r;const a=this.getNextState(),o=this.getCurrentState();return a!=null&&a.matchesName(t,e)&&a.matchesDepth(s,(r=o==null?void 0:o.enteredDepth)!=null?r:0)?a.matchCriteria&(n.Attributes|n.Text|n.Node)?(this._hasActiveCache=!0,this._toCacheNodeProps|=a.toCacheNodeProps,this._toCacheNodeProps&l.Name&&(this._cachedNodeProps.local=t,this._cachedNodeProps.prefix=e),!1):(this.transitionForward(s),!0):!1}transitionIfAttributesMatch(t,e,s,r){var a,o;const c=this.getNextState(),d=this.getCurrentState(),u=(a=this._cachedNodeProps.attributes)!=null?a:{};return u[_(t,e)]=s,c!=null&&c.matchesAttributes(u)&&c.matchesDepth(r,(o=d==null?void 0:d.enteredDepth)!=null?o:0)?c.matchCriteria&(n.Text|n.Node)?(this._hasActiveCache=!0,this._toCacheNodeProps|=c.toCacheNodeProps,this._toCacheNodeProps&l.Attributes&&(this._cachedNodeProps.attributes=u),!1):(this.transitionForward(r),!0):!1}transitionIfTextMatch(t,e){var s;const r=this.getNextState(),a=this.getCurrentState();return r!=null&&r.matchesText(t)&&r.matchesDepth(e,(s=a==null?void 0:a.enteredDepth)!=null?s:0)?r.matchCriteria&n.Node?(this._hasActiveCache=!0,this._toCacheNodeProps|=r.toCacheNodeProps,this._toCacheNodeProps&l.Text&&(this._cachedNodeProps.text=t),!1):(this.transitionForward(e),!0):!1}transitionForward(t){const e=this.getCurrentState();e!=null&&e.unmatch(),this._currentState=this._currentState!=null?this._currentState+1:0;const s=this.getCurrentState();s!=null&&s.match(t),this.isFinalState()&&(this._toRecordTokens=this._cachedTokens),this.resetCurrentStateCache()}transitionBack(t){const e=this.getCurrentState();e!=null&&e.unmatch(),this._currentState=this._currentState!=null?this._currentState-1:0;const s=this.getCurrentState();s!=null&&s.match(t),this.resetCurrentStateCache()}isFinalState(){return this._currentState!=null&&this._currentState>=this._states.length-1}getOffsetToFinal(){return this._currentState==null?this._states.length:this._states.length-1-this._currentState}resetCurrentStateCache(){this._hasActiveCache=!1,this._toCacheNodeProps=l.None,this._cachedNodeProps.prefix=null,this._cachedNodeProps.local=null,this._cachedNodeProps.attributes=null,this._cachedNodeProps.text=null,this._cachedTokens=[]}}export{N as TokenSelectStateMachine};
@@ -0,0 +1 @@
1
+ import{ETokenMatchCriteria as a}from"./TokenSelectState.js";import{TokenSelectStateMachine as l}from"./TokenSelectStateMachine.js";var u=Object.defineProperty,p=(r,t,i)=>t in r?u(r,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):r[t]=i,s=(r,t,i)=>p(r,typeof t!="symbol"?t+"":t,i);class f{constructor(t){s(this,"_currentDepth",0),s(this,"_tspStateMachines"),s(this,"_isRecording",!1),this._tspStateMachines=t.map(i=>new l(i))}pipeToken(t,i){let e=!1,n=!1;switch(t.type){case"ElementStart":e=this.handleElementStart(t);break;case"Attribute":e=this.handleAttribute(t);break;case"Text":e=this.handleText(t);break;case"ElementEnd":{n=this.handleElementEnd(t);break}}e&&!this._isRecording&&this.record();for(const c of this._tspStateMachines){c.record(t);const h=c.takeRecordedTokens();h!=null&&h.forEach(o=>{i(o)})}this._isRecording&&i(t),n&&(this._isRecording=!1)}handleElementStart(t){this._currentDepth+=1;let i=!1;for(const e of this._tspStateMachines){if(e.resetCurrentStateCache(),e.isFinalState())continue;const n=e.getNextState();n==null||!(n.matchCriteria&a.Name)||e.transitionIfNameMatch(t.local,t.prefix,this._currentDepth)&&e.isFinalState()&&(i=!0)}return i}handleAttribute(t){let i=!1;for(const e of this._tspStateMachines){if(e.isFinalState())continue;const n=e.getNextState();n==null||!(n.matchCriteria&a.Attributes)||e.transitionIfAttributesMatch(t.local,t.prefix,t.value,this._currentDepth)&&e.isFinalState()&&(i=!0)}return i}handleText(t){let i=!1;for(const e of this._tspStateMachines){if(e.isFinalState())continue;const n=e.getNextState();n==null||!(n.matchCriteria&a.Text)||e.transitionIfTextMatch(t.text,this._currentDepth)&&e.isFinalState()&&(i=!0)}return i}handleElementEnd(t){if(t.end.type==="Close"||t.end.type==="Empty"){this._currentDepth-=1;let i=!1;for(const e of this._tspStateMachines){const n=e.getCurrentState();n!=null&&(n.enteredDepth!=null&&this._currentDepth<n.enteredDepth&&e.transitionBack(this._currentDepth),i=i||e.isFinalState())}return!i}return!1}record(){this._isRecording=!0}}export{f as TokenSelector};
@@ -0,0 +1 @@
1
+ import{tokenize as p}from"../tokenizer/tokenize.js";import{TokenSelector as c}from"./TokenSelector.js";function m(e,o,n){const t=new c(o);p(e,!1,r=>{t.pipeToken(r,i=>{n(i)})})}export{m as select};
@@ -0,0 +1 @@
1
+ function n(t){let e="";switch(t.type){case"ProcessingInstruction":e+=`<?${t.target}`,t.content&&(e+=` ${t.content}`),e+="?>";break;case"Comment":e+=`<!--${t.text}-->`;break;case"EntityDeclaration":e+=`<!ENTITY ${t.name} "${t.definition}">`;break;case"ElementStart":e+=`<${t.prefix.length>0?`${t.prefix}:`:""}${t.local}`;break;case"Attribute":e+=` ${t.prefix.length>0?`${t.prefix}:`:""}${t.local}="${t.value}"`;break;case"ElementEnd":t.end.type==="Open"?e+=">":t.end.type==="Close"?e+=`</${t.end.prefix.length>0?`${t.end.prefix}:`:""}${t.end.local}>`:e+="/>";break;case"Text":e+=t.text;break;case"Cdata":e+=`<![CDATA[${t.text}]]>`;break}return e}export{n as tokenToXml};
@@ -1 +1 @@
1
- import{isXmlChar as u,isXmlSpaceByte as _,AMPERSAND as m,HASH as C,LOWERCASE_X as f,ZERO as x,NINE as U,UPPERCASE_A as w,UPPERCASE_F as y,LOWERCASE_A as g,LOWERCASE_F as k,isAsciiDigit as E,SEMICOLON as P,isXmlNameStart as a,isXmlName as d,COLON as v,SINGLE_QUOTE as N,DOUBLE_QUOTE as S,LINE_FEED as A}from"./utils.js";import{XmlError as n}from"./XmlError.js";var T=Object.defineProperty,W=(h,t,e)=>t in h?T(h,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[t]=e,c=(h,t,e)=>W(h,typeof t!="symbol"?t+"":t,e);class l{constructor(t,e=0){c(this,"_text"),c(this,"_pos"),c(this,"_end"),this._text=t,this._pos=e,this._end=this._text.length}clone(){return new l(this._text,this._pos)}getPos(){return this._pos}atEnd(){return this._pos>=this._end}currCodeUnit(){if(this._pos>=this._end)throw new n({type:"UnexpectedEndOfStream"});return this._text.charCodeAt(this._pos)}currCodeUnitUnchecked(){return this._text.charCodeAt(this._pos)}nextCodeUnit(){if(this._pos+1>=this._end)throw new n({type:"UnexpectedEndOfStream"});return this._text.charCodeAt(this._pos+1)}advance(t){this._pos+=t}goTo(t){this._pos=t}startsWith(t){return this._text.startsWith(t,this._pos)}consumeCodeUnit(t){const e=this.currCodeUnit();if(e!==t)throw new n({type:"InvalidChar",expected:t,actual:e},this.genTextPos());this._pos+=1}tryConsumeCodeUnit(t){return this.currCodeUnit()===t?(this._pos+=1,!0):!1}skipString(t){if(!this.startsWith(t))throw new n({type:"InvalidString",expected:t},this.genTextPos());this._pos+=t.length}consumeCodeUnitsWhile(t){const e=this._pos;return this.skipCodeUnitsWhile(t),this.sliceBack(e)}skipCodeUnitsWhile(t){for(;this._pos<this._end&&t(this.currCodeUnitUnchecked());)this._pos+=1}consumeCharsWhile(t){const e=this._pos;return this.skipCharsWhile(t),this.sliceBack(e)}skipCharsWhile(t){for(;this._pos<this._end;){const e=this._text[this._pos];if(e==null||!u(e.codePointAt(0)))throw new n({type:"NonXmlChar",char:e!=null?e:"\uFFFD"},this.genTextPos());if(t(this,e))this._pos+=e.length;else break}}sliceBack(t){return this._text.slice(t,this._pos)}rangeFrom(t){return{start:t,end:this._pos}}skipSpaces(){for(;this.startsWithSpace();)this._pos+=1}startsWithSpace(){return this._pos<this._end&&_(this.currCodeUnitUnchecked())}consumeSpaces(){if(this._pos>=this._end)throw new n({type:"UnexpectedEndOfStream"},this.genTextPos());if(!this.startsWithSpace())throw new n({type:"InvalidChar",expected:"a whitespace",actual:this.currCodeUnitUnchecked()},this.genTextPos());this.skipSpaces()}tryConsumeReference(){const t=this._pos,e=this.clone(),i=e.consumeReference();return i!=null?(this._pos+=e.getPos()-t,i):null}consumeReference(){if(!this.tryConsumeCodeUnit(m))return null;let t;if(this.tryConsumeCodeUnit(C)){let e,i;this.tryConsumeCodeUnit(f)?(e=this.consumeCodeUnitsWhile(s=>s>=x&&s<=U||s>=w&&s<=y||s>=g&&s<=k),i=16):(e=this.consumeCodeUnitsWhile(s=>E(s)),i=10);const o=parseInt(e,i);isNaN(o)||!u(o)?t=null:t={type:"Char",value:String.fromCodePoint(o)}}else{const e=this.consumeName();switch(e){case"quot":t={type:"Char",value:'"'};break;case"amp":t={type:"Char",value:"&"};break;case"apos":t={type:"Char",value:"'"};break;case"lt":t={type:"Char",value:"<"};break;case"gt":t={type:"Char",value:">"};break;default:t={type:"Entity",value:e}}}return this.tryConsumeCodeUnit(P)?t:null}consumeName(){const t=this._pos;this.skipName();const e=this.sliceBack(t);if(e.length===0)throw new n({type:"InvalidName"},this.genTextPosFrom(t));return e}skipName(){const t=this._pos;for(;this._pos<this._end;){const e=this.currCodeUnitUnchecked();if(this._pos===t){if(!a(e))throw new n({type:"InvalidName"},this.genTextPosFrom(t))}else if(!d(e))break;this._pos+=1}}consumeQName(){var t,e;const i=this._pos;let o=null;for(;this._pos<this._end;){const p=this.currCodeUnitUnchecked();if(p===v)if(o==null)o=this._pos,this._pos+=1;else throw new n({type:"InvalidName"},this.genTextPosFrom(i));else if(d(p))this._pos+=1;else break}let s,r;if(o!=null?(s=this._text.slice(i,o),r=this.sliceBack(o+1)):(s="",r=this.sliceBack(i)),s.length>0&&!a((t=s[0])==null?void 0:t.codePointAt(0)))throw new n({type:"InvalidName"},this.genTextPosFrom(i));if(r.length>0){if(!a((e=r[0])==null?void 0:e.codePointAt(0)))throw new n({type:"InvalidName"},this.genTextPosFrom(i))}else throw new n({type:"InvalidName"},this.genTextPosFrom(i));return[s,r]}consumeQuote(){const t=this.currCodeUnit();if(t===N||t===S)return this._pos+=1,t;throw new n({type:"InvalidChar",expected:"a quote",actual:t},this.genTextPos())}genTextPos(){return this.genTextPosFrom(this._pos)}genTextPosFrom(t){const e=Math.min(t,this._end);let i=1,o=1;for(let s=0;s<e;s++)this._text.charCodeAt(s)===A?(i++,o=1):o++;return{row:i,col:o}}}export{l as XmlStream};
1
+ import{AMPERSAND as _,HASH as m,LOWERCASE_X as C,ZERO as f,NINE as x,UPPERCASE_A as U,UPPERCASE_F as w,LOWERCASE_A as y,LOWERCASE_F as g,SEMICOLON as k,COLON as E,SINGLE_QUOTE as P,DOUBLE_QUOTE as v,LINE_FEED as N}from"./ascii-constants.js";import{isXmlChar as u,isXmlSpaceByte as S,isAsciiDigit as A,isXmlNameStart as a,isXmlName as d}from"./utils.js";import{XmlError as n}from"./XmlError.js";var T=Object.defineProperty,W=(h,t,e)=>t in h?T(h,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[t]=e,c=(h,t,e)=>W(h,typeof t!="symbol"?t+"":t,e);class l{constructor(t,e=0){c(this,"_text"),c(this,"_pos"),c(this,"_end"),this._text=t,this._pos=e,this._end=this._text.length}clone(){return new l(this._text,this._pos)}getPos(){return this._pos}atEnd(){return this._pos>=this._end}currCodeUnit(){if(this._pos>=this._end)throw new n({type:"UnexpectedEndOfStream"});return this._text.charCodeAt(this._pos)}currCodeUnitUnchecked(){return this._text.charCodeAt(this._pos)}nextCodeUnit(){if(this._pos+1>=this._end)throw new n({type:"UnexpectedEndOfStream"});return this._text.charCodeAt(this._pos+1)}advance(t){this._pos+=t}goTo(t){this._pos=t}startsWith(t){return this._text.startsWith(t,this._pos)}consumeCodeUnit(t){const e=this.currCodeUnit();if(e!==t)throw new n({type:"InvalidChar",expected:t,actual:e},this.genTextPos());this._pos+=1}tryConsumeCodeUnit(t){return this.currCodeUnit()===t?(this._pos+=1,!0):!1}skipString(t){if(!this.startsWith(t))throw new n({type:"InvalidString",expected:t},this.genTextPos());this._pos+=t.length}consumeCodeUnitsWhile(t){const e=this._pos;return this.skipCodeUnitsWhile(t),this.sliceBack(e)}skipCodeUnitsWhile(t){for(;this._pos<this._end&&t(this.currCodeUnitUnchecked());)this._pos+=1}consumeCharsWhile(t){const e=this._pos;return this.skipCharsWhile(t),this.sliceBack(e)}skipCharsWhile(t){for(;this._pos<this._end;){const e=this._text[this._pos];if(e==null||!u(e.codePointAt(0)))throw new n({type:"NonXmlChar",char:e!=null?e:"\uFFFD"},this.genTextPos());if(t(this,e))this._pos+=e.length;else break}}sliceBack(t){return this._text.slice(t,this._pos)}rangeFrom(t){return{start:t,end:this._pos}}skipSpaces(){for(;this.startsWithSpace();)this._pos+=1}startsWithSpace(){return this._pos<this._end&&S(this.currCodeUnitUnchecked())}consumeSpaces(){if(this._pos>=this._end)throw new n({type:"UnexpectedEndOfStream"},this.genTextPos());if(!this.startsWithSpace())throw new n({type:"InvalidChar",expected:"a whitespace",actual:this.currCodeUnitUnchecked()},this.genTextPos());this.skipSpaces()}tryConsumeReference(){const t=this._pos,e=this.clone(),i=e.consumeReference();return i!=null?(this._pos+=e.getPos()-t,i):null}consumeReference(){if(!this.tryConsumeCodeUnit(_))return null;let t;if(this.tryConsumeCodeUnit(m)){let e,i;this.tryConsumeCodeUnit(C)?(e=this.consumeCodeUnitsWhile(s=>s>=f&&s<=x||s>=U&&s<=w||s>=y&&s<=g),i=16):(e=this.consumeCodeUnitsWhile(s=>A(s)),i=10);const o=parseInt(e,i);isNaN(o)||!u(o)?t=null:t={type:"Char",value:String.fromCodePoint(o)}}else{const e=this.consumeName();switch(e){case"quot":t={type:"Char",value:'"'};break;case"amp":t={type:"Char",value:"&"};break;case"apos":t={type:"Char",value:"'"};break;case"lt":t={type:"Char",value:"<"};break;case"gt":t={type:"Char",value:">"};break;default:t={type:"Entity",value:e}}}return this.tryConsumeCodeUnit(k)?t:null}consumeName(){const t=this._pos;this.skipName();const e=this.sliceBack(t);if(e.length===0)throw new n({type:"InvalidName"},this.genTextPosFrom(t));return e}skipName(){const t=this._pos;for(;this._pos<this._end;){const e=this.currCodeUnitUnchecked();if(this._pos===t){if(!a(e))throw new n({type:"InvalidName"},this.genTextPosFrom(t))}else if(!d(e))break;this._pos+=1}}consumeQName(){var t,e;const i=this._pos;let o=null;for(;this._pos<this._end;){const p=this.currCodeUnitUnchecked();if(p===E)if(o==null)o=this._pos,this._pos+=1;else throw new n({type:"InvalidName"},this.genTextPosFrom(i));else if(d(p))this._pos+=1;else break}let s,r;if(o!=null?(s=this._text.slice(i,o),r=this.sliceBack(o+1)):(s="",r=this.sliceBack(i)),s.length>0&&!a((t=s[0])==null?void 0:t.codePointAt(0)))throw new n({type:"InvalidName"},this.genTextPosFrom(i));if(r.length>0){if(!a((e=r[0])==null?void 0:e.codePointAt(0)))throw new n({type:"InvalidName"},this.genTextPosFrom(i))}else throw new n({type:"InvalidName"},this.genTextPosFrom(i));return[s,r]}consumeQuote(){const t=this.currCodeUnit();if(t===P||t===v)return this._pos+=1,t;throw new n({type:"InvalidChar",expected:"a quote",actual:t},this.genTextPos())}genTextPos(){return this.genTextPosFrom(this._pos)}genTextPosFrom(t){const e=Math.min(t,this._end);let i=1,o=1;for(let s=0;s<e;s++)this._text.charCodeAt(s)===N?(i++,o=1):o++;return{row:i,col:o}}}export{l as XmlStream};
@@ -0,0 +1 @@
1
+ const E=9,A=10,R=13,S=32,O=33,_=34,C=35,N=37,P=38,L=39,T=45,U=46,I=47,H=48,D=57,M=58,Q=59,W=60,Z=61,B=62,F=63,G=65,K=70,o=80,t=83,X=90,c=91,e=95,n=97,p=102,r=120,s=122;export{P as AMPERSAND,R as CARRIAGE_RETURN,M as COLON,_ as DOUBLE_QUOTE,Z as EQUALS,O as EXCLAMATION_MARK,B as GREATER_THAN,C as HASH,E as HORIZONTAL_TAB,T as HYPHEN,W as LESS_THAN,A as LINE_FEED,n as LOWERCASE_A,p as LOWERCASE_F,r as LOWERCASE_X,s as LOWERCASE_Z,D as NINE,c as OPEN_BRACKET,N as PERCENT,U as PERIOD,F as QUESTION_MARK,Q as SEMICOLON,L as SINGLE_QUOTE,I as SLASH,S as SPACE,e as UNDERSCORE,G as UPPERCASE_A,K as UPPERCASE_F,o as UPPERCASE_P,t as UPPERCASE_S,X as UPPERCASE_Z,H as ZERO};
@@ -0,0 +1 @@
1
+ import{LESS_THAN as C,GREATER_THAN as r,OPEN_BRACKET as W,PERCENT as y,DOUBLE_QUOTE as x,SINGLE_QUOTE as v,UPPERCASE_S as I,UPPERCASE_P as N,SLASH as S,EQUALS as A,EXCLAMATION_MARK as F,QUESTION_MARK as L}from"./ascii-constants.js";import{XmlError as i}from"./XmlError.js";import{XmlStream as Q}from"./XmlStream.js";function O(t,n,s){k(new Q(t),n,s)}function k(t,n,s){if(t.startsWith("\uFEFF")&&t.advance(1),t.startsWith("<?xml ")&&D(t),m(t,s),t.skipSpaces(),t.startsWith("<!DOCTYPE")){if(!n)throw new i({type:"DtdDetected"});_(t,s),m(t,s)}if(t.skipSpaces(),!t.atEnd()&&t.currCodeUnit()===C&&U(t,s),m(t,s),!t.atEnd())throw new i({type:"UnknownToken",message:"Not at end"},t.genTextPos())}function m(t,n){for(;!t.atEnd();)if(t.skipSpaces(),t.startsWith("<!--"))f(t,n);else if(t.startsWith("<?"))g(t,n);else break}function D(t){if(t.advance(5),h(t),!t.startsWith("version"))throw new i({type:"InvalidString",expected:"version"},t.genTextPos());u(t),h(t),t.startsWith("encoding")&&(u(t),h(t)),t.startsWith("standalone")&&u(t),t.skipSpaces(),t.skipString("?>")}function h(t){if(t.startsWithSpace())t.skipSpaces();else if(!t.startsWith("?>")&&!t.atEnd())throw new i({type:"InvalidChar",expected:"a whitespace",actual:t.currCodeUnitUnchecked()},t.genTextPos())}function f(t,n){const s=t.getPos();t.advance(4);const o=t.consumeCharsWhile((e,a)=>!(a==="-"&&e.startsWith("-->")));if(t.skipString("-->"),o.includes("--")||o.endsWith("-"))throw new i({type:"InvalidComment"},t.genTextPosFrom(s));n({type:"Comment",text:o,range:t.rangeFrom(s)})}function g(t,n){if(t.startsWith("<?xml "))throw new i({type:"UnexpectedDeclaration"},t.genTextPos());const s=t.getPos();t.advance(2);const o=t.consumeName();t.skipSpaces();const e=t.consumeCharsWhile((a,c)=>!(c==="?"&&a.startsWith("?>")));t.skipString("?>"),n({type:"ProcessingInstruction",target:o,content:e.length===0?void 0:e,range:t.rangeFrom(s)})}function _(t,n){const s=t.getPos();if(B(t),t.skipSpaces(),t.currCodeUnit()===r){t.advance(1);return}for(t.advance(1);!t.atEnd();)if(t.skipSpaces(),t.startsWith("<!ENTITY"))R(t,n);else if(t.startsWith("<!--"))f(t,n);else if(t.startsWith("<?"))g(t,n);else if(t.startsWith("]"))if(t.advance(1),t.skipSpaces(),t.currCodeUnit()===r){t.advance(1);break}else throw new i({type:"InvalidChar",expected:"'>'",actual:t.currCodeUnitUnchecked()},t.genTextPos());else if(t.startsWith("<!ELEMENT")||t.startsWith("<!ATTLIST")||t.startsWith("<!NOTATION"))try{M(t)}catch(o){throw new i({type:"UnknownToken",message:"Failed to consume declaration"},t.genTextPosFrom(s))}else throw new i({type:"UnknownToken",message:"Failed to parse doctype"},t.genTextPos())}function B(t){t.advance(9),t.consumeSpaces(),t.skipName(),t.skipSpaces(),E(t),t.skipSpaces();const n=t.currCodeUnit();if(n!==W&&n!==r)throw new i({type:"InvalidChar",expected:"'[' or '>'",actual:n},t.genTextPos())}function E(t){if(t.startsWith("SYSTEM")||t.startsWith("PUBLIC")){const n=t.getPos();t.advance(6);const s=t.sliceBack(n);t.consumeSpaces();const o=t.consumeQuote();if(t.consumeCodeUnitsWhile(e=>e!==o),t.consumeCodeUnit(o),s==="PUBLIC"){t.consumeSpaces();const e=t.consumeQuote();t.consumeCodeUnitsWhile(a=>a!==e),t.consumeCodeUnit(e)}return!0}return!1}function R(t,n){t.advance(8),t.consumeSpaces();const s=!t.tryConsumeCodeUnit(y);s||t.consumeSpaces();const o=t.consumeName();t.consumeSpaces();const e=b(t,s);e!==null&&n({type:"EntityDeclaration",name:o,definition:e}),t.skipSpaces(),t.consumeCodeUnit(r)}function b(t,n){const s=t.currCodeUnit();if(s===x||s===v){const o=t.consumeQuote(),e=t.getPos();t.skipCodeUnitsWhile(c=>c!==o);const a=t.sliceBack(e);return t.consumeCodeUnit(o),a}else if(s===I||s===N){if(E(t))return n&&(t.skipSpaces(),t.startsWith("NDATA")&&(t.advance(5),t.consumeSpaces(),t.skipName())),null;throw new i({type:"InvalidExternalID"},t.genTextPos())}else throw new i({type:"InvalidChar",expected:"a quote, SYSTEM or PUBLIC",actual:s},t.genTextPos())}function M(t){t.skipCodeUnitsWhile(n=>n!==r),t.consumeCodeUnit(r)}function U(t,n){const s=t.getPos();t.advance(1);const[o,e]=t.consumeQName();n({type:"ElementStart",prefix:o,local:e,start:s});let a=!1;for(;!t.atEnd();){const c=t.startsWithSpace();t.skipSpaces();const d=t.getPos(),l=t.currCodeUnit();if(l===S){t.advance(1),t.consumeCodeUnit(r);const p=t.rangeFrom(d);n({type:"ElementEnd",end:{type:"Empty"},range:p});break}else if(l===r){t.advance(1);const p=t.rangeFrom(d);n({type:"ElementEnd",end:{type:"Open"},range:p}),a=!0;break}else{if(!c)throw new i({type:"InvalidChar",expected:"a whitespace",actual:t.currCodeUnitUnchecked()},t.genTextPos());const[p,T,P]=u(t),w=t.getPos();n({type:"Attribute",range:{start:d,end:w},prefix:p,local:T,value:P})}}a&&X(t,n)}function u(t){const[n,s]=t.consumeQName();let o;const e=t.getPos();if(t.skipSpaces(),t.tryConsumeCodeUnit(A)){t.skipSpaces();const a=t.consumeQuote(),c=String.fromCharCode(a),d=t.getPos();t.skipCharsWhile((l,p)=>p!==c&&p!=="<"),o=t.sliceBack(d),t.consumeCodeUnit(a)}else t.goTo(e),o="true";return[n,s,o]}function X(t,n){for(;!t.atEnd();)if(t.currCodeUnit()===C){const s=t.nextCodeUnit();if(s===F)if(t.startsWith("<!--"))f(t,n);else if(t.startsWith("<![CDATA["))Y(t,n);else throw new i({type:"UnknownToken",message:"Failed to parse content"},t.genTextPos());else if(s===L)g(t,n);else if(s===S){H(t,n);break}else U(t,n)}else K(t,n)}function Y(t,n){const s=t.getPos();t.advance(9);const o=t.consumeCharsWhile((a,c)=>!(c==="]"&&a.startsWith("]]>")));t.skipString("]]>");const e=t.rangeFrom(s);n({type:"Cdata",text:o,range:e})}function H(t,n){const s=t.getPos();t.advance(2);const[o,e]=t.consumeQName();t.skipSpaces(),t.consumeCodeUnit(r);const a=t.rangeFrom(s);n({type:"ElementEnd",end:{type:"Close",prefix:o,local:e},range:a})}function K(t,n){const s=t.getPos(),o=t.consumeCharsWhile((e,a)=>a!=="<");if(o.includes(">")&&o.includes("]]>"))throw new i({type:"InvalidCharacterData"},t.genTextPos());n({type:"Text",text:o,range:t.rangeFrom(s)})}export{O as tokenize,k as tokenizeXmlStream};
@@ -1 +1 @@
1
- const S=9,n=10,N=13,t=32,O=33,_=34,C=35,P=37,i=38,r=39,u=45,L=46,e=47,T=48,U=57,l=58,c=59,I=60,m=61,o=62,s=63,H=65,X=70,a=80,f=83,D=90,B=91,M=95,Q=97,W=102,Z=120,F=122;function G(E){return E>=48&&E<=57}function K(E){return E==null?!1:E<=128?E>=65&&E<=90||E>=97&&E<=122||E===58||E===95:E>=192&&E<=214||E>=216&&E<=246||E>=248&&E<=767||E>=880&&E<=893||E>=895&&E<=8191||E>=8204&&E<=8205||E>=8304&&E<=8591||E>=11264&&E<=12271||E>=12289&&E<=55295||E>=63744&&E<=64975||E>=65008&&E<=65533||E>=65536&&E<=983039}function p(E){return E==null?!1:E<=128?R(E):E===183||E>=192&&E<=214||E>=216&&E<=246||E>=248&&E<=767||E>=768&&E<=879||E>=880&&E<=893||E>=895&&E<=8191||E>=8204&&E<=8205||E>=8255&&E<=8256||E>=8304&&E<=8591||E>=11264&&E<=12271||E>=12289&&E<=55295||E>=63744&&E<=64975||E>=65008&&E<=65533||E>=65536&&E<=983039}function y(E){return E==null?!1:E<32?A(E):E!==65535&&E!==65534}function A(E){return E===32||E===9||E===10||E===13}function R(E){return E>=48&&E<=57||E>=65&&E<=90||E>=97&&E<=122||E===58||E===95||E===45||E===46}export{i as AMPERSAND,N as CARRIAGE_RETURN,l as COLON,_ as DOUBLE_QUOTE,m as EQUALS,O as EXCLAMATION_MARK,o as GREATER_THAN,C as HASH,S as HORIZONTAL_TAB,u as HYPHEN,I as LESS_THAN,n as LINE_FEED,Q as LOWERCASE_A,W as LOWERCASE_F,Z as LOWERCASE_X,F as LOWERCASE_Z,U as NINE,B as OPEN_BRACKET,P as PERCENT,L as PERIOD,s as QUESTION_MARK,c as SEMICOLON,r as SINGLE_QUOTE,e as SLASH,t as SPACE,M as UNDERSCORE,H as UPPERCASE_A,X as UPPERCASE_F,a as UPPERCASE_P,f as UPPERCASE_S,D as UPPERCASE_Z,T as ZERO,G as isAsciiDigit,y as isXmlChar,p as isXmlName,R as isXmlNameByte,K as isXmlNameStart,A as isXmlSpaceByte};
1
+ import{ZERO as E,NINE as t,UPPERCASE_A as i,UPPERCASE_Z as r,LOWERCASE_A as u,LOWERCASE_Z as e,COLON as R,UNDERSCORE as A,SPACE as m,HORIZONTAL_TAB as o,LINE_FEED as C,CARRIAGE_RETURN as O,HYPHEN as c,PERIOD as S}from"./ascii-constants.js";function s(n){return n>=E&&n<=t}function P(n){return n==null?!1:n<=128?n>=i&&n<=r||n>=u&&n<=e||n===R||n===A:n>=192&&n<=214||n>=216&&n<=246||n>=248&&n<=767||n>=880&&n<=893||n>=895&&n<=8191||n>=8204&&n<=8205||n>=8304&&n<=8591||n>=11264&&n<=12271||n>=12289&&n<=55295||n>=63744&&n<=64975||n>=65008&&n<=65533||n>=65536&&n<=983039}function _(n){return n==null?!1:n<=128?N(n):n===183||n>=192&&n<=214||n>=216&&n<=246||n>=248&&n<=767||n>=768&&n<=879||n>=880&&n<=893||n>=895&&n<=8191||n>=8204&&n<=8205||n>=8255&&n<=8256||n>=8304&&n<=8591||n>=11264&&n<=12271||n>=12289&&n<=55295||n>=63744&&n<=64975||n>=65008&&n<=65533||n>=65536&&n<=983039}function a(n){return n==null?!1:n<32?l(n):n!==65535&&n!==65534}function l(n){return n===m||n===o||n===C||n===O}function N(n){return n>=E&&n<=t||n>=i&&n<=r||n>=u&&n<=e||n===R||n===A||n===c||n===S}export{s as isAsciiDigit,a as isXmlChar,_ as isXmlName,N as isXmlNameByte,P as isXmlNameStart,l as isXmlSpaceByte};
@@ -0,0 +1 @@
1
+ import{tokenToXml as e}from"./token-to-xml.js";function n(t){let o="";return t.forEach(r=>{o+=e(r)}),o}export{n as tokensToXml};
@@ -1 +1 @@
1
- import{parseXmlStream as s}from"./tokenizer/tokenizer.js";import{XmlStream as o}from"./tokenizer/XmlStream.js";function m(a,n=!1){const c={tagName:"root",attributes:{},children:[]},l=[c];let r=c;return s(new o(a),n,t=>{switch(t.type){case"ElementStart":{const e={tagName:i(t.local,t.prefix),attributes:{},children:[]};r.children.push(e),l.push(e),r=e;break}case"ElementEnd":{if(t.end.type==="Close"||t.end.type==="Empty"){l.pop();const e=l[l.length-1];e!=null&&(r=e)}break}case"Attribute":{r.attributes[i(t.local,t.prefix)]=t.value;break}case"Text":case"Cdata":{t.text.trim().length>0&&r.children.push(t.text);break}}}),c.children[0]}function i(a,n){return n.length>0?`${n}:${a}`:a}export{i as getTagName,m as xmlToObject};
1
+ import{getQName as i}from"./get-q-name.js";import{tokenize as o}from"./tokenizer/tokenize.js";function s(l,c=!1){const n={tagName:"root",attributes:{},children:[]},a=[n];let r=n;return o(l,c,t=>{switch(t.type){case"ElementStart":{const e={tagName:i(t.local,t.prefix),attributes:{},children:[]};r.children.push(e),a.push(e),r=e;break}case"ElementEnd":{if(t.end.type==="Close"||t.end.type==="Empty"){a.pop();const e=a[a.length-1];e!=null&&(r=e)}break}case"Attribute":{r.attributes[i(t.local,t.prefix)]=t.value;break}case"Text":case"Cdata":{t.text.trim().length>0&&r.children.push(t.text);break}}}),n.children[0]}export{s as xmlToObject};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Constructs a qualified name (QName) from a local name and an optional namespace prefix.
3
+ *
4
+ * https://www.w3.org/2001/tag/doc/qnameids.html
5
+ */
6
+ export declare function getQName(local: string, prefix?: string | null): string;
7
+ //# sourceMappingURL=get-q-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-q-name.d.ts","sourceRoot":"","sources":["../../src/get-q-name.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAE5E"}
@@ -1,4 +1,6 @@
1
- export * from './parse-string';
1
+ export * from './selector';
2
+ export * from './token-to-xml';
2
3
  export * from './tokenizer';
4
+ export * from './tokens-to-xml';
3
5
  export * from './xml-to-object';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { type TTokenSelectPathSegment } from './types';
2
+ export declare class TokenSelectState {
3
+ private _segment;
4
+ private _matchCriteria;
5
+ private _toCacheNodeProps;
6
+ private _enteredDepth;
7
+ constructor(segment: TTokenSelectPathSegment);
8
+ get matchCriteria(): ETokenMatchCriteria;
9
+ get toCacheNodeProps(): EToCacheNodeProps;
10
+ get enteredDepth(): number | null;
11
+ private applyLevels;
12
+ matchesName(local: string, prefix: string): boolean;
13
+ matchesAttributes(attributes: Record<string, string>): boolean;
14
+ matchesText(text: string): boolean;
15
+ matchesDepth(depth: number, parentDepth: number): boolean;
16
+ match(depth: number): void;
17
+ unmatch(): void;
18
+ }
19
+ export declare const enum EToCacheNodeProps {
20
+ None = 0,// Cache none
21
+ Name = 1,// Cache local and prefix <prefix:local
22
+ Attributes = 2,// Cache attributes <prefix:local attribute="x"
23
+ Text = 4
24
+ }
25
+ export declare const enum ETokenMatchCriteria {
26
+ None = 0,// Match none
27
+ Name = 1,// Match local and prefix <prefix:local
28
+ Attributes = 2,// Match attributes <prefix:local attribute="x"
29
+ Text = 4,// Match text content <prefix:local attribute="x">text
30
+ Node = 8
31
+ }
32
+ //# sourceMappingURL=TokenSelectState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenSelectState.d.ts","sourceRoot":"","sources":["../../../src/selector/TokenSelectState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAEvD,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,iBAAiB,CAA6C;IACtE,OAAO,CAAC,aAAa,CAAuB;gBAEhC,OAAO,EAAE,uBAAuB;IAK5C,IAAW,aAAa,IAAI,mBAAmB,CAE9C;IAED,IAAW,gBAAgB,IAAI,iBAAiB,CAE/C;IAED,IAAW,YAAY,IAAI,MAAM,GAAG,IAAI,CAEvC;IAED,OAAO,CAAC,WAAW;IAuBZ,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAWnD,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;IAe9D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IASzD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI1B,OAAO,IAAI,IAAI;CAGtB;AAED,0BAAkB,iBAAiB;IAClC,IAAI,IAAI,CAAE,aAAa;IACvB,IAAI,IAAS,CAAE,uCAAuC;IACtD,UAAU,IAAS,CAAE,+CAA+C;IACpE,IAAI,IAAS;CACb;AAED,0BAAkB,mBAAmB;IACpC,IAAI,IAAI,CAAE,aAAa;IACvB,IAAI,IAAS,CAAE,uCAAuC;IACtD,UAAU,IAAS,CAAE,+CAA+C;IACpE,IAAI,IAAS,CAAE,sDAAsD;IACrE,IAAI,IAAS;CACb"}
@@ -0,0 +1,26 @@
1
+ import { type TXmlToken } from '../tokenizer';
2
+ import { TokenSelectState } from './TokenSelectState';
3
+ import { type TTokenSelectPath } from './types';
4
+ export declare class TokenSelectStateMachine {
5
+ private _states;
6
+ private _currentState;
7
+ private _hasActiveCache;
8
+ private _toCacheNodeProps;
9
+ private _cachedNodeProps;
10
+ private _cachedTokens;
11
+ private _toRecordTokens;
12
+ constructor(tokenSelectPath: TTokenSelectPath);
13
+ getNextState(): TokenSelectState | null;
14
+ getCurrentState(): TokenSelectState | null;
15
+ record(token: TXmlToken): void;
16
+ takeRecordedTokens(): TXmlToken[] | null;
17
+ transitionIfNameMatch(local: string, prefix: string, depth: number): boolean;
18
+ transitionIfAttributesMatch(local: string, prefix: string, value: string, depth: number): boolean;
19
+ transitionIfTextMatch(text: string, depth: number): boolean;
20
+ private transitionForward;
21
+ transitionBack(depth: number): void;
22
+ isFinalState(): boolean;
23
+ getOffsetToFinal(): number;
24
+ resetCurrentStateCache(): void;
25
+ }
26
+ //# sourceMappingURL=TokenSelectStateMachine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenSelectStateMachine.d.ts","sourceRoot":"","sources":["../../../src/selector/TokenSelectStateMachine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAA0C,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,qBAAa,uBAAuB;IACnC,OAAO,CAAC,OAAO,CAAqB;IAGpC,OAAO,CAAC,aAAa,CAAuB;IAG5C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,iBAAiB,CAA6C;IACtE,OAAO,CAAC,gBAAgB,CAKtB;IACF,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,eAAe,CAAmB;gBAE9B,eAAe,EAAE,gBAAgB;IAItC,YAAY,IAAI,gBAAgB,GAAG,IAAI;IAQvC,eAAe,IAAI,gBAAgB,GAAG,IAAI;IAO1C,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAM9B,kBAAkB,IAAI,SAAS,EAAE,GAAG,IAAI;IASxC,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IA6B5E,2BAA2B,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACX,OAAO;IA4BH,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAyBlE,OAAO,CAAC,iBAAiB;IAmBlB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAgBnC,YAAY,IAAI,OAAO;IAIvB,gBAAgB,IAAI,MAAM;IAO1B,sBAAsB,IAAI,IAAI;CASrC"}
@@ -0,0 +1,15 @@
1
+ import { type TXmlToken } from '../tokenizer';
2
+ import { type TTokenSelectPath } from './types';
3
+ export declare class TokenSelector {
4
+ private _currentDepth;
5
+ private _tspStateMachines;
6
+ private _isRecording;
7
+ constructor(tokenSelectPaths: TTokenSelectPath[]);
8
+ pipeToken(token: TXmlToken, recorder: (token: TXmlToken) => void): void;
9
+ private handleElementStart;
10
+ private handleAttribute;
11
+ private handleText;
12
+ private handleElementEnd;
13
+ private record;
14
+ }
15
+ //# sourceMappingURL=TokenSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenSelector.d.ts","sourceRoot":"","sources":["../../../src/selector/TokenSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,KAAK,SAAS,EACd,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,qBAAa,aAAa;IACzB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,YAAY,CAAS;gBAEjB,gBAAgB,EAAE,gBAAgB,EAAE;IAMzC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI;IA2C9E,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,MAAM;CAGd"}
@@ -0,0 +1,6 @@
1
+ export * from './select';
2
+ export * from './TokenSelector';
3
+ export * from './TokenSelectState';
4
+ export * from './TokenSelectStateMachine';
5
+ export * from './types';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/selector/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,SAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type TTokenCallback } from '../tokenizer';
2
+ import { type TTokenSelectPath } from './types';
3
+ export declare function select(xml: string, tokenSelectPaths: TTokenSelectPath[], callback: TTokenCallback): void;
4
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/selector/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAE7D,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,wBAAgB,MAAM,CACrB,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,gBAAgB,EAAE,EACpC,QAAQ,EAAE,cAAc,GACtB,IAAI,CAON"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * A limited segment of an XPath expression in an object-oriented manner.
3
+ *
4
+ * @example
5
+ * // Represents the XPath expression `/bookstore/book[@category='fiction'][1]`
6
+ * const xpathExpr: TTokenSelectPath = [
7
+ * \{ axis: '/', local: 'bookstore' \},
8
+ * \{
9
+ * axis: '/',
10
+ * local: 'book',
11
+ * attributes: [\{ local: 'category', value: 'fiction' \}],
12
+ * position: 1
13
+ * \}
14
+ * ];
15
+ */
16
+ export interface TTokenSelectPathSegment {
17
+ /**
18
+ * Specifies the axis defining the relationship between nodes.
19
+ *
20
+ * - 'child' ('/'): Selects all children of the current node
21
+ * - 'self-or-descendant' ('//'): Selects all descendants (children, grandchildren, etc.) of the current node and the current node itself
22
+ */
23
+ axis: 'child' | 'self-or-descendant';
24
+ /**
25
+ * The local name of the node to match.
26
+ *
27
+ * Use '*' to match any node.
28
+ */
29
+ local?: string | '*';
30
+ /**
31
+ * An optional namespace prefix to qualify the node name.
32
+ */
33
+ prefix?: string;
34
+ /**
35
+ * Optional filters based on node attributes.
36
+ *
37
+ * @example
38
+ * // Matches a node with an attribute 'category' equal to 'fiction'
39
+ * attributes: [\{ local: 'category', value: 'fiction' \}]
40
+ */
41
+ attributes?: {
42
+ local: string;
43
+ prefix?: string;
44
+ value?: string;
45
+ }[];
46
+ /**
47
+ * Optional filter to match nodes containing specific text content.
48
+ *
49
+ * @example
50
+ * // Matches nodes containing the text 'bestseller'
51
+ * containsText: 'bestseller'
52
+ */
53
+ containsText?: string;
54
+ /**
55
+ * Optional custom predicate function to further filter nodes.
56
+ *
57
+ * @example
58
+ * // Custom predicate to match nodes with specific characteristics
59
+ * predicate: (node) =\> node.local === 'title'
60
+ */
61
+ predicate?: (node: {
62
+ local: string;
63
+ prefix?: string;
64
+ attributes: Record<string, string>;
65
+ text?: string;
66
+ }) => boolean;
67
+ }
68
+ /**
69
+ * A limited XPath expression composed of multiple segments in an object-oriented manner.
70
+ */
71
+ export type TTokenSelectPath = TTokenSelectPathSegment[];
72
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/selector/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,MAAM,WAAW,uBAAuB;IACvC;;;;;OAKG;IACH,IAAI,EAAE,OAAO,GAAG,oBAAoB,CAAC;IAErC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAElE;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE,MAAM,CAAC;KACd,KAAK,OAAO,CAAC;CACd;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type TXmlToken } from './tokenizer';
2
+ export declare function tokenToXml(token: TXmlToken): string;
3
+ //# sourceMappingURL=token-to-xml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-to-xml.d.ts","sourceRoot":"","sources":["../../src/token-to-xml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAgDnD"}
@@ -1,6 +1,6 @@
1
1
  import { type TRange, type TReference, type TTextPos } from './types';
2
2
  /**
3
- * Represents a stream of characters for parsing XML-like content.
3
+ * A stream of characters for parsing XML-like content.
4
4
  *
5
5
  * This implementation uses UTF-16 code units, whereas the Rust implementation is based on bytes (UTF-8).
6
6
  * This difference in encoding affects how characters are handled and parsed.
@@ -1 +1 @@
1
- {"version":3,"file":"XmlStream.d.ts","sourceRoot":"","sources":["../../../src/tokenizer/XmlStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAwBtE;;;;;;GAMG;AACH,qBAAa,SAAS;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;gBAEF,IAAI,EAAE,MAAM,EAAE,GAAG,SAAI;IAMxC;;;;OAIG;IACI,KAAK,IAAI,SAAS;IAIzB;;;;OAIG;IACI,MAAM,IAAI,MAAM;IAIvB;;;;OAIG;IACI,KAAK,IAAI,OAAO;IAIvB;;;;;OAKG;IACI,YAAY,IAAI,MAAM;IAO7B;;;;OAIG;IACI,qBAAqB,IAAI,MAAM;IAItC;;;;;OAKG;IACI,YAAY,IAAI,MAAM;IAO7B;;;;OAIG;IACI,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/B;;;;OAIG;IACI,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIxC;;;;;OAKG;IACI,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAW9C;;;;;;OAMG;IACI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQpD;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOrC;;;;;OAKG;IACI,qBAAqB,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM;IAM9E;;;;OAIG;IACI,kBAAkB,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI;IAMzE;;;;;;OAMG;IACI,iBAAiB,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM;IAMzF;;;;;OAKG;IACI,cAAc,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI;IAapF;;;;;OAKG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIrC;;;;;OAKG;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIvC;;OAEG;IACI,UAAU,IAAI,IAAI;IAMzB;;;;OAIG;IACI,eAAe,IAAI,OAAO;IAIjC;;;;;OAKG;IACI,aAAa,IAAI,IAAI;IAe5B;;;;;OAKG;IACI,mBAAmB,IAAI,UAAU,GAAG,IAAI;IAiB/C;;;;OAIG;IACI,gBAAgB,IAAI,UAAU,GAAG,IAAI;IA4D5C;;;;;;OAMG;IACI,WAAW,IAAI,MAAM;IAY5B;;;;OAIG;IACI,QAAQ,IAAI,IAAI;IAgBvB;;;;;;OAMG;IACI,YAAY,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAiDvC;;;;;OAKG;IACI,YAAY,IAAI,MAAM;IAY7B;;;;;OAKG;IACI,UAAU,IAAI,QAAQ;IAI7B;;;;;;OAMG;IACI,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;CAc5C"}
1
+ {"version":3,"file":"XmlStream.d.ts","sourceRoot":"","sources":["../../../src/tokenizer/XmlStream.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAItE;;;;;;GAMG;AACH,qBAAa,SAAS;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;gBAEF,IAAI,EAAE,MAAM,EAAE,GAAG,SAAI;IAMxC;;;;OAIG;IACI,KAAK,IAAI,SAAS;IAIzB;;;;OAIG;IACI,MAAM,IAAI,MAAM;IAIvB;;;;OAIG;IACI,KAAK,IAAI,OAAO;IAIvB;;;;;OAKG;IACI,YAAY,IAAI,MAAM;IAO7B;;;;OAIG;IACI,qBAAqB,IAAI,MAAM;IAItC;;;;;OAKG;IACI,YAAY,IAAI,MAAM;IAO7B;;;;OAIG;IACI,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/B;;;;OAIG;IACI,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIxC;;;;;OAKG;IACI,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAW9C;;;;;;OAMG;IACI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQpD;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOrC;;;;;OAKG;IACI,qBAAqB,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM;IAM9E;;;;OAIG;IACI,kBAAkB,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI;IAMzE;;;;;;OAMG;IACI,iBAAiB,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM;IAMzF;;;;;OAKG;IACI,cAAc,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI;IAapF;;;;;OAKG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIrC;;;;;OAKG;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIvC;;OAEG;IACI,UAAU,IAAI,IAAI;IAMzB;;;;OAIG;IACI,eAAe,IAAI,OAAO;IAIjC;;;;;OAKG;IACI,aAAa,IAAI,IAAI;IAe5B;;;;;OAKG;IACI,mBAAmB,IAAI,UAAU,GAAG,IAAI;IAiB/C;;;;OAIG;IACI,gBAAgB,IAAI,UAAU,GAAG,IAAI;IA4D5C;;;;;;OAMG;IACI,WAAW,IAAI,MAAM;IAY5B;;;;OAIG;IACI,QAAQ,IAAI,IAAI;IAgBvB;;;;;;OAMG;IACI,YAAY,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAiDvC;;;;;OAKG;IACI,YAAY,IAAI,MAAM;IAY7B;;;;;OAKG;IACI,UAAU,IAAI,QAAQ;IAI7B;;;;;;OAMG;IACI,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;CAc5C"}
@@ -0,0 +1,33 @@
1
+ export declare const HORIZONTAL_TAB = 9;
2
+ export declare const LINE_FEED = 10;
3
+ export declare const CARRIAGE_RETURN = 13;
4
+ export declare const SPACE = 32;
5
+ export declare const EXCLAMATION_MARK = 33;
6
+ export declare const DOUBLE_QUOTE = 34;
7
+ export declare const HASH = 35;
8
+ export declare const PERCENT = 37;
9
+ export declare const AMPERSAND = 38;
10
+ export declare const SINGLE_QUOTE = 39;
11
+ export declare const HYPHEN = 45;
12
+ export declare const PERIOD = 46;
13
+ export declare const SLASH = 47;
14
+ export declare const ZERO = 48;
15
+ export declare const NINE = 57;
16
+ export declare const COLON = 58;
17
+ export declare const SEMICOLON = 59;
18
+ export declare const LESS_THAN = 60;
19
+ export declare const EQUALS = 61;
20
+ export declare const GREATER_THAN = 62;
21
+ export declare const QUESTION_MARK = 63;
22
+ export declare const UPPERCASE_A = 65;
23
+ export declare const UPPERCASE_F = 70;
24
+ export declare const UPPERCASE_P = 80;
25
+ export declare const UPPERCASE_S = 83;
26
+ export declare const UPPERCASE_Z = 90;
27
+ export declare const OPEN_BRACKET = 91;
28
+ export declare const UNDERSCORE = 95;
29
+ export declare const LOWERCASE_A = 97;
30
+ export declare const LOWERCASE_F = 102;
31
+ export declare const LOWERCASE_X = 120;
32
+ export declare const LOWERCASE_Z = 122;
33
+ //# sourceMappingURL=ascii-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ascii-constants.d.ts","sourceRoot":"","sources":["../../../src/tokenizer/ascii-constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,KAAK,KAAK,CAAC;AACxB,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,IAAI,KAAK,CAAC;AACvB,eAAO,MAAM,OAAO,KAAK,CAAC;AAC1B,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,MAAM,KAAK,CAAC;AACzB,eAAO,MAAM,MAAM,KAAK,CAAC;AACzB,eAAO,MAAM,KAAK,KAAK,CAAC;AACxB,eAAO,MAAM,IAAI,KAAK,CAAC;AACvB,eAAO,MAAM,IAAI,KAAK,CAAC;AACvB,eAAO,MAAM,KAAK,KAAK,CAAC;AACxB,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,MAAM,KAAK,CAAC;AACzB,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,eAAO,MAAM,WAAW,MAAM,CAAC"}
@@ -1,4 +1,5 @@
1
- export * from './tokenizer';
1
+ export * from './ascii-constants';
2
+ export * from './tokenize';
2
3
  export * from './types';
3
4
  export * from './utils';
4
5
  export * from './XmlError';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tokenizer/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tokenizer/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type TTokenCallback } from './types';
2
+ import { XmlStream } from './XmlStream';
3
+ export declare function tokenize(xmlString: string, allowDtd: boolean, tokenCallback: TTokenCallback): void;
4
+ /**
5
+ * Parses an XML document.
6
+ *
7
+ * document ::= prolog element Misc*
8
+ *
9
+ * https://www.w3.org/TR/xml/#NT-document
10
+ */
11
+ export declare function tokenizeXmlStream(s: XmlStream, allowDtd: boolean, tokenCallback: TTokenCallback): void;
12
+ //# sourceMappingURL=tokenize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenize.d.ts","sourceRoot":"","sources":["../../../src/tokenizer/tokenize.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,wBAAgB,QAAQ,CACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,EACjB,aAAa,EAAE,cAAc,GAC3B,IAAI,CAEN;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAChC,CAAC,EAAE,SAAS,EACZ,QAAQ,EAAE,OAAO,EACjB,aAAa,EAAE,cAAc,GAC3B,IAAI,CAgCN"}
@@ -1,4 +1,4 @@
1
- export type TTokenCallback = (token: TXMLToken) => void;
1
+ export type TTokenCallback = (token: TXmlToken) => void;
2
2
  /**
3
3
  * A Processing Instruction token.
4
4
  *
@@ -92,7 +92,7 @@ export interface TCdataToken {
92
92
  text: string;
93
93
  range: TRange;
94
94
  }
95
- export type TXMLToken = TProcessingInstructionToken | TCommentToken | TEntityDeclarationToken | TElementStartToken | TAttributeToken | TElementEndToken | TTextToken | TCdataToken;
95
+ export type TXmlToken = TProcessingInstructionToken | TCommentToken | TEntityDeclarationToken | TElementStartToken | TAttributeToken | TElementEndToken | TTextToken | TCdataToken;
96
96
  export interface TRange {
97
97
  start: number;
98
98
  end: number;
@@ -1,35 +1,3 @@
1
- export declare const HORIZONTAL_TAB = 9;
2
- export declare const LINE_FEED = 10;
3
- export declare const CARRIAGE_RETURN = 13;
4
- export declare const SPACE = 32;
5
- export declare const EXCLAMATION_MARK = 33;
6
- export declare const DOUBLE_QUOTE = 34;
7
- export declare const HASH = 35;
8
- export declare const PERCENT = 37;
9
- export declare const AMPERSAND = 38;
10
- export declare const SINGLE_QUOTE = 39;
11
- export declare const HYPHEN = 45;
12
- export declare const PERIOD = 46;
13
- export declare const SLASH = 47;
14
- export declare const ZERO = 48;
15
- export declare const NINE = 57;
16
- export declare const COLON = 58;
17
- export declare const SEMICOLON = 59;
18
- export declare const LESS_THAN = 60;
19
- export declare const EQUALS = 61;
20
- export declare const GREATER_THAN = 62;
21
- export declare const QUESTION_MARK = 63;
22
- export declare const UPPERCASE_A = 65;
23
- export declare const UPPERCASE_F = 70;
24
- export declare const UPPERCASE_P = 80;
25
- export declare const UPPERCASE_S = 83;
26
- export declare const UPPERCASE_Z = 90;
27
- export declare const OPEN_BRACKET = 91;
28
- export declare const UNDERSCORE = 95;
29
- export declare const LOWERCASE_A = 97;
30
- export declare const LOWERCASE_F = 102;
31
- export declare const LOWERCASE_X = 120;
32
- export declare const LOWERCASE_Z = 122;
33
1
  export declare function isAsciiDigit(byte: number): boolean;
34
2
  /**
35
3
  * Checks if the unicode code point (character) is within the name start char range.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tokenizer/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,KAAK,KAAK,CAAC;AACxB,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,IAAI,KAAK,CAAC;AACvB,eAAO,MAAM,OAAO,KAAK,CAAC;AAC1B,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,MAAM,KAAK,CAAC;AACzB,eAAO,MAAM,MAAM,KAAK,CAAC;AACzB,eAAO,MAAM,KAAK,KAAK,CAAC;AACxB,eAAO,MAAM,IAAI,KAAK,CAAC;AACvB,eAAO,MAAM,IAAI,KAAK,CAAC;AACvB,eAAO,MAAM,KAAK,KAAK,CAAC;AACxB,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,MAAM,KAAK,CAAC;AACzB,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CA6BrE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CA2BhE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAUhE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIpD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAUnD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tokenizer/utils.ts"],"names":[],"mappings":"AAiBA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CA6BrE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CA2BhE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAUhE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIpD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAUnD"}
@@ -0,0 +1,3 @@
1
+ import { type TXmlToken } from './tokenizer';
2
+ export declare function tokensToXml(tokens: TXmlToken[]): string;
3
+ //# sourceMappingURL=tokens-to-xml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens-to-xml.d.ts","sourceRoot":"","sources":["../../src/tokens-to-xml.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAQvD"}
@@ -4,5 +4,4 @@ export interface TXMLNode {
4
4
  attributes: Record<string, string>;
5
5
  children: (TXMLNode | string)[];
6
6
  }
7
- export declare function getTagName(local: string, prefix: string): string;
8
7
  //# sourceMappingURL=xml-to-object.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xml-to-object.d.ts","sourceRoot":"","sources":["../../src/xml-to-object.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,QAAQ,CAmDzE;AAED,MAAM,WAAW,QAAQ;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;CAChC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhE"}
1
+ {"version":3,"file":"xml-to-object.d.ts","sourceRoot":"","sources":["../../src/xml-to-object.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,QAAQ,CAmDzE;AAED,MAAM,WAAW,QAAQ;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;CAChC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xml-tokenizer",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "description": "Straightforward and typesafe XML tokenizer that streams tokens through a callback mechanism",
5
5
  "private": false,
6
6
  "source": "./src/index.ts",
@@ -22,6 +22,7 @@
22
22
  "@types/node": "^20.14.10",
23
23
  "@types/sax": "^1.2.7",
24
24
  "@types/xml2js": "^0.4.14",
25
+ "camaro": "^6.2.3",
25
26
  "fast-xml-parser": "^4.4.1",
26
27
  "sax": "^1.4.1",
27
28
  "saxen": "^10.0.0",
@@ -1 +0,0 @@
1
- "use strict";var a=require("./tokenizer/tokenizer.js"),i=require("./tokenizer/XmlStream.js");function m(r,e,t){a.parseXmlStream(new i.XmlStream(r),e,t)}exports.parseString=m;
@@ -1 +0,0 @@
1
- "use strict";var r=require("./utils.js"),i=require("./XmlError.js");function U(t,n,s){if(t.startsWith("\uFEFF")&&t.advance(1),t.startsWith("<?xml ")&&P(t),m(t,s),t.skipSpaces(),t.startsWith("<!DOCTYPE")){if(!n)throw new i.XmlError({type:"DtdDetected"});w(t,s),m(t,s)}if(t.skipSpaces(),!t.atEnd()&&t.currCodeUnit()===r.LESS_THAN&&g(t,s),m(t,s),!t.atEnd())throw new i.XmlError({type:"UnknownToken",message:"Not at end"},t.genTextPos())}function m(t,n){for(;!t.atEnd();)if(t.skipSpaces(),t.startsWith("<!--"))h(t,n);else if(t.startsWith("<?"))f(t,n);else break}function P(t){if(t.advance(5),E(t),!t.startsWith("version"))throw new i.XmlError({type:"InvalidString",expected:"version"},t.genTextPos());d(t),E(t),t.startsWith("encoding")&&(d(t),E(t)),t.startsWith("standalone")&&d(t),t.skipSpaces(),t.skipString("?>")}function E(t){if(t.startsWithSpace())t.skipSpaces();else if(!t.startsWith("?>")&&!t.atEnd())throw new i.XmlError({type:"InvalidChar",expected:"a whitespace",actual:t.currCodeUnitUnchecked()},t.genTextPos())}function h(t,n){const s=t.getPos();t.advance(4);const o=t.consumeCharsWhile((e,a)=>!(a==="-"&&e.startsWith("-->")));if(t.skipString("-->"),o.includes("--")||o.endsWith("-"))throw new i.XmlError({type:"InvalidComment"},t.genTextPosFrom(s));n({type:"Comment",text:o,range:t.rangeFrom(s)})}function f(t,n){if(t.startsWith("<?xml "))throw new i.XmlError({type:"UnexpectedDeclaration"},t.genTextPos());const s=t.getPos();t.advance(2);const o=t.consumeName();t.skipSpaces();const e=t.consumeCharsWhile((a,c)=>!(c==="?"&&a.startsWith("?>")));t.skipString("?>"),n({type:"ProcessingInstruction",target:o,content:e.length===0?void 0:e,range:t.rangeFrom(s)})}function w(t,n){const s=t.getPos();if(A(t),t.skipSpaces(),t.currCodeUnit()===r.GREATER_THAN){t.advance(1);return}for(t.advance(1);!t.atEnd();)if(t.skipSpaces(),t.startsWith("<!ENTITY"))W(t,n);else if(t.startsWith("<!--"))h(t,n);else if(t.startsWith("<?"))f(t,n);else if(t.startsWith("]"))if(t.advance(1),t.skipSpaces(),t.currCodeUnit()===r.GREATER_THAN){t.advance(1);break}else throw new i.XmlError({type:"InvalidChar",expected:"'>'",actual:t.currCodeUnitUnchecked()},t.genTextPos());else if(t.startsWith("<!ELEMENT")||t.startsWith("<!ATTLIST")||t.startsWith("<!NOTATION"))try{v(t)}catch(o){throw new i.XmlError({type:"UnknownToken",message:"Failed to consume declaration"},t.genTextPosFrom(s))}else throw new i.XmlError({type:"UnknownToken",message:"Failed to parse doctype"},t.genTextPos())}function A(t){t.advance(9),t.consumeSpaces(),t.skipName(),t.skipSpaces(),T(t),t.skipSpaces();const n=t.currCodeUnit();if(n!==r.OPEN_BRACKET&&n!==r.GREATER_THAN)throw new i.XmlError({type:"InvalidChar",expected:"'[' or '>'",actual:n},t.genTextPos())}function T(t){if(t.startsWith("SYSTEM")||t.startsWith("PUBLIC")){const n=t.getPos();t.advance(6);const s=t.sliceBack(n);t.consumeSpaces();const o=t.consumeQuote();if(t.consumeCodeUnitsWhile(e=>e!==o),t.consumeCodeUnit(o),s==="PUBLIC"){t.consumeSpaces();const e=t.consumeQuote();t.consumeCodeUnitsWhile(a=>a!==e),t.consumeCodeUnit(e)}return!0}return!1}function W(t,n){t.advance(8),t.consumeSpaces();const s=!t.tryConsumeCodeUnit(r.PERCENT);s||t.consumeSpaces();const o=t.consumeName();t.consumeSpaces();const e=y(t,s);e!==null&&n({type:"EntityDeclaration",name:o,definition:e}),t.skipSpaces(),t.consumeCodeUnit(r.GREATER_THAN)}function y(t,n){const s=t.currCodeUnit();if(s===r.DOUBLE_QUOTE||s===r.SINGLE_QUOTE){const o=t.consumeQuote(),e=t.getPos();t.skipCodeUnitsWhile(c=>c!==o);const a=t.sliceBack(e);return t.consumeCodeUnit(o),a}else if(s===r.UPPERCASE_S||s===r.UPPERCASE_P){if(T(t))return n&&(t.skipSpaces(),t.startsWith("NDATA")&&(t.advance(5),t.consumeSpaces(),t.skipName())),null;throw new i.XmlError({type:"InvalidExternalID"},t.genTextPos())}else throw new i.XmlError({type:"InvalidChar",expected:"a quote, SYSTEM or PUBLIC",actual:s},t.genTextPos())}function v(t){t.skipCodeUnitsWhile(n=>n!==r.GREATER_THAN),t.consumeCodeUnit(r.GREATER_THAN)}function g(t,n){const s=t.getPos();t.advance(1);const[o,e]=t.consumeQName();n({type:"ElementStart",prefix:o,local:e,start:s});let a=!1;for(;!t.atEnd();){const c=t.startsWithSpace();t.skipSpaces();const l=t.getPos(),u=t.currCodeUnit();if(u===r.SLASH){t.advance(1),t.consumeCodeUnit(r.GREATER_THAN);const p=t.rangeFrom(l);n({type:"ElementEnd",end:{type:"Empty"},range:p});break}else if(u===r.GREATER_THAN){t.advance(1);const p=t.rangeFrom(l);n({type:"ElementEnd",end:{type:"Open"},range:p}),a=!0;break}else{if(!c)throw new i.XmlError({type:"InvalidChar",expected:"a whitespace",actual:t.currCodeUnitUnchecked()},t.genTextPos());const[p,C,S]=d(t),k=t.getPos();n({type:"Attribute",range:{start:l,end:k},prefix:p,local:C,value:S})}}a&&x(t,n)}function d(t){const[n,s]=t.consumeQName();let o;const e=t.getPos();if(t.skipSpaces(),t.tryConsumeCodeUnit(r.EQUALS)){t.skipSpaces();const a=t.consumeQuote(),c=String.fromCharCode(a),l=t.getPos();t.skipCharsWhile((u,p)=>p!==c&&p!=="<"),o=t.sliceBack(l),t.consumeCodeUnit(a)}else t.goTo(e),o="true";return[n,s,o]}function x(t,n){for(;!t.atEnd();)if(t.currCodeUnit()===r.LESS_THAN){const s=t.nextCodeUnit();if(s===r.EXCLAMATION_MARK)if(t.startsWith("<!--"))h(t,n);else if(t.startsWith("<![CDATA["))N(t,n);else throw new i.XmlError({type:"UnknownToken",message:"Failed to parse content"},t.genTextPos());else if(s===r.QUESTION_MARK)f(t,n);else if(s===r.SLASH){R(t,n);break}else g(t,n)}else I(t,n)}function N(t,n){const s=t.getPos();t.advance(9);const o=t.consumeCharsWhile((a,c)=>!(c==="]"&&a.startsWith("]]>")));t.skipString("]]>");const e=t.rangeFrom(s);n({type:"Cdata",text:o,range:e})}function R(t,n){const s=t.getPos();t.advance(2);const[o,e]=t.consumeQName();t.skipSpaces(),t.consumeCodeUnit(r.GREATER_THAN);const a=t.rangeFrom(s);n({type:"ElementEnd",end:{type:"Close",prefix:o,local:e},range:a})}function I(t,n){const s=t.getPos(),o=t.consumeCharsWhile((e,a)=>a!=="<");if(o.includes(">")&&o.includes("]]>"))throw new i.XmlError({type:"InvalidCharacterData"},t.genTextPos());n({type:"Text",text:o,range:t.rangeFrom(s)})}exports.parseXmlStream=U;
@@ -1 +0,0 @@
1
- import{parseXmlStream as e}from"./tokenizer/tokenizer.js";import{XmlStream as o}from"./tokenizer/XmlStream.js";function p(r,m,t){e(new o(r),m,t)}export{p as parseString};
@@ -1 +0,0 @@
1
- import{LESS_THAN as C,GREATER_THAN as r,OPEN_BRACKET as w,PERCENT as W,DOUBLE_QUOTE as y,SINGLE_QUOTE as x,UPPERCASE_S as v,UPPERCASE_P as I,SLASH as S,EQUALS as N,EXCLAMATION_MARK as A,QUESTION_MARK as F}from"./utils.js";import{XmlError as i}from"./XmlError.js";function L(t,n,s){if(t.startsWith("\uFEFF")&&t.advance(1),t.startsWith("<?xml ")&&Q(t),m(t,s),t.skipSpaces(),t.startsWith("<!DOCTYPE")){if(!n)throw new i({type:"DtdDetected"});D(t,s),m(t,s)}if(t.skipSpaces(),!t.atEnd()&&t.currCodeUnit()===C&&E(t,s),m(t,s),!t.atEnd())throw new i({type:"UnknownToken",message:"Not at end"},t.genTextPos())}function m(t,n){for(;!t.atEnd();)if(t.skipSpaces(),t.startsWith("<!--"))f(t,n);else if(t.startsWith("<?"))g(t,n);else break}function Q(t){if(t.advance(5),h(t),!t.startsWith("version"))throw new i({type:"InvalidString",expected:"version"},t.genTextPos());u(t),h(t),t.startsWith("encoding")&&(u(t),h(t)),t.startsWith("standalone")&&u(t),t.skipSpaces(),t.skipString("?>")}function h(t){if(t.startsWithSpace())t.skipSpaces();else if(!t.startsWith("?>")&&!t.atEnd())throw new i({type:"InvalidChar",expected:"a whitespace",actual:t.currCodeUnitUnchecked()},t.genTextPos())}function f(t,n){const s=t.getPos();t.advance(4);const o=t.consumeCharsWhile((e,a)=>!(a==="-"&&e.startsWith("-->")));if(t.skipString("-->"),o.includes("--")||o.endsWith("-"))throw new i({type:"InvalidComment"},t.genTextPosFrom(s));n({type:"Comment",text:o,range:t.rangeFrom(s)})}function g(t,n){if(t.startsWith("<?xml "))throw new i({type:"UnexpectedDeclaration"},t.genTextPos());const s=t.getPos();t.advance(2);const o=t.consumeName();t.skipSpaces();const e=t.consumeCharsWhile((a,c)=>!(c==="?"&&a.startsWith("?>")));t.skipString("?>"),n({type:"ProcessingInstruction",target:o,content:e.length===0?void 0:e,range:t.rangeFrom(s)})}function D(t,n){const s=t.getPos();if(O(t),t.skipSpaces(),t.currCodeUnit()===r){t.advance(1);return}for(t.advance(1);!t.atEnd();)if(t.skipSpaces(),t.startsWith("<!ENTITY"))_(t,n);else if(t.startsWith("<!--"))f(t,n);else if(t.startsWith("<?"))g(t,n);else if(t.startsWith("]"))if(t.advance(1),t.skipSpaces(),t.currCodeUnit()===r){t.advance(1);break}else throw new i({type:"InvalidChar",expected:"'>'",actual:t.currCodeUnitUnchecked()},t.genTextPos());else if(t.startsWith("<!ELEMENT")||t.startsWith("<!ATTLIST")||t.startsWith("<!NOTATION"))try{R(t)}catch(o){throw new i({type:"UnknownToken",message:"Failed to consume declaration"},t.genTextPosFrom(s))}else throw new i({type:"UnknownToken",message:"Failed to parse doctype"},t.genTextPos())}function O(t){t.advance(9),t.consumeSpaces(),t.skipName(),t.skipSpaces(),k(t),t.skipSpaces();const n=t.currCodeUnit();if(n!==w&&n!==r)throw new i({type:"InvalidChar",expected:"'[' or '>'",actual:n},t.genTextPos())}function k(t){if(t.startsWith("SYSTEM")||t.startsWith("PUBLIC")){const n=t.getPos();t.advance(6);const s=t.sliceBack(n);t.consumeSpaces();const o=t.consumeQuote();if(t.consumeCodeUnitsWhile(e=>e!==o),t.consumeCodeUnit(o),s==="PUBLIC"){t.consumeSpaces();const e=t.consumeQuote();t.consumeCodeUnitsWhile(a=>a!==e),t.consumeCodeUnit(e)}return!0}return!1}function _(t,n){t.advance(8),t.consumeSpaces();const s=!t.tryConsumeCodeUnit(W);s||t.consumeSpaces();const o=t.consumeName();t.consumeSpaces();const e=B(t,s);e!==null&&n({type:"EntityDeclaration",name:o,definition:e}),t.skipSpaces(),t.consumeCodeUnit(r)}function B(t,n){const s=t.currCodeUnit();if(s===y||s===x){const o=t.consumeQuote(),e=t.getPos();t.skipCodeUnitsWhile(c=>c!==o);const a=t.sliceBack(e);return t.consumeCodeUnit(o),a}else if(s===v||s===I){if(k(t))return n&&(t.skipSpaces(),t.startsWith("NDATA")&&(t.advance(5),t.consumeSpaces(),t.skipName())),null;throw new i({type:"InvalidExternalID"},t.genTextPos())}else throw new i({type:"InvalidChar",expected:"a quote, SYSTEM or PUBLIC",actual:s},t.genTextPos())}function R(t){t.skipCodeUnitsWhile(n=>n!==r),t.consumeCodeUnit(r)}function E(t,n){const s=t.getPos();t.advance(1);const[o,e]=t.consumeQName();n({type:"ElementStart",prefix:o,local:e,start:s});let a=!1;for(;!t.atEnd();){const c=t.startsWithSpace();t.skipSpaces();const d=t.getPos(),l=t.currCodeUnit();if(l===S){t.advance(1),t.consumeCodeUnit(r);const p=t.rangeFrom(d);n({type:"ElementEnd",end:{type:"Empty"},range:p});break}else if(l===r){t.advance(1);const p=t.rangeFrom(d);n({type:"ElementEnd",end:{type:"Open"},range:p}),a=!0;break}else{if(!c)throw new i({type:"InvalidChar",expected:"a whitespace",actual:t.currCodeUnitUnchecked()},t.genTextPos());const[p,U,T]=u(t),P=t.getPos();n({type:"Attribute",range:{start:d,end:P},prefix:p,local:U,value:T})}}a&&b(t,n)}function u(t){const[n,s]=t.consumeQName();let o;const e=t.getPos();if(t.skipSpaces(),t.tryConsumeCodeUnit(N)){t.skipSpaces();const a=t.consumeQuote(),c=String.fromCharCode(a),d=t.getPos();t.skipCharsWhile((l,p)=>p!==c&&p!=="<"),o=t.sliceBack(d),t.consumeCodeUnit(a)}else t.goTo(e),o="true";return[n,s,o]}function b(t,n){for(;!t.atEnd();)if(t.currCodeUnit()===C){const s=t.nextCodeUnit();if(s===A)if(t.startsWith("<!--"))f(t,n);else if(t.startsWith("<![CDATA["))M(t,n);else throw new i({type:"UnknownToken",message:"Failed to parse content"},t.genTextPos());else if(s===F)g(t,n);else if(s===S){Y(t,n);break}else E(t,n)}else H(t,n)}function M(t,n){const s=t.getPos();t.advance(9);const o=t.consumeCharsWhile((a,c)=>!(c==="]"&&a.startsWith("]]>")));t.skipString("]]>");const e=t.rangeFrom(s);n({type:"Cdata",text:o,range:e})}function Y(t,n){const s=t.getPos();t.advance(2);const[o,e]=t.consumeQName();t.skipSpaces(),t.consumeCodeUnit(r);const a=t.rangeFrom(s);n({type:"ElementEnd",end:{type:"Close",prefix:o,local:e},range:a})}function H(t,n){const s=t.getPos(),o=t.consumeCharsWhile((e,a)=>a!=="<");if(o.includes(">")&&o.includes("]]>"))throw new i({type:"InvalidCharacterData"},t.genTextPos());n({type:"Text",text:o,range:t.rangeFrom(s)})}export{L as parseXmlStream};
@@ -1,3 +0,0 @@
1
- import { type TTokenCallback } from './tokenizer';
2
- export declare function parseString(xmlString: string, allowDtd: boolean, tokenCallback: TTokenCallback): void;
3
- //# sourceMappingURL=parse-string.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-string.d.ts","sourceRoot":"","sources":["../../src/parse-string.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7E,wBAAgB,WAAW,CAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,EACjB,aAAa,EAAE,cAAc,GAC3B,IAAI,CAEN"}
@@ -1,11 +0,0 @@
1
- import { type TTokenCallback } from './types';
2
- import { type XmlStream } from './XmlStream';
3
- /**
4
- * Parses an XML document.
5
- *
6
- * document ::= prolog element Misc*
7
- *
8
- * https://www.w3.org/TR/xml/#NT-document
9
- */
10
- export declare function parseXmlStream(s: XmlStream, allowDtd: boolean, tokenCallback: TTokenCallback): void;
11
- //# sourceMappingURL=tokenizer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../../src/tokenizer/tokenizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAgB9C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC7B,CAAC,EAAE,SAAS,EACZ,QAAQ,EAAE,OAAO,EACjB,aAAa,EAAE,cAAc,GAC3B,IAAI,CAgCN"}