jtlt 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGES.md +18 -0
  2. package/README.md +16 -87
  3. package/demo/calltemplate-params-demo.js +138 -0
  4. package/demo/index.html +31 -0
  5. package/demo/index.js +30 -0
  6. package/demo/xpath2-placeholder.js +1 -0
  7. package/dist/AbstractJoiningTransformer.d.ts +83 -9
  8. package/dist/AbstractJoiningTransformer.d.ts.map +1 -1
  9. package/dist/DOMJoiningTransformer.d.ts +85 -25
  10. package/dist/DOMJoiningTransformer.d.ts.map +1 -1
  11. package/dist/JSONJoiningTransformer.d.ts +159 -51
  12. package/dist/JSONJoiningTransformer.d.ts.map +1 -1
  13. package/dist/JSONPathTransformer.d.ts +37 -38
  14. package/dist/JSONPathTransformer.d.ts.map +1 -1
  15. package/dist/JSONPathTransformerContext.d.ts +247 -121
  16. package/dist/JSONPathTransformerContext.d.ts.map +1 -1
  17. package/dist/StringJoiningTransformer.d.ts +132 -41
  18. package/dist/StringJoiningTransformer.d.ts.map +1 -1
  19. package/dist/XPathTransformer.d.ts +35 -20
  20. package/dist/XPathTransformer.d.ts.map +1 -1
  21. package/dist/XPathTransformerContext.d.ts +191 -99
  22. package/dist/XPathTransformerContext.d.ts.map +1 -1
  23. package/dist/index-browser.d.ts +4 -0
  24. package/dist/index-browser.d.ts.map +1 -0
  25. package/dist/index-node.d.ts +4 -0
  26. package/dist/index-node.d.ts.map +1 -0
  27. package/dist/index.d.ts +330 -57
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/types.d.ts +204 -0
  30. package/dist/types.d.ts.map +1 -0
  31. package/docs/API.expanded.md +167 -2
  32. package/docs/API.md +91 -1
  33. package/docs/TO-DO.md +144 -0
  34. package/docs/calltemplate-params.md +251 -0
  35. package/eslint.config.js +9 -5
  36. package/package.json +13 -7
  37. package/pnpm-workspace.yaml +1 -0
  38. package/src/AbstractJoiningTransformer.js +54 -15
  39. package/src/DOMJoiningTransformer.js +275 -28
  40. package/src/JSONJoiningTransformer.js +351 -70
  41. package/src/JSONPathTransformer.js +48 -30
  42. package/src/JSONPathTransformerContext.js +308 -104
  43. package/src/StringJoiningTransformer.js +311 -57
  44. package/src/XPathTransformer.js +27 -12
  45. package/src/XPathTransformerContext.js +467 -89
  46. package/src/index-browser.js +5 -0
  47. package/src/index-node.js +7 -0
  48. package/src/index.js +498 -97
  49. package/typings/xpath2-js.d.ts +40 -1
  50. package/src/types/xpath2-js.d.ts +0 -2
@@ -1,4 +1,33 @@
1
1
  export default StringJoiningTransformer;
2
+ export type OutputConfig = {
3
+ encoding?: string;
4
+ indent?: boolean;
5
+ omitXmlDeclaration?: boolean;
6
+ doctypePublic?: string;
7
+ doctypeSystem?: string;
8
+ cdataSectionElements?: string[];
9
+ mediaType?: string;
10
+ version?: string;
11
+ standalone?: boolean;
12
+ method?: "xml" | "html" | "text" | "json" | "xhtml";
13
+ };
14
+ export type SimpleCallback = (this: StringJoiningTransformer) => void;
15
+ /**
16
+ * Attributes object for element() allowing standard string attributes
17
+ * plus special helpers: dataset (object) and $a (ordered attribute array).
18
+ */
19
+ export type ElementAttributes = Record<string, unknown> & {
20
+ dataset?: Record<string, string>;
21
+ $a?: Array<[string, string]>;
22
+ };
23
+ /**
24
+ * Attributes object for element() allowing standard string attributes
25
+ * plus special helpers: dataset (object) and $a (ordered attribute array).
26
+ * @typedef {Record<string, unknown> & {
27
+ * dataset?: Record<string, string>,
28
+ * $a?: Array<[string, string]>
29
+ * }} ElementAttributes
30
+ */
2
31
  /**
3
32
  *
4
33
  */
