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 +51 -0
- package/dist/DOMJoiningTransformer.d.ts +6 -5
- package/dist/DOMJoiningTransformer.d.ts.map +1 -1
- package/dist/JSONJoiningTransformer.d.ts +18 -21
- package/dist/JSONJoiningTransformer.d.ts.map +1 -1
- package/dist/StringJoiningTransformer.d.ts +1 -2
- package/dist/StringJoiningTransformer.d.ts.map +1 -1
- package/dist/extendContext.d.ts +10 -0
- package/dist/extendContext.d.ts.map +1 -1
- package/dist/index.d.ts +16 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/jsonTemplate.d.ts +23 -1
- package/dist/jsonTemplate.d.ts.map +1 -1
- package/docs/API.expanded.md +39 -4
- package/docs/API.md +9 -2
- package/package.json +1 -1
- package/src/DOMJoiningTransformer.js +5 -3
- package/src/JSONJoiningTransformer.js +15 -13
- package/src/StringJoiningTransformer.js +5 -3
- package/src/extendContext.js +15 -0
- package/src/index.js +62 -11
- package/src/jsonTemplate.js +218 -29
- package/tsconfig.json +1 -1
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 = (
|
|
3
|
-
* : DOMJoiningTransformer) => void;
|
|
2
|
+
export type SimpleCallback = (this: DOMJoiningTransformer) => void;
|
|
4
3
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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":"AACA,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;
|
|
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 = (
|
|
3
|
-
|
|
4
|
-
export type
|
|
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
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
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
|
-
* @
|
|
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
|
-
* @
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
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":"AAAA,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"JSONJoiningTransformer.d.ts","sourceRoot":"","sources":["../src/JSONJoiningTransformer.js"],"names":[],"mappings":"AAAA,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAmBtE,YAEW,cAAc,GAFf,CACR,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACvD,IAAI,CAAgB;AAGzB,YAA8D,aAAa,GAAjE,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,CAAe;AAI3E,YAIW,cAAc,CALd,CAAC,GAAG,MAAO,IACZ,CACR,IAAI,EAAE,CAAC,SAAS,MAAM,GAAG,sBAAsB,GAC7C,CAAC,SAAS,QAAQ,GAAG,OAAO,+BAA+B,EAAE,OAAO,GAClE,OAAO,4BAA4B,EAAE,OAAO,KAC7C,IAAI,CAAgB;AAYzB,YAGG,iBAAiB,GAHV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;CACxB,CAAmB;AAIpB,YAGG,WAAW,GAHJ;IACR,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,WAAW,EAAE,OAAO,EAAE,CAAA;CACvB,CAAa;AA1CjB;;;;;;;;;;GAUG;AACH;;GAEG;AACH;;;;;;;GAOG;AAQH;;;;;;;GAOG;AAEH;;;;;GAKG;AAGH;;;;;;;;;GASG;AACH,cAAM,sBAAsB,CAF2D,OAAO,SAAhF,OAAO,iCAAiC,EAAE,4BAA4B,GAAW,OAAO,iCAAiC,EAAE,4BAA6B,CAEzI,SAAQ,0BAA0B,CAHvB,MAAM,CAGiB;IAoB3D,4CAA4C;IACvC,IAAI,EADE,GAAG,EAAE,GAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAExC,kBAAkB;IACb,QAAQ,EADF,GAAG;IAEd,kCAAkC;IAC7B,aAAa,EADP,OAAO,GAAG,SAAS;IAE9B,kCAAkC;IAC7B,aAAa,EADP,OAAO,GAAG,SAAS;IAE9B,4BAA4B;IACvB,aAAa,EADP,WAAW,EAAE;IAExB,sCAAsC;IACjC,YAAY,EADN,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAElC,oBAAoB;IACf,KAAK,EADC,GAAG,EAAE;IAEhB,oEAAoE;IAC/D,gBAAgB,EADV,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IA2TzD,IAAI;IA4XX,kBAAkB;IACb,aAAa,EADP,GAAG;IAxtBhB;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CALyE,CAAC,SAAzE,OAAO,iCAAiC,EAAE,4BAA+B,EAKxE,CAAC,AAJb,CACA,EADQ,GAAG,EAAE,GAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAIvB,EAAE,GAAG,AAHlB,CACA,EADQ,CAGU,GAFR,sBAAsB,CAAC,CAAC,CAAC,CAKrC;IAGD;;;OAGG;IACH,YAAa,CAAC,AAHX,CACA,EADQ,GAAG,EAAE,GAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAGzB,EAAE,GAAG,AAFhB,CACF,EADU,OAAO,iCAAiC,EAAE,4BAElC,EAmBlB;IAED;;;;OAIG;IACH,SAAS,CAAE,IAAI,EAHJ,GAGI,GAFF,IAAI,CAIhB;IAED;;;;OAIG;IACH,UAAU,CAAE,OAAO,EAHR,GAGQ,GAFN,sBAAsB,CAKlC;IAED;;;;OAIG;IACH,MAAM,CAAE,IAAI,EAHD,GAGC,GAFC,sBAAsB,CAalC;IAGD;;;;;OAKG;IACH,GAAG,IAFU,OAAO,CAAC,iBAAiB,CAAC,SAAS,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAC,GAAG,CAe/F;IAED;;;;;OAKG;IACH,SAAS,CAAE,IAAI,EAJJ,MAII,EAAE,GAAG,EAHT,GAGS,GAFP,IAAI,CAShB;IAED;;;;;OAKG;IACH,QAAQ,CAAE,IAAI,EAJH,MAIG,EAAE,GAAG,EAHR,GAGQ,GAFN,IAAI,CAIhB;IAGD;;;;;;;;OAQG;IACH,MAAM,CAAE,OAAO,AARZ,CAEA,EAFQ,IAAI,GAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAC,cAQzB,EAAE,mBAAmB,AANjC,CACA,EADQ,cAAc,GAAC,GAAG,EAMO,EAAE,yBAAyB,AAL5D,CAEA,EAFQ,GAAG,EAAE,GAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAKwB,EAAE,QAAQ,AAHtE,CACA,EADQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAGwC,GAF5D,sBAAsB,CAuDlC;IAED;;;;;;;;;OASG;IACH,GAAG,CAAE,OAAO,AART,CAEA,EAFQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAC,cAQvB,EAAE,mBAAmB,AAN9B,CACA,EADQ,cAAc,GAAC,GAAG,EAMI,EAAE,yBAAyB,AALzD,CAEA,EAFQ,GAAG,EAAE,GAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAKqB,EAAE,QAAQ,AAHnE,CACA,EADQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAGqC,GAFzD,sBAAsB,CAMlC;IAED;;;;;OAKG;IACH,KAAK,CAAE,OAAO,AAJX,CACA,EADQ,GAAG,EAAE,GAAC,aAAa,GAAC,IAIjB,EAAE,EAAE,AAHf,CACA,EADQ,aAGO,GAFL,sBAAsB,CA+BlC;IAED;;;;;OAKG;IACH,MAAM,CAAE,GAAG,EAJA,MAIA,EAAE,EAAE,AAHZ,CACA,EADQ,cAGI,GAFF,sBAAsB,CAMlC;IAED;;;;OAIG;IACH,MAAM,CAAE,GAAG,EAHA,MAGA,GAFE,sBAAsB,CAKlC;IAED;;;;OAIG;IACH,OAAO,CAAE,IAAI,EAHF,OAGE,GAFA,sBAAsB,CAKlC;IAED;;;OAGG;IACH,IAAI,IAFS,sBAAsB,CAKlC;IAED;;;OAGG;IACH,SAAS,IAFI,sBAAsB,CAUlC;IAED;;;;OAIG;IACH,eAAe,CAAE,GAAG,EAHT,MAGS,GAFP,sBAAsB,CAUlC;IAED;;;;OAIG;IACH,cAAc,CAAE,IAAI,EAHT,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAGX,GAFP,sBAAsB,CAUlC;IAED;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAE,IAAI,EAVF,MAAM,GAAC,OAUL,EAAE,IAAI,AAThB,CAEA,EAFQ,iBAAiB,GAAC,GAAG,EAAE,GAAC,cAShB,EAAE,UAAU,AAP5B,CACA,EADQ,GAAG,EAAE,GAAC,cAOc,EAAE,EAAE,AANhC,CAGA,EAHQ,cAMwB,EAAE,gBAAgB,AAHlD,CACA,EADQ,MAAM,EAGoC,GAFxC,sBAAsB,GAAC,OAAO,CAAC,sBAAsB,CAAC,CAqLlE;IAED;;;;OAIG;IACH,SAAS,CAAE,MAAM,EAJN,MAIM,EAAE,YAAY,EAHpB,MAGoB,GAFlB,sBAAsB,CAsClC;IAED;;;;OAIG;IACH,sBAAsB,CAAE,MAAM,EAJnB,MAImB,GAHjB,IAAI,CAuBhB;IACD;;;;;;;;OAQG;IACH,SAAS,CAAE,IAAI,EALJ,MAKI,EAAE,GAAG,EAJT,MAAM,GAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAC,OAAO,EAI7B,GAFP,sBAAsB,CA0ClC;IAED;;;;;;OAMG;IACH,OAAO,CAAE,GAAG,EAHD,MAGC,GAFC,sBAAsB,CAWlC;IAED;;;;;;;OAOG;IACH,qBAAqB,CAAE,MAAM,EAJlB,MAIkB,EAAE,IAAI,EAHxB,MAGwB,GAFtB,sBAAsB,CAWlC;IAED;;;;;;OAMG;IACH,IAAI,CAAE,GAAG,EAHE,MAGF,GAFI,sBAAsB,CAWlC;IAED;;;;OAIG;IACH,SAAS,CAAE,GAAG,EAHH,MAGG,GAFD,sBAAsB,CAKlC;IAED;;;;;;;;;;;OAWG;IACH,QAAQ,CAAE,EAAE,EAND,CAAC,IAAI,EAAE,sBAAsB,KAAK,IAMjC,EAAE,GAAG,AAJd,CAEA,EAFQ,OAAO,+BAA+B,EAAE,YAIlC,GAFJ,sBAAsB,CA4BlC;IAED;;;;;;;;;;;;OAYG;IACH,cAAc,CAAE,IAAI,EAPT,MAOS,EAAE,EAAE,EANb,CAAC,IAAI,EAAE,sBAAsB,KAAK,IAMrB,EAAE,GAAG,AAJ1B,CAEA,EAFQ,OAAO,+BAA+B,EAAE,YAItB,GAFhB,sBAAsB,CAuFlC;IAED;;;;;;OAMG;IACH,gBAAgB,CAAE,GAAG,EALV,MAAM,CAAC,MAAM,EAAE,OAAO,CAKZ,EAAE,MAAM,EAHlB,MAGkB,GAFhB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQnC;CACF;eAEc,sBAAsB"}
|
|
@@ -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 = (
|
|
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":"AAEA,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAGtE,YAaG,YAAY,GAbL;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,OAAO,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B,CAAc;
|
|
1
|
+
{"version":3,"file":"StringJoiningTransformer.d.ts","sourceRoot":"","sources":["../src/StringJoiningTransformer.js"],"names":[],"mappings":"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"}
|
package/dist/extendContext.d.ts
CHANGED
|
@@ -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
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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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"}
|
package/dist/jsonTemplate.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|
package/docs/API.expanded.md
CHANGED
|
@@ -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
|
|
154
|
-
allowed — inside an element's children, or a `$if`/`$forEach` body —
|
|
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
|
|
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
|
@@ -2,9 +2,11 @@ import * as JHTML from 'jhtml';
|
|
|
2
2
|
import AbstractJoiningTransformer from './AbstractJoiningTransformer.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
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
|
-
* @
|
|
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
|
-
* @
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
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
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
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;
|
package/src/extendContext.js
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
1021
|
+
compileJSONTemplate, extractReads, isJSONTemplateNodeArray,
|
|
1022
|
+
validateJSONTemplate
|
|
972
1023
|
} from './jsonTemplate.js';
|
|
973
1024
|
|
|
974
1025
|
export default JTLT;
|
package/src/jsonTemplate.js
CHANGED
|
@@ -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
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
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('$'))
|
|
112
|
-
|
|
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
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
(
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
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
|
-
}
|
|
384
|
-
ctx._contextObj
|
|
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", "
|
|
17
|
+
"exclude": ["node_modules", "test.js", "demo/codemirror.esm.js", "demo/vendor"]
|
|
18
18
|
}
|