jtlt 0.13.0 → 0.14.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 (38) hide show
  1. package/CHANGES.md +10 -0
  2. package/README.md +99 -85
  3. package/demo/calltemplate-params-demo.js +13 -22
  4. package/demo/vendor/jhtml/src/SAJJ/SAJJ.ObjectArrayDelegator.js +17 -17
  5. package/demo/vendor/jhtml/src/SAJJ/SAJJ.js +60 -61
  6. package/demo/vendor/jhtml/src/jhtml-browser.js +1 -0
  7. package/demo/vendor/jhtml/src/jhtml-node.js +1 -0
  8. package/demo/vendor/jhtml/src/jhtml.js +18 -15
  9. package/dist/AbstractJoiningTransformer.d.ts +5 -5
  10. package/dist/AbstractJoiningTransformer.d.ts.map +1 -1
  11. package/dist/JSONPathTransformer.d.ts +13 -12
  12. package/dist/JSONPathTransformer.d.ts.map +1 -1
  13. package/dist/JSONPathTransformerContext.d.ts +50 -20
  14. package/dist/JSONPathTransformerContext.d.ts.map +1 -1
  15. package/dist/XPathTransformer.d.ts +9 -2
  16. package/dist/XPathTransformer.d.ts.map +1 -1
  17. package/dist/XPathTransformerContext.d.ts +46 -9
  18. package/dist/XPathTransformerContext.d.ts.map +1 -1
  19. package/dist/index.d.ts +104 -10
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/indexedDB.d.ts +107 -0
  22. package/dist/indexedDB.d.ts.map +1 -0
  23. package/dist/maybeAsync.d.ts +15 -0
  24. package/dist/maybeAsync.d.ts.map +1 -0
  25. package/docs/API.expanded.md +70 -20
  26. package/docs/API.md +34 -4
  27. package/docs/TO-DO.md +2 -2
  28. package/eslint.config.js +11 -3
  29. package/package.json +7 -5
  30. package/pnpm-workspace.yaml +9 -0
  31. package/src/AbstractJoiningTransformer.js +3 -3
  32. package/src/JSONPathTransformer.js +45 -7
  33. package/src/JSONPathTransformerContext.js +157 -22
  34. package/src/XPathTransformer.js +33 -1
  35. package/src/XPathTransformerContext.js +136 -16
  36. package/src/index.js +85 -8
  37. package/src/indexedDB.js +530 -0
  38. package/src/maybeAsync.js +44 -0
package/dist/index.d.ts CHANGED
@@ -36,7 +36,7 @@ export type TemplateObject<T, U, TCtx> = {
36
36
  };
37
37
  export type TemplateFunction<T, U, TCtx> = (this: TCtx, value: ResultType<U>, cfg?: {
38
38
  mode?: string;
39
- }) => ResultType<T> | void;
39
+ }) => ResultType<T> | void | Promise<ResultType<T> | void>;
40
40
  export type JSONPathTemplateObject<T extends "json" | "string" | "dom"> = TemplateObject<T, "json", import('./JSONPathTransformerContext.js').default<T>>;
41
41
  export type XPathTemplateObject<T> = TemplateObject<T, "dom", import('./XPathTransformerContext.js').default>;
