jtlt 0.2.0 → 0.4.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 (70) hide show
  1. package/CHANGES.md +27 -0
  2. package/README.md +61 -164
  3. package/demo/calltemplate-params-demo.js +138 -0
  4. package/demo/codemirror.esm.js +28242 -0
  5. package/demo/codemirror.js +94 -0
  6. package/demo/index.css +7 -0
  7. package/demo/index.html +28 -0
  8. package/demo/index.js +210 -0
  9. package/demo/vendor/jamilih/dist/jml.mjs +2341 -0
  10. package/demo/vendor/jhtml/src/SAJJ/SAJJ.ObjectArrayDelegator.js +356 -0
  11. package/demo/vendor/jhtml/src/SAJJ/SAJJ.Stringifier.js +186 -0
  12. package/demo/vendor/jhtml/src/SAJJ/SAJJ.js +746 -0
  13. package/demo/vendor/jhtml/src/SAJJ/testing/SAJJ.html +33 -0
  14. package/demo/vendor/jhtml/src/SAJJ/testing/SAJJ.testing.js +25 -0
  15. package/demo/vendor/jhtml/src/jhtml-browser.js +5 -0
  16. package/demo/vendor/jhtml/src/jhtml-node.cts +3 -0
  17. package/demo/vendor/jhtml/src/jhtml-node.js +8 -0
  18. package/demo/vendor/jhtml/src/jhtml-node.mts +1 -0
  19. package/demo/vendor/jhtml/src/jhtml.cts +3 -0
  20. package/demo/vendor/jhtml/src/jhtml.js +602 -0
  21. package/demo/vendor/jhtml/src/jhtml.mts +1 -0
  22. package/demo/vendor/jsonpath-plus/dist/index-browser-esm.js +2158 -0
  23. package/demo/vendor/simple-get-json/dist/index-es.js +151 -0
  24. package/demo/xpath2-placeholder.js +1 -0
  25. package/dist/AbstractJoiningTransformer.d.ts +83 -9
  26. package/dist/AbstractJoiningTransformer.d.ts.map +1 -1
  27. package/dist/DOMJoiningTransformer.d.ts +85 -25
  28. package/dist/DOMJoiningTransformer.d.ts.map +1 -1
  29. package/dist/JSONJoiningTransformer.d.ts +159 -51
  30. package/dist/JSONJoiningTransformer.d.ts.map +1 -1
  31. package/dist/JSONPathTransformer.d.ts +37 -38
  32. package/dist/JSONPathTransformer.d.ts.map +1 -1
  33. package/dist/JSONPathTransformerContext.d.ts +334 -124
  34. package/dist/JSONPathTransformerContext.d.ts.map +1 -1
  35. package/dist/StringJoiningTransformer.d.ts +132 -41
  36. package/dist/StringJoiningTransformer.d.ts.map +1 -1
  37. package/dist/XPathTransformer.d.ts +35 -20
  38. package/dist/XPathTransformer.d.ts.map +1 -1
  39. package/dist/XPathTransformerContext.d.ts +281 -105
  40. package/dist/XPathTransformerContext.d.ts.map +1 -1
  41. package/dist/index-browser.d.ts +4 -0
  42. package/dist/index-browser.d.ts.map +1 -0
  43. package/dist/index-node.d.ts +4 -0
  44. package/dist/index-node.d.ts.map +1 -0
  45. package/dist/index.d.ts +330 -57
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/types.d.ts +204 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/docs/API.expanded.md +172 -5
  50. package/docs/API.md +92 -2
  51. package/docs/TO-DO.md +168 -0
  52. package/docs/calltemplate-params.md +251 -0
  53. package/eslint.config.js +11 -5
  54. package/package.json +35 -9
  55. package/pnpm-workspace.yaml +1 -0
  56. package/rollup.config.js +13 -0
  57. package/src/AbstractJoiningTransformer.js +54 -15
  58. package/src/DOMJoiningTransformer.js +275 -28
  59. package/src/JSONJoiningTransformer.js +351 -70
  60. package/src/JSONPathTransformer.js +48 -30
  61. package/src/JSONPathTransformerContext.js +729 -107
  62. package/src/StringJoiningTransformer.js +311 -57
  63. package/src/XPathTransformer.js +27 -12
  64. package/src/XPathTransformerContext.js +928 -99
  65. package/src/index-browser.js +5 -0
  66. package/src/index-node.js +7 -0
  67. package/src/index.js +502 -98
  68. package/tsconfig.json +5 -2
  69. package/typings/xpath2-js.d.ts +40 -1
  70. package/src/types/xpath2-js.d.ts +0 -2
