jtlt 0.19.0 → 0.21.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.
package/CHANGES.md CHANGED
@@ -1,5 +1,56 @@
1
1
  # jtlt CHANGES
2
2
 
3
+ ## 0.21.0
4
+
5
+ - feat: extension-call declarative operation nodes — any operation-node key
6
+ not otherwise recognized, e.g. `{$greet: {select?: '$.path'}}`, calls a
7
+ named function of that same name from `config.extensions` (`ctx[name]
8
+ (value)`, `value` from `select`, or the current `$` context data when
9
+ `select` is omitted — the argument is an object, matching `$indexedDB`'s
10
+ own convention, leaving room for more named fields later). Restricted at
11
+ runtime to names actually present in `config.extensions` (tracked via a
12
+ new `context._extensionNames` `Set`, populated by `applyExtensions`): a
13
+ declarative `behavior` — e.g. an admin-authored, untrusted template — can
14
+ never invoke an arbitrary built-in context method (`element`, `indexedDB`,
15
+ etc.) by name this way. Like `$renderDefault`, the extension itself is
16
+ responsible for inserting any output (e.g. via `this.appendOutput(...)`);
17
+ the interpreter never does so on its behalf. Trade-off: because any
18
+ not-otherwise-recognized `$`-prefixed key becomes a live extension name, a
19
+ future jtlt release adding a new built-in operation could collide with an
20
+ extension name a consumer already uses — consumers documenting their
21
+ extension names ([jtlt's wiki](https://github.com/brettz9/jtlt/wiki/Extension-registry) is reserved for this purpose)
22
+ are encouraged to also list jtlt's own reserved op keys as names to avoid.
23
+ - fix: `_autoStart`'s `transform()` call discarded its returned promise
24
+ entirely, so a rejection (e.g. a template throwing) became a silently
25
+ swallowed unhandled rejection instead of surfacing anywhere — `await
26
+ jtlt({...})` would hang forever rather than reject. Added a new `error`
27
+ config option (alongside the existing `success`) and wired a `.catch()` in
28
+ `_autoStart` that calls it (or falls back to `console.error`); the `jtlt()`
29
+ convenience function now rejects its promise via `error` on failure
30
+ instead of hanging.
31
+
32
+ ## 0.20.0
33
+
34
+ - fix: `ObjectCallback` / `ArrayCallback` / `SimpleCallback` (in the String/
35
+ DOM/JSON joining transformers) mis-emitted in `dist/*.d.ts` — a `@callback`
36
+ tag combined with `@this` produced raw, unparsed JSDoc text instead of a
37
+ proper `this:` function-type parameter (present since these typedefs were
38
+ introduced; only surfaced once a consumer's own JSDoc first referenced a
39
+ jtlt type — `dist/index.d.ts`'s `import('jtlt')...` was otherwise never
40
+ loaded for type-checking). Switched to the equivalent `@typedef {(this:
41
+ ...) => ...}` function-type form (already used successfully elsewhere,
42
+ e.g. `TemplateFunction`), which emits correctly.
43
+ - feat: `extractReads(nodes)`, exported alongside `compileJSONTemplate` /
44
+ `validateJSONTemplate` / `isJSONTemplateNodeArray` — statically derives
45
+ the deduplicated `{db, store}` targets a declarative template's
46
+ `$indexedDB` nodes touch, walking the whole tree (element children,
47
+ `$if`/`$forEach` bodies, another `$indexedDB` node's own children — not
48
+ just the top level). Total: an `$indexedDB` node whose `db`/`store` isn't
49
+ a literal, non-empty string is reported as an error rather than silently
50
+ omitted from the result. `validateJSONTemplate()` folds these errors in
51
+ automatically, so `compileJSONTemplate()` rejects an unresolvable target
52
+ too, not just a standalone `extractReads()` caller.
53
+
3
54
  ## 0.19.0
4
55
 
5
56
  - feat: declarative jamilih node format
@@ -1,10 +1,11 @@
1
1
  import AbstractJoiningTransformer from './AbstractJoiningTransformer.js';
2
- export type SimpleCallback = (@this {DOMJoiningTransformer}
3
- * : DOMJoiningTransformer) => void;
2
+ export type SimpleCallback = (this: DOMJoiningTransformer) => void;
4
3
  /**
5
- * @callback SimpleCallback
6
- * @this {DOMJoiningTransformer}
7
- * @returns {void}
4
+ * A `@callback` tag combined with `@this` mis-emits in `dist/*.d.ts` (the
5
+ * `@this` type lands as raw, unparsed JSDoc text) — see the equivalent note
6
+ * in `JSONJoiningTransformer.js`; this inline `@typedef {(this: ...) =>
7
+ * ...}` function-type form emits correctly instead.
8
+ * @typedef {(this: DOMJoiningTransformer) => void} SimpleCallback
8
9
  */
9
10
  /**
10
11
  * Joining transformer that accumulates into a DOM tree.
@@ -1 +1 @@
1
- {"version":3,"file":"DOMJoiningTransformer.d.ts","sourceRoot":"","sources":["../src/DOMJoiningTransformer.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DOMJoiningTransformer.d.ts","sourceRoot":"","sources":["../src/DOMJoiningTransformer.js"],"names":[],"mappings":"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"}
@@ -1,12 +1,7 @@
1
1
  import AbstractJoiningTransformer from './AbstractJoiningTransformer.js';
2
- export type ObjectCallback = (@this {JSONJoiningTransformer}
3
- * : JSONJoiningTransformer, obj: Record<string, unknown>) => void;
4
- export type ArrayCallback = (@this {JSONJoiningTransformer}
5
- * : JSONJoiningTransformer, arr: any[]) => void;
6
- export type SimpleCallback<T = "json"> = (@this {T extends "json" ? JSONJoiningTransformer :
7
- * T extends "string" ? import('./StringJoiningTransformer.js').default
8
- * : import('./DOMJoiningTransformer.js').default}
9
- * : T extends "json" ? JSONJoiningTransformer : T extends "string" ? import('./StringJoiningTransformer.js').default : import('./DOMJoiningTransformer.js').default) => void;
2
+ export type ObjectCallback = (this: JSONJoiningTransformer, obj: Record<string, unknown>) => void;
3
+ export type ArrayCallback = (this: JSONJoiningTransformer, arr: any[]) => void;
4
+ export type SimpleCallback<T = "json"> = (this: T extends "json" ? JSONJoiningTransformer : T extends "string" ? import('./StringJoiningTransformer.js').default : import('./DOMJoiningTransformer.js').default) => void;
10
5
  export type ElementAttributes = Record<string, unknown> & {
11
6
  dataset?: Record<string, string>;
12
7
  $a?: [string, string][];
@@ -16,24 +11,26 @@ export type ElementInfo = {
16
11
  jmlChildren: unknown[];
17
12
  };
18
13
  /**
19
- * @callback ObjectCallback
20
- * @this {JSONJoiningTransformer}
21
- * @param {Record<string, unknown>} obj
22
- * @returns {void}
14
+ * A `@callback` tag combined with `@this` mis-emits in `dist/*.d.ts`
15
+ * (verified against `tsc`'s declaration output — the `@this` type lands as
16
+ * raw, unparsed JSDoc text rather than being converted to a proper `this:`
17
+ * function-type parameter); the equivalent inline `@typedef {(this: ...) =>
18
+ * ...}` function-type form (already used elsewhere, e.g. `TemplateFunction`
19
+ * in `index.js`) emits correctly, so these three use that form instead.
20
+ * @typedef {(
21
+ * this: JSONJoiningTransformer, obj: Record<string, unknown>
22
+ * ) => void} ObjectCallback
23
23
  */
24
24
  /**
25
- * @callback ArrayCallback
26
- * @this {JSONJoiningTransformer}
27
- * @param {any[]} arr
28
- * @returns {void}
25
+ * @typedef {(this: JSONJoiningTransformer, arr: any[]) => void} ArrayCallback
29
26
  */
30
27
  /**
31
28
  * @template [T = "json"]
32
- * @callback SimpleCallback
33
- * @this {T extends "json" ? JSONJoiningTransformer :
34
- * T extends "string" ? import('./StringJoiningTransformer.js').default
35
- * : import('./DOMJoiningTransformer.js').default}
36
- * @returns {void}
29
+ * @typedef {(
30
+ * this: T extends "json" ? JSONJoiningTransformer :
31
+ * T extends "string" ? import('./StringJoiningTransformer.js').default
32
+ * : import('./DOMJoiningTransformer.js').default
33
+ * ) => void} SimpleCallback
37
34
  */
38
35
  /**
39
36
  * Attributes object for element() allowing standard string attributes
@@ -1 +1 @@
1
- {"version":3,"file":"JSONJoiningTransformer.d.ts","sourceRoot":"","sources":["../src/JSONJoiningTransformer.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JSONJoiningTransformer.d.ts","sourceRoot":"","sources":["../src/JSONJoiningTransformer.js"],"names":[],"mappings":"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"}
@@ -13,8 +13,7 @@ export type OutputConfig = {
13
13
  method?: "xml" | "html" | "text" | "json" | "xhtml";
14
14
  useCharacterMaps?: string[];
15
15
  };
16
- export type SimpleCallback = (@this {StringJoiningTransformer}
17
- * : StringJoiningTransformer) => void;
16
+ export type SimpleCallback = (this: StringJoiningTransformer) => void;
18
17
  export type ElementAttributes = Record<string, unknown> & {
19
18
  dataset?: Record<string, string>;
20
19
  $a?: Array<[string, string]>;
@@ -1 +1 @@
1
- {"version":3,"file":"StringJoiningTransformer.d.ts","sourceRoot":"","sources":["../src/StringJoiningTransformer.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StringJoiningTransformer.d.ts","sourceRoot":"","sources":["../src/StringJoiningTransformer.js"],"names":[],"mappings":"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"}
@@ -2,6 +2,16 @@
2
2
  * Merges `extensions` onto a template context instance so templates can
3
3
  * invoke them as `this.myHelper()`. Shared by JSONPathTransformerContext
4
4
  * and XPathTransformerContext.
5
+ *
6
+ * Also records the registered names on `context._extensionNames` (a `Set`,
7
+ * merged with any already present from an earlier call) — consulted by the
8
+ * declarative interpreter's extension-call nodes (e.g. `{$greet:
9
+ * {select?}}` — see `jsonTemplate.js`) so a declarative `behavior` can only
10
+ * ever invoke names that were actually supplied here, never an
11
+ * arbitrary/built-in context method (`element`, `indexedDB`, etc.) by name.
12
+ * Untrusted, admin-authored declarative source is exactly why this
13
+ * distinction matters — see ROUTE-OVERRIDES-PLAN.md's (idb-manager)
14
+ * "declarative subset" for the threat model this is part of.
5
15
  * @param {object} context - The context instance to extend
6
16
  * @param {Record<string, unknown>} extensions - Extra methods/values
7
17
  * @returns {void}
@@ -1 +1 @@
1
- {"version":3,"file":"extendContext.d.ts","sourceRoot":"","sources":["../src/extendContext.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAE,OAAO,EAJrC,MAIqC,EAAE,UAAU,EAHjD,MAAM,CAAC,MAAM,EAAE,OAAO,CAG2B,GAF/C,IAAI,CAchB"}
1
+ {"version":3,"file":"extendContext.d.ts","sourceRoot":"","sources":["../src/extendContext.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAE,OAAO,EAJrC,MAIqC,EAAE,UAAU,EAHjD,MAAM,CAAC,MAAM,EAAE,OAAO,CAG2B,GAF/C,IAAI,CAmBhB"}
package/dist/index.d.ts CHANGED
@@ -137,6 +137,10 @@ export type JSONOperationNode = [{
137
137
  {
138
138
  $renderDefault: true;
139
139
  }
140
+ ] | [
141
+ Record<`$${string}`, {
142
+ select?: string;
143
+ }>
140
144
  ];
141
145
  export type JSONTemplateNode = string | JSONElementNode | JSONOperationNode;
142
146
  export type JoiningTransformerContract = {
@@ -183,6 +187,17 @@ export type BaseJTLTOptions<T, E extends boolean | undefined = false> = {
183
187
  * generic as `success<T>(result: T): void`.
184
188
  */
185
189
  success?: (result: ResultType<T, E>) => ResultType<T, E> | void;
190
+ /**
191
+ * `success`'s counterpart for
192
+ * the autostart path (`config.autostart` unset/`true`, the common case):
193
+ * a template that throws (directly, or via an awaited Promise it
194
+ * returned) calls this instead, if supplied — otherwise the failure is
195
+ * only surfaced via `console.error`, since `_autoStart` invokes
196
+ * `transform()` without a caller able to `await`/`catch` it directly.
197
+ * Not consulted for a `transform()` call made directly (its own return
198
+ * value/rejection is observable there instead).
199
+ */
200
+ error?: (err: unknown) => void;
186
201
  /**
187
202
  * A JSON
188
203
  * object or DOM document (XPath)
@@ -364,6 +379,6 @@ export { default as JSONPathTransformerContext } from './JSONPathTransformerCont
364
379
  export { default as JSONPathTransformer } from './JSONPathTransformer.js';
365
380
  export { default as XPathTransformerContext } from './XPathTransformerContext.js';
366
381
  export { default as XPathTransformer } from './XPathTransformer.js';
367
- export { compileJSONTemplate, isJSONTemplateNodeArray, validateJSONTemplate } from './jsonTemplate.js';
382
+ export { compileJSONTemplate, extractReads, isJSONTemplateNodeArray, validateJSONTemplate } from './jsonTemplate.js';
368
383
  export default JTLT;
369
384
  //# sourceMappingURL=index.d.ts.map
@@ -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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"}
@@ -1,8 +1,30 @@
1
1
  export type NodeKind = 'text' | 'element' | 'operation';
2
+ export type ReadTarget = {
3
+ db: string;
4
+ store: string;
5
+ };
6
+ /**
7
+ * Statically derive the `{db, store}` targets a declarative template's
8
+ * `$indexedDB` nodes touch (ROUTE-OVERRIDES-PLAN.md §3.4, §13 decision 4)
9
+ * — for a route override's data-access checks and its `reads` field. Total:
10
+ * an `$indexedDB` node whose `db`/`store` isn't a literal string is
11
+ * reported as an error rather than silently omitted from `reads` — the
12
+ * whole point is to drive a data-access allowlist, so an unresolvable
13
+ * target must never be mistaken for "no read happens here". Duplicate
14
+ * targets are deduplicated.
15
+ * @param {unknown[]} nodes
16
+ * @returns {{reads: ReadTarget[], errors: string[]}}
17
+ */
18
+ export declare function extractReads(nodes: unknown[]): {
19
+ reads: ReadTarget[];
20
+ errors: string[];
21
+ };
2
22
  /**
3
23
  * Non-executing structural check for a declarative template. Unlike
4
24
  * `compileJSONTemplate`, this never throws — it reports every problem it
5
- * finds, for a "validate before save" editor workflow.
25
+ * finds, for a "validate before save" editor workflow. Includes the
26
+ * `extractReads()` check (an unresolvable `$indexedDB` target is a
27
+ * validation error, not just a `reads` omission).
6
28
  * @param {unknown[]} nodes
7
29
  * @param {{format?: 'json'|'javascript'}} [options]
8
30
  * @returns {{valid: boolean, errors: string[]}}
@@ -1 +1 @@
1
- {"version":3,"file":"jsonTemplate.d.ts","sourceRoot":"","sources":["../src/jsonTemplate.js"],"names":[],"mappings":"AAyCG,YAAwC,QAAQ,GAAtC,MAAM,GAAC,SAAS,GAAC,WAAW,CAAU;AAyLnD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAE,KAAK,EAJhC,OAAO,EAIyB,EAAE,EAAC,MAAe,EAAC,AAH3D,CACA,EADQ;IAAC,MAAM,CAAC,EAAE,MAAM,GAAC,YAAY,CAAA;CAG2B,GAFtD;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAC,CAe9C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAE,CAAC,EAH/B,OAG+B,GAF7B,CAAC,IAAI,OAAO,EAAE,CAI1B;AAqID;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAE,KAAK,EAN/B,OAAO,EAMwB,EAAE,EAAC,MAAe,EAAC,AAL1D,CACA,EADQ;IAAC,MAAM,CAAC,EAAE,MAAM,GAAC,YAAY,CAAA;CAK0B,GAJrD,CACR,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAC,KAC7C,OAAO,CAAC,IAAI,CAAC,CAYpB"}
1
+ {"version":3,"file":"jsonTemplate.d.ts","sourceRoot":"","sources":["../src/jsonTemplate.js"],"names":[],"mappings":"AAqEG,YAAwC,QAAQ,GAAtC,MAAM,GAAC,SAAS,GAAC,WAAW,CAAU;AAmNhD,YAAuC,UAAU,GAAvC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAY;AA2EpD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAE,KAAK,EAHxB,OAAO,EAGiB,GAFtB;IAAC,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAC,CA0BnD;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAE,KAAK,EAJhC,OAAO,EAIyB,EAAE,EAAC,MAAe,EAAC,AAH3D,CACA,EADQ;IAAC,MAAM,CAAC,EAAE,MAAM,GAAC,YAAY,CAAA;CAG2B,GAFtD;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAC,CAgB9C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAE,CAAC,EAH/B,OAG+B,GAF7B,CAAC,IAAI,OAAO,EAAE,CAI1B;AAwJD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAE,KAAK,EAN/B,OAAO,EAMwB,EAAE,EAAC,MAAe,EAAC,AAL1D,CACA,EADQ;IAAC,MAAM,CAAC,EAAE,MAAM,GAAC,YAAY,CAAA;CAK0B,GAJrD,CACR,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAC,KAC7C,OAAO,CAAC,IAAI,CAAC,CAYpB"}
@@ -138,6 +138,7 @@ A node is one of:
138
138
  | `[{$variable: name, $select: sel}]` | `this.variable(name, sel)`, readable back later via a bare `$name` reference |
139
139
  | `[{$indexedDB: {db, store, options?}, $as?: name}, childNodes?]` | fetches rows; with `$as`, binds them via `this.variable(name, {value: rows})`; without it, swaps the data context (`$`) to the rows for `childNodes` |
140
140
  | `[{$renderDefault: true}]` | `this.appendOutput(await this.renderDefault())` (an `extensions.renderDefault` your config supplies) |
141
+ | `[{$name: {select?: sel}}]` (any key not otherwise recognized above) | an extension call: `await this[name](value)` — `value` is the `select` result, or the current `$` data when omitted. `name` must be a key actually present in `config.extensions`; any other name throws |
141
142
 
142
143
  Every operation node's leading object is entirely `$`-prefixed — jamilih's
143
144
  own validator requires this of any first-position plain object. `$jtltMode`/
@@ -150,9 +151,31 @@ node's own trailing arguments are each *arrays* — including the
150
151
  easy-to-miss case of a single node or a single sibling, which still needs
151
152
  its wrapping array.
152
153
 
153
- `$indexedDB`/`$renderDefault` may appear nested anywhere a node is
154
- allowed — inside an element's children, or a `$if`/`$forEach` body — not
155
- just at a template's top level; see the README section above for why.
154
+ `$indexedDB`/`$renderDefault`/an extension call may appear nested anywhere a
155
+ node is allowed — inside an element's children, or a `$if`/`$forEach` body —
156
+ not just at a template's top level; see the README section above for why.
157
+
158
+ An extension call, like `$renderDefault`, never auto-inserts its call's
159
+ return value — the extension itself is responsible for that (e.g. via
160
+ `this.appendOutput(...)`), since a called extension may want to emit
161
+ nothing, emit synchronously, or await further work first. Restricting
162
+ callable names to those actually supplied via `config.extensions` (tracked
163
+ on the context as `_extensionNames`) matters when `behavior` itself is
164
+ untrusted, admin-authored declarative source: without it, an extension-call
165
+ key could invoke any built-in context method by name (`element`,
166
+ `indexedDB`, etc.), not just the helpers its author intentionally exposed.
167
+
168
+ **Trade-off**: because any operation-node key not in the fixed built-in set
169
+ is treated as a candidate extension name, a future jtlt release adding a
170
+ new built-in operation could collide with an extension name a consumer
171
+ already uses, silently changing that template's behavior on upgrade. This
172
+ is accepted in exchange for the terser `{$greet: {...}}` syntax over a more
173
+ defensive, explicitly namespaced `{$extension: 'greet', ...}` wrapper.
174
+ Consumers who register extensions are encouraged to document their chosen
175
+ names somewhere (e.g. a project wiki page) alongside jtlt's own reserved
176
+ op keys (`$text`, `$jtltText`, `$string`, `$valueOf`, `$applyTemplates`,
177
+ `$if`, `$forEach`, `$variable`, `$indexedDB`, `$renderDefault`, `$mode`,
178
+ `$jtltMode`, `$as`, `$sort`, `$select`) as names to avoid.
156
179
 
157
180
  **Validation**: `format: 'json'` (the default) rejects an embedded live
158
181
  function/DOM node anywhere in the tree — the intent is a safely
@@ -166,7 +189,19 @@ entry lacking its own `format`) to allow one.
166
189
  `TypeError` with every problem found if `nodes` is invalid.
167
190
  - `validateJSONTemplate(nodes, {format?}) => {valid, errors}` — the same
168
191
  checks, non-executing and non-throwing; for a "validate before save"
169
- editor workflow.
192
+ editor workflow. Includes `extractReads()`'s errors, below — an
193
+ unresolvable `$indexedDB` target makes the whole template invalid, not
194
+ just a `reads` omission.
195
+ - `extractReads(nodes) => {reads: {db, store}[], errors}` — statically
196
+ derives the `{db, store}` targets every `$indexedDB` node in the tree
197
+ touches (walking element children, `$if`/`$forEach` bodies, and another
198
+ `$indexedDB` node's own children — not just the top level), deduplicated.
199
+ Total: an `$indexedDB` node whose `db`/`store` isn't a literal,
200
+ non-empty string is reported as an error rather than silently omitted
201
+ from `reads` — the point is to drive a data-access allowlist, so an
202
+ unresolvable target must never read as "no read happens here." Useful on
203
+ its own (not just via `validateJSONTemplate`) for computing the actual
204
+ `reads` value to store alongside a saved template.
170
205
  - `isJSONTemplateNodeArray(x) => boolean` — `Array.isArray`, exported for
171
206
  callers that need to detect the declarative form themselves (e.g. before
172
207
  deciding whether to call `compileJSONTemplate`).
package/docs/API.md CHANGED
@@ -43,7 +43,13 @@ const out = JTLT.create({
43
43
  }).transform('');
44
44
  ```
45
45
 
46
- `jtlt()` accepts every `JTLT` option except `success`.
46
+ `jtlt()` accepts every `JTLT` option except `success`/`error` — it wires
47
+ both itself, so its returned `Promise` resolves or rejects instead.
48
+
49
+ For `JTLT`'s own autostart path (no explicit `.transform()` call), `error`
50
+ is `success`'s failure counterpart: a template that throws or otherwise
51
+ rejects the transform calls `error(err)` if provided, else falls back to
52
+ `console.error(err)`.
47
53
 
48
54
  ## Engines
49
55
 
@@ -186,7 +192,8 @@ This is useful for strict template matching where ambiguity should be an error r
186
192
  JSONPath engine only. `template` may be an `Array` of jamilih-shaped nodes
187
193
  instead of a `Function` — compiled once via `compileJSONTemplate()`
188
194
  (also exported, along with `validateJSONTemplate()` for non-executing
189
- validation and `isJSONTemplateNodeArray()`):
195
+ validation, `extractReads()` for statically deriving the `{db, store}`
196
+ targets its `$indexedDB` nodes touch, and `isJSONTemplateNodeArray()`):
190
197
 
191
198
  ```js
192
199
  const templates = {path: '$', template: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jtlt",
3
- "version": "0.19.0",
3
+ "version": "0.21.0",
4
4
  "type": "module",
5
5
  "author": "Brett Zamir",
6
6
  "contributors": [],
@@ -2,9 +2,11 @@ import * as JHTML from 'jhtml';
2
2
  import AbstractJoiningTransformer from './AbstractJoiningTransformer.js';
3
3
 
4
4
  /**
5
- * @callback SimpleCallback
6
- * @this {DOMJoiningTransformer}
7
- * @returns {void}
5
+ * A `@callback` tag combined with `@this` mis-emits in `dist/*.d.ts` (the
6
+ * `@this` type lands as raw, unparsed JSDoc text) — see the equivalent note
7
+ * in `JSONJoiningTransformer.js`; this inline `@typedef {(this: ...) =>
8
+ * ...}` function-type form emits correctly instead.
9
+ * @typedef {(this: DOMJoiningTransformer) => void} SimpleCallback
8
10
  */
9
11
 
10
12
  /* eslint-disable @stylistic/max-len -- Long */
@@ -11,24 +11,26 @@ function _makeDatasetAttribute (n0) {
11
11
  }
12
12
 
13
13
  /**
14
- * @callback ObjectCallback
15
- * @this {JSONJoiningTransformer}
16
- * @param {Record<string, unknown>} obj
17
- * @returns {void}
14
+ * A `@callback` tag combined with `@this` mis-emits in `dist/*.d.ts`
15
+ * (verified against `tsc`'s declaration output — the `@this` type lands as
16
+ * raw, unparsed JSDoc text rather than being converted to a proper `this:`
17
+ * function-type parameter); the equivalent inline `@typedef {(this: ...) =>
18
+ * ...}` function-type form (already used elsewhere, e.g. `TemplateFunction`
19
+ * in `index.js`) emits correctly, so these three use that form instead.
20
+ * @typedef {(
21
+ * this: JSONJoiningTransformer, obj: Record<string, unknown>
22
+ * ) => void} ObjectCallback
18
23
  */
19
24
  /**
20
- * @callback ArrayCallback
21
- * @this {JSONJoiningTransformer}
22
- * @param {any[]} arr
23
- * @returns {void}
25
+ * @typedef {(this: JSONJoiningTransformer, arr: any[]) => void} ArrayCallback
24
26
  */
25
27
  /**
26
28
  * @template [T = "json"]
27
- * @callback SimpleCallback
28
- * @this {T extends "json" ? JSONJoiningTransformer :
29
- * T extends "string" ? import('./StringJoiningTransformer.js').default
30
- * : import('./DOMJoiningTransformer.js').default}
31
- * @returns {void}
29
+ * @typedef {(
30
+ * this: T extends "json" ? JSONJoiningTransformer :
31
+ * T extends "string" ? import('./StringJoiningTransformer.js').default
32
+ * : import('./DOMJoiningTransformer.js').default
33
+ * ) => void} SimpleCallback
32
34
  */
33
35
  // Kept as plain `void` (not `void|Promise<void>`) rather than a union:
34
36
  // TypeScript's "a void-returning callback parameter accepts any actual
@@ -20,9 +20,11 @@ import AbstractJoiningTransformer from './AbstractJoiningTransformer.js';
20
20
  */
21
21
 
22
22
  /**
23
- * @callback SimpleCallback
24
- * @this {StringJoiningTransformer}
25
- * @returns {void}
23
+ * A `@callback` tag combined with `@this` mis-emits in `dist/*.d.ts` (the
24
+ * `@this` type lands as raw, unparsed JSDoc text) — see the equivalent note
25
+ * in `JSONJoiningTransformer.js`; this inline `@typedef {(this: ...) =>
26
+ * ...}` function-type form emits correctly instead.
27
+ * @typedef {(this: StringJoiningTransformer) => void} SimpleCallback
26
28
  */
27
29
 
28
30
  const camelCase = /[a-z][A-Z]/gv;
@@ -2,6 +2,16 @@
2
2
  * Merges `extensions` onto a template context instance so templates can
3
3
  * invoke them as `this.myHelper()`. Shared by JSONPathTransformerContext
4
4
  * and XPathTransformerContext.
5
+ *
6
+ * Also records the registered names on `context._extensionNames` (a `Set`,
7
+ * merged with any already present from an earlier call) — consulted by the
8
+ * declarative interpreter's extension-call nodes (e.g. `{$greet:
9
+ * {select?}}` — see `jsonTemplate.js`) so a declarative `behavior` can only
10
+ * ever invoke names that were actually supplied here, never an
11
+ * arbitrary/built-in context method (`element`, `indexedDB`, etc.) by name.
12
+ * Untrusted, admin-authored declarative source is exactly why this
13
+ * distinction matters — see ROUTE-OVERRIDES-PLAN.md's (idb-manager)
14
+ * "declarative subset" for the threat model this is part of.
5
15
  * @param {object} context - The context instance to extend
6
16
  * @param {Record<string, unknown>} extensions - Extra methods/values
7
17
  * @returns {void}
@@ -18,4 +28,9 @@ export default function applyExtensions (context, extensions) {
18
28
  }
19
29
  }
20
30
  Object.assign(context, extensions);
31
+ const existingNames = /** @type {{_extensionNames?: Set<string>}} */ (
32
+ context
33
+ )._extensionNames;
34
+ /** @type {{_extensionNames: Set<string>}} */ (context)._extensionNames =
35
+ new Set([...(existingNames ?? []), ...Object.keys(extensions)]);
21
36
  }
package/src/index.js CHANGED
@@ -126,7 +126,21 @@ export const setWindow = (win) => {
126
126
  * (`UNKNOWN_MAGIC_PROPERTY`); that combined form needs `$jtltText` instead.
127
127
  * See §3.5. `$indexedDB`'s children are optional (unlike `$if`/`$forEach`,
128
128
  * which both require theirs): a bare prefetch — binding via `$as` for later
129
- * use, or simply discarding the rows — is a legitimate leaf use.
129
+ * use, or simply discarding the rows — is a legitimate leaf use. Any key
130
+ * not otherwise recognized here — e.g. `$greet` — is an extension call:
131
+ * `ctx[name]({select?})` calls a named function from `config.extensions`
132
+ * (`value` from `select`, or the current `$` data when omitted) — like
133
+ * `$renderDefault`, the extension itself is responsible for inserting any
134
+ * output (e.g. via `this.appendOutput(...)`); the interpreter never does so
135
+ * on its behalf. Restricted at runtime to names actually present in
136
+ * `config.extensions` (tracked via `ctx._extensionNames`, set by
137
+ * `applyExtensions`), so a declarative `behavior` — untrusted, admin-authored
138
+ * — can never invoke an arbitrary built-in context method by name. Because
139
+ * any not-otherwise-recognized `$`-prefixed key becomes a live extension
140
+ * name, a future built-in operation added here could collide with a name a
141
+ * consumer already uses for an extension — an accepted, documented risk
142
+ * (see `jsonTemplate.js`'s module doc comment) traded for this terser
143
+ * syntax over a more defensive, explicitly namespaced wrapper.
130
144
  * @typedef {[{$text: unknown}] |
131
145
  * [{$jtltText: unknown, $select?: string}] |
132
146
  * [{$string: unknown, $select?: string}] |
@@ -150,7 +164,8 @@ export const setWindow = (win) => {
150
164
  * },
151
165
  * $as?: string
152
166
  * }, JSONTemplateNode[]] |
153
- * [{$renderDefault: true}]
167
+ * [{$renderDefault: true}] |
168
+ * [Record<`$${string}`, {select?: string}>]
154
169
  * } JSONOperationNode
155
170
  */
156
171
 
@@ -260,6 +275,14 @@ export const setWindow = (win) => {
260
275
  * with a single argument that is the result of this instance's
261
276
  * transform() method. When used in TypeScript, this can be made
262
277
  * generic as `success<T>(result: T): void`.
278
+ * @property {(err: unknown) => void} [error] `success`'s counterpart for
279
+ * the autostart path (`config.autostart` unset/`true`, the common case):
280
+ * a template that throws (directly, or via an awaited Promise it
281
+ * returned) calls this instead, if supplied — otherwise the failure is
282
+ * only surfaced via `console.error`, since `_autoStart` invokes
283
+ * `transform()` without a caller able to `await`/`catch` it directly.
284
+ * Not consulted for a `transform()` call made directly (its own return
285
+ * value/rejection is observable there instead).
263
286
  * @property {null|boolean|number|string|object} [data] A JSON
264
287
  * object or DOM document (XPath)
265
288
  * @property {string} [ajaxData] URL of a JSON file to retrieve for
@@ -567,7 +590,28 @@ class JTLT {
567
590
  return;
568
591
  }
569
592
 
570
- this.transform(/** @type {string} */ (mode));
593
+ // `transform()`'s result is a `Promise` whenever the template ran
594
+ // asynchronously (§ its own doc comment) — discarding that here, as
595
+ // this call previously did, meant a template that threw (or whose
596
+ // `success` callback threw) became an unhandled rejection with no way
597
+ // for the constructor's caller to observe it at all: `config.success`
598
+ // is the only callback `transform()` invokes, with nothing symmetric
599
+ // for failure. `config.error`, when supplied, is that missing
600
+ // counterpart; when it isn't, the failure is at least surfaced via
601
+ // `console.error` instead of silently vanishing.
602
+ const result = this.transform(/** @type {string} */ (mode));
603
+ const maybePromise = /** @type {{catch?: unknown}} */ (result);
604
+ if (maybePromise && typeof maybePromise.catch === 'function') {
605
+ // eslint-disable-next-line promise/prefer-await-to-then -- Fire+forget
606
+ /** @type {Promise<unknown>} */ (result).catch((err) => {
607
+ if (typeof this.config.error === 'function') {
608
+ this.config.error(err);
609
+ } else {
610
+ /* eslint-disable-next-line no-console -- Last-resort visibility */
611
+ console.error(err);
612
+ }
613
+ });
614
+ }
571
615
  }
572
616
 
573
617
  /**
@@ -865,7 +909,7 @@ class JTLT {
865
909
  */
866
910
  export function jtlt (cfg) {
867
911
  // eslint-disable-next-line promise/avoid-new -- Own API
868
- return new Promise((resolve) => {
912
+ return new Promise((resolve, reject) => {
869
913
  // Narrow the constructor overload based on engineType
870
914
  if (cfg && cfg.engineType === 'xpath') {
871
915
  const outputType = cfg.outputType || 'string';
@@ -877,7 +921,8 @@ export function jtlt (cfg) {
877
921
  outputType: 'json',
878
922
  success (val) {
879
923
  resolve(val);
880
- }
924
+ },
925
+ error: reject
881
926
  })
882
927
  );
883
928
  } else if (outputType === 'dom') {
@@ -887,7 +932,8 @@ export function jtlt (cfg) {
887
932
  outputType: 'dom',
888
933
  success (val) {
889
934
  resolve(val);
890
- }
935
+ },
936
+ error: reject
891
937
  })
892
938
  );
893
939
  } else {
@@ -897,7 +943,8 @@ export function jtlt (cfg) {
897
943
  outputType: 'string',
898
944
  success (val) {
899
945
  resolve(val);
900
- }
946
+ },
947
+ error: reject
901
948
  })
902
949
  );
903
950
  }
@@ -913,7 +960,8 @@ export function jtlt (cfg) {
913
960
  outputType: 'string',
914
961
  success (val) {
915
962
  resolve(val);
916
- }
963
+ },
964
+ error: reject
917
965
  })
918
966
  );
919
967
  } else if (outputType === 'dom') {
@@ -923,7 +971,8 @@ export function jtlt (cfg) {
923
971
  outputType: 'dom',
924
972
  success (val) {
925
973
  resolve(val);
926
- }
974
+ },
975
+ error: reject
927
976
  })
928
977
  );
929
978
  } else {
@@ -933,7 +982,8 @@ export function jtlt (cfg) {
933
982
  outputType: 'json',
934
983
  success (val) {
935
984
  resolve(val);
936
- }
985
+ },
986
+ error: reject
937
987
  })
938
988
  );
939
989
  }
@@ -968,7 +1018,8 @@ export {
968
1018
  default as XPathTransformer
969
1019
  } from './XPathTransformer.js';
970
1020
  export {
971
- compileJSONTemplate, isJSONTemplateNodeArray, validateJSONTemplate
1021
+ compileJSONTemplate, extractReads, isJSONTemplateNodeArray,
1022
+ validateJSONTemplate
972
1023
  } from './jsonTemplate.js';
973
1024
 
974
1025
  export default JTLT;
@@ -18,16 +18,44 @@ import {isValidJamilih} from 'jamilih';
18
18
  * including the `$text`/`$jtltText` and `$mode`/`$jtltMode` namespacing
19
19
  * rules and `$indexedDB`'s optional `$as`.
20
20
  *
21
- * `$indexedDB`/`$renderDefault` (the only async operations) may appear
22
- * anywhere a node is allowed — nested inside an element's children, or a
23
- * `$if`/`$forEach` body, included — because every node here is run through
24
- * an `async` callback, and `element()`/`if()`/`choose()`/`forEach()` (in
25
- * every joining transformer and `JSONPathTransformerContext`) duck-type
26
- * their callback's return value: a synchronous callback keeps them
27
- * synchronous, but one returning a `Promise` (an async function that
28
- * awaited something) makes the call itself return a `Promise` that settles
29
- * once the callback's work is done, keeping output correctly ordered
30
- * either way.
21
+ * `$indexedDB`/`$renderDefault`/an extension call (the only operations that
22
+ * may be async — an extension call awaits whatever the named extension
23
+ * itself is) may appear anywhere a node is allowed — nested inside an
24
+ * element's children, or a `$if`/`$forEach` body, included — because every
25
+ * node here is run through an `async` callback, and
26
+ * `element()`/`if()`/`choose()`/`forEach()` (in every joining transformer
27
+ * and `JSONPathTransformerContext`) duck-type their callback's return
28
+ * value: a synchronous callback keeps them synchronous, but one returning a
29
+ * `Promise` (an async function that awaited something) makes the call
30
+ * itself return a `Promise` that settles once the callback's work is done,
31
+ * keeping output correctly ordered either way.
32
+ *
33
+ * An extension call (`{$name: {select?: 'sel'}}`, e.g. `{$greet: {select:
34
+ * '$.user.name'}}` — the argument is an object, matching `$indexedDB`'s own
35
+ * convention, rather than a bare value, leaving room for more named fields
36
+ * later without a breaking shape change) calls a `this`-bound method of
37
+ * that same name supplied via `config.extensions` (`this.name(value)`,
38
+ * `value` resolved by running `select` against the current data, or the
39
+ * current data itself when `select` is omitted) — restricted to names
40
+ * actually present in `config.extensions` (tracked by `applyExtensions` in
41
+ * `extendContext.js`), never an arbitrary/built-in context method, since a
42
+ * declarative `behavior` using this format is typically untrusted,
43
+ * admin-authored input (idb-manager's route overrides): any key not in
44
+ * `RECOGNIZED_OP_KEYS` is treated as a candidate extension name rather than
45
+ * a validation error, so whether it's actually callable can only be
46
+ * confirmed once a live context (and its `config.extensions`) exists — see
47
+ * `runOperation`, below. Like `$renderDefault`, inserting the extension's
48
+ * return value into the output (if it has one worth inserting) is the
49
+ * extension's own job — e.g. via `this.appendOutput(node)` — not something
50
+ * this interpreter does for it. Because any not-otherwise-recognized
51
+ * `$`-prefixed key becomes a live extension name, a future jtlt release
52
+ * adding a new built-in operation could collide with an extension name a
53
+ * consumer already uses — accepted as a known, documented risk in exchange
54
+ * for the terser syntax (rather than the more defensive, explicitly
55
+ * namespaced `{$extension: 'name', $select?: sel}` wrapper this replaced) —
56
+ * consumers documenting their extension names (e.g. a project wiki page)
57
+ * are encouraged to also list jtlt's own reserved op keys as names to
58
+ * avoid.
31
59
  */
32
60
 
33
61
  /**
@@ -87,6 +115,9 @@ function splitElementRest (rest) {
87
115
  * is never valid bare (jamilih hard-reserves it); `$text` is valid bare
88
116
  * (jamilih's own text-node form) but not combined with `$select` (jamilih
89
117
  * rejects the unrecognized companion) — that combination needs `$jtltText`.
118
+ * Any `$`-prefixed key *not* in this set is a candidate extension call
119
+ * (see `runOperation`), not a validation error — see the module doc
120
+ * comment above for the namespace-collision tradeoff this implies.
90
121
  * @type {ReadonlySet<string>}
91
122
  */
92
123
  const RECOGNIZED_OP_KEYS = new Set([
@@ -108,8 +139,30 @@ function validateOperationHead (head) {
108
139
  }
109
140
  const opKeys = keys.filter((k) => RECOGNIZED_OP_KEYS.has(k));
110
141
  if (opKeys.length === 0) {
111
- const badKey = keys.find((k) => !k.startsWith('$')) ?? keys[0];
112
- return `Unrecognized operation-node key \`${badKey}\`.`;
142
+ const badKey = keys.find((k) => !k.startsWith('$'));
143
+ if (badKey) {
144
+ return `Unrecognized operation-node key \`${badKey}\`.`;
145
+ }
146
+ // Every key is `$`-prefixed but none is a built-in op: a single such
147
+ // key is a candidate extension call. Whether it names a name actually
148
+ // supplied via `config.extensions` can only be confirmed once a live
149
+ // context exists (`runOperation`), so that check isn't done here.
150
+ if (keys.length !== 1) {
151
+ return `Unrecognized operation-node key \`${keys[0]}\`.`;
152
+ }
153
+ const [extKey] = keys;
154
+ const argSpec = head[extKey];
155
+ if (!isPlainObject(argSpec)) {
156
+ return `\`${extKey}\` (an extension call) requires an object value, ` +
157
+ `e.g. \`{${extKey}: {select: '$.path'}}\` — matching ` +
158
+ '`$indexedDB`\'s own convention.';
159
+ }
160
+ if (
161
+ Object.hasOwn(argSpec, 'select') && typeof argSpec.select !== 'string'
162
+ ) {
163
+ return `\`${extKey}\`'s \`select\`, when given, must be a string.`;
164
+ }
165
+ return null;
113
166
  }