@@ -28,13 +57,15 @@ export default StringJoiningTransformer;
28
57
  * name mapping rules differ, etc.).
29
58
  * - cfg.preEscapedAttributes: skip escaping attribute values.
30
59
  * - cfg.JHTMLForJSON / cfg.mode: affect how object()/array() serialize.
60
+ * @extends {AbstractJoiningTransformer<"string">}
31
61
  */
32
- declare class StringJoiningTransformer extends AbstractJoiningTransformer {
62
+ declare class StringJoiningTransformer extends AbstractJoiningTransformer<"string"> {
33
63
  /**
34
64
  * @param {string} s - Initial string
35
- * @param {object} cfg - Configuration object
65
+ * @param {import('./AbstractJoiningTransformer.js').
66
+ * StringJoiningTransformerConfig} [cfg] - Configuration object
36
67
  */
37
- constructor(s: string, cfg: object);
68
+ constructor(s: string, cfg?: import("./AbstractJoiningTransformer.js").StringJoiningTransformerConfig);
38
69
  _str: string;
39
70
  /** @type {any} */
40
71
  _objPropTemp: any;
@@ -50,59 +81,72 @@ declare class StringJoiningTransformer extends AbstractJoiningTransformer {
50
81
  _arr: any[];
51
82
  /** @type {string | undefined} */
52
83
  _strTemp: string | undefined;
53
- /** @type {Record<string, any>} */
54
- propertySets: Record<string, any>;
84
+ /** @type {Record<string, unknown>} */
85
+ propertySets: Record<string, unknown>;
86
+ /** @type {string[]} */
87
+ _docs: string[];
88
+ /** @type {boolean} */
89
+ _insideDocument: boolean;
90
+ /** @type {Array<{href: string, document: string, format?: string}>} */
91
+ _resultDocuments: Array<{
92
+ href: string;
93
+ document: string;
94
+ format?: string;
95
+ }>;
55
96
  /**
56
- * @param {string|*} s - String or value to append
97
+ * @param {string|any} s - String or value to append
57
98
  * @returns {StringJoiningTransformer}
58
99
  */
59
100
  append(s: string | any): StringJoiningTransformer;
60
101
  /**
61
- * @returns {string}
102
+ * @returns {string|string[]}
62
103
  */
63
- get(): string;
104
+ get(): string | string[];
64
105
  /**
65
106
  * @param {string} prop - Property name
66
- * @param {*} val - Property value
107
+ * @param {any} val - Property value
67
108
  * @returns {StringJoiningTransformer}
68
109
  */
69
110
  propValue(prop: string, val: any): StringJoiningTransformer;
70
111
  /**
71
112
  * @param {string} prop - Property name
72
- * @param {Function} cb - Callback function
113
+ * @param {(this: StringJoiningTransformer) => void} cb - Callback function
73
114
  * @returns {StringJoiningTransformer}
74
115
  */
75
- propOnly(prop: string, cb: Function): StringJoiningTransformer;
116
+ propOnly(prop: string, cb: (this: StringJoiningTransformer) => void): StringJoiningTransformer;
76
117
  /**
77
- * @param {object|Element} obj - Object to serialize
78
- * @param {Function} cb - Callback function
118
+ * @param {Record<string, unknown>|Element} obj - Object to serialize
119
+ * @param {(this: StringJoiningTransformer) => void} cb - Callback function
79
120
  * @param {any[]} [usePropertySets] - Property sets to use
80
- * @param {object} [propSets] - Additional property sets
121
+ * @param {Record<string, unknown>} [propSets] - Additional property sets
81
122
  * @returns {StringJoiningTransformer}
82
123
  */
83
- object(obj: object | Element, cb: Function, usePropertySets?: any[], propSets?: object): StringJoiningTransformer;
124
+ object(obj: Record<string, unknown> | Element, cb: (this: StringJoiningTransformer) => void, usePropertySets?: any[], propSets?: Record<string, unknown>): StringJoiningTransformer;
84
125
  /**
85
126
  * @param {any[]|Element} [arr] - Array to serialize
86
- * @param {Function} [cb] - Callback function
127
+ * @param {(this: StringJoiningTransformer) => void} [cb] - Callback function
87
128
  * @returns {StringJoiningTransformer}
88
129
  */
89
- array(arr?: any[] | Element, cb?: Function): StringJoiningTransformer;
130
+ array(arr?: any[] | Element, cb?: (this: StringJoiningTransformer) => void): StringJoiningTransformer;
90
131
  /**
91
- * @param {string|Element|object} str - String value or element
92
- * @param {Function} [cb] - Callback function
132
+ * @param {string|Element|Record<string, unknown>} str
133
+ * String value or element
134
+ * @param {(this: StringJoiningTransformer) => void} [cb] - Callback function
93
135
  * @returns {StringJoiningTransformer}
94
136
  */
95
- string(str: string | Element | object, cb?: Function): StringJoiningTransformer;
137
+ string(str: string | Element | Record<string, unknown>, cb?: (this: StringJoiningTransformer) => void): StringJoiningTransformer;
96
138
  /**
97
- * @param {number|Element|object} num - Number value or element
139
+ * @param {number|Element|Record<string, unknown>} num
140
+ * Number value or element
98
141
  * @returns {StringJoiningTransformer}
99
142
  */
100
- number(num: number | Element | object): StringJoiningTransformer;
143
+ number(num: number | Element | Record<string, unknown>): StringJoiningTransformer;
101
144
  /**
102
- * @param {boolean|Element|object} bool - Boolean value or element
145
+ * @param {boolean|Element|Record<string, unknown>} bool
146
+ * Boolean value or element
103
147
  * @returns {StringJoiningTransformer}
104
148
  */
105
- boolean(bool: boolean | Element | object): StringJoiningTransformer;
149
+ boolean(bool: boolean | Element | Record<string, unknown>): StringJoiningTransformer;
106
150
  /**
107
151
  * @returns {StringJoiningTransformer}
108
152
  */
@@ -117,52 +161,99 @@ declare class StringJoiningTransformer extends AbstractJoiningTransformer {
117
161
  */
118
162
  nonfiniteNumber(num: number | Element): StringJoiningTransformer;
119
163
  /**
120
- * @param {Function|Element} func - Function to stringify
164
+ * @param {((...args: any[]) => any)|Element} func - Function to stringify
165
+ * @returns {StringJoiningTransformer}
166
+ */
167
+ function(func: ((...args: any[]) => any) | Element): StringJoiningTransformer;
168
+ /**
169
+ * @param {OutputConfig} cfg
121
170
  * @returns {StringJoiningTransformer}
122
171
  */
123
- function(func: Function | Element): StringJoiningTransformer;
172
+ output(cfg: OutputConfig): StringJoiningTransformer;
173
+ _outputConfig: any;
174
+ mediaType: string | undefined;
124
175
  /**
125
- * @param {string|object} elName - Element name or element object
126
- * @param {object} [atts] - Element attributes
176
+ * @param {string|Element} elName - Element name or element object
177
+ * @param {ElementAttributes} [atts] - Element attributes
127
178
  * @param {any[]} [childNodes] - Child nodes
128
- * @param {Function} [cb] - Callback function
179
+ * @param {(this: StringJoiningTransformer) => void} [cb] - Callback function
129
180
  * @returns {StringJoiningTransformer}
130
181
  */
131
- element(elName: string | object, atts?: object, childNodes?: any[], cb?: Function): StringJoiningTransformer;
182
+ element(elName: string | Element, atts?: ElementAttributes, childNodes?: any[], cb?: (this: StringJoiningTransformer) => void): StringJoiningTransformer;
132
183
  _openTagState: any;
184
+ root: any;
133
185
  /**
134
186
  * @param {string} name - Attribute name
135
- * @param {string|object} val - Attribute value
187
+ * @param {string|Record<string, unknown>|
188
+ * string[][]} val - Attribute value
136
189
  * @param {boolean} [avoidAttEscape] - Whether to avoid escaping the
137
190
  * attribute value
138
191
  * @returns {StringJoiningTransformer}
139
192
  */
140
- attribute(name: string, val: string | object, avoidAttEscape?: boolean): StringJoiningTransformer;
193
+ attribute(name: string, val: string | Record<string, unknown> | string[][], avoidAttEscape?: boolean): StringJoiningTransformer;
141
194
  /**
142
195
  * @param {string} txt - Text content to escape and append
143
196
  * @returns {StringJoiningTransformer}
144
197
  */
145
198
  text(txt: string): StringJoiningTransformer;
146
199
  /**
147
- * Unlike text(), does not escape for HTML; unlike string(), does not perform
148
- * JSON stringification; unlike append(), does not do other checks (but still
149
- * varies in its role across transformers).
150
- * @param {string} str
151
- * @returns {StringJoiningTransformer}
152
- */
200
+ * @param {string} text
201
+ * @returns {StringJoiningTransformer}}
202
+ */
203
+ comment(text: string): StringJoiningTransformer;
204
+ /**
205
+ * @param {string} target
206
+ * @param {string} data
207
+ * @returns {StringJoiningTransformer}}
208
+ */
209
+ processingInstruction(target: string, data: string): StringJoiningTransformer;
210
+ /**
211
+ * Unlike text(), does not escape for HTML; unlike string(), does not perform
212
+ * JSON stringification; unlike append(), does not do other checks (but
213
+ * still varies in its role across transformers).
214
+ * @param {string} str
215
+ * @returns {StringJoiningTransformer}
216
+ */
153
217
  rawAppend(str: string): StringJoiningTransformer;
154
218
  /**
155
219
  * @param {string} str - Plain text to append without escaping
156
220
  * @returns {StringJoiningTransformer}
157
221
  */
158
222
  plainText(str: string): StringJoiningTransformer;
223
+ /**
224
+ * Creates a new string document and executes a callback in its context.
225
+ * Similar to XSLT's xsl:document, this allows templates to generate
226
+ * multiple output documents. The created document is pushed to this._docs
227
+ * and will be included in the result when exposeDocuments is true.
228
+ *
229
+ * @param {(this: StringJoiningTransformer) => void} cb
230
+ * Callback that builds the document content
231
+ * @param {OutputConfig} [cfg]
232
+ * Output configuration for the document (encoding, doctype, etc.)
233
+ * @returns {StringJoiningTransformer}
234
+ */
235
+ document(cb: (this: StringJoiningTransformer) => void, cfg?: OutputConfig): StringJoiningTransformer;
236
+ /**
237
+ * Creates a new result document with metadata (href, format).
238
+ * Similar to XSLT's xsl:result-document, this allows templates to generate
239
+ * multiple output documents with associated metadata like URIs. The created
240
+ * document is stored in this._resultDocuments with the provided href.
241
+ *
242
+ * @param {string} href - URI/path for the result document
243
+ * @param {(this: StringJoiningTransformer) => void} cb
244
+ * Callback that builds the document content
245
+ * @param {OutputConfig} [cfg]
246
+ * Output configuration for the document (encoding, doctype, format, etc.)
247
+ * @returns {StringJoiningTransformer}
248
+ */
249
+ resultDocument(href: string, cb: (this: StringJoiningTransformer) => void, cfg?: OutputConfig): StringJoiningTransformer;
159
250
  /**
160
251
  * Helper method to use property sets.
161
- * @param {object} obj - Object to apply property set to
252
+ * @param {Record<string, unknown>} obj - Object to apply property set to
162
253
  * @param {string} psName - Property set name
163
- * @returns {object}
254
+ * @returns {Record<string, unknown>}
164
255
  */
165
- _usePropertySets(obj: object, psName: string): object;
256
+ _usePropertySets(obj: Record<string, unknown>, psName: string): Record<string, unknown>;
166
257
  }
167
258
  import AbstractJoiningTransformer from './AbstractJoiningTransformer.js';
168
259
  //# sourceMappingURL=StringJoiningTransformer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StringJoiningTransformer.d.ts","sourceRoot":"","sources":["../src/StringJoiningTransformer.js"],"names":[],"mappings":";AAuBA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH;IACE;;;OAGG;IACH,eAHW,MAAM,OACN,MAAM,EAsBhB;IAjBC,aAAmB;IACnB,kBAAkB;IAClB,cADW,GAAG,CACe;IAC7B,kCAAkC;IAClC,eADW,OAAO,GAAG,SAAS,CACA;IAC9B,kCAAkC;IAClC,eADW,OAAO,GAAG,SAAS,CACA;IAC9B,kCAAkC;IAClC,eADW,OAAO,GAAG,SAAS,CACA;IAC9B,kBAAkB;IAClB,MADW,GAAG,CACO;IACrB,oBAAoB;IACpB,MADW,GAAG,EAAE,CACF;IACd,iCAAiC;IACjC,UADW,MAAM,GAAG,SAAS,CACJ;IACzB,kCAAkC;IAClC,cADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACR;IAGxB;;;OAGG;IACH,UAHW,MAAM,GAAC,GAAC,GACN,wBAAwB,CAqBpC;IAED;;OAEG;IACH,OAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,gBAJW,MAAM,OACN,GAAC,GACC,wBAAwB,CAUpC;IAED;;;;OAIG;IACH,eAJW,MAAM,iBAEJ,wBAAwB,CAuBpC;IAED;;;;;;OAMG;IACH,YANW,MAAM,GAAC,OAAO,kCAEd,GAAG,EAAE,aACL,MAAM,GACJ,wBAAwB,CAkDpC;IAED;;;;OAIG;IACH,YAJW,GAAG,EAAE,GAAC,OAAO,kBAEX,wBAAwB,CA2CpC;IAED;;;;OAIG;IACH,YAJW,MAAM,GAAC,OAAO,GAAC,MAAM,kBAEnB,wBAAwB,CA4BpC;IAED;;;OAGG;IACH,YAHW,MAAM,GAAC,OAAO,GAAC,MAAM,GACnB,wBAAwB,CAWpC;IAED;;;OAGG;IACH,cAHW,OAAO,GAAC,OAAO,GAAC,MAAM,GACpB,wBAAwB,CAWpC;IAED;;OAEG;IACH,QAFa,wBAAwB,CAMpC;IAED;;OAEG;IACH,aAFa,wBAAwB,CAWpC;IAED;;;OAGG;IACH,qBAHW,MAAM,GAAC,OAAO,GACZ,wBAAwB,CAgBpC;IAED;;;OAGG;IACH,eAHW,WAAS,OAAO,GACd,wBAAwB,CAgBpC;IAED;;;;;;OAMG;IACH,gBANW,MAAM,GAAC,MAAM,SACb,MAAM,eACN,GAAG,EAAE,kBAEH,wBAAwB,CA2EpC;IAtBC,mBAAyB;IAwB3B;;;;;;OAMG;IACH,gBANW,MAAM,OACN,MAAM,GAAC,MAAM,mBACb,OAAO,GAEL,wBAAwB,CAqDpC;IAED;;;OAGG;IACH,UAHW,MAAM,GACJ,wBAAwB,CAWpC;IAED;;;;;;MAME;IACF,eAHU,MAAM,GACJ,wBAAwB,CAMnC;IAED;;;OAGG;IACH,eAHW,MAAM,GACJ,wBAAwB,CAQpC;IAED;;;;;OAKG;IACH,sBAJW,MAAM,UACN,MAAM,GACJ,MAAM,CAWlB;CACF;uCAtkBsC,iCAAiC"}
1
+ {"version":3,"file":"StringJoiningTransformer.d.ts","sourceRoot":"","sources":["../src/StringJoiningTransformer.js"],"names":[],"mappings":"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"}
@@ -1,16 +1,39 @@
1
1
  export default XPathTransformer;
2
+ export type XPathTransformerConfig<T> = {
3
+ /**
4
+ * Throw on equal priority
5
+ */
6
+ errorOnEqualPriority?: boolean | undefined;
7
+ /**
8
+ * Template objects
9
+ */
10
+ templates: import("./index.js").XPathTemplateArray<T>;
11
+ /**
12
+ * XPath version (1|2)
13
+ */
14
+ xpathVersion?: number | undefined;
15
+ };
16
+ /**
17
+ * @template T
18
+ * @typedef {object} XPathTransformerConfig
19
+ * @property {boolean} [errorOnEqualPriority] Throw on equal priority
20
+ * @property {import('./index.js').
21
+ * XPathTemplateArray<T>} templates Template objects
22
+ * @property {number} [xpathVersion] XPath version (1|2)
23
+ */
2
24
  /**
3
25
  * Applies named XPath-driven templates to XML/HTML DOM data.
4
26
  *
5
27
  * Finds templates whose `path` XPath matches the current node (plus optional
6
28
  * `mode`), sorts by priority, and invokes the winning template.
7
29
  * Falls back to default rules when no template matches.
30
+ * @template T
8
31
  */
9
- declare class XPathTransformer {
32
+ declare class XPathTransformer<T> {
10
33
  static DefaultTemplateRules: {
11
34
  transformRoot: {
12
35
  /**
13
- * @param {*} node Node
36
+ * @param {any} node Node
14
37
  * @param {{mode:string}} cfg Config
15
38
  * @returns {void}
16
39
  */
@@ -20,32 +43,24 @@ declare class XPathTransformer {
20
43
  };
21
44
  };
22
45
  /**
23
- * @param {object} config Configuration
24
- * @param {boolean} [config.errorOnEqualPriority] Throw on equal priority
25
- * @param {any[]} config.templates Template objects
26
- * @param {number} [config.xpathVersion] XPath version (1|2)
46
+ * @param {XPathTransformerConfig<T> &
47
+ * import('./XPathTransformerContext.js').
48
+ * XPathTransformerContextConfig} config Configuration
27
49
  */
28
- constructor(config: {
29
- errorOnEqualPriority?: boolean | undefined;
30
- templates: any[];
31
- xpathVersion?: number | undefined;
32
- });
33
- _config: {
34
- errorOnEqualPriority?: boolean | undefined;
35
- templates: any[];
36
- xpathVersion?: number | undefined;
37
- };
50
+ constructor(config: XPathTransformerConfig<T> & import("./XPathTransformerContext.js").XPathTransformerContextConfig);
51
+ _config: XPathTransformerConfig<T> & import("./XPathTransformerContext.js").XPathTransformerContextConfig;
38
52
  /** @type {any[]} */
39
53
  rootTemplates: any[];
40
- templates: any[];
54
+ /** @type {import('./index.js').XPathTemplateObject<T>[]} */
55
+ templates: import("./index.js").XPathTemplateObject<T>[];
41
56
  /**
42
57
  * @returns {void}
43
58
  */
44
59
  _triggerEqualPriorityError(): void;
45
60
  /**
46
- * @param {string} mode Transformation mode
47
- * @returns {*} Result of transformation
61
+ * @param {string} [mode] Transformation mode
62
+ * @returns {import('./index.js').ResultType<T>} Result of transformation
48
63
  */
49
- transform(mode: string): any;
64
+ transform(mode?: string): import("./index.js").ResultType<T>;
50
65
  }
51
66
  //# sourceMappingURL=XPathTransformer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"XPathTransformer.d.ts","sourceRoot":"","sources":["../src/XPathTransformer.js"],"names":[],"mappings":";AAEA;;;;;;GAMG;AACH;IAsEE;;YAEI;;;;eAIG;2BAHQ,GAAC,OACD;gBAAC,IAAI,EAAC,MAAM,CAAA;aAAC,GACX,IAAI;;MAMnB;IAhFF;;;;;OAKG;IACH,oBAJG;QAAyB,oBAAoB;QACvB,SAAS,EAAvB,GAAG,EAAE;QACW,YAAY;KACtC,EA4BA;IAzBC;;mBALS,GAAG,EAAE;;MAKO;IACrB,oBAAoB;IACpB,eADW,GAAG,EAAE,CACO;IACvB,iBAAiC;IAwBnC;;OAEG;IACH,8BAFa,IAAI,CAShB;IAED;;;OAGG;IACH,gBAHW,MAAM,GACJ,GAAC,CAkBb;CAcF"}
1
+ {"version":3,"file":"XPathTransformer.d.ts","sourceRoot":"","sources":["../src/XPathTransformer.js"],"names":[],"mappings":";mCAGa,CAAC;;;;;;;;eAGA,OAAO,YAAY,EAC5B,kBAAkB,CAAC,CAAC,CAAC;;;;;;AAL1B;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,+BAFa,CAAC;IA6EZ;;YAEI;;;;eAIG;2BAHQ,GAAG,OACH;gBAAC,IAAI,EAAC,MAAM,CAAA;aAAC,GACX,IAAI;;MAMnB;IArFF;;;;OAIG;IACH,oBAJW,sBAAsB,CAAC,CAAC,CAAC,GACnC,OAAW,8BAA8B,EACrC,6BAA6B,EAiCjC;IA7BC,0GAAqB;IACrB,oBAAoB;IACpB,eADW,GAAG,EAAE,CACO;IAEvB,4DAA4D;IAC5D,WADW,OAAO,YAAY,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAMtD;IAqBJ;;OAEG;IACH,8BAFa,IAAI,CAShB;IAED;;;OAGG;IACH,iBAHW,MAAM,GACJ,OAAO,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAoB9C;CAcF"}