@@ -1,43 +1,64 @@
1
1
  export default XPathTransformerContext;
2
+ export type XPathTransformerContextConfig = {
3
+ /**
4
+ * - XML/DOM root to transform
5
+ */
6
+ data?: unknown;
7
+ /**
8
+ * - 1, 2, 3.1 (default 1)
9
+ */
10
+ xpathVersion?: number | undefined;
11
+ /**
12
+ * Joiner
13
+ */
14
+ joiningTransformer: import("./index.js").JoiningTransformer;
15
+ errorOnEqualPriority?: boolean | undefined;
16
+ specificityPriorityResolver?: ((path: string) => number) | undefined;
17
+ };
18
+ /**
19
+ * @typedef {object} XPathTransformerContextConfig
20
+ * @property {unknown} [data] - XML/DOM root to transform
21
+ * @property {number} [xpathVersion] - 1, 2, 3.1 (default 1)
22
+ * @property {import('./index.js').
23
+ * JoiningTransformer} joiningTransformer Joiner
24
+ * @property {boolean} [errorOnEqualPriority]
25
+ * @property {(path: string) => number} [specificityPriorityResolver]
26
+ */
2
27
  /**
3
28
  * Execution context for XPath-driven template application.
4
29
  *
5
30
  * Similar to JSONPathTransformerContext but uses XPath expressions on a
6
- * DOM/XML-like tree. Supports XPath 1.0 (default) or 2.0 when
7
- * `xpathVersion: 2`.
31
+ * DOM/XML-like tree. Supports XPath 1.0 (default), 2.0 when
32
+ * `xpathVersion: 2`, or 3.1 when `xpathVersion: 3.1`.
8
33
  *
9
34
  * Expected config:
10
35
  * - data: A Document, Element, or XML-like root node.
11
36
  * - joiningTransformer: joiner with append(), string(), object(), array(), etc.
12
- * - xpathVersion: 1|2 (default 1)
37
+ * - xpathVersion: 1|2|3.1 (default 1)
13
38
  * - errorOnEqualPriority, specificityPriorityResolver (same semantics).
14
39
  */