114
167
  if (Object.hasOwn(head, '$text') && keys.length > 1) {
115
168
  return '`$text` combined with any other key (e.g. `$select`) is not ' +
@@ -224,10 +277,126 @@ function validateNode (node, format, errors) {
224
277
  }
225
278
  }
226
279
 
280
+ /**
281
+ * @typedef {{db: string, store: string}} ReadTarget
282
+ */
283
+
284
+ /**
285
+ * Recursively collect the `{db, store}` targets under one node's
286
+ * `$indexedDB` operations (if any), walking every position a node can
287
+ * appear — element children, `$if` then/else, `$forEach` children, and
288
+ * another `$indexedDB` node's own children — not just the top level. Uses
289
+ * `classify()` defensively, so a structurally-invalid node (already
290
+ * reported by `validateNode`) simply contributes nothing here rather than
291
+ * throwing a second time.
292
+ * @param {unknown} node
293
+ * @param {ReadTarget[]} targets - Populated in place
294
+ * @param {string[]} errors - Populated in place
295
+ * @returns {void}
296
+ */
297
+ function collectReads (node, targets, errors) {
298
+ const kind = classify(node);
299
+ if (kind !== 'element' && kind !== 'operation') {
300
+ return;
301
+ }
302
+ const arr = /** @type {unknown[]} */ (node);
303
+ if (kind === 'element') {
304
+ const [, ...rest] = /** @type {[string, ...unknown[]]} */ (arr);
305
+ const {children} = splitElementRest(rest);
306
+ for (const child of children) {
307
+ collectReads(child, targets, errors);
308
+ }
309
+ return;
310
+ }
311
+ // kind === 'operation'
312
+ const head = /** @type {Record<string, unknown>} */ (arr[0]);
313
+ if (Object.hasOwn(head, '$if')) {
314
+ const [, thenNodes, elseNodes] = arr;
315
+ const thenChildren = /** @type {unknown[]} */ (thenNodes ?? []);
316
+ for (const child of thenChildren) {
317
+ collectReads(child, targets, errors);
318
+ }
319
+ const elseChildren = /** @type {unknown[]} */ (elseNodes ?? []);
320
+ for (const child of elseChildren) {
321
+ collectReads(child, targets, errors);
322
+ }
323
+ return;
324
+ }
325
+ if (Object.hasOwn(head, '$forEach')) {
326
+ const [, childNodes] = arr;
327
+ const forEachChildren = /** @type {unknown[]} */ (childNodes ?? []);
328
+ for (const child of forEachChildren) {
329
+ collectReads(child, targets, errors);
330
+ }
331
+ return;
332
+ }
333
+ if (Object.hasOwn(head, '$indexedDB')) {
334
+ const spec = /** @type {any} */ (head.$indexedDB);
335
+ if (
336
+ !isPlainObject(spec) ||
337
+ typeof spec.db !== 'string' || spec.db.length === 0 ||
338
+ typeof spec.store !== 'string' || spec.store.length === 0
339
+ ) {
340
+ errors.push(
341
+ '`$indexedDB` target could not be resolved statically — `db` and ' +
342
+ '`store` must both be non-empty string literals: ' +
343
+ JSON.stringify(head)
344
+ );
345
+ } else {
346
+ targets.push({db: spec.db, store: spec.store});
347
+ }
348
+ const [, childNodes] = arr;
349
+ const idbChildren = /** @type {unknown[]} */ (childNodes ?? []);
350
+ for (const child of idbChildren) {
351
+ collectReads(child, targets, errors);
352
+ }
353
+ }
354
+ }
355
+
356
+ /**
357
+ * Statically derive the `{db, store}` targets a declarative template's
358
+ * `$indexedDB` nodes touch (ROUTE-OVERRIDES-PLAN.md §3.4, §13 decision 4)
359
+ * — for a route override's data-access checks and its `reads` field. Total:
360
+ * an `$indexedDB` node whose `db`/`store` isn't a literal string is
361
+ * reported as an error rather than silently omitted from `reads` — the
362
+ * whole point is to drive a data-access allowlist, so an unresolvable
363
+ * target must never be mistaken for "no read happens here". Duplicate
364
+ * targets are deduplicated.
365
+ * @param {unknown[]} nodes
366
+ * @returns {{reads: ReadTarget[], errors: string[]}}
367
+ */
368
+ export function extractReads (nodes) {
369
+ if (!Array.isArray(nodes)) {
370
+ return {
371
+ reads: [],
372
+ errors: ['A declarative template must be an array of nodes.']
373
+ };
374
+ }
375
+ /** @type {ReadTarget[]} */
376
+ const targets = [];
377
+ /** @type {string[]} */
378
+ const errors = [];
379
+ for (const node of nodes) {
380
+ collectReads(node, targets, errors);
381
+ }
382
+ const seen = new Set();
383
+ const reads = targets.filter(({db, store}) => {
384
+ const key = `${db}${store}`;
385
+ if (seen.has(key)) {
386
+ return false;
387
+ }
388
+ seen.add(key);
389
+ return true;
390
+ });
391
+ return {reads, errors};
392
+ }
393
+
227
394
  /**
228
395
  * Non-executing structural check for a declarative template. Unlike
229
396
  * `compileJSONTemplate`, this never throws — it reports every problem it
230
- * finds, for a "validate before save" editor workflow.
397
+ * finds, for a "validate before save" editor workflow. Includes the
398
+ * `extractReads()` check (an unresolvable `$indexedDB` target is a
399
+ * validation error, not just a `reads` omission).
231
400
  * @param {unknown[]} nodes
232
401
  * @param {{format?: 'json'|'javascript'}} [options]
233
402
  * @returns {{valid: boolean, errors: string[]}}
@@ -244,6 +413,7 @@ export function validateJSONTemplate (nodes, {format = 'json'} = {}) {
244
413
  for (const node of nodes) {
245
414
  validateNode(node, format, errors);
246
415
  }
416
+ errors.push(...extractReads(nodes).errors);
247
417
  return {valid: errors.length === 0, errors};
248
418
  }
249
419
 
@@ -365,25 +535,44 @@ async function runOperation (head, rest, ctx) {
365
535
  await ctx.renderDefault();
366
536
  return;
367
537
  }
368
- // Only $indexedDB is left (validateOperationHead already rejects
369
- // anything else, and every other recognized key returned above).
370
- const idb = /** @type {{db: string, store: string, options?: unknown}} */
371
- (head.$indexedDB);
372
- const rows = await ctx.indexedDB(idb.db, idb.store, idb.options);
373
- // Validation already confirmed this is an array, when given at all.
374
- const childNodes = /** @type {unknown[]} */ (rest[0] ?? []);
375
- if (Object.hasOwn(head, '$as')) {
376
- ctx.variable(head.$as, {value: rows});
377
- await runNodes(childNodes, ctx);
378
- } else {
379
- const prevContext = ctx._contextObj;
380
- ctx._contextObj = rows;
381
- try {
538
+ if (Object.hasOwn(head, '$indexedDB')) {
539
+ const idb = /** @type {{db: string, store: string, options?: unknown}} */
540
+ (head.$indexedDB);
541
+ const rows = await ctx.indexedDB(idb.db, idb.store, idb.options);
542
+ // Validation already confirmed this is an array, when given at all.
543
+ const childNodes = /** @type {unknown[]} */ (rest[0] ?? []);
544
+ if (Object.hasOwn(head, '$as')) {
545
+ ctx.variable(head.$as, {value: rows});
382
546
  await runNodes(childNodes, ctx);
383
- } finally {
384
- ctx._contextObj = prevContext;
547
+ } else {
548
+ const prevContext = ctx._contextObj;
549
+ ctx._contextObj = rows;
550
+ try {
551
+ await runNodes(childNodes, ctx);
552
+ } finally {
553
+ ctx._contextObj = prevContext;
554
+ }
385
555
  }
556
+ return;
557
+ }
558
+ // Only a single, not-otherwise-recognized `$`-prefixed key is left
559
+ // (`validateOperationHead` already confirmed this shape) — a candidate
560
+ // extension call. Only a name actually supplied via `config.extensions`
561
+ // (tracked by `applyExtensions` in `extendContext.js`) may be called this
562
+ // way — never an arbitrary/built-in context method (`element`,
563
+ // `indexedDB`, …) by name, since an admin-authored declarative `behavior`
564
+ // is untrusted input.
565
+ const [key] = Object.keys(head);
566
+ const name = key.slice(1);
567
+ if (!ctx._extensionNames?.has(name)) {
568
+ throw new Error(
569
+ `"${name}" is not a registered extension (an extension-call key ` +
570
+ 'may only name one actually supplied via `config.extensions`).'
571
+ );
386
572
  }
573
+ const argSpec = /** @type {{select?: string}} */ (head[key]);
574
+ const value = ctx.get(argSpec.select, false);
575
+ await ctx[name](value);
387
576
  }
388
577
 
389
578
  /**
package/tsconfig.json CHANGED
@@ -14,5 +14,5 @@
14
14
  "*.js", "*.d.ts", "src/**/*.js", "src/**/*.d.ts", "demo/**/*.js",
15
15
  "test/**/*.js", "test/**/*.d.ts", "typings/xpath2-js.d.ts"
16
16
  ],
17
- "exclude": ["node_modules", "test.js", "./dist/**/*.js", "demo/codemirror.esm.js", "demo/vendor"]
17
+ "exclude": ["node_modules", "test.js", "demo/codemirror.esm.js", "demo/vendor"]
18
18
  }