42
42
  export type XPathTemplateArray<T> = (XPathTemplateObject<T> | [
@@ -47,17 +47,50 @@ export type JSONPathTemplateArray<T extends "json" | "string" | "dom"> = JSONPat
47
47
  string,
48
48
  TemplateFunction<T, "json", import('./JSONPathTransformerContext.js').default>
49
49
  ];
50
- export type JoiningTransformer = (StringJoiningTransformer | DOMJoiningTransformer | JSONJoiningTransformer);
50
+ export type JoiningTransformerContract = {
51
+ append: (item: unknown) => unknown;
52
+ get: () => unknown;
53
+ text?: (txt: string) => unknown;
54
+ string?: (str: unknown, cb?: () => void) => unknown;
55
+ number?: (num: unknown) => unknown;
56
+ object?: (obj: unknown, cb?: unknown, usePropertySets?: unknown, propSets?: unknown) => unknown;
57
+ array?: (arr: unknown, cb?: unknown) => unknown;
58
+ element?: (name: string, atts?: unknown, children?: unknown, cb?: unknown, useAttributeSets?: unknown) => unknown;
59
+ attribute?: (name: string, val: unknown, avoidAttEscape?: unknown) => unknown;
60
+ comment?: (text: string) => unknown;
61
+ processingInstruction?: (target: string, data: string) => unknown;
62
+ plainText?: (str: unknown) => unknown;
63
+ propValue?: (prop: unknown, val: unknown) => unknown;
64
+ rawAppend?: (item: unknown) => unknown;
65
+ namespace?: (prefix: string, namespaceURI: string) => unknown;
66
+ setContext?: (context: unknown) => unknown;
67
+ output?: (cfg: unknown) => unknown;
68
+ mode?: (cfg: unknown) => unknown;
69
+ stylesheet?: (cfg: unknown) => unknown;
70
+ function?: (cfg: unknown) => unknown;
71
+ invokeFunctionByArity?: (name: string, args?: unknown[]) => unknown;
72
+ characterMap?: (name: string, outputCharacters: unknown) => unknown;
73
+ attributeSet?: (name: string, attributes: unknown) => unknown;
74
+ namespaceAlias?: (stylesheetPrefix: string, resultPrefix: string) => unknown;
75
+ };
76
+ export type BuiltinJoiningTransformer = (StringJoiningTransformer | DOMJoiningTransformer | JSONJoiningTransformer);
77
+ export type JoiningTransformer = BuiltinJoiningTransformer | JoiningTransformerContract;
51
78
  export type joiningTypes = "json" | "string" | "dom";
52
- export type ResultType<T, E extends boolean | undefined = false> = T extends "json" ? (E extends true ? any[] : unknown) : T extends "string" ? (E extends true ? string[] : string) : (E extends true ? XMLDocument[] : DocumentFragment | Element);
79
+ export type ResultType<T, E extends boolean | undefined = false> = T extends "json" ? (E extends true ? unknown[] : unknown) : T extends "string" ? (E extends true ? string[] : string) : (E extends true ? XMLDocument[] : DocumentFragment | Element);
53
80
  export type BaseJTLTOptions<T, E extends boolean | undefined = false> = {
81
+ /**
82
+ * Off by default: the engine awaits any Promise a
83
+ * template returns (e.g. from `await this.indexedDB(...)`). Set `true` to
84
+ * forbid asynchrony — a template that returns a Promise then throws.
85
+ */
86
+ sync?: boolean;
54
87
  /**
55
88
  * A callback supplied
56
89
  * with a single argument that is the result of this instance's
57
90
  * transform() method. When used in TypeScript, this can be made
58
91
  * generic as `success<T>(result: T): void`.
59
92
  */
60
- success: (result: ResultType<T, E>) => ResultType<T, E> | void;
93
+ success?: (result: ResultType<T, E>) => ResultType<T, E> | void;
61
94
  /**
62
95
  * A JSON
63
96
  * object or DOM document (XPath)
@@ -150,7 +183,7 @@ export type XPathJTLTOptions<T extends "json" | "string" | "dom", E extends bool
150
183
  xpathVersion?: 1 | 2 | 3.1;
151
184
  outputType?: T;
152
185
  };
153
- export type JTLTOptions<E extends boolean | undefined = any> = JSONPathJTLTOptions<"json", E> | JSONPathJTLTOptions<"string", E> | JSONPathJTLTOptions<"dom", E> | XPathJTLTOptions<"json", E> | XPathJTLTOptions<"string", E> | XPathJTLTOptions<"dom", E>;
186
+ export type JTLTOptions<E extends boolean | undefined = boolean | undefined> = JSONPathJTLTOptions<"json", E> | JSONPathJTLTOptions<"string", E> | JSONPathJTLTOptions<"dom", E> | XPathJTLTOptions<"json", E> | XPathJTLTOptions<"string", E> | XPathJTLTOptions<"dom", E>;
154
187
  /**
155
188
  * Internal options extension adding private runtime state flags.
156
189
  * Not part of the public API surface but used for narrowing casts.
@@ -182,7 +215,7 @@ export type JTLTOptions<E extends boolean | undefined = any> = JSONPathJTLTOptio
182
215
  * @typedef {(this: TCtx,
183
216
  * value: ResultType<U>,
184
217
  * cfg?: {mode?: string}
185
- * ) => ResultType<T>|void} TemplateFunction
218
+ * ) => ResultType<T>|void|Promise<ResultType<T>|void>} TemplateFunction
186
219
  */
187
220
  /**
188
221
  * @template {"json"|"string"|"dom"} T
@@ -209,11 +242,69 @@ export type JTLTOptions<E extends boolean | undefined = any> = JSONPathJTLTOptio
209
242
  * >]} JSONPathTemplateArray
210
243
  */
211
244
  /**
245
+ * The output-sink surface a custom `joiningTransformer` may provide. Only
246
+ * `append` and `get` are required; the rest are optional because the engine
247
+ * guards each call. The built-in joiners' `append`/`string`/… signatures
248
+ * diverge (e.g. the DOM joiner also accepts `Node`), so under
249
+ * `strictFunctionTypes` no single structural type is a supertype of all
250
+ * three; this contract lists the surface with `unknown` parameters, and
251
+ * {@link JoiningTransformer} unions it with the concrete classes so real
252
+ * joiners still type precisely.
253
+ * @typedef {object} JoiningTransformerContract
254
+ * @property {(item: unknown) => unknown} append
255
+ * @property {() => unknown} get
256
+ * @property {(txt: string) => unknown} [text]
257
+ * @property {(str: unknown, cb?: () => void) => unknown} [string]
258
+ * @property {(num: unknown) => unknown} [number]
259
+ * @property {(
260
+ * obj: unknown, cb?: unknown, usePropertySets?: unknown, propSets?: unknown
261
+ * ) => unknown} [object]
262
+ * @property {(arr: unknown, cb?: unknown) => unknown} [array]
263
+ * @property {(
264
+ * name: string, atts?: unknown, children?: unknown,
265
+ * cb?: unknown, useAttributeSets?: unknown
266
+ * ) => unknown} [element]
267
+ * @property {(
268
+ * name: string, val: unknown, avoidAttEscape?: unknown
269
+ * ) => unknown} [attribute]
270
+ * @property {(text: string) => unknown} [comment]
271
+ * @property {(
272
+ * target: string, data: string
273
+ * ) => unknown} [processingInstruction]
274
+ * @property {(str: unknown) => unknown} [plainText]
275
+ * @property {(prop: unknown, val: unknown) => unknown} [propValue]
276
+ * @property {(item: unknown) => unknown} [rawAppend]
277
+ * @property {(prefix: string, namespaceURI: string) => unknown} [namespace]
278
+ * @property {(context: unknown) => unknown} [setContext]
279
+ * @property {(cfg: unknown) => unknown} [output]
280
+ * @property {(cfg: unknown) => unknown} [mode]
281
+ * @property {(cfg: unknown) => unknown} [stylesheet]
282
+ * @property {(cfg: unknown) => unknown} [function]
283
+ * @property {(
284
+ * name: string, args?: unknown[]
285
+ * ) => unknown} [invokeFunctionByArity]
286
+ * @property {(
287
+ * name: string, outputCharacters: unknown
288
+ * ) => unknown} [characterMap]
289
+ * @property {(name: string, attributes: unknown) => unknown} [attributeSet]
290
+ * @property {(
291
+ * stylesheetPrefix: string, resultPrefix: string
292
+ * ) => unknown} [namespaceAlias]
293
+ */
294
+ /**
295
+ * One of the three built-in joiners. Used where engine internals rely on
296
+ * concrete members (e.g. `_modeConfig`).
212
297
  * @typedef {(
213
298
  * StringJoiningTransformer|
214
299
  * DOMJoiningTransformer|
215
300
  * JSONJoiningTransformer
216
- * )} JoiningTransformer
301
+ * )} BuiltinJoiningTransformer
302
+ */
303
+ /**
304
+ * The type accepted for a config `joiningTransformer`: a built-in joiner or
305
+ * any object implementing {@link JoiningTransformerContract}.
306
+ * @typedef {BuiltinJoiningTransformer | JoiningTransformerContract
307
+ * } JoiningTransformer
217
308
  */
218
309
  /**
219
310
  * @typedef {"json"|"string"|"dom"} joiningTypes
@@ -222,7 +313,7 @@ export type JTLTOptions<E extends boolean | undefined = any> = JSONPathJTLTOptio
222
313
  * @template T
223
314
  * @template {boolean|undefined} [E=false]
224
315
  * @typedef {T extends "json" ?
225
- * (E extends true ? any[] : unknown) :
316
+ * (E extends true ? unknown[] : unknown) :
226
317
  * T extends "string" ?
227
318
  * (E extends true ? string[] : string) :
228
319
  * (E extends true ? XMLDocument[] :
@@ -233,9 +324,12 @@ export type JTLTOptions<E extends boolean | undefined = any> = JSONPathJTLTOptio
233
324
  * @template T
234
325
  * @template {boolean|undefined} [E=false]
235
326
  * @typedef {object} BaseJTLTOptions
327
+ * @property {boolean} [sync] Off by default: the engine awaits any Promise a
328
+ * template returns (e.g. from `await this.indexedDB(...)`). Set `true` to
329
+ * forbid asynchrony — a template that returns a Promise then throws.
236
330
  * @property {(
237
331
  * result: ResultType<T, E>
238
- * ) => ResultType<T, E>|void} success A callback supplied
332
+ * ) => ResultType<T, E>|void} [success] A callback supplied
239
333
  * with a single argument that is the result of this instance's
240
334
  * transform() method. When used in TypeScript, this can be made
241
335
  * generic as `success<T>(result: T): void`.
@@ -322,7 +416,7 @@ export type JTLTOptions<E extends boolean | undefined = any> = JSONPathJTLTOptio
322
416
  * }} XPathJTLTOptions
323
417
  */
324
418
  /**
325
- * @template {boolean|undefined} [E=any]
419
+ * @template {boolean|undefined} [E=boolean|undefined]
326
420
  * @typedef {JSONPathJTLTOptions<"json", E> |
327
421
  * JSONPathJTLTOptions<"string", E> |
328
422
  * JSONPathJTLTOptions<"dom", E> |
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ export type OpenDBFunction = typeof import("idb").openDB;
2
+ export type IndexedDBResultType = 'value' | 'key' | 'primaryKey' | 'all';
3
+ export type QueryOptions = {
4
+ index?: string;
5
+ range?: {
6
+ lower?: IDBValidKey;
7
+ upper?: IDBValidKey;
8
+ lowerOpen?: boolean;
9
+ upperOpen?: boolean;
10
+ };
11
+ query?: NonNullable<object | string | number>;
12
+ direction?: 'next' | 'nextunique' | 'prev' | 'prevunique';
13
+ count?: number;
14
+ resultType?: IndexedDBResultType;
15
+ };
16
+ export type IdbCursorLike = {
17
+ key: IDBValidKey;
18
+ primaryKey: IDBValidKey;
19
+ value: unknown;
20
+ continue: () => Promise<IdbCursorLike | null>;
21
+ };
22
+ export type IdbRecord = {
23
+ key: IDBValidKey;
24
+ primaryKey: IDBValidKey;
25
+ value: unknown;
26
+ };
27
+ export type IdbQueryTarget = {
28
+ openCursor: (range?: IDBKeyRange | null, direction?: IDBCursorDirection) => Promise<IdbCursorLike | null>;
29
+ openKeyCursor: (range?: IDBKeyRange | null, direction?: IDBCursorDirection) => Promise<IdbCursorLike | null>;
30
+ getAll: (range?: IDBKeyRange | null, count?: number) => Promise<unknown[]>;
31
+ getAllKeys: (range?: IDBKeyRange | null, count?: number) => Promise<IDBValidKey[]>;
32
+ getAllRecords?: ((options?: {
33
+ query?: IDBKeyRange | null;
34
+ count?: number;
35
+ direction?: IDBCursorDirection;
36
+ }) => Promise<IdbRecord[]>);
37
+ };
38
+ export declare function queryIndexedDB(dbName: string, storeName: string, options: QueryOptions & {
39
+ resultType: 'all';
40
+ }): Promise<IdbRecord[]>;
41
+ export declare function queryIndexedDB(dbName: string, storeName: string, options: QueryOptions & {
42
+ resultType: 'key' | 'primaryKey';
43
+ }): Promise<IDBValidKey[]>;
44
+ export declare function queryIndexedDB(dbName: string, storeName: string, options?: QueryOptions): Promise<unknown[]>;
45
+ export type ParsedIndexedDBExpression = {
46
+ dbName: string;
47
+ storeName: string;
48
+ options: QueryOptions | undefined;
49
+ /**
50
+ * - A JSONPath segment applied to the fetched
51
+ * records (e.g. `.*.name` or `[0].name`), with surrounding whitespace
52
+ * trimmed. Used by the JSONPath engine only; the XPath engine exposes
53
+ * `indexedDB()` as a registered XPath function instead (see
54
+ * {@link evaluateXPathWithIndexedDB}).
55
+ */
56
+ trailing: string;
57
+ };
58
+ /**
59
+ * @typedef {object} ParsedIndexedDBExpression
60
+ * @property {string} dbName
61
+ * @property {string} storeName
62
+ * @property {QueryOptions|undefined} options
63
+ * @property {string} trailing - A JSONPath segment applied to the fetched
64
+ * records (e.g. `.*.name` or `[0].name`), with surrounding whitespace
65
+ * trimmed. Used by the JSONPath engine only; the XPath engine exposes
66
+ * `indexedDB()` as a registered XPath function instead (see
67
+ * {@link evaluateXPathWithIndexedDB}).
68
+ */
69
+ /**
70
+ * Detect and parse an `indexedDB(...)` call at the start of a selector string.
71
+ * @param {string} expr
72
+ * @returns {ParsedIndexedDBExpression|null} `null` when `expr` is not an
73
+ * `indexedDB(...)` expression.
74
+ */
75
+ export declare function parseIndexedDBExpression(expr: string): ParsedIndexedDBExpression | null;
76
+ /**
77
+ * Fetch the records for a parsed `indexedDB(...)` expression and, when a
78
+ * trailing JSONPath segment is present (e.g. `.*.name`), evaluate it against
79
+ * the fetched records. Shared by the JSONPath and XPath engines.
80
+ * @param {ParsedIndexedDBExpression} parsed
81
+ * @param {{preventEval?: boolean}} [options]
82
+ * @returns {Promise<unknown>}
83
+ */
84
+ export declare function resolveIndexedDBQuery(parsed: ParsedIndexedDBExpression, { preventEval }?: {
85
+ preventEval?: boolean;
86
+ }): Promise<unknown>;
87
+ /**
88
+ * Namespace URI backing the predefined `jtlt` prefix under which the XPath
89
+ * `indexedDB()` function is registered.
90
+ */
91
+ export declare const JTLT_XPATH_NAMESPACE = "urn:jtlt";
92
+ /**
93
+ * @param {unknown} expr
94
+ * @returns {boolean} Whether `expr` calls the `indexedDB()` XPath function
95
+ */
96
+ export declare function xpathExpressionUsesIndexedDB(expr: unknown): boolean;
97
+ /**
98
+ * Evaluate an XPath 3.1 expression that may call `jtlt:indexedDB(...)`,
99
+ * to a string. Because fontoxpath is synchronous, this first evaluates the
100
+ * expression in "collect" mode to discover every `indexedDB()` call, awaits
101
+ * those queries, then evaluates again with the records available.
102
+ * @param {string} selectStr
103
+ * @param {Node} contextNode
104
+ * @returns {Promise<string>}
105
+ */
106
+ export declare function evaluateXPathWithIndexedDB(selectStr: string, contextNode: Node): Promise<string>;
107
+ //# sourceMappingURL=indexedDB.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexedDB.d.ts","sourceRoot":"","sources":["../src/indexedDB.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Iterate over an array, staying fully synchronous while `body` returns
3
+ * synchronously and only chaining Promises once `body` returns a thenable.
4
+ *
5
+ * This lets a nested asynchronous operation (e.g. an
6
+ * `await this.indexedDB(...)` fetch inside a template) suspend the loop,
7
+ * without forcing the common synchronous case through microtasks or
8
+ * breaking DOM-bound consumers.
9
+ * @template T
10
+ * @param {T[]} array
11
+ * @param {(item: T, index: number, arr: T[]) => any} body
12
+ * @returns {Promise<void>|void}
13
+ */
14
+ export declare function maybeAsyncLoop<T>(array: T[], body: (item: T, index: number, arr: T[]) => any): Promise<void> | void;
15
+ //# sourceMappingURL=maybeAsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybeAsync.d.ts","sourceRoot":"","sources":["../src/maybeAsync.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CALjB,CAAC,EAKkB,KAAK,EAJ1B,CAAC,EAIyB,EAAE,IAAI,EAHhC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,GAGN,GAF9B,OAAO,CAAC,IAAI,CAAC,GAAC,IAAI,CAgC9B"}
@@ -4,14 +4,18 @@ This document describes the public API surface of JTLT (JavaScript Template Lang
4
4
 
5
5
  > Early alpha: APIs may evolve; experimental sections (XPath) can change without major version bumps.
6
6
 
7
- ## Core façade: `JTLT`
7
+ ## Entry points: `jtlt()` and `JTLT`
8
8
 
9
- High-level entry point for running a transform over JSON data using JSONPath.
9
+ ### `jtlt(config)` — recommended
10
+
11
+ Runs a transform and returns a `Promise` resolving to the result. It takes
12
+ every option below **except `success`**, and does not accept `autostart`
13
+ meaningfully (it always runs).
10
14
 
11
15
  ```js
12
- import JTLT from 'jtlt';
16
+ import {jtlt} from 'jtlt';
13
17
 
14
- const out = JTLT.create({
18
+ const out = await jtlt({
15
19
  data: {title: 'Hello'},
16
20
  outputType: 'string',
17
21
  templates: [
@@ -22,31 +26,56 @@ const out = JTLT.create({
22
26
  this.string('</h1>');
23
27
  }
24
28
  }
25
- ],
29
+ ]
30
+ });
31
+ ```
32
+
33
+ ### `JTLT` class — lower level
34
+
35
+ `JTLT.create(config)` (or `new JTLT(config)`) returns a `JTLT` instance. The
36
+ result is delivered through the **required `success` callback**, which is
37
+ also the return value of `.transform(mode?)`:
38
+
39
+ ```js
40
+ import JTLT from 'jtlt';
41
+
42
+ const inst = JTLT.create({
43
+ data: {title: 'Hello'},
44
+ outputType: 'string',
45
+ templates: [/* … */],
26
46
  success: (res) => res
27
- }).transform('');
47
+ });
48
+ const out = inst.transform('');
28
49
  ```
29
50
 
30
- ### `new JTLT(config)` or `JTLT.create(config)` options
51
+ By default the constructor runs the transform immediately; pass
52
+ `autostart: false` to defer it to your own `.transform()` call.
53
+
54
+ ### Options
55
+
56
+ Common to both entry points unless noted.
31
57
 
32
58
  | Option | Type | Description |
33
59
  | ------ | ---- | ----------- |
34
- | `data` | any | Root JSON/JS object. Required unless `ajaxData` provided. |
60
+ | `data` | object \| primitive | Root JSON/JS value (or DOM `Document`/`Element` for the XPath engine). Required unless `ajaxData` provided. |
35
61
  | `ajaxData` | string | URL to fetch JSON (async start). |
36
- | `templates` | Array<TemplateObject> | Template declarations; see below. |
62
+ | `templates` | Array&lt;TemplateObject&gt; | Template declarations; see below. |
37
63
  | `template` | Function \| TemplateObject | Single root template convenience. |
38
64
  | `query` | Function | Root template convenience (wrapped as `path: '$'`). |
39
65
  | `forQuery` | [select, cb] | One-off query (like FLWOR `for`). Auto-wrapped as root template. |
40
- | `success` | Function(result) | Required callback; also receives transform return. |
66
+ | `success` | Function(result) | **`JTLT` only** — required callback; also the return of `.transform()`. Not accepted by `jtlt()`. |
41
67
  | `mode` | string | Starting mode for template matching. |
42
- | `outputType` | 'string' \| 'dom' \| 'json' | Chooses joiner. Default 'string'. |
43
- | `joiningTransformer` | Joiner instance | Custom joiner; skip auto creation. |
68
+ | `outputType` | 'string' \| 'dom' \| 'json' | Chooses joiner. Default `'string'`. |
69
+ | `engineType` | 'jsonpath' \| 'xpath' | Engine to use. Default `'jsonpath'`. |
70
+ | `xpathVersion` | 1 \| 2 \| 3.1 | XPath engine only. `1` native, `2` xpath2.js, `3.1` fontoxpath. Default `1`. |
71
+ | `sync` | boolean | Off by default (async templates are awaited). When `true`, a template that returns a Promise throws; disables `indexedDB()`. |
72
+ | `joiningTransformer` | Joiner | Custom joiner; skip auto creation. Needs `append` and `get` (see `JoiningTransformerContract`). |
44
73
  | `joiningConfig` | object | Passed to joiner (e.g., `{xmlElements:true}`). |
45
74
  | `unwrapSingleResult` | boolean | For JSON joiner: unwrap single-item root array. |
46
75
  | `errorOnEqualPriority` | boolean | Throw when multiple templates share priority on a node. |
47
- | `specificityPriorityResolver` | fn(path)=>number | Custom resolver for relative priorities. Defaults to XSLT-like JSONPath resolver. |
48
- | `engine` | fn(config)=>any | Override transform engine (defaults to JSONPathTransformer). |
49
- | `autostart` | boolean | If `false`, don’t auto-call `transform()` in constructor. |
76
+ | `specificityPriorityResolver` | fn(path)=&gt;number | Custom resolver for relative priorities. Defaults to XSLT-like JSONPath resolver. |
77
+ | `engine` | fn(config)=&gt;result | Override transform engine (defaults to JSONPathTransformer). |
78
+ | `autostart` | boolean | **`JTLT` only** — if `false`, don't auto-call `transform()` in constructor. |
50
79
  | `preventEval` | boolean | Disable parenthetical eval portions of JSONPath (security). |
51
80
 
52
81
  ## Template objects
@@ -123,9 +152,10 @@ const out = engine.transform('');
123
152
  ```
124
153
 
125
154
  Limitations:
126
- - Versions 2 and 3 (`xpath2.js` and `fontoxpath`) may lack some XPath functions;
127
- stick to basic location paths and simple predicates.
128
- - Namespace resolution not yet exposed (future `namespaceResolver` option).
155
+ - Versions 2 and 3.1 (`xpath2.js` and `fontoxpath`) may lack some XPath
156
+ functions; stick to basic location paths and simple predicates.
157
+ - A user `namespaceResolver` option is not yet exposed (the XPath 3.1
158
+ `jtlt:` prefix used by `indexedDB()` is wired in internally).
129
159
 
130
160
  ## Contexts
131
161
 
@@ -144,6 +174,13 @@ Methods (subset):
144
174
  - `variable(name, select)` – stores value/array from JSONPath.
145
175
  - `callTemplate(name, withParam?)`
146
176
  - `key(name, match, use)` / `getKey(name, value)`
177
+ - `indexedDB(dbName, storeName, options?)` – returns a `Promise` of matching
178
+ IndexedDB records. `options` mirror `jsonpath-plus`'s `resultType`
179
+ (`'value'` default, `'key'`, `'primaryKey'`, `'all'`) plus `index`,
180
+ `range`, `query`, `direction`, `count`. A template using it must be
181
+ `async` (or return the Promise). Throws under `sync: true`. A selector of
182
+ the form `indexedDB('db', 'store').*.name` in `valueOf()` is intercepted
183
+ and resolved the same way.
147
184
  - Joiner passthrough: `string()`, `text()`, `element()`, `object()`, `array()`, `number()`, `boolean()`, etc.
148
185
  \- Cloning helpers:
149
186
  - `copy(propertySets?)` — Shallow clone of current context value (object/array). Nested references are preserved. Optional `propertySets` (array of registered names) merge into the top-level clone when object-like.
@@ -163,6 +200,14 @@ Parallels JSONPath context with XPath evaluation:
163
200
  current context node; absolute paths (`/`, `//`) target the document root.
164
201
  - `variable(name, select)` – always stores node arrays for XPath.
165
202
  - `key(name, match, use)` – index by attribute value; `getKey` returns matching Element or context sentinel (`this`).
203
+ - `indexedDB(dbName, storeName, options?)` – same direct helper as the
204
+ JSONPath context. Additionally, `jtlt:indexedDB('db', 'store')` is
205
+ registered as an XPath 3.1 function (predefined `jtlt` prefix,
206
+ `urn:jtlt`), so `valueOf()` selectors such as
207
+ `string-join(jtlt:indexedDB('db', 'store') ! ?name, ',')` work; options
208
+ are passed as an XPath map. Since fontoxpath is synchronous, the
209
+ expression is evaluated in a collect pass, the queries are awaited, then
210
+ it is re-evaluated with the records. Throws under `sync: true`.
166
211
  - Default template rules: root traverses `.`, element traverses `*`, text nodes emit `nodeValue`, scalars emit `valueOf('.')`.
167
212
  \- Cloning helpers:
168
213
  - `copy()` — Shallow clone of the current context node (`cloneNode(false)`) appended to the joiner.
@@ -456,9 +501,14 @@ See `README.md` for FLWOR-style and join patterns.
456
501
  ## Roadmap (selected)
457
502
 
458
503
  - Namespace support for XPath.
459
- - Copy helpers (deep/shallow) parity with XSLT.
460
- - Streaming / async query execution.
461
504
  - Schema-aware template targeting.
505
+ - Broader async data sources (async templates and IndexedDB access via
506
+ `this.indexedDB(...)` already land).
507
+ - Closing remaining `xsl:copy` / `xsl:copy-of` parity gaps: a sequence
508
+ constructor for `copy()` (shallow-copy the node, then build its content in
509
+ the same call), `use-attribute-sets` on the XPath `copy()` (the JSONPath
510
+ one already takes `propertySets`), and `copy-namespaces` /
511
+ `inherit-namespaces` control over which namespace nodes are carried.
462
512
 
463
513
  ## Versioning
464
514
 
package/docs/API.md CHANGED
@@ -3,11 +3,15 @@
3
3
  For the full reference (engines, contexts, joiners, sorting, keys, variables,
4
4
  property sets, defaults, roadmap), see `docs/API.expanded.md`.
5
5
 
6
- ## Facade: JTLT
6
+ ## Entry points: `jtlt()` and `JTLT`
7
+
8
+ **`jtlt(config)`** is the recommended entry point. It runs the transform and
9
+ returns a `Promise` that resolves to the result — no `success` callback:
7
10
 
8
11
  ```js
9
- import JTLT from 'jtlt';
10
- JTLT.create({
12
+ import {jtlt} from 'jtlt';
13
+
14
+ const out = await jtlt({
11
15
  data: {title: 'Hi'},
12
16
  templates: [
13
17
  {path: '$.title', template (v) {
@@ -15,11 +19,32 @@ JTLT.create({
15
19
  this.string('</h1>');
16
20
  }}
17
21
  ],
22
+ outputType: 'string'
23
+ });
24
+ ```
25
+
26
+ Async templates (e.g. `await this.indexedDB(...)`) are awaited automatically;
27
+ pass `sync: true` to forbid them (a template that returns a Promise then
28
+ throws).
29
+
30
+ The lower-level **`JTLT`** class (`JTLT.create(config)` / `new JTLT(config)`)
31
+ is for when you need the instance itself, `autostart: false`, or to call
32
+ `.transform(mode)` yourself. It delivers the result through a **required
33
+ `success` callback** (also returned from `.transform()`):
34
+
35
+ ```js
36
+ import JTLT from 'jtlt';
37
+
38
+ const out = JTLT.create({
39
+ data: {title: 'Hi'},
40
+ templates: [/* … */],
18
41
  outputType: 'string',
19
- success: (out) => out
42
+ success: (result) => result
20
43
  }).transform('');
21
44
  ```
22
45
 
46
+ `jtlt()` accepts every `JTLT` option except `success`.
47
+
23
48
  ## Engines
24
49
 
25
50
  - JSONPathTransformer: on JSON with JSONPath selectors; resolves
@@ -33,6 +58,11 @@ JTLT.create({
33
58
  `variable(name, select)`, `key(name, match, use)`, `getKey(name, value)`.
34
59
  JSONPath variables store values; XPath variables store arrays of nodes.
35
60
 
61
+ Async: a template may be `async` and `await` inside it. `this.indexedDB(db,
62
+ store, options?)` resolves to matching IndexedDB records (see
63
+ `docs/API.expanded.md`). Unavailable when JTLT is configured with
64
+ `sync: true`.
65
+
36
66
  Cloning:
37
67
  `copy()` (shallow clone current JSON value or DOM node) and
38
68
  `copyOf(select?)` (deep clone; optional selector overrides target; scalar
package/docs/TO-DO.md CHANGED
@@ -76,7 +76,7 @@
76
76
  functions (or in XQuery), add equivalents to XSLT's
77
77
  `document()` and `unparsed-text()` for allowing non-JSON file
78
78
  retrieval (as well as variables/parameters) and also methods for
79
- iterating or retrieving IndexedDB, `localStorage`, and cookies
79
+ iterating or retrieving `localStorage` and cookies
80
80
  (names, keys and values).
81
81
 
82
82
  6. Add `outputType` which uses a DOM joiner but allows specialized
@@ -86,7 +86,7 @@
86
86
 
87
87
  7. See code for other possible to-dos
88
88
 
89
- 8. Promise-based templates; jtlt as templating engine (including zodexy-aware path expressions like @blob() for jsonpath-plus with `copyOf`/`valueOf` `document(...url...)` or our own indexeddb path db/store/key equivalent); work on **schema-driven** search forms too
89
+ 8. jtlt as templating engine (including zodexy-aware path expressions like @blob() for jsonpath-plus with `copyOf`/`valueOf` `document(...url...)`; work on **schema-driven** search forms too
90
90
 
91
91
  9. Consider implementing the following elements from <https://www.w3.org/TR/xslt-30/>
92
92
  which are not yet implemented.
package/eslint.config.js CHANGED
@@ -9,6 +9,14 @@ export default [
9
9
  'demo/codemirror.esm.js'
10
10
  ]
11
11
  },
12
+ {
13
+ languageOptions: {
14
+ ecmaVersion: 'latest',
15
+ globals: {
16
+ IDBKeyRange: 'readonly'
17
+ }
18
+ }
19
+ },
12
20
  ...ashNazg(['sauron']),
13
21
  {
14
22
  rules: {
@@ -19,9 +27,6 @@ export default [
19
27
  'unicorn/prefer-private-class-fields': 0,
20
28
  'unicorn/no-undeclared-class-members': 0,
21
29
 
22
- // AI was frequently making egregious mistakes here, so make fixable
23
- 'jsdoc/check-alignment': 'error',
24
-
25
30
  // We frequently use callbacks for nested interactions
26
31
  'promise/prefer-await-to-callbacks': 0,
27
32
 
@@ -42,6 +47,9 @@ export default [
42
47
  {
43
48
  files: ['test/**/*.js', 'test.js'],
44
49
  rules: {
50
+ // Reapply rule to testing file as it demonstrates the API
51
+ 'jsdoc/reject-any-type': ['error'],
52
+
45
53
  'unicorn/prefer-https': 0, // Old namespaces
46
54
  // Too many are JSON properties called "children"
47
55
  'unicorn/better-dom-traversing': 0,