15
40
  declare class XPathTransformerContext {
16
- /**
17
- * Log a message (for debugging).
18
- * @param {*} json Any value
19
- * @returns {void}
20
- */
21
- static message(json: any): void;
22
41
  static DefaultTemplateRules: {
23
42
  transformRoot: {
24
43
  /**
25
- * @param {*} node Root node
44
+ * @this {XPathTransformerContext}
45
+ * @param {unknown} node Root node
26
46
  * @param {{mode:string}} cfg Config
27
47
  * @returns {void}
28
48
  */
29
- template(node: any, cfg: {
49
+ template(this: XPathTransformerContext, node: unknown, cfg: {
30
50
  mode: string;
31
51
  }): void;
32
52
  };
33
53
  transformElements: {
34
54
  /**
35
- * @param {*} node Element node
36
- * @param {{mode:string}} cfg Config
55
+ * @this {XPathTransformerContext}
56
+ * @param {unknown} node Element node
57
+ * @param {{mode?:string}} cfg Config
37
58
  * @returns {void}
38
59
  */
39
- template(node: any, cfg: {
40
- mode: string;
60
+ template(this: XPathTransformerContext, node: unknown, cfg: {
61
+ mode?: string;
41
62
  }): void;
42
63
  };
43
64
  transformTextNodes: {
@@ -50,114 +71,117 @@ declare class XPathTransformerContext {
50
71
  }): string;
51
72
  };
52
73
  transformScalars: {
53
- /** @returns {*} */
54
- template(): any;
74
+ /**
75
+ * @this {XPathTransformerContext}
76
+ * @returns {XPathTransformerContext}
77
+ */
78
+ template(this: XPathTransformerContext): XPathTransformerContext;
55
79
  };
56
80
  };
57
81
  /**
58
- * @param {object} config - Configuration object
59
- * @param {Document|Element|any} config.data - XML/DOM root to transform
60
- * @param {number} [config.xpathVersion] - 1 or 2 (default 1)
61
- * @param {object} config.joiningTransformer Joiner
62
- * @param {Function} config.joiningTransformer.append Append output
63
- * @param {Function} config.joiningTransformer.get Get output
64
- * @param {Function} config.joiningTransformer.string Emit string
65
- * @param {Function} config.joiningTransformer.object Emit object
66
- * @param {Function} config.joiningTransformer.array Emit array
67
- * @param {boolean} [config.errorOnEqualPriority]
68
- * @param {Function} [config.specificityPriorityResolver]
69
- * @param {any[]} templates - Template objects
70
- */
71
- constructor(config: {
72
- data: Document | Element | any;
73
- xpathVersion?: number | undefined;
74
- joiningTransformer: {
75
- append: Function;
76
- get: Function;
77
- string: Function;
78
- object: Function;
79
- array: Function;
80
- };
81
- errorOnEqualPriority?: boolean | undefined;
82
- specificityPriorityResolver?: Function | undefined;
83
- }, templates: any[]);
84
- _config: {
85
- data: Document | Element | any;
86
- xpathVersion?: number | undefined;
87
- joiningTransformer: {
88
- append: Function;
89
- get: Function;
90
- string: Function;
91
- object: Function;
92
- array: Function;
93
- };
94
- errorOnEqualPriority?: boolean | undefined;
95
- specificityPriorityResolver?: Function | undefined;
96
- };
97
- _templates: any[];
98
- _contextNode: any;
99
- _origNode: any;
100
- /** @type {Record<string, any>} */
101
- vars: Record<string, any>;
102
- /** @type {Record<string, any>} */
103
- propertySets: Record<string, any>;
104
- /** @type {Record<string, any>} */
105
- keys: Record<string, any>;
82
+ * @param {XPathTransformerContextConfig} config
83
+ * @param {import('./index.js').
84
+ * XPathTemplateObject<any>[]} templates - Template objects
85
+ */
86
+ constructor(config: XPathTransformerContextConfig, templates: import("./index.js").XPathTemplateObject<any>[]);
87
+ _config: XPathTransformerContextConfig;
88
+ _templates: import("./index.js").XPathTemplateObject<any>[];
89
+ /** @type {Document|Element|Node} */
90
+ _contextNode: Document | Element | Node;
91
+ _origNode: Document | Element | Node;
92
+ /** @type {Record<string, unknown>} */
93
+ vars: Record<string, unknown>;
94
+ /** @type {Record<string, Record<string, unknown>>} */
95
+ propertySets: Record<string, Record<string, unknown>>;
96
+ /** @type {Record<string, {match: string, use: string}>} */
97
+ keys: Record<string, {
98
+ match: string;
99
+ use: string;
100
+ }>;
106
101
  /** @type {boolean|undefined} */
107
102
  _initialized: boolean | undefined;
108
103
  /** @type {string|undefined} */
109
104
  _currPath: string | undefined;
110
- /** @returns {any} */
111
- _getJoiningTransformer(): any;
105
+ /** @type {Record<string, any> | undefined} */
106
+ _params: Record<string, any> | undefined;
107
+ /** @returns {import('./index.js').JoiningTransformer} */
108
+ _getJoiningTransformer(): import("./index.js").JoiningTransformer;
112
109
  /**
113
110
  * Evaluate an XPath expression against the current context node.
114
111
  * @param {string} expr - XPath expression
115
- * @param {boolean} [asNodes] Return nodes (array) instead of scalar
116
- * @returns {any}
112
+ * @param {boolean} [asNodes] Return nodes (array) instead of scalar
113
+ * @returns {unknown}
117
114
  */
118
- _evalXPath(expr: string, asNodes?: boolean): any;
115
+ _evalXPath(expr: string, asNodes?: boolean): unknown;
119
116
  /**
120
117
  * Append raw item to output.
121
- * @param {*} item
118
+ * @param {unknown} item
122
119
  * @returns {XPathTransformerContext}
123
120
  */
124
- appendOutput(item: any): XPathTransformerContext;
125
- /** @returns {*} */
126
- getOutput(): any;
121
+ appendOutput(item: unknown): XPathTransformerContext;
122
+ /** @returns {unknown} */
123
+ getOutput(): unknown;
127
124
  /**
128
125
  * Get value(s) by XPath relative to current context.
129
126
  * @param {string} select - XPath expression
130
127
  * @param {boolean} [asNodes]
131
- * @returns {*}
128
+ * @returns {Node[]}
132
129
  */
133
- get(select: string, asNodes?: boolean): any;
130
+ get(select: string, asNodes?: boolean): Node[];
134
131
  /**
135
132
  * Set current context's parent property (for parity with JSONPath context).
136
133
  * Mostly placeholder for object-mirroring behavior.
137
- * @param {*} v
134
+ * @param {Document|Element|Node} v
138
135
  * @returns {XPathTransformerContext}
139
136
  */
140
- set(v: any): XPathTransformerContext;
137
+ set(v: Document | Element | Node): XPathTransformerContext;
141
138
  /**
142
139
  * Apply templates to nodes matched by an XPath expression.
143
- * @param {string} select - XPath expression (default '.')
140
+ * @param {string} [select] - XPath expression (default '.')
144
141
  * @param {string} [mode]
145
142
  * @returns {XPathTransformerContext}
146
143
  */
147
- applyTemplates(select: string, mode?: string): XPathTransformerContext;
144
+ applyTemplates(select?: string, mode?: string): XPathTransformerContext;
145
+ /**
146
+ * @param {string|
147
+ * {name: string, withParam?: any[]}} name - Template name or
148
+ * options object
149
+ * @param {any[]} [withParams] - Parameters to pass to template
150
+ * @returns {this}
151
+ */
152
+ callTemplate(name: string | {
153
+ name: string;
154
+ withParam?: any[];
155
+ }, withParams?: any[]): this;
148
156
  /**
149
157
  * Iterate over nodes selected by XPath.
150
158
  * @param {string} select - XPath expression
151
- * @param {Function} cb - Callback invoked per node
159
+ * @param {(this: XPathTransformerContext,
160
+ * node: Node
161
+ * )=>void} cb - Callback invoked per node
152
162
  * @returns {XPathTransformerContext}
153
163
  */
154
- forEach(select: string, cb: Function): XPathTransformerContext;
164
+ forEach(select: string, cb: (this: XPathTransformerContext, node: Node) => void): XPathTransformerContext;
155
165
  /**
156
166
  * Append the value from an XPath expression or the context node text.
157
167
  * @param {string|object} [select]
158
168
  * @returns {XPathTransformerContext}
159
169
  */
160
170
  valueOf(select?: string | object): XPathTransformerContext;
171
+ /**
172
+ * Deep copy selection or current context when omitted.
173
+ * For DOM nodes uses cloneNode(true); for scalars copies the value.
174
+ * @param {string} [select] XPath expression selecting nodes (optional)
175
+ * @returns {XPathTransformerContext}
176
+ */
177
+ copyOf(select?: string): XPathTransformerContext;
178
+ /**
179
+ * Shallow copy current context node (cloneNode(false)); scalars copied
180
+ * directly. Provided for parity with JSONPath copy().
181
+ * @param {string[]} [_propertySets] Ignored in XPath variant (parity only)
182
+ * @returns {XPathTransformerContext}
183
+ */
184
+ copy(_propertySets?: string[]): XPathTransformerContext;
161
185
  /**
162
186
  * Define a variable by XPath selection (stores node array if nodes).
163
187
  * @param {string} name Variable name
@@ -165,19 +189,83 @@ declare class XPathTransformerContext {
165
189
  * @returns {XPathTransformerContext}
166
190
  */
167
191
  variable(name: string, select: string): XPathTransformerContext;
192
+ /**
193
+ * Log a message (for debugging).
194
+ * @param {unknown} json Any value
195
+ * @returns {void}
196
+ */
197
+ message(json: unknown): void;
168
198
  /**
169
199
  * Append string.
170
200
  * @param {string} str String to append
171
- * @param {Function} [cb] Callback
201
+ * @param {(this: XPathTransformerContext) => void} [cb] Callback
172
202
  * @returns {XPathTransformerContext}
173
203
  */
174
- string(str: string, cb?: Function): XPathTransformerContext;
204
+ string(str: string, cb?: (this: XPathTransformerContext) => void): XPathTransformerContext;
175
205
  /**
176
- * Append number.
177
- * @param {number} num Number
206
+ * Append number with xsl:number-like formatting.
207
+ * @param {number|string|{
208
+ * value?: number|string,
209
+ * count?: string,
210
+ * level?: 'single'|'multiple'|'any',
211
+ * from?: string,
212
+ * format?: string,
213
+ * groupingSeparator?: string,
214
+ * groupingSize?: number
215
+ * }} num - Number value, "position()" string, or options object
178
216
  * @returns {XPathTransformerContext}
179
217
  */
180
- number(num: number): XPathTransformerContext;
218
+ number(num: number | string | {
219
+ value?: number | string;
220
+ count?: string;
221
+ level?: "single" | "multiple" | "any";
222
+ from?: string;
223
+ format?: string;
224
+ groupingSeparator?: string;
225
+ groupingSize?: number;
226
+ }): XPathTransformerContext;
227
+ /**
228
+ * Calculate position of current node.
229
+ * @param {string} [count] - XPath pattern to match
230
+ * @param {string} [from] - XPath pattern for ancestor
231
+ * @returns {number}
232
+ * @private
233
+ */
234
+ private _calculatePosition;
235
+ /**
236
+ * Calculate position counting all ancestors (level=any).
237
+ * @param {string} [count] - XPath pattern to match
238
+ * @param {string} [from] - XPath pattern for ancestor
239
+ * @returns {number}
240
+ * @private
241
+ */
242
+ private _calculatePositionAny;
243
+ /**
244
+ * Format a number according to format string.
245
+ * @param {number} num - Number to format
246
+ * @param {string} format - Format string (1, a, A, i, I, 01, etc.)
247
+ * @param {string} [groupingSeparator] - Separator for grouping (e.g., ',')
248
+ * @param {number} [groupingSize] - Size of groups (e.g., 3 for 1,000)
249
+ * @param {string} [locale]
250
+ * @returns {string}
251
+ * @private
252
+ */
253
+ private _formatNumber;
254
+ /**
255
+ * Convert number to Roman numerals.
256
+ * @param {number} num - Number to convert (1-3999)
257
+ * @returns {string}
258
+ * @private
259
+ */
260
+ private _toRoman;
261
+ /**
262
+ * Convert number to alphabetic sequence.
263
+ * @param {number} num - Number to convert
264
+ * @param {boolean} uppercase - Use uppercase letters
265
+ * @returns {string}
266
+ * @private
267
+ */
268
+ private _toAlphabetic;
181
269
  /**
182
270
  * Append plain text (no escaping changes).
183
271
  * @param {string} str Text
@@ -187,65 +275,96 @@ declare class XPathTransformerContext {
187
275
  /**
188
276
  * Append property/value pair.
189
277
  * @param {string} prop Property name
190
- * @param {*} val Value
278
+ * @param {any} val Value
191
279
  * @returns {XPathTransformerContext}
192
280
  */
193
281
  propValue(prop: string, val: any): XPathTransformerContext;
194
282
  /**
195
283
  * Append object.
196
- * @param {...any} args Object args
284
+ * @param {Record<string, unknown>|
285
+ * ((this: XPathTransformerContext) => void)} objOrCb Object or callback
286
+ * @param {((this: XPathTransformerContext) => void)|
287
+ * any[]} [cbOrUsePropertySets] Callback or property sets
288
+ * @param {any[]|
289
+ * Record<string, unknown>} [usePropertySetsOrPropSets]
290
+ * Property sets or props
291
+ * @param {Record<string, unknown>} [propSets] Additional property sets
197
292
  * @returns {XPathTransformerContext}
198
293
  */
199
- object(...args: any[]): XPathTransformerContext;
294
+ object(objOrCb: Record<string, unknown> | ((this: XPathTransformerContext) => void), cbOrUsePropertySets?: ((this: XPathTransformerContext) => void) | any[], usePropertySetsOrPropSets?: any[] | Record<string, unknown>, propSets?: Record<string, unknown>): XPathTransformerContext;
200
295
  /**
201
296
  * Append array.
202
- * @param {...any} args Array args
297
+ * @param {any[]|
298
+ * ((this: XPathTransformerContext) => void)} [arrOrCb]
299
+ * Array or callback
300
+ * @param {(this: XPathTransformerContext) => void} [cb] Callback
203
301
  * @returns {XPathTransformerContext}
204
302
  */
205
- array(...args: any[]): XPathTransformerContext;
303
+ array(arrOrCb?: any[] | ((this: XPathTransformerContext) => void), cb?: (this: XPathTransformerContext) => void): XPathTransformerContext;
304
+ /**
305
+ * Append text node content.
306
+ * @param {import('./StringJoiningTransformer.js').OutputConfig} cfg Text
307
+ * @returns {XPathTransformerContext}
308
+ */
309
+ output(cfg: import("./StringJoiningTransformer.js").OutputConfig): XPathTransformerContext;
206
310
  /**
207
311
  * Append element.
208
312
  * @param {string} name Tag name
209
- * @param {object} [atts] Attributes
210
- * @param {any[]} [children] Children
211
- * @param {Function} [cb] Callback
313
+ * @param {Record<string, string>|any[]|
314
+ * ((this: XPathTransformerContext)=>void)} [atts] Attributes
315
+ * @param {any[]|((this: XPathTransformerContext)=>void)} [children]
316
+ * Children
317
+ * @param {(this: XPathTransformerContext)=>void} [cb] Callback
212
318
  * @returns {XPathTransformerContext}
213
319
  */
214
- element(name: string, atts?: object, children?: any[], cb?: Function): XPathTransformerContext;
320
+ element(name: string, atts?: Record<string, string> | any[] | ((this: XPathTransformerContext) => void), children?: any[] | ((this: XPathTransformerContext) => void), cb?: (this: XPathTransformerContext) => void): XPathTransformerContext;
215
321
  /**
216
322
  * Append attribute.
217
323
  * @param {string} name Attribute name
218
- * @param {string|object} val Value
324
+ * @param {string|Record<string, unknown>} val Value
219
325
  * @param {boolean} [avoid] Avoid duplicates
220
326
  * @returns {XPathTransformerContext}
221
327
  */
222
- attribute(name: string, val: string | object, avoid?: boolean): XPathTransformerContext;
328
+ attribute(name: string, val: string | Record<string, unknown>, avoid?: boolean): XPathTransformerContext;
223
329
  /**
224
330
  * Append text node content.
225
331
  * @param {string} txt Text
226
332
  * @returns {XPathTransformerContext}
227
333
  */
228
334
  text(txt: string): XPathTransformerContext;
335
+ /**
336
+ * Append a comment.
337
+ * @param {string} text - Comment text
338
+ * @returns {XPathTransformerContext}
339
+ */
340
+ comment(text: string): XPathTransformerContext;
341
+ /**
342
+ * Append a processing instruction.
343
+ * @param {string} target - Processing instruction target
344
+ * @param {string} data - Processing instruction data
345
+ * @returns {XPathTransformerContext}
346
+ */
347
+ processingInstruction(target: string, data: string): XPathTransformerContext;
229
348
  /**
230
349
  * Define a property set (optionally composed from other sets).
231
350
  * @param {string} name Property set name
232
- * @param {object} obj Base properties
351
+ * @param {Record<string, unknown>} obj Base properties
233
352
  * @param {string[]} [use] Property set names to merge
234
353
  * @returns {XPathTransformerContext}
235
354
  */
236
- propertySet(name: string, obj: object, use?: string[]): XPathTransformerContext;
355
+ propertySet(name: string, obj: Record<string, unknown>, use?: string[]): XPathTransformerContext;
237
356
  /**
238
357
  * Merge properties from a named property set into obj.
239
- * @param {object} obj Target object
358
+ * @param {Record<string, unknown>} obj Target object
240
359
  * @param {string} name Property set name
241
- * @returns {object}
360
+ * @returns {Record<string, unknown>}
242
361
  */
243
- _usePropertySets(obj: object, name: string): object;
362
+ _usePropertySets(obj: Record<string, unknown>, name: string): Record<string, unknown>;
244
363
  /**
245
364
  * Retrieve a key-mapped node matching a value or return context.
246
365
  * @param {string} name Key name
247
- * @param {*} value Value to match
248
- * @returns {*}
366
+ * @param {any} value Value to match
367
+ * @returns {any}
249
368
  */
250
369
  getKey(name: string, value: any): any;
251
370
  /**
@@ -256,5 +375,62 @@ declare class XPathTransformerContext {
256
375
  * @returns {XPathTransformerContext}
257
376
  */
258
377
  key(name: string, match: string, use: string): XPathTransformerContext;
378
+ /**
379
+ * Conditionally execute a callback when an XPath evaluates to a truthy
380
+ * scalar or a non-empty node set (akin to xsl:if semantics).
381
+ *
382
+ * Truthiness rules:
383
+ * - Node set: length > 0 passes.
384
+ * - Scalar: Boolean(value) must be true.
385
+ *
386
+ * @param {string} select XPath expression
387
+ * @param {(this: XPathTransformerContext)
388
+ * => void} cb Callback invoked if condition passes
389
+ * @returns {XPathTransformerContext}
390
+ */
391
+ if(select: string, cb: (this: XPathTransformerContext) => void): XPathTransformerContext;
392
+ /**
393
+ * Internal helper: evaluate XPath truthiness like if().
394
+ * @param {string} select
395
+ * @returns {boolean}
396
+ */
397
+ _passesIf(select: string): boolean;
398
+ /**
399
+ * Conditional with optional fallback (like choose/otherwise).
400
+ * Truthiness same as `if()`.
401
+ * @param {string} select XPath expression
402
+ * @param {(this: XPathTransformerContext)
403
+ * => void} whenCb Callback when condition passes
404
+ * @param {(this: XPathTransformerContext)
405
+ * => void} [otherwiseCb] Callback when condition fails
406
+ * @returns {XPathTransformerContext}
407
+ */
408
+ choose(select: string, whenCb: (this: XPathTransformerContext) => void, otherwiseCb?: (this: XPathTransformerContext) => void): XPathTransformerContext;
409
+ /**
410
+ * Analyze a string with a regular expression, equivalent to
411
+ * xsl:analyze-string. Processes matching and non-matching substrings
412
+ * with separate callbacks.
413
+ * @param {string} str - The string to analyze
414
+ * @param {string|RegExp} regex - Regular expression to match against
415
+ * @param {{
416
+ * matchingSubstring?: (
417
+ * this: XPathTransformerContext,
418
+ * substring: string,
419
+ * groups: string[],
420
+ * regexGroup: (n: number) => string
421
+ * ) => void,
422
+ * nonMatchingSubstring?: (
423
+ * this: XPathTransformerContext,
424
+ * substring: string
425
+ * ) => void,
426
+ * flags?: string
427
+ * }} options - Options object
428
+ * @returns {XPathTransformerContext}
429
+ */
430
+ analyzeString(str: string, regex: string | RegExp, options?: {
431
+ matchingSubstring?: (this: XPathTransformerContext, substring: string, groups: string[], regexGroup: (n: number) => string) => void;
432
+ nonMatchingSubstring?: (this: XPathTransformerContext, substring: string) => void;
433
+ flags?: string;
434
+ }): XPathTransformerContext;
259
435
  }
260
436
  //# sourceMappingURL=XPathTransformerContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"XPathTransformerContext.d.ts","sourceRoot":"","sources":["../src/XPathTransformerContext.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"XPathTransformerContext.d.ts","sourceRoot":"","sources":["../src/XPathTransformerContext.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./index.js";
2
+ export default JTLT;
3
+ import JTLT from './index.js';
4
+ //# sourceMappingURL=index-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-browser.d.ts","sourceRoot":"","sources":["../src/index-browser.js"],"names":[],"mappings":";;iBAA8B,YAAY"}
@@ -0,0 +1,4 @@
1
+ export * from "./index.js";
2
+ export default JTLT;
3
+ import JTLT from './index.js';
4
+ //# sourceMappingURL=index-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-node.d.ts","sourceRoot":"","sources":["../src/index-node.js"],"names":[],"mappings":";;iBAC8B,YAAY"}