xml-tokenizer 0.0.32 → 0.0.33
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.
- package/dist/cjs/config.js +1 -43
- package/dist/cjs/get-q-name.js +1 -8
- package/dist/cjs/index.js +1 -80
- package/dist/cjs/processor/process.js +1 -0
- package/dist/cjs/processor/processors/path-tracker.js +1 -0
- package/dist/cjs/processor/validate-processor-order.js +5 -0
- package/dist/cjs/selector/TokenSelectState.js +1 -107
- package/dist/cjs/selector/TokenSelectStateMachine.js +1 -151
- package/dist/cjs/selector/TokenSelector.js +1 -140
- package/dist/cjs/selector/match-string.js +1 -22
- package/dist/cjs/selector/select.js +1 -20
- package/dist/cjs/token-to-xml.js +1 -45
- package/dist/cjs/tokenizer/XmlError.js +1 -97
- package/dist/cjs/tokenizer/XmlStream.js +1 -479
- package/dist/cjs/tokenizer/ascii-constants.js +1 -70
- package/dist/cjs/tokenizer/tokenize.js +1 -420
- package/dist/cjs/tokenizer/utils.js +1 -48
- package/dist/cjs/tokens-to-xml.js +1 -14
- package/dist/cjs/xml-to-object.js +1 -70
- package/dist/cjs/xml-to-simplified-object.js +1 -87
- package/dist/esm/config.js +1 -39
- package/dist/esm/get-q-name.js +1 -6
- package/dist/esm/index.js +1 -16
- package/dist/esm/processor/process.js +1 -0
- package/dist/esm/processor/processors/path-tracker.js +1 -0
- package/dist/esm/processor/validate-processor-order.js +5 -0
- package/dist/esm/selector/TokenSelectState.js +1 -103
- package/dist/esm/selector/TokenSelectStateMachine.js +1 -149
- package/dist/esm/selector/TokenSelector.js +1 -138
- package/dist/esm/selector/match-string.js +1 -20
- package/dist/esm/selector/select.js +1 -18
- package/dist/esm/token-to-xml.js +1 -43
- package/dist/esm/tokenizer/XmlError.js +1 -95
- package/dist/esm/tokenizer/XmlStream.js +1 -477
- package/dist/esm/tokenizer/ascii-constants.js +1 -36
- package/dist/esm/tokenizer/tokenize.js +1 -417
- package/dist/esm/tokenizer/utils.js +1 -41
- package/dist/esm/tokens-to-xml.js +1 -12
- package/dist/esm/xml-to-object.js +1 -67
- package/dist/esm/xml-to-simplified-object.js +1 -84
- package/dist/types/config.d.ts +0 -1
- package/dist/types/get-q-name.d.ts +0 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/processor/index.d.ts +4 -0
- package/dist/types/processor/process.d.ts +3 -0
- package/dist/types/processor/processors/index.d.ts +1 -0
- package/dist/types/processor/processors/path-tracker.d.ts +5 -0
- package/dist/types/processor/types.d.ts +10 -0
- package/dist/types/processor/validate-processor-order.d.ts +2 -0
- package/dist/types/selector/TokenSelectState.d.ts +0 -1
- package/dist/types/selector/TokenSelectStateMachine.d.ts +0 -1
- package/dist/types/selector/TokenSelector.d.ts +0 -1
- package/dist/types/selector/index.d.ts +0 -1
- package/dist/types/selector/match-string.d.ts +0 -1
- package/dist/types/selector/select.d.ts +0 -1
- package/dist/types/selector/types.d.ts +0 -1
- package/dist/types/token-to-xml.d.ts +0 -1
- package/dist/types/tokenizer/XmlError.d.ts +0 -1
- package/dist/types/tokenizer/XmlStream.d.ts +7 -1
- package/dist/types/tokenizer/ascii-constants.d.ts +0 -1
- package/dist/types/tokenizer/index.d.ts +0 -1
- package/dist/types/tokenizer/tokenize.d.ts +0 -1
- package/dist/types/tokenizer/types.d.ts +0 -1
- package/dist/types/tokenizer/utils.d.ts +0 -1
- package/dist/types/tokens-to-xml.d.ts +0 -1
- package/dist/types/xml-to-object.d.ts +0 -1
- package/dist/types/xml-to-simplified-object.d.ts +0 -1
- package/package.json +6 -6
- package/dist/cjs/config.js.map +0 -1
- package/dist/cjs/get-q-name.js.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/selector/TokenSelectState.js.map +0 -1
- package/dist/cjs/selector/TokenSelectStateMachine.js.map +0 -1
- package/dist/cjs/selector/TokenSelector.js.map +0 -1
- package/dist/cjs/selector/match-string.js.map +0 -1
- package/dist/cjs/selector/select.js.map +0 -1
- package/dist/cjs/token-to-xml.js.map +0 -1
- package/dist/cjs/tokenizer/XmlError.js.map +0 -1
- package/dist/cjs/tokenizer/XmlStream.js.map +0 -1
- package/dist/cjs/tokenizer/ascii-constants.js.map +0 -1
- package/dist/cjs/tokenizer/tokenize.js.map +0 -1
- package/dist/cjs/tokenizer/utils.js.map +0 -1
- package/dist/cjs/tokens-to-xml.js.map +0 -1
- package/dist/cjs/xml-to-object.js.map +0 -1
- package/dist/cjs/xml-to-simplified-object.js.map +0 -1
- package/dist/esm/config.js.map +0 -1
- package/dist/esm/get-q-name.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/selector/TokenSelectState.js.map +0 -1
- package/dist/esm/selector/TokenSelectStateMachine.js.map +0 -1
- package/dist/esm/selector/TokenSelector.js.map +0 -1
- package/dist/esm/selector/match-string.js.map +0 -1
- package/dist/esm/selector/select.js.map +0 -1
- package/dist/esm/token-to-xml.js.map +0 -1
- package/dist/esm/tokenizer/XmlError.js.map +0 -1
- package/dist/esm/tokenizer/XmlStream.js.map +0 -1
- package/dist/esm/tokenizer/ascii-constants.js.map +0 -1
- package/dist/esm/tokenizer/tokenize.js.map +0 -1
- package/dist/esm/tokenizer/utils.js.map +0 -1
- package/dist/esm/tokens-to-xml.js.map +0 -1
- package/dist/esm/xml-to-object.js.map +0 -1
- package/dist/esm/xml-to-simplified-object.js.map +0 -1
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/get-q-name.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/selector/TokenSelectState.d.ts.map +0 -1
- package/dist/types/selector/TokenSelectStateMachine.d.ts.map +0 -1
- package/dist/types/selector/TokenSelector.d.ts.map +0 -1
- package/dist/types/selector/index.d.ts.map +0 -1
- package/dist/types/selector/match-string.d.ts.map +0 -1
- package/dist/types/selector/select.d.ts.map +0 -1
- package/dist/types/selector/types.d.ts.map +0 -1
- package/dist/types/token-to-xml.d.ts.map +0 -1
- package/dist/types/tokenizer/XmlError.d.ts.map +0 -1
- package/dist/types/tokenizer/XmlStream.d.ts.map +0 -1
- package/dist/types/tokenizer/ascii-constants.d.ts.map +0 -1
- package/dist/types/tokenizer/index.d.ts.map +0 -1
- package/dist/types/tokenizer/tokenize.d.ts.map +0 -1
- package/dist/types/tokenizer/types.d.ts.map +0 -1
- package/dist/types/tokenizer/utils.d.ts.map +0 -1
- package/dist/types/tokens-to-xml.d.ts.map +0 -1
- package/dist/types/xml-to-object.d.ts.map +0 -1
- package/dist/types/xml-to-simplified-object.d.ts.map +0 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TXmlToken } from '../tokenizer';
|
|
2
|
+
export interface TProcessor<GContext = unknown, GDeps extends readonly TProcessorAny[] = []> {
|
|
3
|
+
name?: string;
|
|
4
|
+
context: GContext;
|
|
5
|
+
deps?: GDeps;
|
|
6
|
+
process?: TProcessorTokenCallback<GContext & TMergeProcessorContexts<GDeps>>;
|
|
7
|
+
}
|
|
8
|
+
export type TProcessorAny = TProcessor<any, any>;
|
|
9
|
+
export type TProcessorTokenCallback<GContext = unknown> = (token: TXmlToken, context: GContext) => void;
|
|
10
|
+
export type TMergeProcessorContexts<GProcessors extends readonly TProcessorAny[]> = GProcessors extends [infer Head, ...infer Tail] ? Head extends TProcessorAny ? Tail extends readonly TProcessorAny[] ? Head['context'] & TMergeProcessorContexts<Tail> : Head['context'] : {} : {};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { TXmlStreamOptions } from '../tokenizer';
|
|
2
2
|
import { type TSelectedTokenCallback, type TTokenSelectPath } from './types';
|
|
3
3
|
export declare function select(xml: string, tokenSelectPaths: TTokenSelectPath[], callback: TSelectedTokenCallback, options?: TXmlStreamOptions): void;
|
|
4
|
-
//# sourceMappingURL=select.d.ts.map
|
|
@@ -101,6 +101,13 @@ export declare class XmlStream {
|
|
|
101
101
|
* @returns True if the stream starts with the text, false otherwise.
|
|
102
102
|
*/
|
|
103
103
|
startsWith(text: string): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Checks if the stream starts with the given text, case-insensitive.
|
|
106
|
+
*
|
|
107
|
+
* @param text - The text to check for (should be uppercase).
|
|
108
|
+
* @returns True if the stream starts with the text (case-insensitive), false otherwise.
|
|
109
|
+
*/
|
|
110
|
+
startsWithIgnoreCase(text: string): boolean;
|
|
104
111
|
/**
|
|
105
112
|
* Skips a specific string in the stream.
|
|
106
113
|
*
|
|
@@ -250,4 +257,3 @@ export interface TXmlStreamConfig {
|
|
|
250
257
|
export type TXmlStreamOptions = {
|
|
251
258
|
pos?: number;
|
|
252
259
|
} & Partial<TXmlStreamConfig>;
|
|
253
|
-
//# sourceMappingURL=XmlStream.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xml-tokenizer",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.33",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Straightforward and typesafe XML tokenizer that streams tokens through a callback mechanism",
|
|
6
6
|
"keywords": [],
|
|
7
|
-
"homepage": "https://builder.group/?
|
|
7
|
+
"homepage": "https://builder.group/?utm_source=package-json",
|
|
8
8
|
"bugs": {
|
|
9
9
|
"url": "https://github.com/builder-group/community/issues"
|
|
10
10
|
},
|
|
@@ -23,17 +23,17 @@
|
|
|
23
23
|
"README.md"
|
|
24
24
|
],
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@types/node": "^22.
|
|
26
|
+
"@types/node": "^22.15.29",
|
|
27
27
|
"@types/sax": "^1.2.7",
|
|
28
28
|
"@types/xml2js": "^0.4.14",
|
|
29
29
|
"camaro": "^6.2.3",
|
|
30
|
-
"fast-xml-parser": "^5.
|
|
30
|
+
"fast-xml-parser": "^5.2.3",
|
|
31
31
|
"sax": "^1.4.1",
|
|
32
32
|
"saxen": "^10.0.0",
|
|
33
33
|
"txml": "^5.1.1",
|
|
34
34
|
"xml2js": "^0.6.2",
|
|
35
|
-
"@blgc/config": "0.0.
|
|
36
|
-
"rollup-presets": "0.0.
|
|
35
|
+
"@blgc/config": "0.0.35",
|
|
36
|
+
"rollup-presets": "0.0.21"
|
|
37
37
|
},
|
|
38
38
|
"size-limit": [
|
|
39
39
|
{
|
package/dist/cjs/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sources":["../../src/config.ts"],"sourcesContent":["import { TXmlStreamOptions } from './tokenizer';\n\n/**\n * Default XML configuration with strict XML compliance.\n */\nexport const xmlConfig: TXmlStreamOptions = {\n\tstrictDocument: true,\n\tallowDtd: true,\n\trawTextElements: null,\n\timplicitSelfClosingElements: null,\n\tcontextSliceSize: 30\n};\n\n/**\n * HTML configuration with HTML-specific settings.\n * - Non-strict document structure\n * - Raw text elements like script and style\n * - Implicit self-closing elements (void elements in HTML)\n */\nexport const htmlConfig: TXmlStreamOptions = {\n\tstrictDocument: false,\n\tallowDtd: true,\n\trawTextElements: ['script', 'style', 'title', 'textarea'],\n\timplicitSelfClosingElements: [\n\t\t'area',\n\t\t'base',\n\t\t'br',\n\t\t'col',\n\t\t'embed',\n\t\t'hr',\n\t\t'img',\n\t\t'input',\n\t\t'link',\n\t\t'meta',\n\t\t'param',\n\t\t'source',\n\t\t'track',\n\t\t'wbr'\n\t],\n\tcontextSliceSize: 30\n};\n\n/**\n * SVG configuration with SVG-specific settings.\n */\nexport const svgConfig: TXmlStreamOptions = {\n\tstrictDocument: false,\n\tallowDtd: true,\n\trawTextElements: ['style'],\n\timplicitSelfClosingElements: [],\n\tcontextSliceSize: 30\n};\n"],"names":[],"mappings":";;AACY,MAAC,SAAS,GAAG;AACzB,EAAE,cAAc,EAAE,IAAI;AACtB,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,eAAe,EAAE,IAAI;AACvB,EAAE,2BAA2B,EAAE,IAAI;AACnC,EAAE,gBAAgB,EAAE;AACpB;AACY,MAAC,UAAU,GAAG;AAC1B,EAAE,cAAc,EAAE,KAAK;AACvB,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC;AAC3D,EAAE,2BAA2B,EAAE;AAC/B,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI;AACJ,GAAG;AACH,EAAE,gBAAgB,EAAE;AACpB;AACY,MAAC,SAAS,GAAG;AACzB,EAAE,cAAc,EAAE,KAAK;AACvB,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC;AAC5B,EAAE,2BAA2B,EAAE,EAAE;AACjC,EAAE,gBAAgB,EAAE;AACpB;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-q-name.js","sources":["../../src/get-q-name.ts"],"sourcesContent":["/**\n * Constructs a qualified name (QName) from a local name and an optional namespace prefix.\n *\n * https://www.w3.org/2001/tag/doc/qnameids.html\n */\nexport function getQName(local: string, prefix: string | null = null): string {\n\treturn prefix != null && prefix.length > 0 ? `${prefix}:${local}` : local;\n}\n"],"names":[],"mappings":";;AACO,SAAS,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE;AAC/C,EAAE,OAAO,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK;AAC3E;;;;"}
|
package/dist/cjs/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TokenSelectState.js","sources":["../../../src/selector/TokenSelectState.ts"],"sourcesContent":["import { matchString } from './match-string';\nimport { type TCachedAttribute } from './TokenSelectStateMachine';\nimport { type TTokenSelectPathSegment } from './types';\n\nexport class TokenSelectState {\n\tprivate _segment: TTokenSelectPathSegment;\n\tprivate _matchCriteria: ETokenMatchCriteria = ETokenMatchCriteria.None;\n\tprivate _toCacheNodeProps: EToCacheNodeProps = EToCacheNodeProps.None;\n\tprivate _enteredDepth: number | null = null;\n\n\tconstructor(segment: TTokenSelectPathSegment) {\n\t\tthis._segment = segment;\n\t\tthis.applyLevels();\n\t}\n\n\tpublic get matchCriteria(): ETokenMatchCriteria {\n\t\treturn this._matchCriteria;\n\t}\n\n\tpublic get toCacheNodeProps(): EToCacheNodeProps {\n\t\treturn this._toCacheNodeProps;\n\t}\n\n\tpublic get enteredDepth(): number | null {\n\t\treturn this._enteredDepth;\n\t}\n\n\tprivate applyLevels(): void {\n\t\tlet matchCriteria = ETokenMatchCriteria.None;\n\t\tlet cacheProps = EToCacheNodeProps.None;\n\n\t\tif (this._segment.local != null || this._segment.prefix != null) {\n\t\t\tmatchCriteria |= ETokenMatchCriteria.Name;\n\t\t}\n\t\tif (this._segment.attributes != null) {\n\t\t\tmatchCriteria |= ETokenMatchCriteria.Attributes;\n\t\t\tcacheProps |= EToCacheNodeProps.Attributes;\n\t\t}\n\t\tif (this._segment.text != null) {\n\t\t\tmatchCriteria |= ETokenMatchCriteria.Text;\n\t\t}\n\t\t// if (this._segment.predicate != null) {\n\t\t// \tmatchCriteria |= ETokenMatchCriteria.Node;\n\t\t// \tcacheProps |= EToCacheNodeProps.Name | EToCacheNodeProps.Attributes | EToCacheNodeProps.Text;\n\t\t// }\n\n\t\tthis._matchCriteria = matchCriteria;\n\t\tthis._toCacheNodeProps = cacheProps;\n\t}\n\n\tpublic matchesName(local: string, prefix: string): boolean {\n\t\treturn (\n\t\t\t// Match local\n\t\t\t(this._segment.local == null || matchString(local, this._segment.local)) &&\n\t\t\t// Match prefix\n\t\t\t(this._segment.prefix == null || matchString(prefix, this._segment.prefix))\n\t\t);\n\t}\n\n\tpublic matchesAttributes(attributes: TCachedAttribute[]): boolean {\n\t\tif (this._segment.attributes == null) {\n\t\t\treturn true;\n\t\t}\n\n\t\tfor (const attributeConfig of this._segment.attributes) {\n\t\t\tlet matchFound = false;\n\n\t\t\tfor (const attribute of attributes) {\n\t\t\t\tconst localMatch =\n\t\t\t\t\tattributeConfig.local == null || matchString(attribute.local, attributeConfig.local);\n\t\t\t\tconst valueMatch =\n\t\t\t\t\tattributeConfig.value == null ||\n\t\t\t\t\t(attribute.value != null && matchString(attribute.value, attributeConfig.value));\n\t\t\t\tconst prefixMatch =\n\t\t\t\t\tattributeConfig.prefix == null ||\n\t\t\t\t\t(attribute.prefix != null && matchString(attribute.prefix, attributeConfig.prefix));\n\n\t\t\t\tif (localMatch && valueMatch && prefixMatch) {\n\t\t\t\t\tmatchFound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!matchFound) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tpublic matchesText(text: string): boolean {\n\t\treturn this._segment.text == null || matchString(text, this._segment.text);\n\t}\n\n\tpublic matchesDepth(depth: number, parentDepth: number): boolean {\n\t\tswitch (this._segment.axis) {\n\t\t\tcase 'child':\n\t\t\t\treturn depth === parentDepth + 1;\n\t\t\tcase 'self-or-descendant':\n\t\t\t\treturn depth >= parentDepth;\n\t\t}\n\t}\n\n\tpublic match(depth: number): void {\n\t\tthis._enteredDepth = depth;\n\t}\n\n\tpublic unmatch(): void {\n\t\tthis._enteredDepth = null;\n\t}\n}\n\nexport const enum EToCacheNodeProps {\n\tNone = 0, // Cache none\n\tName = 1 << 0, // Cache local and prefix <prefix:local\n\tAttributes = 1 << 1, // Cache attributes <prefix:local attribute=\"x\"\n\tText = 1 << 2 // Cache text content <prefix:local attribute=\"x\">text\n}\n\nexport const enum ETokenMatchCriteria {\n\tNone = 0, // Match none\n\tName = 1 << 0, // Match local and prefix <prefix:local\n\tAttributes = 1 << 1, // Match attributes <prefix:local attribute=\"x\"\n\tText = 1 << 2, // Match text content <prefix:local attribute=\"x\">text\n\tNode = 1 << 3 // Match node\n}\n"],"names":["matchString"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TokenSelectStateMachine.js","sources":["../../../src/selector/TokenSelectStateMachine.ts"],"sourcesContent":["import { type TXmlToken } from '../tokenizer';\nimport { EToCacheNodeProps, ETokenMatchCriteria, TokenSelectState } from './TokenSelectState';\nimport { type TTokenSelectPath } from './types';\n\nexport class TokenSelectStateMachine {\n\tprivate _states: TokenSelectState[];\n\n\t// null (start state) -> index (x state)\n\tprivate _currentState: number | null = null;\n\n\t// Current state cache\n\tprivate _cachedNodeProps: TCachedNodeProps = {\n\t\tprefix: null,\n\t\tlocal: null,\n\t\tattributes: null,\n\t\ttext: null\n\t};\n\tprivate _cachedTokens: TXmlToken[] = [];\n\tprivate _toRecordTokens: TXmlToken[] = [];\n\n\tconstructor(tokenSelectPath: TTokenSelectPath) {\n\t\tthis._states = tokenSelectPath.map((part) => new TokenSelectState(part));\n\t}\n\n\tpublic getNextState(): TokenSelectState | null {\n\t\tconst nextIndex = this._currentState != null ? this._currentState + 1 : 0;\n\t\tif (nextIndex < this._states.length) {\n\t\t\treturn this._states[nextIndex] ?? null;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic getCurrentState(): TokenSelectState | null {\n\t\tif (this._currentState != null && this._currentState < this._states.length) {\n\t\t\treturn this._states[this._currentState] ?? null;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic record(token: TXmlToken): void {\n\t\tif (this.getOffsetToFinal() <= 1) {\n\t\t\tthis._cachedTokens.push(token);\n\t\t}\n\t}\n\n\tpublic takeRecordedTokens(): TXmlToken[] | null {\n\t\tif (this._toRecordTokens.length > 0) {\n\t\t\tconst recordedTokens = this._toRecordTokens;\n\t\t\tthis._toRecordTokens = [];\n\t\t\treturn recordedTokens;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic transitionIfNameMatch(local: string, prefix: string, depth: number): boolean {\n\t\tconst nextState = this.getNextState();\n\t\tconst currentState = this.getCurrentState();\n\t\tif (nextState == null) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Cache name\n\t\tif (nextState.toCacheNodeProps & EToCacheNodeProps.Name) {\n\t\t\tthis._cachedNodeProps.local = local;\n\t\t\tthis._cachedNodeProps.prefix = prefix;\n\t\t}\n\n\t\t// Transition forward if name and depth match, and no additional criteria are required\n\t\tif (\n\t\t\tnextState.matchesName(local, prefix) &&\n\t\t\tnextState.matchesDepth(depth, currentState?.enteredDepth ?? 0) &&\n\t\t\t!(\n\t\t\t\tnextState.matchCriteria &\n\t\t\t\t(ETokenMatchCriteria.Attributes | ETokenMatchCriteria.Text | ETokenMatchCriteria.Node)\n\t\t\t)\n\t\t) {\n\t\t\tthis.transitionForward(depth);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t// Transition forward if attributes and depth match, and no additional criteria are required\n\tpublic transitionIfAttributesMatch(\n\t\tlocal: string,\n\t\tprefix: string,\n\t\tvalue: string,\n\t\tdepth: number\n\t): boolean {\n\t\tconst nextState = this.getNextState();\n\t\tconst currentState = this.getCurrentState();\n\t\tif (nextState == null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst attributes = this._cachedNodeProps.attributes ?? [];\n\t\tattributes.push({ local, prefix, value });\n\n\t\t// Cache attributes\n\t\tif (nextState.toCacheNodeProps & EToCacheNodeProps.Attributes) {\n\t\t\tthis._cachedNodeProps.attributes = attributes;\n\t\t}\n\n\t\tif (\n\t\t\tnextState.matchesAttributes(attributes) &&\n\t\t\tnextState.matchesDepth(depth, currentState?.enteredDepth ?? 0) &&\n\t\t\t!(nextState.matchCriteria & (ETokenMatchCriteria.Text | ETokenMatchCriteria.Node))\n\t\t) {\n\t\t\tthis.transitionForward(depth);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t// Transition forward if text content and depth match, and no additional criteria are required\n\tpublic transitionIfTextMatch(text: string, depth: number): boolean {\n\t\tconst nextState = this.getNextState();\n\t\tconst currentState = this.getCurrentState();\n\t\tif (nextState == null) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Cache text\n\t\tif (nextState.toCacheNodeProps & EToCacheNodeProps.Text) {\n\t\t\tthis._cachedNodeProps.text = text;\n\t\t}\n\n\t\tif (\n\t\t\tnextState.matchesText(text) &&\n\t\t\tnextState.matchesDepth(depth, currentState?.enteredDepth ?? 0) &&\n\t\t\t!(nextState.matchCriteria & ETokenMatchCriteria.Node)\n\t\t) {\n\t\t\tthis.transitionForward(depth);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate transitionForward(depth: number): void {\n\t\tconst previousState = this.getCurrentState();\n\t\tif (previousState != null) {\n\t\t\tpreviousState.unmatch();\n\t\t}\n\n\t\tthis._currentState = this._currentState != null ? this._currentState + 1 : 0;\n\n\t\tconst currentState = this.getCurrentState();\n\t\tif (currentState != null) {\n\t\t\tcurrentState.match(depth);\n\t\t}\n\n\t\tif (this.isFinalState()) {\n\t\t\tthis._toRecordTokens = this._cachedTokens;\n\t\t}\n\t\tthis.resetCurrentStateCache();\n\t}\n\n\tpublic transitionBack(depth: number): void {\n\t\tconst previousState = this.getCurrentState();\n\t\tif (previousState != null) {\n\t\t\tpreviousState.unmatch();\n\t\t}\n\n\t\tthis._currentState = this._currentState != null ? this._currentState - 1 : 0;\n\n\t\tconst currentState = this.getCurrentState();\n\t\tif (currentState != null) {\n\t\t\tcurrentState.match(depth);\n\t\t}\n\n\t\tthis.resetCurrentStateCache();\n\t}\n\n\tpublic isFinalState(): boolean {\n\t\treturn this._currentState != null && this._currentState >= this._states.length - 1;\n\t}\n\n\tpublic getOffsetToFinal(): number {\n\t\tif (this._currentState == null) {\n\t\t\treturn this._states.length;\n\t\t}\n\t\treturn this._states.length - 1 - this._currentState;\n\t}\n\n\tpublic resetCurrentStateCache(): void {\n\t\tthis._cachedNodeProps.prefix = null;\n\t\tthis._cachedNodeProps.local = null;\n\t\tthis._cachedNodeProps.attributes = null;\n\t\tthis._cachedNodeProps.text = null;\n\t\tthis._cachedTokens = [];\n\t}\n}\n\nexport interface TCachedNodeProps {\n\tprefix: string | null;\n\tlocal: string | null;\n\tattributes: TCachedAttribute[] | null;\n\ttext: string | null;\n}\n\nexport interface TCachedAttribute {\n\tlocal: string;\n\tprefix?: string;\n\tvalue?: string;\n}\n"],"names":["TokenSelectState","EToCacheNodeProps","ETokenMatchCriteria"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TokenSelector.js","sources":["../../../src/selector/TokenSelector.ts"],"sourcesContent":["import {\n\ttype TAttributeToken,\n\ttype TElementEndToken,\n\ttype TElementStartToken,\n\ttype TTextToken,\n\ttype TXmlToken\n} from '../tokenizer';\nimport { ETokenMatchCriteria } from './TokenSelectState';\nimport { TokenSelectStateMachine } from './TokenSelectStateMachine';\nimport { type TSelectedXmlToken, type TTokenSelectPath } from './types';\n\nexport class TokenSelector {\n\tprivate _currentDepth = 0;\n\tprivate _tspStateMachines: TokenSelectStateMachine[];\n\tprivate _isRecording = false;\n\n\tconstructor(tokenSelectPaths: TTokenSelectPath[]) {\n\t\tthis._tspStateMachines = tokenSelectPaths.map(\n\t\t\t(tokenSelectPath) => new TokenSelectStateMachine(tokenSelectPath)\n\t\t);\n\t}\n\n\tpublic pipeToken(token: TXmlToken, recorder: (token: TSelectedXmlToken) => void): void {\n\t\tlet startRecording = false;\n\t\tlet stopRecording = false;\n\t\tswitch (token.type) {\n\t\t\tcase 'ElementStart':\n\t\t\t\tstartRecording = this.handleElementStart(token);\n\t\t\t\tbreak;\n\t\t\tcase 'Attribute':\n\t\t\t\tstartRecording = this.handleAttribute(token);\n\t\t\t\tbreak;\n\t\t\tcase 'Text':\n\t\t\t\tstartRecording = this.handleText(token);\n\t\t\t\tbreak;\n\t\t\tcase 'ElementEnd': {\n\t\t\t\tstopRecording = this.handleElementEnd(token);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t}\n\n\t\tif (startRecording && !this._isRecording) {\n\t\t\tthis._isRecording = true;\n\t\t\trecorder({ type: 'SelectionStart' });\n\t\t}\n\n\t\tfor (const stateMachine of this._tspStateMachines) {\n\t\t\tstateMachine.record(token);\n\t\t\tconst recordedTokens = stateMachine.takeRecordedTokens();\n\t\t\tif (recordedTokens != null) {\n\t\t\t\trecordedTokens.forEach((t) => {\n\t\t\t\t\trecorder(t);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (this._isRecording) {\n\t\t\trecorder(token);\n\t\t}\n\n\t\tif (stopRecording && this._isRecording) {\n\t\t\trecorder({ type: 'SelectionEnd' });\n\t\t\tthis._isRecording = false;\n\t\t}\n\t}\n\n\tprivate handleElementStart(token: TElementStartToken): boolean {\n\t\tthis._currentDepth += 1;\n\n\t\tlet startRecording = false;\n\n\t\tfor (const stateMachine of this._tspStateMachines) {\n\t\t\tstateMachine.resetCurrentStateCache();\n\t\t\tif (stateMachine.isFinalState()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst nextState = stateMachine.getNextState();\n\t\t\tif (nextState == null || !(nextState.matchCriteria & ETokenMatchCriteria.Name)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst transitioned = stateMachine.transitionIfNameMatch(\n\t\t\t\ttoken.local,\n\t\t\t\ttoken.prefix,\n\t\t\t\tthis._currentDepth\n\t\t\t);\n\t\t\tif (transitioned && stateMachine.isFinalState()) {\n\t\t\t\tstartRecording = true;\n\t\t\t}\n\t\t}\n\n\t\treturn startRecording;\n\t}\n\n\tprivate handleAttribute(token: TAttributeToken): boolean {\n\t\tlet startRecording = false;\n\n\t\tfor (const stateMachine of this._tspStateMachines) {\n\t\t\tif (stateMachine.isFinalState()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst nextState = stateMachine.getNextState();\n\t\t\tif (nextState == null || !(nextState.matchCriteria & ETokenMatchCriteria.Attributes)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst transitioned = stateMachine.transitionIfAttributesMatch(\n\t\t\t\ttoken.local,\n\t\t\t\ttoken.prefix,\n\t\t\t\ttoken.value,\n\t\t\t\tthis._currentDepth\n\t\t\t);\n\t\t\tif (transitioned && stateMachine.isFinalState()) {\n\t\t\t\tstartRecording = true;\n\t\t\t}\n\t\t}\n\n\t\treturn startRecording;\n\t}\n\n\tprivate handleText(token: TTextToken): boolean {\n\t\tlet startRecording = false;\n\n\t\tfor (const stateMachine of this._tspStateMachines) {\n\t\t\tif (stateMachine.isFinalState()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst nextState = stateMachine.getNextState();\n\t\t\tif (nextState == null || !(nextState.matchCriteria & ETokenMatchCriteria.Text)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst transitioned = stateMachine.transitionIfTextMatch(token.text, this._currentDepth);\n\t\t\tif (transitioned && stateMachine.isFinalState()) {\n\t\t\t\tstartRecording = true;\n\t\t\t}\n\t\t}\n\n\t\treturn startRecording;\n\t}\n\n\tprivate handleElementEnd(token: TElementEndToken): boolean {\n\t\tif (token.end.type === 'Close' || token.end.type === 'Empty') {\n\t\t\tthis._currentDepth -= 1;\n\n\t\t\t// if (token.end.type === 'Close' && token.end.local === 'head') {\n\t\t\t// \tconsole.log({ token });\n\t\t\t// }\n\n\t\t\tlet isFinalState = false;\n\n\t\t\tfor (const stateMachine of this._tspStateMachines) {\n\t\t\t\tconst currentState = stateMachine.getCurrentState();\n\t\t\t\tif (currentState == null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (currentState.enteredDepth != null && this._currentDepth < currentState.enteredDepth) {\n\t\t\t\t\tstateMachine.transitionBack(this._currentDepth);\n\t\t\t\t}\n\n\t\t\t\tisFinalState = isFinalState || stateMachine.isFinalState();\n\t\t\t}\n\n\t\t\treturn !isFinalState;\n\t\t}\n\t\treturn false;\n\t}\n}\n"],"names":["TokenSelectStateMachine","ETokenMatchCriteria"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"match-string.js","sources":["../../../src/selector/match-string.ts"],"sourcesContent":["import { type TStringMatch } from './types';\n\nexport function matchString(value: string, config: TStringMatch): boolean {\n\t// Default case for simple string input; uses \"EXACT\" match strategy\n\tif (typeof config === 'string') {\n\t\treturn value === config;\n\t}\n\n\tswitch (config.matchStrategy) {\n\t\tcase 'ANY':\n\t\t\treturn true;\n\t\tcase 'EXACT':\n\t\t\treturn value === config.value;\n\t\tcase 'CONTAINS':\n\t\t\treturn value.includes(config.value);\n\t\tcase 'STARTS_WITH':\n\t\t\treturn value.startsWith(config.value);\n\t\tcase 'ENDS_WITH':\n\t\t\treturn value.endsWith(config.value);\n\t}\n}\n"],"names":[],"mappings":";;AACO,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;AAC3C,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAClC,IAAI,OAAO,KAAK,KAAK,MAAM;AAC3B;AACA,EAAE,QAAQ,MAAM,CAAC,aAAa;AAC9B,IAAI,KAAK,KAAK;AACd,MAAM,OAAO,IAAI;AACjB,IAAI,KAAK,OAAO;AAChB,MAAM,OAAO,KAAK,KAAK,MAAM,CAAC,KAAK;AACnC,IAAI,KAAK,UAAU;AACnB,MAAM,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AACzC,IAAI,KAAK,aAAa;AACtB,MAAM,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3C,IAAI,KAAK,WAAW;AACpB,MAAM,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AACzC;AACA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sources":["../../../src/selector/select.ts"],"sourcesContent":["import { tokenize, TXmlStreamOptions } from '../tokenizer';\nimport { TokenSelector } from './TokenSelector';\nimport { type TSelectedTokenCallback, type TTokenSelectPath } from './types';\n\nexport function select(\n\txml: string,\n\ttokenSelectPaths: TTokenSelectPath[],\n\tcallback: TSelectedTokenCallback,\n\toptions?: TXmlStreamOptions\n): void {\n\tconst selector = new TokenSelector(tokenSelectPaths);\n\ttokenize(\n\t\txml,\n\t\t(token, stream) => {\n\t\t\tselector.pipeToken(token, (recordedToken) => {\n\t\t\t\tcallback(recordedToken, stream);\n\t\t\t});\n\t\t},\n\t\toptions\n\t);\n}\n"],"names":["TokenSelector","tokenize"],"mappings":";;;;;AAGO,SAAS,MAAM,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE;AACjE,EAAE,MAAM,QAAQ,GAAG,IAAIA,2BAAa,CAAC,gBAAgB,CAAC;AACtD,EAAEC,iBAAQ;AACV,IAAI,GAAG;AACP,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK;AACvB,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,aAAa,KAAK;AACnD,QAAQ,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;AACvC,OAAO,CAAC;AACR,KAAK;AACL,IAAI;AACJ,GAAG;AACH;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token-to-xml.js","sources":["../../src/token-to-xml.ts"],"sourcesContent":["import { type TXmlToken } from './tokenizer';\n\nexport function tokenToXml(token: TXmlToken): string {\n\tlet xmlString = '';\n\n\tswitch (token.type) {\n\t\tcase 'ProcessingInstruction':\n\t\t\txmlString += `<?${token.target}`;\n\t\t\tif (token.content) {\n\t\t\t\txmlString += ` ${token.content}`;\n\t\t\t}\n\t\t\txmlString += '?>';\n\t\t\tbreak;\n\n\t\tcase 'Comment':\n\t\t\txmlString += `<!--${token.text}-->`;\n\t\t\tbreak;\n\n\t\tcase 'EntityDeclaration':\n\t\t\txmlString += `<!ENTITY ${token.name} \"${token.definition}\">`;\n\t\t\tbreak;\n\n\t\tcase 'ElementStart':\n\t\t\txmlString += `<${token.prefix.length > 0 ? `${token.prefix}:` : ''}${token.local}`;\n\t\t\tbreak;\n\n\t\tcase 'Attribute':\n\t\t\txmlString += ` ${token.prefix.length > 0 ? `${token.prefix}:` : ''}${token.local}=\"${token.value}\"`;\n\t\t\tbreak;\n\n\t\tcase 'ElementEnd':\n\t\t\tif (token.end.type === 'Open') {\n\t\t\t\txmlString += '>';\n\t\t\t} else if (token.end.type === 'Close') {\n\t\t\t\txmlString += `</${token.end.prefix.length > 0 ? `${token.end.prefix}:` : ''}${token.end.local}>`;\n\t\t\t} else {\n\t\t\t\txmlString += '/>';\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'Text':\n\t\t\txmlString += token.text;\n\t\t\tbreak;\n\n\t\tcase 'Cdata':\n\t\t\txmlString += `<![CDATA[${token.text}]]>`;\n\t\t\tbreak;\n\t}\n\n\treturn xmlString;\n}\n"],"names":[],"mappings":";;AACO,SAAS,UAAU,CAAC,KAAK,EAAE;AAClC,EAAE,IAAI,SAAS,GAAG,EAAE;AACpB,EAAE,QAAQ,KAAK,CAAC,IAAI;AACpB,IAAI,KAAK,uBAAuB;AAChC,MAAM,SAAS,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACtC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;AACzB,QAAQ,SAAS,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACxC;AACA,MAAM,SAAS,IAAI,IAAI;AACvB,MAAM;AACN,IAAI,KAAK,SAAS;AAClB,MAAM,SAAS,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACzC,MAAM;AACN,IAAI,KAAK,mBAAmB;AAC5B,MAAM,SAAS,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;AAClE,MAAM;AACN,IAAI,KAAK,cAAc;AACvB,MAAM,SAAS,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACxF,MAAM;AACN,IAAI,KAAK,WAAW;AACpB,MAAM,SAAS,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACzG,MAAM;AACN,IAAI,KAAK,YAAY;AACrB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE;AACrC,QAAQ,SAAS,IAAI,GAAG;AACxB,OAAO,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;AAC7C,QAAQ,SAAS,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACxG,OAAO,MAAM;AACb,QAAQ,SAAS,IAAI,IAAI;AACzB;AACA,MAAM;AACN,IAAI,KAAK,MAAM;AACf,MAAM,SAAS,IAAI,KAAK,CAAC,IAAI;AAC7B,MAAM;AACN,IAAI,KAAK,OAAO;AAChB,MAAM,SAAS,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9C,MAAM;AACN;AACA,EAAE,OAAO,SAAS;AAClB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"XmlError.js","sources":["../../../src/tokenizer/XmlError.ts"],"sourcesContent":["import { type TTextPos } from './types';\n\nexport class XmlError extends Error {\n\tpublic readonly variant: TXMLErrorVariant;\n\tpublic readonly pos: TTextPos;\n\n\tconstructor(variant: TXMLErrorVariant, pos: TTextPos = { col: 1, row: 1 }, message?: string) {\n\t\tsuper(message ?? XmlError.toMessage(variant, pos));\n\t\tthis.variant = variant;\n\t\tthis.pos = pos;\n\t}\n\n\tstatic toMessage(variant: TXMLErrorVariant, pos: TTextPos): string {\n\t\tswitch (variant.type) {\n\t\t\tcase 'InvalidXmlPrefixUri':\n\t\t\t\treturn `'xml' namespace prefix mapped to wrong URI at ${formatPos(pos)}`;\n\t\t\tcase 'UnexpectedXmlUri':\n\t\t\t\treturn `the 'xml' namespace URI is used for not 'xml' prefix at ${formatPos(pos)}`;\n\t\t\tcase 'UnexpectedXmlnsUri':\n\t\t\t\treturn `the 'xmlns' URI is used at ${formatPos(pos)}, but it must not be declared`;\n\t\t\tcase 'InvalidElementNamePrefix':\n\t\t\t\treturn `the 'xmlns' prefix is used at ${formatPos(pos)}, but it must not be`;\n\t\t\tcase 'DuplicatedNamespace':\n\t\t\t\treturn `namespace '${variant.name}' at ${formatPos(pos)} is already defined`;\n\t\t\tcase 'UnknownNamespace':\n\t\t\t\treturn `an unknown namespace prefix '${variant.name}' at ${formatPos(pos)}`;\n\t\t\tcase 'UnexpectedCloseTag':\n\t\t\t\treturn `expected '${variant.expected}' tag, not '${variant.actual}' at ${formatPos(pos)}`;\n\t\t\tcase 'UnexpectedEntityCloseTag':\n\t\t\t\treturn `unexpected close tag at ${formatPos(pos)}`;\n\t\t\tcase 'MalformedEntityReference':\n\t\t\t\treturn `malformed entity reference at ${formatPos(pos)}`;\n\t\t\tcase 'UnknownEntityReference':\n\t\t\t\treturn `unknown entity reference '${variant.name}' at ${formatPos(pos)}`;\n\t\t\tcase 'EntityReferenceLoop':\n\t\t\t\treturn `a possible entity reference loop is detected at ${formatPos(pos)}`;\n\t\t\tcase 'InvalidAttributeValue':\n\t\t\t\treturn `unescaped '<' found at ${formatPos(pos)}`;\n\t\t\tcase 'DuplicatedAttribute':\n\t\t\t\treturn `attribute '${variant.attribute}' at ${formatPos(pos)} is already defined`;\n\t\t\tcase 'NoRootNode':\n\t\t\t\treturn `the document does not have a root node`;\n\t\t\tcase 'UnclosedRootNode':\n\t\t\t\treturn `the root node was opened but never closed`;\n\t\t\tcase 'UnexpectedDeclaration':\n\t\t\t\treturn `unexpected XML declaration at ${formatPos(pos)}`;\n\t\t\tcase 'DtdDetected':\n\t\t\t\treturn `XML with DTD detected`;\n\t\t\tcase 'NodesLimitReached':\n\t\t\t\treturn `nodes limit reached`;\n\t\t\tcase 'AttributesLimitReached':\n\t\t\t\treturn `more than 2^32 attributes were parsed`;\n\t\t\tcase 'NamespacesLimitReached':\n\t\t\t\treturn `more than 2^16 unique namespaces were parsed`;\n\t\t\tcase 'InvalidName':\n\t\t\t\treturn `invalid name token at ${formatPos(pos)}`;\n\t\t\tcase 'NonXmlChar':\n\t\t\t\treturn `a non-XML character '${toUnicodeEscape(variant.char)}' found at ${formatPos(pos)}`;\n\t\t\tcase 'InvalidChar':\n\t\t\t\treturn `expected ${typeof variant.expected === 'string' ? variant.expected : `'${toUnicodeEscape(variant.expected)}'`} not '${toUnicodeEscape(variant.actual)}' at ${formatPos(pos)}`;\n\t\t\tcase 'InvalidString':\n\t\t\t\treturn `expected '${variant.expected}' at ${formatPos(pos)}`;\n\t\t\tcase 'InvalidExternalID':\n\t\t\t\treturn `invalid ExternalID at ${formatPos(pos)}`;\n\t\t\tcase 'InvalidComment':\n\t\t\t\treturn `comment at ${formatPos(pos)} contains '--'`;\n\t\t\tcase 'InvalidCharacterData':\n\t\t\t\treturn `']]>' at ${formatPos(pos)} is not allowed inside a character data`;\n\t\t\tcase 'UnknownToken':\n\t\t\t\treturn `unknown token at ${formatPos(pos)}`;\n\t\t\tcase 'UnexpectedEndOfStream':\n\t\t\t\treturn `unexpected end of stream`;\n\t\t\tdefault:\n\t\t\t\treturn `unknown error type`;\n\t\t}\n\t}\n}\n\nfunction formatPos(pos: TTextPos): string {\n\treturn `${pos.row.toString()}:${pos.col.toString()}${pos.contextSlice != null ? ` (${pos.contextSlice})` : ''}`;\n}\n\nfunction toUnicodeEscape(codePoint: number | string): string {\n\tconst code = typeof codePoint === 'string' ? codePoint.charCodeAt(0) : codePoint;\n\tif (code < 0 || code > 0x10ffff) {\n\t\tthrow new Error('Code point out of range');\n\t}\n\n\t// Convert to hexadecimal string with leading zeros\n\tlet hexString = code.toString(16).toUpperCase();\n\tif (code <= 0xffff) {\n\t\thexString = hexString.padStart(4, '0');\n\t} else {\n\t\thexString = hexString.padStart(6, '0');\n\t}\n\n\t// Format with Unicode escape sequence\n\treturn `\\\\u{${hexString}}`;\n}\n\ntype TXMLErrorVariant =\n\t| TInvalidXmlPrefixUri\n\t| TUnexpectedXmlUri\n\t| TUnexpectedXmlnsUri\n\t| TInvalidElementNamePrefix\n\t| TDuplicatedNamespace\n\t| TUnknownNamespace\n\t| TUnexpectedCloseTag\n\t| TUnexpectedEntityCloseTag\n\t| TUnknownEntityReference\n\t| TMalformedEntityReference\n\t| TEntityReferenceLoop\n\t| TInvalidAttributeValue\n\t| TDuplicatedAttribute\n\t| TNoRootNode\n\t| TUnclosedRootNode\n\t| TUnexpectedDeclaration\n\t| TDtdDetected\n\t| TNodesLimitReached\n\t| TAttributesLimitReached\n\t| TNamespacesLimitReached\n\t| TInvalidName\n\t| TNonXmlChar\n\t| TInvalidChar\n\t| TInvalidString\n\t| TInvalidExternalID\n\t| TInvalidComment\n\t| TInvalidCharacterData\n\t| TUnknownToken\n\t| TUnexpectedEndOfStream;\n\n/**\n * The `xmlns:xml` attribute must have an \\<http://www.w3.org/XML/1998/namespace\\> URI.\n */\ninterface TInvalidXmlPrefixUri {\n\ttype: 'InvalidXmlPrefixUri';\n}\n\n/**\n * Only the `xmlns:xml` attribute can have the \\<http://www.w3.org/XML/1998/namespace\\> URI.\n */\ninterface TUnexpectedXmlUri {\n\ttype: 'UnexpectedXmlUri';\n}\n\n/**\n * The \\<http://www.w3.org/2000/xmlns/\\> URI must not be declared.\n */\ninterface TUnexpectedXmlnsUri {\n\ttype: 'UnexpectedXmlnsUri';\n}\n\n/**\n * `xmlns` can't be used as an element prefix.\n */\ninterface TInvalidElementNamePrefix {\n\ttype: 'InvalidElementNamePrefix';\n}\n\n/**\n * A namespace was already defined on this element.\n */\ninterface TDuplicatedNamespace {\n\ttype: 'DuplicatedNamespace';\n\tname: string;\n}\n\n/**\n * An unknown namespace.\n *\n * Indicates that an element or an attribute has an unknown qualified name prefix.\n *\n * The first value is a prefix.\n */\ninterface TUnknownNamespace {\n\ttype: 'UnknownNamespace';\n\tname: string;\n}\n\n/**\n * Incorrect tree structure.\n *\n * expected, actual, position\n */\ninterface TUnexpectedCloseTag {\n\ttype: 'UnexpectedCloseTag';\n\texpected: string;\n\tactual: string;\n}\n\n/**\n * Entity value starts with a close tag.\n *\n * Example:\n * ```xml\n * <!DOCTYPE test [ <!ENTITY p '</p>'> ]>\n * <root>&p;</root>\n * ```\n */\ninterface TUnexpectedEntityCloseTag {\n\ttype: 'UnexpectedEntityCloseTag';\n}\n\n/**\n * A reference to an entity that was not defined in the DTD.\n */\ninterface TUnknownEntityReference {\n\ttype: 'UnknownEntityReference';\n\tname: string;\n}\n\n/**\n * A malformed entity reference.\n *\n * A `&` character inside an attribute value or text indicates an entity reference.\n * Otherwise, the document is not well-formed.\n */\ninterface TMalformedEntityReference {\n\ttype: 'MalformedEntityReference';\n}\n\n/**\n * A possible entity reference loop.\n *\n * The current depth limit is 10. The max number of references per reference is 255.\n */\ninterface TEntityReferenceLoop {\n\ttype: 'EntityReferenceLoop';\n}\n\n/**\n * Attribute value cannot have a `<` character.\n */\ninterface TInvalidAttributeValue {\n\ttype: 'InvalidAttributeValue';\n}\n\n/**\n * An element has duplicated attributes.\n *\n * This also includes namespaces resolving.\n * So an element like this will lead to an error.\n * ```xml\n * <e xmlns:n1='http://www.w3.org' xmlns:n2='http://www.w3.org' n1:a='b1' n2:a='b2'/>\n * ```\n */\ninterface TDuplicatedAttribute {\n\ttype: 'DuplicatedAttribute';\n\tattribute: string;\n}\n\n/**\n * The XML document must have at least one element.\n */\ninterface TNoRootNode {\n\ttype: 'NoRootNode';\n}\n\n/**\n * The root node was opened but never closed.\n */\ninterface TUnclosedRootNode {\n\ttype: 'UnclosedRootNode';\n}\n\n/**\n * An XML document can have only one XML declaration\n * and it must be at the start of the document.\n */\ninterface TUnexpectedDeclaration {\n\ttype: 'UnexpectedDeclaration';\n}\n\n/**\n * An XML with DTD detected.\n *\n * This error will be emitted only when `ParsingOptions::allow_dtd` is set to `false`.\n */\ninterface TDtdDetected {\n\ttype: 'DtdDetected';\n}\n\n/**\n * Indicates that the `ParsingOptions::nodes_limit` was reached.\n */\ninterface TNodesLimitReached {\n\ttype: 'NodesLimitReached';\n}\n\n/**\n * Indicates that too many attributes were parsed.\n */\ninterface TAttributesLimitReached {\n\ttype: 'AttributesLimitReached';\n}\n\n/**\n * Indicates that too many namespaces were parsed.\n */\ninterface TNamespacesLimitReached {\n\ttype: 'NamespacesLimitReached';\n}\n\n/**\n * An invalid name.\n */\ninterface TInvalidName {\n\ttype: 'InvalidName';\n}\n\n/**\n * A non-XML character has occurred.\n *\n * Valid characters are: \\<https://www.w3.org/TR/xml/#char32\\>\n */\ninterface TNonXmlChar {\n\ttype: 'NonXmlChar';\n\tchar: string;\n}\n\n/**\n * An invalid/unexpected character.\n *\n * expected, actual, position\n */\ninterface TInvalidChar {\n\ttype: 'InvalidChar';\n\texpected: string | number;\n\tactual: number;\n}\n\n/**\n * An unexpected string.\n *\n * Contains what string was expected.\n */\ninterface TInvalidString {\n\ttype: 'InvalidString';\n\texpected: string;\n}\n\n/**\n * An invalid ExternalID in the DTD.\n */\ninterface TInvalidExternalID {\n\ttype: 'InvalidExternalID';\n}\n\n/**\n * A comment cannot contain `--` or end with `-`.\n */\ninterface TInvalidComment {\n\ttype: 'InvalidComment';\n}\n\n/**\n * A Character Data node contains invalid data.\n *\n * Currently, only `]]>` is not allowed.\n */\ninterface TInvalidCharacterData {\n\ttype: 'InvalidCharacterData';\n}\n\n/**\n * An unknown token.\n */\ninterface TUnknownToken {\n\ttype: 'UnknownToken';\n\tmessage?: string;\n}\n\n/**\n * The stream ended earlier than we expected.\n *\n * Should only appear on invalid input data.\n */\ninterface TUnexpectedEndOfStream {\n\ttype: 'UnexpectedEndOfStream';\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"XmlStream.js","sources":["../../../src/tokenizer/XmlStream.ts"],"sourcesContent":["import {\n\tAMPERSAND,\n\tCOLON,\n\tDOUBLE_QUOTE,\n\tHASH,\n\tLINE_FEED,\n\tLOWERCASE_A,\n\tLOWERCASE_F,\n\tLOWERCASE_X,\n\tNINE,\n\tSEMICOLON,\n\tSINGLE_QUOTE,\n\tUPPERCASE_A,\n\tUPPERCASE_F,\n\tZERO\n} from './ascii-constants';\nimport { type TRange, type TReference, type TTextPos } from './types';\nimport { isAsciiDigit, isXmlChar, isXmlName, isXmlNameStart, isXmlSpaceByte } from './utils';\nimport { XmlError } from './XmlError';\n\n/**\n * A stream of characters for parsing XML-like content.\n *\n * This implementation uses UTF-16 code units, whereas the Rust implementation is based on bytes (UTF-8).\n * This difference in encoding affects how characters are handled and parsed.\n * For more details, refer to the FAQ.\n */\nexport class XmlStream {\n\tprivate _text: string;\n\tprivate _pos: number;\n\tprivate _end: number;\n\n\tpublic readonly config: TXmlStreamConfig;\n\n\tpublic constructor(text: string, options: TXmlStreamOptions = {}) {\n\t\tconst {\n\t\t\tpos = 0,\n\t\t\tstrictDocument = true,\n\t\t\tallowDtd = true,\n\t\t\trawTextElements = null,\n\t\t\timplicitSelfClosingElements = null,\n\t\t\tcontextSliceSize = false\n\t\t} = options;\n\t\tthis._text = text;\n\t\tthis._pos = pos;\n\t\tthis._end = this._text.length;\n\t\tthis.config = {\n\t\t\tstrictDocument,\n\t\t\tallowDtd,\n\t\t\trawTextElements,\n\t\t\timplicitSelfClosingElements,\n\t\t\tcontextSliceSize\n\t\t};\n\t}\n\n\t/**\n\t * Creates a clone of the current stream.\n\t *\n\t * @returns A new instance of XmlStream with the same state.\n\t */\n\tpublic clone(): XmlStream {\n\t\treturn new XmlStream(this._text, { pos: this._pos, ...this.config });\n\t}\n\n\t/**\n\t * Gets the current position in the stream.\n\t *\n\t * @returns The current position.\n\t */\n\tpublic getPos(): number {\n\t\treturn this._pos;\n\t}\n\n\t/**\n\t * Checks if the stream is at the end.\n\t *\n\t * @returns True if at the end, false otherwise.\n\t */\n\tpublic atEnd(): boolean {\n\t\treturn this._pos >= this._end;\n\t}\n\n\t/**\n\t * Gets the current code unit in the stream.\n\t *\n\t * @returns The current code unit.\n\t * @throws XmlError if at the end of the stream.\n\t */\n\tpublic currCodeUnit(): number {\n\t\tif (this._pos >= this._end) {\n\t\t\tthrow new XmlError({ type: 'UnexpectedEndOfStream' });\n\t\t}\n\t\treturn this._text.charCodeAt(this._pos);\n\t}\n\n\t/**\n\t * Gets the current code unit without checking for the end.\n\t *\n\t * @returns The current code unit.\n\t */\n\tpublic currCodeUnitUnchecked(): number {\n\t\treturn this._text.charCodeAt(this._pos);\n\t}\n\n\t/**\n\t * Gets the next code unit in the stream.\n\t *\n\t * @returns The next code unit.\n\t * @throws XmlError if at the end of the stream.\n\t */\n\tpublic nextCodeUnit(): number {\n\t\tif (this._pos + 1 >= this._end) {\n\t\t\tthrow new XmlError({ type: 'UnexpectedEndOfStream' });\n\t\t}\n\t\treturn this._text.charCodeAt(this._pos + 1);\n\t}\n\n\t/**\n\t * Consumes a specific code unit (character) from the stream.\n\t *\n\t * @param codeUnit - The code unit to consume.\n\t * @throws XmlError if the current code unit doesn't match or if at the end.\n\t */\n\tpublic consumeCodeUnit(codeUnit: number): void {\n\t\tconst currCodeUnit = this.currCodeUnit();\n\t\tif (currCodeUnit !== codeUnit) {\n\t\t\tthrow new XmlError(\n\t\t\t\t{ type: 'InvalidChar', expected: codeUnit, actual: currCodeUnit },\n\t\t\t\tthis.genTextPos()\n\t\t\t);\n\t\t}\n\t\tthis._pos += 1;\n\t}\n\n\t/**\n\t * Tries to consume a specific code unit (character) from the stream.\n\t * Unlike `consumeCodeUnit`, it will not throw any errors.\n\t *\n\t * @param codeUnit - The code unit to consume.\n\t * @returns True if the code unit was consumed, false otherwise.\n\t */\n\tpublic tryConsumeCodeUnit(codeUnit: number): boolean {\n\t\tif (this.currCodeUnit() === codeUnit) {\n\t\t\tthis._pos += 1;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Consumes code units that satisfy a predicate function.\n\t *\n\t * @param predicate - The function to test each code unit.\n\t * @returns The consumed string.\n\t */\n\tpublic consumeCodeUnitsWhile(\n\t\tpredicate: (codeUnit: number, stream: XmlStream) => boolean\n\t): string {\n\t\tconst start = this._pos;\n\t\tthis.skipCodeUnitsWhile(predicate);\n\t\treturn this.sliceBack(start);\n\t}\n\n\t/**\n\t * Skips code units that satisfy a predicate function.\n\t *\n\t * @param predicate - The function to test each code unit.\n\t */\n\tpublic skipCodeUnitsWhile(predicate: (codeUnit: number, stream: XmlStream) => boolean): void {\n\t\twhile (this._pos < this._end && predicate(this.currCodeUnitUnchecked(), this)) {\n\t\t\tif (!isXmlChar(this.currCodeUnitUnchecked())) {\n\t\t\t\tthrow new XmlError(\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'NonXmlChar',\n\t\t\t\t\t\tchar: String.fromCodePoint(this.currCodeUnitUnchecked())\n\t\t\t\t\t},\n\t\t\t\t\tthis.genTextPos()\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis._pos += 1;\n\t\t}\n\t}\n\n\t/**\n\t * Advances the stream position by the specified number of characters.\n\t *\n\t * @param n - The number of characters to advance.\n\t */\n\tpublic advance(n: number): void {\n\t\tthis._pos += n;\n\t}\n\n\t/**\n\t * Go to a new position in the stream.\n\t *\n\t * @param pos - The new position.\n\t */\n\tpublic goTo(pos: number): void {\n\t\tthis._pos = pos;\n\t}\n\n\t/**\n\t * Go to the end of the stream.\n\t */\n\tpublic goToEnd(): void {\n\t\tthis._pos = this._end;\n\t}\n\n\t/**\n\t * Checks if the stream starts with the given text.\n\t *\n\t * @param text - The text to check.\n\t * @returns True if the stream starts with the text, false otherwise.\n\t */\n\tpublic startsWith(text: string): boolean {\n\t\treturn this._text.startsWith(text, this._pos);\n\t}\n\n\t/**\n\t * Skips a specific string in the stream.\n\t *\n\t * @param text - The string to skip.\n\t * @throws XmlError if the stream doesn't start with the given string.\n\t */\n\tpublic skipString(text: string): void {\n\t\tif (!this.startsWith(text)) {\n\t\t\tthrow new XmlError({ type: 'InvalidString', expected: text }, this.genTextPos());\n\t\t}\n\t\tthis._pos += text.length;\n\t}\n\n\t/**\n\t * Slices the text from the given position to the current position.\n\t *\n\t * @param pos - The start position.\n\t * @returns The sliced string.\n\t */\n\tpublic sliceBack(pos: number): string {\n\t\treturn this._text.slice(pos, this._pos);\n\t}\n\n\t/**\n\t * Creates a range from the given start position to the current position.\n\t *\n\t * @param start - The start position.\n\t * @returns The range object.\n\t */\n\tpublic rangeFrom(start: number): TRange {\n\t\treturn { start, end: this._pos };\n\t}\n\n\t/**\n\t * Skips whitespace characters in the stream.\n\t */\n\tpublic skipSpaces(): void {\n\t\twhile (this.startsWithSpace()) {\n\t\t\tthis._pos += 1;\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the stream starts with a whitespace character.\n\t *\n\t * @returns True if it starts with a whitespace, false otherwise.\n\t */\n\tpublic startsWithSpace(): boolean {\n\t\treturn this._pos < this._end && isXmlSpaceByte(this.currCodeUnitUnchecked());\n\t}\n\n\t/**\n\t * Consumes whitespace characters in the stream.\n\t * Like `skipSpaces`, but checks that the first char is actually a space.\n\t *\n\t * @throws XmlError if the stream doesn't start with a whitespace or is at the end.\n\t */\n\tpublic consumeSpaces(): void {\n\t\tif (this._pos >= this._end) {\n\t\t\tthrow new XmlError({ type: 'UnexpectedEndOfStream' }, this.genTextPos());\n\t\t}\n\n\t\tif (!this.startsWithSpace()) {\n\t\t\tthrow new XmlError(\n\t\t\t\t{ type: 'InvalidChar', expected: 'a whitespace', actual: this.currCodeUnitUnchecked() },\n\t\t\t\tthis.genTextPos()\n\t\t\t);\n\t\t}\n\n\t\tthis.skipSpaces();\n\t}\n\n\t/**\n\t * Tries to consume a reference (entity or character reference).\n\t * Consumes according to: https://www.w3.org/TR/xml/#NT-Reference\n\t *\n\t * @returns The consumed reference or null if not a reference.\n\t */\n\tpublic tryConsumeReference(): TReference | null {\n\t\tconst start = this._pos;\n\n\t\t// Consume reference on a substream\n\t\tconst subStream = this.clone();\n\t\tconst result = subStream.consumeReference();\n\n\t\t// If the current data is a reference than advance the current stream\n\t\t// by number of code units read by substream\n\t\tif (result != null) {\n\t\t\tthis._pos += subStream.getPos() - start;\n\t\t\treturn result;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Consumes a reference (entity or character reference).\n\t *\n\t * @returns The consumed reference or null if not a reference.\n\t */\n\tpublic consumeReference(): TReference | null {\n\t\tif (!this.tryConsumeCodeUnit(AMPERSAND)) {\n\t\t\treturn null;\n\t\t}\n\n\t\tlet reference: TReference | null;\n\n\t\tif (this.tryConsumeCodeUnit(HASH)) {\n\t\t\tlet value: string;\n\t\t\tlet radix: number;\n\n\t\t\tif (this.tryConsumeCodeUnit(LOWERCASE_X)) {\n\t\t\t\tvalue = this.consumeCodeUnitsWhile(\n\t\t\t\t\t(codeUnit) =>\n\t\t\t\t\t\t(codeUnit >= ZERO && codeUnit <= NINE) ||\n\t\t\t\t\t\t(codeUnit >= UPPERCASE_A && codeUnit <= UPPERCASE_F) ||\n\t\t\t\t\t\t(codeUnit >= LOWERCASE_A && codeUnit <= LOWERCASE_F)\n\t\t\t\t);\n\t\t\t\tradix = 16;\n\t\t\t} else {\n\t\t\t\tvalue = this.consumeCodeUnitsWhile((codeUnit) => isAsciiDigit(codeUnit));\n\t\t\t\tradix = 10;\n\t\t\t}\n\n\t\t\tconst codePoint = parseInt(value, radix);\n\t\t\tif (isNaN(codePoint) || !isXmlChar(codePoint)) {\n\t\t\t\treference = null;\n\t\t\t} else {\n\t\t\t\treference = { type: 'Char', value: String.fromCodePoint(codePoint) };\n\t\t\t}\n\t\t} else {\n\t\t\tconst name = this.consumeName();\n\t\t\tswitch (name) {\n\t\t\t\tcase 'quot':\n\t\t\t\t\treference = { type: 'Char', value: '\"' };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'amp':\n\t\t\t\t\treference = { type: 'Char', value: '&' };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'apos':\n\t\t\t\t\treference = { type: 'Char', value: \"'\" };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'lt':\n\t\t\t\t\treference = { type: 'Char', value: '<' };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'gt':\n\t\t\t\t\treference = { type: 'Char', value: '>' };\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treference = { type: 'Entity', value: name };\n\t\t\t}\n\t\t}\n\n\t\tif (!this.tryConsumeCodeUnit(SEMICOLON)) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn reference;\n\t}\n\n\t/**\n\t * Consumes a XML name.\n\t * Consumes according to: https://www.w3.org/TR/xml/#NT-Name\n\t *\n\t * @returns The consumed name.\n\t * @throws XmlError if an invalid name is encountered.\n\t */\n\tpublic consumeName(): string {\n\t\tconst start = this._pos;\n\t\tthis.skipName();\n\n\t\tconst name = this.sliceBack(start);\n\t\tif (name.length === 0) {\n\t\t\tthrow new XmlError({ type: 'InvalidName' }, this.genTextPosFrom(start));\n\t\t}\n\n\t\treturn name;\n\t}\n\n\t/**\n\t * Skips a XML name.\n\t * The same as `consumeName`, but does not return the consumed name.\n\t * @throws XmlError if an invalid name is encountered.\n\t */\n\tpublic skipName(): void {\n\t\tconst start = this._pos;\n\n\t\twhile (this._pos < this._end) {\n\t\t\tconst currCodeUnit = this.currCodeUnitUnchecked();\n\t\t\tif (this._pos === start) {\n\t\t\t\tif (!isXmlNameStart(currCodeUnit)) {\n\t\t\t\t\tthrow new XmlError({ type: 'InvalidName' }, this.genTextPosFrom(start));\n\t\t\t\t}\n\t\t\t} else if (!isXmlName(currCodeUnit)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis._pos += 1;\n\t\t}\n\t}\n\n\t/**\n\t * Consumes a qualified XML name and returns it.\n\t * Consumes according to: https://www.w3.org/TR/xml-names/#ns-qualnames\n\t *\n\t * @returns The prefix and local name as a tuple.\n\t * @throws XmlError if an invalid qualified XML name is encountered.\n\t */\n\tpublic consumeQName(): [string, string] {\n\t\tconst start = this._pos;\n\t\tlet splitter: number | null = null;\n\n\t\twhile (this._pos < this._end) {\n\t\t\tconst currCodeUnit = this.currCodeUnitUnchecked();\n\t\t\tif (currCodeUnit === COLON) {\n\t\t\t\tif (splitter == null) {\n\t\t\t\t\tsplitter = this._pos;\n\t\t\t\t\tthis._pos += 1;\n\t\t\t\t} else {\n\t\t\t\t\t// Multiple `:` is an error\n\t\t\t\t\tthrow new XmlError({ type: 'InvalidName' }, this.genTextPosFrom(start));\n\t\t\t\t}\n\t\t\t} else if (isXmlName(currCodeUnit)) {\n\t\t\t\tthis._pos += 1;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tlet prefix;\n\t\tlet local;\n\t\tif (splitter != null) {\n\t\t\tprefix = this._text.slice(start, splitter);\n\t\t\tlocal = this.sliceBack(splitter + 1);\n\t\t} else {\n\t\t\t// Empty prefix. This way we can preserve attribute start position.\n\t\t\tprefix = '';\n\t\t\tlocal = this.sliceBack(start);\n\t\t}\n\n\t\t// Prefix must start with a `NameStartChar`\n\t\tif (prefix.length > 0 && !isXmlNameStart(prefix[0]?.codePointAt(0))) {\n\t\t\tthrow new XmlError({ type: 'InvalidName' }, this.genTextPosFrom(start));\n\t\t}\n\n\t\t// Local name must start with a `NameStartChar`\n\t\tif (local.length > 0) {\n\t\t\tif (!isXmlNameStart(local[0]?.codePointAt(0))) {\n\t\t\t\tthrow new XmlError({ type: 'InvalidName' }, this.genTextPosFrom(start));\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new XmlError({ type: 'InvalidName' }, this.genTextPosFrom(start));\n\t\t}\n\n\t\treturn [prefix, local];\n\t}\n\n\t/**\n\t * Consumes a quote character.\n\t *\n\t * @returns The consumed quote character.\n\t * @throws XmlError if an invalid quote character is encountered.\n\t */\n\tpublic consumeQuote(): number {\n\t\tconst currCodeUnit = this.currCodeUnit();\n\t\tif (currCodeUnit === SINGLE_QUOTE || currCodeUnit === DOUBLE_QUOTE) {\n\t\t\tthis._pos += 1;\n\t\t\treturn currCodeUnit;\n\t\t}\n\t\tthrow new XmlError(\n\t\t\t{ type: 'InvalidChar', expected: 'a quote', actual: currCodeUnit },\n\t\t\tthis.genTextPos()\n\t\t);\n\t}\n\n\t/**\n\t * Returns a slice of text centered around the specified position.\n\t *\n\t * @param pos - The center position for the slice.\n\t * @param size - The total size of the slice (will extend size/2 in each direction).\n\t * @returns A string containing the text around the position.\n\t */\n\tpublic getTextAround(pos: number, size: number): string {\n\t\tconst halfSize = Math.floor(size / 2);\n\n\t\t// Calculate start and end positions with bounds checking\n\t\tconst start = Math.max(0, pos - halfSize);\n\t\tconst end = Math.min(this._end, pos + halfSize + (size % 2));\n\n\t\treturn this._text.slice(start, end);\n\t}\n\n\t/**\n\t * Calculates the current absolute position.\n\t * This operation is very expensive. Use only for errors.\n\t *\n\t * @returns The current text position.\n\t */\n\tpublic genTextPos(): TTextPos {\n\t\treturn this.genTextPosFrom(this._pos);\n\t}\n\n\t/**\n\t * Calculates an absolute position at the specified position.\n\t * This operation is very expensive. Use only for errors.\n\t *\n\t * @param pos - The position to calculate from.\n\t * @returns The calculated text position.\n\t */\n\tpublic genTextPosFrom(pos: number): TTextPos {\n\t\tconst clampedPos = Math.min(pos, this._end);\n\t\tlet row = 1;\n\t\tlet col = 1;\n\t\tfor (let i = 0; i < clampedPos; i++) {\n\t\t\tif (this._text.charCodeAt(i) === LINE_FEED) {\n\t\t\t\trow++;\n\t\t\t\tcol = 1;\n\t\t\t} else {\n\t\t\t\tcol++;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\trow,\n\t\t\tcol,\n\t\t\t...(this.config.contextSliceSize\n\t\t\t\t? { contextSlice: this.getTextAround(pos, this.config.contextSliceSize) }\n\t\t\t\t: {})\n\t\t};\n\t}\n}\n\nexport interface TXmlStreamConfig {\n\t/**\n\t * Whether to enforce strict XML document structure rules.\n\t * When true:\n\t * - Document must have exactly one root element\n\t * - No text nodes at document level (outside root element)\n\t * - Only comments and processing instructions allowed outside root element\n\t * - Attribute requires an explicit value and the value must be quoted\n\t * When false:\n\t * - Multiple root elements allowed\n\t * - Text nodes allowed at document level\n\t * - More HTML-like permissive parsing (unquoted attributes, boolean attributes)\n\t * @default true\n\t */\n\tstrictDocument: boolean;\n\n\t/**\n\t * List of element names that should be treated as raw text elements.\n\t * Their content will be parsed as text rather than XML.\n\t * Common examples are 'script' and 'style' for HTML-like documents.\n\t * @default null\n\t */\n\trawTextElements: string[] | null;\n\n\t/**\n\t * List of element names that should be treated as self-closing without requiring '/>' syntax.\n\t * Common examples are 'meta' and 'link' for HTML-like documents.\n\t * @default null\n\t */\n\timplicitSelfClosingElements: string[] | null;\n\n\t/**\n\t * Whether to allow DOCTYPE declarations.\n\t * @default true\n\t */\n\tallowDtd: boolean;\n\n\t/**\n\t * Controls the inclusion and size of context slices in error positions.\n\t * When set to a number, error positions will include a text slice of that size\n\t * centered around the error location for better debugging context.\n\t * When set to false, no context slices will be included in error positions.\n\t * @default 30\n\t */\n\tcontextSliceSize: number | false;\n}\n\nexport type TXmlStreamOptions = { pos?: number } & Partial<TXmlStreamConfig>;\n"],"names":["XmlError","isXmlChar","isXmlSpaceByte","AMPERSAND","HASH","LOWERCASE_X","ZERO","NINE","UPPERCASE_A","UPPERCASE_F","LOWERCASE_A","LOWERCASE_F","isAsciiDigit","SEMICOLON","isXmlNameStart","isXmlName","COLON","SINGLE_QUOTE","DOUBLE_QUOTE","LINE_FEED"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ascii-constants.js","sources":["../../../src/tokenizer/ascii-constants.ts"],"sourcesContent":["export const HORIZONTAL_TAB = 9; // \\t\nexport const LINE_FEED = 10; // \\n\nexport const CARRIAGE_RETURN = 13; // \\r\nexport const SPACE = 32; // ' '\nexport const EXCLAMATION_MARK = 33; // !\nexport const DOUBLE_QUOTE = 34; // \"\nexport const HASH = 35; // #\nexport const PERCENT = 37; // %\nexport const AMPERSAND = 38; // &\nexport const SINGLE_QUOTE = 39; // '\nexport const HYPHEN = 45; // -\nexport const PERIOD = 46; // .\nexport const SLASH = 47; // /\nexport const ZERO = 48; // 0\nexport const NINE = 57; // 9\nexport const COLON = 58; // :\nexport const SEMICOLON = 59; // ;\nexport const LESS_THAN = 60; // <\nexport const EQUALS = 61; // =\nexport const GREATER_THAN = 62; // >\nexport const QUESTION_MARK = 63; // ?\nexport const UPPERCASE_A = 65; // A\nexport const UPPERCASE_F = 70; // F\nexport const UPPERCASE_P = 80; // P\nexport const UPPERCASE_S = 83; // S\nexport const UPPERCASE_Z = 90; // Z\nexport const OPEN_SQUARE_BRACKET = 91; // [\nexport const CLOSE_SQUARE_BRACKET = 93; // ]\nexport const UNDERSCORE = 95; // _\nexport const LOWERCASE_A = 97; // a\nexport const LOWERCASE_F = 102; // f\nexport const LOWERCASE_X = 120; // x\nexport const LOWERCASE_Z = 122; // z\n// export const OPEN_CURLY_BRACKET = 123; // {\n// export const CLOSE_CURLY_BRACKET = 125; // }\n"],"names":[],"mappings":";;AACY,MAAC,cAAc,GAAG;AAClB,MAAC,SAAS,GAAG;AACb,MAAC,eAAe,GAAG;AACnB,MAAC,KAAK,GAAG;AACT,MAAC,gBAAgB,GAAG;AACpB,MAAC,YAAY,GAAG;AAChB,MAAC,IAAI,GAAG;AACR,MAAC,OAAO,GAAG;AACX,MAAC,SAAS,GAAG;AACb,MAAC,YAAY,GAAG;AAChB,MAAC,MAAM,GAAG;AACV,MAAC,MAAM,GAAG;AACV,MAAC,KAAK,GAAG;AACT,MAAC,IAAI,GAAG;AACR,MAAC,IAAI,GAAG;AACR,MAAC,KAAK,GAAG;AACT,MAAC,SAAS,GAAG;AACb,MAAC,SAAS,GAAG;AACb,MAAC,MAAM,GAAG;AACV,MAAC,YAAY,GAAG;AAChB,MAAC,aAAa,GAAG;AACjB,MAAC,WAAW,GAAG;AACf,MAAC,WAAW,GAAG;AACf,MAAC,WAAW,GAAG;AACf,MAAC,WAAW,GAAG;AACf,MAAC,WAAW,GAAG;AACf,MAAC,mBAAmB,GAAG;AACvB,MAAC,oBAAoB,GAAG;AACxB,MAAC,UAAU,GAAG;AACd,MAAC,WAAW,GAAG;AACf,MAAC,WAAW,GAAG;AACf,MAAC,WAAW,GAAG;AACf,MAAC,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenize.js","sources":["../../../src/tokenizer/tokenize.ts"],"sourcesContent":["import { getQName } from '../get-q-name';\nimport {\n\tCLOSE_SQUARE_BRACKET,\n\tDOUBLE_QUOTE,\n\tEQUALS,\n\tEXCLAMATION_MARK,\n\tGREATER_THAN,\n\tHYPHEN,\n\tLESS_THAN,\n\tOPEN_SQUARE_BRACKET,\n\tPERCENT,\n\tQUESTION_MARK,\n\tSINGLE_QUOTE,\n\tSLASH,\n\tUPPERCASE_P,\n\tUPPERCASE_S\n} from './ascii-constants';\nimport { type TTokenCallback } from './types';\nimport { isXmlSpaceByte } from './utils';\nimport { XmlError } from './XmlError';\nimport { XmlStream, type TXmlStreamOptions } from './XmlStream';\n\nconst BOM = '\\uFEFF';\nconst XML_DECLARATION_START = '<?xml ';\nconst XML_DECLARATION_END = '?>';\nconst ENTITY_DECLARATION_START = '<!ENTITY';\nconst ELEMENT_DECLARATION_START = '<!ELEMENT';\nconst ATTLIST_DECLARATION_START = '<!ATTLIST';\nconst NOTATION_DECLARATION_START = '<!NOTATION';\nconst DOCTYPE_START = '<!DOCTYPE';\nconst PI_START = '<?';\nconst PI_END = '?>';\nconst COMMENT_START = '<!--';\nconst COMMENT_END = '-->';\nconst CDATA_START = '<![CDATA[';\nconst CDATA_END = ']]>';\nconst NDATA = 'NDATA';\nconst PUBLIC = 'PUBLIC';\nconst SYSTEM = 'SYSTEM';\nconst VERSION = 'version';\nconst ENCODING = 'encoding';\nconst STANDALONE = 'standalone';\n\nexport function tokenize(\n\txmlString: string,\n\ttokenCallback: TTokenCallback,\n\toptions: TXmlStreamOptions = {}\n): void {\n\ttokenizeXmlStream(new XmlStream(xmlString, options), tokenCallback);\n}\n\n/**\n * Parses an XML document.\n *\n * document ::= prolog element Misc*\n *\n * https://www.w3.org/TR/xml/#NT-document\n */\nexport function tokenizeXmlStream(s: XmlStream, tokenCallback: TTokenCallback): void {\n\t// Skip UTF-8 BOM\n\tif (s.startsWith(BOM)) {\n\t\ts.advance(1);\n\t}\n\n\tif (s.startsWith(XML_DECLARATION_START)) {\n\t\tparseDeclaration(s);\n\t}\n\n\tparseMisc(s, tokenCallback);\n\n\ts.skipSpaces();\n\tif (s.startsWith(DOCTYPE_START) || s.startsWith(DOCTYPE_START.toLowerCase())) {\n\t\tif (!s.config.allowDtd) {\n\t\t\tthrow new XmlError({ type: 'DtdDetected' });\n\t\t}\n\n\t\tparseDoctype(s, tokenCallback);\n\t\tparseMisc(s, tokenCallback);\n\t}\n\n\ts.skipSpaces();\n\n\tif (s.config.strictDocument) {\n\t\tif (!s.atEnd() && s.currCodeUnit() === LESS_THAN) {\n\t\t\tparseElement(s, tokenCallback);\n\t\t}\n\n\t\tparseMisc(s, tokenCallback);\n\n\t\tif (!s.atEnd()) {\n\t\t\tthrow new XmlError({ type: 'UnknownToken', message: 'Not at end' }, s.genTextPos());\n\t\t}\n\t} else {\n\t\twhile (!s.atEnd()) {\n\t\t\tif (s.currCodeUnit() === LESS_THAN) {\n\t\t\t\tparseElement(s, tokenCallback);\n\t\t\t} else {\n\t\t\t\tparseText(s, tokenCallback);\n\t\t\t}\n\t\t\tparseMisc(s, tokenCallback);\n\t\t}\n\t}\n}\n\n/**\n * Parses miscellaneous XML content (comments, processing instructions, whitespace).\n *\n * Misc ::= Comment | PI | S\n *\n * https://www.w3.org/TR/xml/#NT-Misc\n */\nfunction parseMisc(s: XmlStream, tokenCallback: TTokenCallback): void {\n\twhile (!s.atEnd()) {\n\t\ts.skipSpaces();\n\t\tif (s.startsWith(COMMENT_START)) {\n\t\t\tparseComment(s, tokenCallback);\n\t\t} else if (s.startsWith(PI_START)) {\n\t\t\tparsePi(s, tokenCallback);\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n/**\n * Parses the XML declaration.\n *\n * XMLDecl ::= '\\<?xml' VersionInfo EncodingDecl? SDDecl? S? '?\\>'\n *\n * https://www.w3.org/TR/xml/#sec-prolog-dtd\n */\nfunction parseDeclaration(s: XmlStream): void {\n\tfunction consumeSpaces(_s: XmlStream): void {\n\t\tif (_s.startsWithSpace()) {\n\t\t\t_s.skipSpaces();\n\t\t} else if (!_s.startsWith(XML_DECLARATION_END) && !_s.atEnd()) {\n\t\t\tthrow new XmlError(\n\t\t\t\t{ type: 'InvalidChar', expected: 'a whitespace', actual: _s.currCodeUnitUnchecked() },\n\t\t\t\t_s.genTextPos()\n\t\t\t);\n\t\t}\n\t}\n\n\ts.advance(5); // <?xml\n\tconsumeSpaces(s);\n\n\t// The `version` \"attribute\" is mandatory\n\tif (!s.startsWith(VERSION)) {\n\t\tthrow new XmlError({ type: 'InvalidString', expected: 'version' }, s.genTextPos());\n\t}\n\tparseAttribute(s);\n\tconsumeSpaces(s);\n\n\tif (s.startsWith(ENCODING)) {\n\t\tparseAttribute(s);\n\t\tconsumeSpaces(s);\n\t}\n\n\tif (s.startsWith(STANDALONE)) {\n\t\tparseAttribute(s);\n\t}\n\n\ts.skipSpaces();\n\ts.skipString(XML_DECLARATION_END);\n}\n\n/**\n * Parses an XML comment.\n *\n * '\\<!--' ((Char - '-') | ('-' (Char - '-')))* '--\\>'\n *\n * https://www.w3.org/TR/xml/#sec-comments\n */\nfunction parseComment(s: XmlStream, tokenCallback: TTokenCallback): void {\n\tconst start = s.getPos();\n\ts.advance(4);\n\tconst text = s.consumeCodeUnitsWhile((c, _s) => !(c === HYPHEN && _s.startsWith(COMMENT_END)));\n\ts.skipString(COMMENT_END);\n\n\tif (text.includes('--') || text.endsWith('-')) {\n\t\tthrow new XmlError({ type: 'InvalidComment' }, s.genTextPosFrom(start));\n\t}\n\n\ttokenCallback({ type: 'Comment', text, range: s.rangeFrom(start) }, s);\n}\n\n/**\n * Parses a processing instruction.\n *\n * PI ::= '\\<?' PITarget (S (Char* - (Char* '?\\>' Char*)))? '?\\>'\n * PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))\n *\n * https://www.w3.org/TR/xml/#sec-pi\n */\nfunction parsePi(s: XmlStream, tokenCallback: TTokenCallback): void {\n\tif (s.startsWith(XML_DECLARATION_START)) {\n\t\tthrow new XmlError({ type: 'UnexpectedDeclaration' }, s.genTextPos());\n\t}\n\n\tconst start = s.getPos();\n\ts.advance(2);\n\tconst target = s.consumeName();\n\ts.skipSpaces();\n\tconst content = s.consumeCodeUnitsWhile(\n\t\t(c, _s) => !(c === QUESTION_MARK && _s.startsWith(PI_END))\n\t);\n\n\ts.skipString(PI_END);\n\n\ttokenCallback(\n\t\t{\n\t\t\ttype: 'ProcessingInstruction',\n\t\t\ttarget,\n\t\t\tcontent: content.length === 0 ? undefined : content,\n\t\t\trange: s.rangeFrom(start)\n\t\t},\n\t\ts\n\t);\n}\n\n/**\n * Parses the DOCTYPE declaration.\n */\nfunction parseDoctype(s: XmlStream, tokenCallback: TTokenCallback): void {\n\tconst start = s.getPos();\n\tparseDoctypeStart(s);\n\ts.skipSpaces();\n\n\tif (s.currCodeUnit() === GREATER_THAN) {\n\t\ts.advance(1);\n\t\treturn;\n\t}\n\n\ts.advance(1); // '['\n\twhile (!s.atEnd()) {\n\t\ts.skipSpaces();\n\t\tif (s.startsWith(ENTITY_DECLARATION_START)) {\n\t\t\tparseEntityDecl(s, tokenCallback);\n\t\t} else if (s.startsWith(COMMENT_START)) {\n\t\t\tparseComment(s, tokenCallback);\n\t\t} else if (s.startsWith(PI_START)) {\n\t\t\tparsePi(s, tokenCallback);\n\t\t} else if (s.startsWith(']')) {\n\t\t\t// DTD ends with ']' S? '>', therefore we have to skip possible spaces\n\t\t\ts.advance(1);\n\t\t\ts.skipSpaces();\n\t\t\tif (s.currCodeUnit() === GREATER_THAN) {\n\t\t\t\ts.advance(1);\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tthrow new XmlError(\n\t\t\t\t\t{ type: 'InvalidChar', expected: \"'>'\", actual: s.currCodeUnitUnchecked() },\n\t\t\t\t\ts.genTextPos()\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\ts.startsWith(ELEMENT_DECLARATION_START) ||\n\t\t\ts.startsWith(ATTLIST_DECLARATION_START) ||\n\t\t\ts.startsWith(NOTATION_DECLARATION_START)\n\t\t) {\n\t\t\ttry {\n\t\t\t\tconsumeDecl(s);\n\t\t\t} catch (e) {\n\t\t\t\tthrow new XmlError(\n\t\t\t\t\t{ type: 'UnknownToken', message: 'Failed to consume declaration' },\n\t\t\t\t\ts.genTextPosFrom(start)\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new XmlError(\n\t\t\t\t{ type: 'UnknownToken', message: 'Failed to parse doctype' },\n\t\t\t\ts.genTextPos()\n\t\t\t);\n\t\t}\n\t}\n}\n\n/**\n * Parses the start of a DOCTYPE declaration.\n *\n * doctypedecl ::= '\\<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '\\>'\n *\n * https://www.w3.org/TR/xml/#NT-doctypedecl\n */\nfunction parseDoctypeStart(s: XmlStream): void {\n\ts.advance(9);\n\n\ts.consumeSpaces();\n\ts.skipName();\n\ts.skipSpaces();\n\n\tparseExternalId(s);\n\ts.skipSpaces();\n\n\tconst currCodeUnit = s.currCodeUnit();\n\tif (currCodeUnit !== OPEN_SQUARE_BRACKET && currCodeUnit !== GREATER_THAN) {\n\t\tthrow new XmlError(\n\t\t\t{ type: 'InvalidChar', expected: \"'[' or '>'\", actual: currCodeUnit },\n\t\t\ts.genTextPos()\n\t\t);\n\t}\n}\n\n/**\n * Parses an external ID.\n *\n * ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral\n *\n * https://www.w3.org/TR/xml/#NT-ExternalID\n */\nfunction parseExternalId(s: XmlStream): boolean {\n\tif (s.startsWith(SYSTEM) || s.startsWith(PUBLIC)) {\n\t\tconst start = s.getPos();\n\t\ts.advance(6);\n\t\tconst id = s.sliceBack(start);\n\n\t\ts.consumeSpaces();\n\t\tconst quote = s.consumeQuote();\n\t\ts.consumeCodeUnitsWhile((c) => c !== quote);\n\t\ts.consumeCodeUnit(quote);\n\n\t\tif (id === PUBLIC) {\n\t\t\ts.consumeSpaces();\n\t\t\tconst _quote = s.consumeQuote();\n\t\t\ts.consumeCodeUnitsWhile((c) => c !== _quote);\n\t\t\ts.consumeCodeUnit(_quote);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Parses an entity declaration.\n *\n * EntityDecl ::= GEDecl | PEDecl\n * GEDecl ::= '\\<!ENTITY' S Name S EntityDef S? '\\>'\n * PEDecl ::= '\\<!ENTITY' S '%' S Name S PEDef S? '\\>'\n *\n * https://www.w3.org/TR/xml/#sec-entity-decl\n */\nfunction parseEntityDecl(s: XmlStream, tokenCallback: TTokenCallback): void {\n\ts.advance(8);\n\ts.consumeSpaces();\n\n\tconst isGe = !s.tryConsumeCodeUnit(PERCENT);\n\tif (!isGe) {\n\t\ts.consumeSpaces();\n\t}\n\n\tconst name = s.consumeName();\n\ts.consumeSpaces();\n\tconst definition = parseEntityDef(s, isGe);\n\tif (definition !== null) {\n\t\ttokenCallback({ type: 'EntityDeclaration', name, definition }, s);\n\t}\n\ts.skipSpaces();\n\ts.consumeCodeUnit(GREATER_THAN);\n}\n\n/**\n * Parses an entity definition.\n *\n * EntityDef ::= EntityValue | (ExternalID NDataDecl?)\n * PEDef ::= EntityValue | ExternalID\n * EntityValue ::= '\"' ([^%&\"] | PEReference | Reference)* '\"' | \"'\" ([^%&']\n * | PEReference | Reference)* \"'\"\n * ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral\n * NDataDecl ::= S 'NDATA' S Name\n *\n * https://www.w3.org/TR/xml/#sec-entity-decl\n */\nfunction parseEntityDef(s: XmlStream, isGe: boolean): string | null {\n\tconst currCodeUnit = s.currCodeUnit();\n\tif (currCodeUnit === DOUBLE_QUOTE || currCodeUnit === SINGLE_QUOTE) {\n\t\tconst quote = s.consumeQuote();\n\t\tconst start = s.getPos();\n\t\ts.skipCodeUnitsWhile((c) => c !== quote);\n\t\tconst value = s.sliceBack(start);\n\t\ts.consumeCodeUnit(quote);\n\t\treturn value;\n\t} else if (currCodeUnit === UPPERCASE_S || currCodeUnit === UPPERCASE_P) {\n\t\tif (parseExternalId(s)) {\n\t\t\tif (isGe) {\n\t\t\t\ts.skipSpaces();\n\t\t\t\tif (s.startsWith(NDATA)) {\n\t\t\t\t\ts.advance(5);\n\t\t\t\t\ts.consumeSpaces();\n\t\t\t\t\ts.skipName();\n\t\t\t\t\t// TODO: NDataDecl is not supported\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tthrow new XmlError({ type: 'InvalidExternalID' }, s.genTextPos());\n\t} else {\n\t\tthrow new XmlError(\n\t\t\t{ type: 'InvalidChar', expected: 'a quote, SYSTEM or PUBLIC', actual: currCodeUnit },\n\t\t\ts.genTextPos()\n\t\t);\n\t}\n}\n\n/**\n * Consumes a declaration.\n */\nfunction consumeDecl(s: XmlStream): void {\n\ts.skipCodeUnitsWhile((c) => c !== GREATER_THAN);\n\ts.consumeCodeUnit(GREATER_THAN);\n}\n\n/**\n * Parses an XML element.\n *\n * element ::= EmptyElemTag | STag content ETag\n * '\\<' Name (S Attribute)* S? '\\>'\n *\n * https://www.w3.org/TR/xml/#NT-element\n */\nfunction parseElement(s: XmlStream, tokenCallback: TTokenCallback): void {\n\tconst start = s.getPos();\n\ts.advance(1); // '<'\n\tconst [prefix, local] = s.consumeQName();\n\ttokenCallback({ type: 'ElementStart', prefix, local, start }, s);\n\n\tlet open = false;\n\twhile (!s.atEnd()) {\n\t\tconst hasSpace = s.startsWithSpace();\n\t\ts.skipSpaces();\n\t\tconst _start = s.getPos();\n\t\tconst currCodeUnit = s.currCodeUnit();\n\n\t\tif (currCodeUnit === SLASH) {\n\t\t\ts.advance(1);\n\t\t\ts.consumeCodeUnit(GREATER_THAN);\n\t\t\tconst range = s.rangeFrom(_start);\n\t\t\ttokenCallback({ type: 'ElementEnd', end: { type: 'Empty' }, range }, s);\n\t\t\tbreak;\n\t\t} else if (currCodeUnit === GREATER_THAN) {\n\t\t\ts.advance(1);\n\t\t\tconst range = s.rangeFrom(_start);\n\n\t\t\tif (\n\t\t\t\ts.config.implicitSelfClosingElements != null &&\n\t\t\t\ts.config.implicitSelfClosingElements.includes(getQName(local, prefix))\n\t\t\t) {\n\t\t\t\ttokenCallback({ type: 'ElementEnd', end: { type: 'Empty' }, range }, s);\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\ttokenCallback({ type: 'ElementEnd', end: { type: 'Open' }, range }, s);\n\t\t\t\topen = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\t// An attribute must be preceded with a whitespace\n\t\t\tif (!hasSpace) {\n\t\t\t\tthrow new XmlError(\n\t\t\t\t\t{ type: 'InvalidChar', expected: 'a whitespace', actual: s.currCodeUnitUnchecked() },\n\t\t\t\t\ts.genTextPos()\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst [_prefix, _local, value] = parseAttribute(s);\n\t\t\tconst end = s.getPos();\n\t\t\ttokenCallback(\n\t\t\t\t{\n\t\t\t\t\ttype: 'Attribute',\n\t\t\t\t\trange: { start: _start, end },\n\t\t\t\t\tprefix: _prefix,\n\t\t\t\t\tlocal: _local,\n\t\t\t\t\tvalue\n\t\t\t\t},\n\t\t\t\ts\n\t\t\t);\n\t\t}\n\t}\n\n\tif (open) {\n\t\tif (s.config.rawTextElements != null) {\n\t\t\tconst qName = getQName(local, prefix);\n\t\t\tif (s.config.rawTextElements.includes(qName)) {\n\t\t\t\tparseContent(s, tokenCallback, `</${qName}>`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tparseContent(s, tokenCallback);\n\t}\n}\n\n/**\n * Parses an XML attribute.\n *\n * If there's no Eq (equal sign), the value is interpreted as \"true\".\n *\n * Attribute ::= Name Eq AttValue\n *\n * https://www.w3.org/TR/xml/#NT-Attribute\n */\nfunction parseAttribute(s: XmlStream): [string, string, string] {\n\tconst [prefix, local] = s.consumeQName();\n\tlet value: string;\n\tconst start = s.getPos();\n\n\ts.skipSpaces();\n\tif (s.tryConsumeCodeUnit(EQUALS)) {\n\t\ts.skipSpaces();\n\t\tconst currCodeUnit = s.currCodeUnit();\n\n\t\tif (currCodeUnit === SINGLE_QUOTE || currCodeUnit === DOUBLE_QUOTE) {\n\t\t\tconst quote = s.consumeQuote();\n\t\t\tvalue = s.consumeCodeUnitsWhile((c) => c !== quote && c !== LESS_THAN);\n\t\t\ts.consumeCodeUnit(quote);\n\t\t}\n\t\t// In non-strict mode, consume until whitespace or closing tag\n\t\telse if (!s.config.strictDocument) {\n\t\t\tvalue = s.consumeCodeUnitsWhile(\n\t\t\t\t(c) => !isXmlSpaceByte(c) && c !== GREATER_THAN && c !== SLASH && c !== LESS_THAN\n\t\t\t);\n\t\t} else {\n\t\t\tthrow new XmlError(\n\t\t\t\t{ type: 'InvalidChar', expected: 'a quote', actual: currCodeUnit },\n\t\t\t\ts.genTextPos()\n\t\t\t);\n\t\t}\n\t}\n\t// In strict mode, if there's no Eq (equal sign), the value is interpreted as \"true\"\n\telse if (!s.config.strictDocument) {\n\t\ts.goTo(start);\n\t\tvalue = 'true';\n\t} else {\n\t\tthrow new XmlError(\n\t\t\t{ type: 'InvalidChar', expected: EQUALS, actual: s.currCodeUnit() },\n\t\t\ts.genTextPos()\n\t\t);\n\t}\n\n\treturn [prefix, local, value];\n}\n\n/**\n * Parses the content of an XML element.\n *\n * content ::= CharData? ((element | Reference | CDSect | PI | Comment) CharData?)*\n *\n * https://www.w3.org/TR/xml/#NT-content\n */\nfunction parseContent(\n\ts: XmlStream,\n\ttokenCallback: TTokenCallback,\n\tparseContentUntil: string | number = LESS_THAN\n): void {\n\twhile (!s.atEnd()) {\n\t\tif (\n\t\t\ttypeof parseContentUntil === 'number'\n\t\t\t\t? s.currCodeUnit() === parseContentUntil\n\t\t\t\t: s.startsWith(parseContentUntil)\n\t\t) {\n\t\t\tconst nextCodeUnit = s.nextCodeUnit();\n\t\t\tif (nextCodeUnit === EXCLAMATION_MARK) {\n\t\t\t\tif (s.startsWith(COMMENT_START)) {\n\t\t\t\t\tparseComment(s, tokenCallback);\n\t\t\t\t} else if (s.startsWith(CDATA_START)) {\n\t\t\t\t\tparseCdata(s, tokenCallback);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new XmlError(\n\t\t\t\t\t\t{ type: 'UnknownToken', message: 'Failed to parse content' },\n\t\t\t\t\t\ts.genTextPos()\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else if (nextCodeUnit === QUESTION_MARK) {\n\t\t\t\tparsePi(s, tokenCallback);\n\t\t\t} else if (nextCodeUnit === SLASH) {\n\t\t\t\tparseCloseElement(s, tokenCallback);\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tparseElement(s, tokenCallback);\n\t\t\t}\n\t\t} else {\n\t\t\tparseText(s, tokenCallback, parseContentUntil);\n\t\t}\n\t}\n}\n\n/**\n * Parses a CDATA section.\n *\n * CDSect ::= CDStart CData CDEnd\n * CDStart ::= '\\<![CDATA['\n * CData ::= (Char* - (Char* ']]\\>' Char*))\n * CDEnd ::= ']]\\>'\n *\n * https://www.w3.org/TR/xml/#sec-cdata-sect\n */\nfunction parseCdata(s: XmlStream, tokenCallback: TTokenCallback): void {\n\tconst start = s.getPos();\n\ts.advance(9); // <![CDATA[\n\tconst text = s.consumeCodeUnitsWhile(\n\t\t(c, _s) => !(c === CLOSE_SQUARE_BRACKET && _s.startsWith(CDATA_END))\n\t);\n\ts.skipString(CDATA_END);\n\tconst range = s.rangeFrom(start);\n\ttokenCallback({ type: 'Cdata', text, range }, s);\n}\n\n/**\n * Parses a closing element tag.\n *\n * '\\</' Name S? '\\>'\n *\n * https://www.w3.org/TR/xml/#NT-ETag\n */\nfunction parseCloseElement(s: XmlStream, tokenCallback: TTokenCallback): void {\n\tconst start = s.getPos();\n\ts.advance(2); // </\n\n\tconst [prefix, local] = s.consumeQName();\n\ts.skipSpaces();\n\ts.consumeCodeUnit(GREATER_THAN);\n\n\tconst range = s.rangeFrom(start);\n\ttokenCallback({ type: 'ElementEnd', end: { type: 'Close', prefix, local }, range }, s);\n}\n\n/**\n * Parses text content.\n */\nfunction parseText(\n\ts: XmlStream,\n\ttokenCallback: TTokenCallback,\n\tparseTextUntil: string | number = LESS_THAN\n): void {\n\tconst start = s.getPos();\n\tconst text =\n\t\ttypeof parseTextUntil === 'number'\n\t\t\t? s.consumeCodeUnitsWhile((c) => c !== parseTextUntil)\n\t\t\t: s.consumeCodeUnitsWhile((_, _s) => !_s.startsWith(parseTextUntil));\n\n\t// According to the spec, `]]>` must not appear inside a Text node.\n\t// https://www.w3.org/TR/xml/#syntax\n\tif (text.includes(CDATA_END)) {\n\t\tthrow new XmlError({ type: 'InvalidCharacterData' }, s.genTextPos());\n\t}\n\n\ttokenCallback({ type: 'Text', text, range: s.rangeFrom(start) }, s);\n}\n"],"names":["XmlStream","XmlError","LESS_THAN","HYPHEN","QUESTION_MARK","GREATER_THAN","OPEN_SQUARE_BRACKET","PERCENT","DOUBLE_QUOTE","SINGLE_QUOTE","UPPERCASE_S","UPPERCASE_P","SLASH","getQName","EQUALS","isXmlSpaceByte","EXCLAMATION_MARK","CLOSE_SQUARE_BRACKET"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../src/tokenizer/utils.ts"],"sourcesContent":["import {\n\tCARRIAGE_RETURN,\n\tCOLON,\n\tHORIZONTAL_TAB,\n\tHYPHEN,\n\tLINE_FEED,\n\tLOWERCASE_A,\n\tLOWERCASE_Z,\n\tNINE,\n\tPERIOD,\n\tSPACE,\n\tUNDERSCORE,\n\tUPPERCASE_A,\n\tUPPERCASE_Z,\n\tZERO\n} from './ascii-constants';\n\nexport function isAsciiDigit(byte: number): boolean {\n\treturn byte >= ZERO && byte <= NINE;\n}\n\n/**\n * Checks if the unicode code point (character) is within the name start char range.\n *\n * @param codePoint - The character to check.\n * @returns True if the character is a valid XML name start character, false otherwise.\n */\nexport function isXmlNameStart(codePoint: number | undefined): boolean {\n\tif (codePoint == null) {\n\t\treturn false;\n\t}\n\n\t// Check for ASCII first\n\tif (codePoint <= 128) {\n\t\treturn (\n\t\t\t(codePoint >= UPPERCASE_A && codePoint <= UPPERCASE_Z) ||\n\t\t\t(codePoint >= LOWERCASE_A && codePoint <= LOWERCASE_Z) ||\n\t\t\tcodePoint === COLON ||\n\t\t\tcodePoint === UNDERSCORE\n\t\t);\n\t}\n\n\treturn (\n\t\t(codePoint >= 0xc0 && codePoint <= 0xd6) ||\n\t\t(codePoint >= 0xd8 && codePoint <= 0xf6) ||\n\t\t(codePoint >= 0xf8 && codePoint <= 0x2ff) ||\n\t\t(codePoint >= 0x370 && codePoint <= 0x37d) ||\n\t\t(codePoint >= 0x37f && codePoint <= 0x1fff) ||\n\t\t(codePoint >= 0x200c && codePoint <= 0x200d) ||\n\t\t(codePoint >= 0x2070 && codePoint <= 0x218f) ||\n\t\t(codePoint >= 0x2c00 && codePoint <= 0x2fef) ||\n\t\t(codePoint >= 0x3001 && codePoint <= 0xd7ff) ||\n\t\t(codePoint >= 0xf900 && codePoint <= 0xfdcf) ||\n\t\t(codePoint >= 0xfdf0 && codePoint <= 0xfffd) ||\n\t\t(codePoint >= 0x10000 && codePoint <= 0xeffff)\n\t);\n}\n\n/**\n * Checks if the unicode code point (character) is within the XML name char range.\n *\n * @param codePoint - The character to check.\n * @returns True if the character is a valid XML name character, false otherwise.\n */\nexport function isXmlName(codePoint: number | undefined): boolean {\n\tif (codePoint == null) {\n\t\treturn false;\n\t}\n\n\t// Check for ASCII first\n\tif (codePoint <= 128) {\n\t\treturn isXmlNameByte(codePoint);\n\t}\n\n\treturn (\n\t\tcodePoint === 0xb7 ||\n\t\t(codePoint >= 0xc0 && codePoint <= 0xd6) ||\n\t\t(codePoint >= 0xd8 && codePoint <= 0xf6) ||\n\t\t(codePoint >= 0xf8 && codePoint <= 0x2ff) ||\n\t\t(codePoint >= 0x300 && codePoint <= 0x36f) ||\n\t\t(codePoint >= 0x370 && codePoint <= 0x37d) ||\n\t\t(codePoint >= 0x37f && codePoint <= 0x1fff) ||\n\t\t(codePoint >= 0x200c && codePoint <= 0x200d) ||\n\t\t(codePoint >= 0x203f && codePoint <= 0x2040) ||\n\t\t(codePoint >= 0x2070 && codePoint <= 0x218f) ||\n\t\t(codePoint >= 0x2c00 && codePoint <= 0x2fef) ||\n\t\t(codePoint >= 0x3001 && codePoint <= 0xd7ff) ||\n\t\t(codePoint >= 0xf900 && codePoint <= 0xfdcf) ||\n\t\t(codePoint >= 0xfdf0 && codePoint <= 0xfffd) ||\n\t\t(codePoint >= 0x10000 && codePoint <= 0xeffff)\n\t);\n}\n\n/**\n * Checks if the unicode code point (character) is within the XML char range.\n *\n * @param codePoint - The character to check.\n * @returns True if the character is a valid XML character, false otherwise.\n */\nexport function isXmlChar(codePoint: number | undefined): boolean {\n\tif (codePoint == null) {\n\t\treturn false;\n\t}\n\n\tif (codePoint < 0x20) {\n\t\treturn isXmlSpaceByte(codePoint);\n\t}\n\n\treturn codePoint !== 0xffff && codePoint !== 0xfffe;\n}\n\n/**\n * Checks if the character is an XML space.\n *\n * @param byte - The byte to check.\n * @returns True if the byte is a valid XML space, false otherwise.\n */\nexport function isXmlSpaceByte(byte: number): boolean {\n\treturn (\n\t\tbyte === SPACE || byte === HORIZONTAL_TAB || byte === LINE_FEED || byte === CARRIAGE_RETURN\n\t);\n}\n\n/**\n * Checks if the byte is within the ASCII char range.\n *\n * @param byte - The byte to check.\n * @returns True if the byte is a valid ASCII XML name character, false otherwise.\n */\nexport function isXmlNameByte(byte: number): boolean {\n\treturn (\n\t\t(byte >= ZERO && byte <= NINE) ||\n\t\t(byte >= UPPERCASE_A && byte <= UPPERCASE_Z) ||\n\t\t(byte >= LOWERCASE_A && byte <= LOWERCASE_Z) ||\n\t\tbyte === COLON ||\n\t\tbyte === UNDERSCORE ||\n\t\tbyte === HYPHEN ||\n\t\tbyte === PERIOD\n\t);\n}\n"],"names":["ZERO","NINE","UPPERCASE_A","UPPERCASE_Z","LOWERCASE_A","LOWERCASE_Z","COLON","UNDERSCORE","SPACE","HORIZONTAL_TAB","LINE_FEED","CARRIAGE_RETURN","HYPHEN","PERIOD"],"mappings":";;;;AAiBO,SAAS,YAAY,CAAC,IAAI,EAAE;AACnC,EAAE,OAAO,IAAI,IAAIA,mBAAI,IAAI,IAAI,IAAIC,mBAAI;AACrC;AACO,SAAS,cAAc,CAAC,SAAS,EAAE;AAC1C,EAAE,IAAI,SAAS,IAAI,IAAI,EAAE;AACzB,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,IAAI,SAAS,IAAI,GAAG,EAAE;AACxB,IAAI,OAAO,SAAS,IAAIC,0BAAW,IAAI,SAAS,IAAIC,0BAAW,IAAI,SAAS,IAAIC,0BAAW,IAAI,SAAS,IAAIC,0BAAW,IAAI,SAAS,KAAKC,oBAAK,IAAI,SAAS,KAAKC,yBAAU;AAC1K;AACA,EAAE,OAAO,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,MAAM;AAC/f;AACO,SAAS,SAAS,CAAC,SAAS,EAAE;AACrC,EAAE,IAAI,SAAS,IAAI,IAAI,EAAE;AACzB,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,IAAI,SAAS,IAAI,GAAG,EAAE;AACxB,IAAI,OAAO,aAAa,CAAC,SAAS,CAAC;AACnC;AACA,EAAE,OAAO,SAAS,KAAK,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,MAAM;AACtmB;AACO,SAAS,SAAS,CAAC,SAAS,EAAE;AACrC,EAAE,IAAI,SAAS,IAAI,IAAI,EAAE;AACzB,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,IAAI,SAAS,GAAG,EAAE,EAAE;AACtB,IAAI,OAAO,cAAc,CAAC,SAAS,CAAC;AACpC;AACA,EAAE,OAAO,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK;AACnD;AACO,SAAS,cAAc,CAAC,IAAI,EAAE;AACrC,EAAE,OAAO,IAAI,KAAKC,oBAAK,IAAI,IAAI,KAAKC,6BAAc,IAAI,IAAI,KAAKC,wBAAS,IAAI,IAAI,KAAKC,8BAAe;AACpG;AACO,SAAS,aAAa,CAAC,IAAI,EAAE;AACpC,EAAE,OAAO,IAAI,IAAIX,mBAAI,IAAI,IAAI,IAAIC,mBAAI,IAAI,IAAI,IAAIC,0BAAW,IAAI,IAAI,IAAIC,0BAAW,IAAI,IAAI,IAAIC,0BAAW,IAAI,IAAI,IAAIC,0BAAW,IAAI,IAAI,KAAKC,oBAAK,IAAI,IAAI,KAAKC,yBAAU,IAAI,IAAI,KAAKK,qBAAM,IAAI,IAAI,KAAKC,qBAAM;AAChN;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokens-to-xml.js","sources":["../../src/tokens-to-xml.ts"],"sourcesContent":["import { tokenToXml } from './token-to-xml';\nimport { type TXmlToken } from './tokenizer';\n\nexport function tokensToXml(tokens: TXmlToken[]): string {\n\tlet xmlString = '';\n\n\ttokens.forEach((token) => {\n\t\txmlString += tokenToXml(token);\n\t});\n\n\treturn xmlString;\n}\n"],"names":["tokenToXml"],"mappings":";;;;AAEO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,EAAE,IAAI,SAAS,GAAG,EAAE;AACpB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC5B,IAAI,SAAS,IAAIA,qBAAU,CAAC,KAAK,CAAC;AAClC,GAAG,CAAC;AACJ,EAAE,OAAO,SAAS;AAClB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xml-to-object.js","sources":["../../src/xml-to-object.ts"],"sourcesContent":["import { tokenize, type TXmlStreamOptions, type TXmlToken } from './tokenizer';\n\nexport function xmlToObject(xmlString: string, options: TXmlStreamOptions = {}): TXmlNode {\n\tconst root: TXmlNode = {\n\t\tlocal: 'root',\n\t\tattributes: [],\n\t\tcontent: []\n\t};\n\tconst stack: TXmlNode[] = [root];\n\n\ttokenize(\n\t\txmlString,\n\t\t(token) => {\n\t\t\tprocessTokenForObject(token, stack);\n\t\t},\n\t\toptions\n\t);\n\n\treturn root.content[0] as TXmlNode;\n}\n\nexport function processTokenForObject(token: TXmlToken, stack: TXmlNode[]): void {\n\tswitch (token.type) {\n\t\tcase 'ElementStart': {\n\t\t\tconst newNode: TXmlNode = {\n\t\t\t\tlocal: token.local,\n\t\t\t\tprefix: token.prefix.length > 0 ? token.prefix : undefined,\n\t\t\t\tattributes: [],\n\t\t\t\tcontent: []\n\t\t\t};\n\n\t\t\tconst currentNode = stack[stack.length - 1];\n\t\t\tif (currentNode != null) {\n\t\t\t\tcurrentNode.content.push(newNode);\n\t\t\t}\n\n\t\t\tstack.push(newNode);\n\t\t\tbreak;\n\t\t}\n\t\tcase 'ElementEnd': {\n\t\t\tif (token.end.type === 'Close' || token.end.type === 'Empty') {\n\t\t\t\tstack.pop();\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase 'Attribute': {\n\t\t\tconst currentNode = stack[stack.length - 1];\n\t\t\tif (currentNode != null) {\n\t\t\t\tcurrentNode.attributes.push({\n\t\t\t\t\tlocal: token.local,\n\t\t\t\t\tprefix: token.prefix.length > 0 ? token.prefix : undefined,\n\t\t\t\t\tvalue: token.value\n\t\t\t\t});\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase 'Text':\n\t\tcase 'Cdata': {\n\t\t\tconst currentNode = stack[stack.length - 1];\n\t\t\tif (currentNode != null) {\n\t\t\t\tconst trimmedText = token.text.trim();\n\t\t\t\tif (trimmedText.length > 0) {\n\t\t\t\t\tcurrentNode.content.push(token.text);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase 'Comment':\n\t\tcase 'ProcessingInstruction':\n\t\tcase 'EntityDeclaration':\n\t}\n}\n\nexport interface TXmlNode {\n\tlocal: string;\n\tprefix?: string;\n\tattributes: { local: string; prefix?: string; value: string }[];\n\tcontent: (TXmlNode | string)[];\n}\n"],"names":["tokenize"],"mappings":";;;;AAEO,SAAS,WAAW,CAAC,SAAS,EAAE,OAAO,GAAG,EAAE,EAAE;AACrD,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,OAAO,EAAE;AACb,GAAG;AACH,EAAE,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC;AACtB,EAAEA,iBAAQ;AACV,IAAI,SAAS;AACb,IAAI,CAAC,KAAK,KAAK;AACf,MAAM,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC;AACzC,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACxB;AACO,SAAS,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE;AACpD,EAAE,QAAQ,KAAK,CAAC,IAAI;AACpB,IAAI,KAAK,cAAc,EAAE;AACzB,MAAM,MAAM,OAAO,GAAG;AACtB,QAAQ,KAAK,EAAE,KAAK,CAAC,KAAK;AAC1B,QAAQ,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM;AAC/D,QAAQ,UAAU,EAAE,EAAE;AACtB,QAAQ,OAAO,EAAE;AACjB,OAAO;AACP,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,MAAM,IAAI,WAAW,IAAI,IAAI,EAAE;AAC/B,QAAQ,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AACzC;AACA,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AACzB,MAAM;AACN;AACA,IAAI,KAAK,YAAY,EAAE;AACvB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;AACpE,QAAQ,KAAK,CAAC,GAAG,EAAE;AACnB;AACA,MAAM;AACN;AACA,IAAI,KAAK,WAAW,EAAE;AACtB,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,MAAM,IAAI,WAAW,IAAI,IAAI,EAAE;AAC/B,QAAQ,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;AACpC,UAAU,KAAK,EAAE,KAAK,CAAC,KAAK;AAC5B,UAAU,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM;AACjE,UAAU,KAAK,EAAE,KAAK,CAAC;AACvB,SAAS,CAAC;AACV;AACA,MAAM;AACN;AACA,IAAI,KAAK,MAAM;AACf,IAAI,KAAK,OAAO,EAAE;AAClB,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,MAAM,IAAI,WAAW,IAAI,IAAI,EAAE;AAC/B,QAAQ,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AAC7C,QAAQ,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,UAAU,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9C;AACA;AACA,MAAM;AACN;AAIA;AACA;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xml-to-simplified-object.js","sources":["../../src/xml-to-simplified-object.ts"],"sourcesContent":["import { getQName } from './get-q-name';\nimport { tokenize, type TXmlStreamOptions, type TXmlToken } from './tokenizer';\n\nexport function xmlToSimplifiedObject(\n\txmlString: string,\n\toptions: TXmlStreamOptions = {}\n): TSimplifiedXmlNode {\n\tconst result: TSimplifiedXmlNode = {};\n\tconst stack: TSimplifiedXmlNode[] = [result];\n\n\ttokenize(\n\t\txmlString,\n\t\t(token) => {\n\t\t\tprocessTokenForSimplifiedObject(token, stack);\n\t\t},\n\t\toptions\n\t);\n\n\treturn result;\n}\n\nexport function processTokenForSimplifiedObject(\n\ttoken: TXmlToken,\n\tstack: TSimplifiedXmlNode[]\n): void {\n\tswitch (token.type) {\n\t\tcase 'ElementStart': {\n\t\t\tconst tagName = getQName(token.local, token.prefix);\n\t\t\tconst tagNameWithPrefix: TSimplifiedXmlNodeTagName = `_${tagName}`;\n\t\t\tconst newNode: TSimplifiedXmlNode = {};\n\n\t\t\tconst currentNode = stack[stack.length - 1];\n\t\t\tif (currentNode != null) {\n\t\t\t\tif (currentNode.content != null) {\n\t\t\t\t\tnewNode.tag = tagName;\n\t\t\t\t\tcurrentNode.content.push(newNode);\n\t\t\t\t} else if (currentNode.text != null) {\n\t\t\t\t\tnewNode.tag = tagName;\n\t\t\t\t\tcurrentNode.content = [currentNode.text, newNode];\n\t\t\t\t\tdelete currentNode.text;\n\t\t\t\t} else if (currentNode[tagNameWithPrefix] == null) {\n\t\t\t\t\tcurrentNode[tagNameWithPrefix] = [newNode];\n\t\t\t\t} else if (Array.isArray(currentNode[tagNameWithPrefix])) {\n\t\t\t\t\tcurrentNode[tagNameWithPrefix].push(newNode);\n\t\t\t\t} else {\n\t\t\t\t\tcurrentNode[tagNameWithPrefix] = [currentNode[tagNameWithPrefix], newNode];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstack.push(newNode);\n\t\t\tbreak;\n\t\t}\n\t\tcase 'ElementEnd': {\n\t\t\tif (token.end.type === 'Close' || token.end.type === 'Empty') {\n\t\t\t\tstack.pop();\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase 'Attribute': {\n\t\t\tconst currentNode = stack[stack.length - 1];\n\t\t\tif (currentNode != null) {\n\t\t\t\tconst attrName = getQName(token.local, token.prefix);\n\t\t\t\tif (currentNode.attributes != null) {\n\t\t\t\t\tcurrentNode.attributes[attrName] = token.value;\n\t\t\t\t} else {\n\t\t\t\t\tcurrentNode.attributes = {\n\t\t\t\t\t\t[attrName]: token.value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase 'Text':\n\t\tcase 'Cdata': {\n\t\t\tconst currentNode = stack[stack.length - 1];\n\t\t\tif (currentNode != null) {\n\t\t\t\tconst trimmedText = token.text.trim();\n\t\t\t\tif (trimmedText.length > 0) {\n\t\t\t\t\tif (currentNode.content != null) {\n\t\t\t\t\t\tcurrentNode.content.push(trimmedText);\n\t\t\t\t\t} else if (currentNode.text != null) {\n\t\t\t\t\t\tcurrentNode.content = [currentNode.text, trimmedText];\n\t\t\t\t\t\tdelete currentNode.text;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentNode.text = trimmedText;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase 'Comment':\n\t\tcase 'ProcessingInstruction':\n\t\tcase 'EntityDeclaration':\n\t}\n}\n\nexport interface TSimplifiedXmlNode {\n\ttag?: string;\n\tattributes?: Record<string, string>;\n\ttext?: string;\n\tcontent?: (string | TSimplifiedXmlNode)[];\n\t// TODO: Do we need a prefix to make it typesafe?\n\t[key: TSimplifiedXmlNodeTagName]: TSimplifiedXmlNode[];\n}\n\nexport type TSimplifiedXmlNodeTagName = `_${string}`;\n"],"names":["tokenize","getQName"],"mappings":"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"}
|
package/dist/esm/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sources":["../../src/config.ts"],"sourcesContent":["import { TXmlStreamOptions } from './tokenizer';\n\n/**\n * Default XML configuration with strict XML compliance.\n */\nexport const xmlConfig: TXmlStreamOptions = {\n\tstrictDocument: true,\n\tallowDtd: true,\n\trawTextElements: null,\n\timplicitSelfClosingElements: null,\n\tcontextSliceSize: 30\n};\n\n/**\n * HTML configuration with HTML-specific settings.\n * - Non-strict document structure\n * - Raw text elements like script and style\n * - Implicit self-closing elements (void elements in HTML)\n */\nexport const htmlConfig: TXmlStreamOptions = {\n\tstrictDocument: false,\n\tallowDtd: true,\n\trawTextElements: ['script', 'style', 'title', 'textarea'],\n\timplicitSelfClosingElements: [\n\t\t'area',\n\t\t'base',\n\t\t'br',\n\t\t'col',\n\t\t'embed',\n\t\t'hr',\n\t\t'img',\n\t\t'input',\n\t\t'link',\n\t\t'meta',\n\t\t'param',\n\t\t'source',\n\t\t'track',\n\t\t'wbr'\n\t],\n\tcontextSliceSize: 30\n};\n\n/**\n * SVG configuration with SVG-specific settings.\n */\nexport const svgConfig: TXmlStreamOptions = {\n\tstrictDocument: false,\n\tallowDtd: true,\n\trawTextElements: ['style'],\n\timplicitSelfClosingElements: [],\n\tcontextSliceSize: 30\n};\n"],"names":[],"mappings":"AACY,MAAC,SAAS,GAAG;AACzB,EAAE,cAAc,EAAE,IAAI;AACtB,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,eAAe,EAAE,IAAI;AACvB,EAAE,2BAA2B,EAAE,IAAI;AACnC,EAAE,gBAAgB,EAAE;AACpB;AACY,MAAC,UAAU,GAAG;AAC1B,EAAE,cAAc,EAAE,KAAK;AACvB,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC;AAC3D,EAAE,2BAA2B,EAAE;AAC/B,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI;AACJ,GAAG;AACH,EAAE,gBAAgB,EAAE;AACpB;AACY,MAAC,SAAS,GAAG;AACzB,EAAE,cAAc,EAAE,KAAK;AACvB,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC;AAC5B,EAAE,2BAA2B,EAAE,EAAE;AACjC,EAAE,gBAAgB,EAAE;AACpB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-q-name.js","sources":["../../src/get-q-name.ts"],"sourcesContent":["/**\n * Constructs a qualified name (QName) from a local name and an optional namespace prefix.\n *\n * https://www.w3.org/2001/tag/doc/qnameids.html\n */\nexport function getQName(local: string, prefix: string | null = null): string {\n\treturn prefix != null && prefix.length > 0 ? `${prefix}:${local}` : local;\n}\n"],"names":[],"mappings":"AACO,SAAS,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE;AAC/C,EAAE,OAAO,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK;AAC3E;;;;"}
|
package/dist/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|