jtlt 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGES.md +18 -0
  2. package/README.md +46 -78
  3. package/demo/codemirror.esm.js +28242 -0
  4. package/demo/codemirror.js +94 -0
  5. package/demo/index.css +11 -0
  6. package/demo/index.html +11 -14
  7. package/demo/index.js +210 -26
  8. package/demo/vendor/fontoxpath/dist/fontoxpath.esm.js +600 -0
  9. package/demo/vendor/jamilih/dist/jml.mjs +2341 -0
  10. package/demo/vendor/jhtml/src/SAJJ/SAJJ.ObjectArrayDelegator.js +356 -0
  11. package/demo/vendor/jhtml/src/SAJJ/SAJJ.Stringifier.js +186 -0
  12. package/demo/vendor/jhtml/src/SAJJ/SAJJ.js +746 -0
  13. package/demo/vendor/jhtml/src/SAJJ/testing/SAJJ.html +33 -0
  14. package/demo/vendor/jhtml/src/SAJJ/testing/SAJJ.testing.js +25 -0
  15. package/demo/vendor/jhtml/src/jhtml-browser.js +5 -0
  16. package/demo/vendor/jhtml/src/jhtml-node.cts +3 -0
  17. package/demo/vendor/jhtml/src/jhtml-node.js +8 -0
  18. package/demo/vendor/jhtml/src/jhtml-node.mts +1 -0
  19. package/demo/vendor/jhtml/src/jhtml.cts +3 -0
  20. package/demo/vendor/jhtml/src/jhtml.js +602 -0
  21. package/demo/vendor/jhtml/src/jhtml.mts +1 -0
  22. package/demo/vendor/jsonpath-plus/dist/index-browser-esm.js +2158 -0
  23. package/demo/vendor/prsc/dist/prsc.esm.js +2 -0
  24. package/demo/vendor/simple-get-json/dist/index-es.js +151 -0
  25. package/demo/vendor/whynot/dist/whynot.esm.js +2 -0
  26. package/demo/vendor/xspattern/dist/xspattern.esm.js +2 -0
  27. package/dist/AbstractJoiningTransformer.d.ts +27 -0
  28. package/dist/AbstractJoiningTransformer.d.ts.map +1 -1
  29. package/dist/DOMJoiningTransformer.d.ts +60 -8
  30. package/dist/DOMJoiningTransformer.d.ts.map +1 -1
  31. package/dist/JSONJoiningTransformer.d.ts +8 -9
  32. package/dist/JSONJoiningTransformer.d.ts.map +1 -1
  33. package/dist/JSONPathTransformer.d.ts.map +1 -1
  34. package/dist/JSONPathTransformerContext.d.ts +223 -4
  35. package/dist/JSONPathTransformerContext.d.ts.map +1 -1
  36. package/dist/StringJoiningTransformer.d.ts +7 -7
  37. package/dist/StringJoiningTransformer.d.ts.map +1 -1
  38. package/dist/XPathTransformer.d.ts +2 -2
  39. package/dist/XPathTransformer.d.ts.map +1 -1
  40. package/dist/XPathTransformerContext.d.ts +161 -8
  41. package/dist/XPathTransformerContext.d.ts.map +1 -1
  42. package/dist/index.d.ts +4 -4
  43. package/dist/index.d.ts.map +1 -1
  44. package/docs/API.expanded.md +5 -3
  45. package/docs/API.md +1 -1
  46. package/docs/TO-DO.md +62 -36
  47. package/eslint.config.js +3 -1
  48. package/package.json +28 -4
  49. package/rollup.config.js +13 -0
  50. package/src/AbstractJoiningTransformer.js +42 -0
  51. package/src/DOMJoiningTransformer.js +115 -23
  52. package/src/JSONJoiningTransformer.js +50 -26
  53. package/src/JSONPathTransformer.js +2 -0
  54. package/src/JSONPathTransformerContext.js +936 -5
  55. package/src/StringJoiningTransformer.js +25 -21
  56. package/src/XPathTransformer.js +3 -1
  57. package/src/XPathTransformerContext.js +884 -15
  58. package/src/index.js +16 -7
  59. package/tsconfig.json +5 -2
@@ -13,7 +13,8 @@ import AbstractJoiningTransformer from './AbstractJoiningTransformer.js';
13
13
  * mediaType?: string,
14
14
  * version?: string,
15
15
  * standalone?: boolean,
16
- * method?: "xml"|"html"|"text"|"json"|"xhtml"
16
+ * method?: "xml"|"html"|"text"|"json"|"xhtml",
17
+ * useCharacterMaps?: string[]
17
18
  * }} OutputConfig
18
19
  */
19
20
 
@@ -434,20 +435,6 @@ class StringJoiningTransformer extends AbstractJoiningTransformer {
434
435
  return this;
435
436
  }
436
437
 
437
- /**
438
- * @param {OutputConfig} cfg
439
- * @returns {StringJoiningTransformer}
440
- */
441
- output (cfg) {
442
- // We wait until first element is set in `element()` to add
443
- // XML declaration and DOCTYPE as latter depends on root element
444
- this._outputConfig = cfg;
445
-
446
- // Use for file extension if making downloadable?
447
- this.mediaType = cfg.mediaType;
448
- return this;
449
- }
450
-
451
438
  /**
452
439
  * @param {string|Element} elName - Element name or element object
453
440
  * @param {ElementAttributes} [atts] - Element attributes
@@ -570,7 +557,9 @@ class StringJoiningTransformer extends AbstractJoiningTransformer {
570
557
  }
571
558
  if (childNodes && childNodes.length) {
572
559
  this._openTagState = false;
573
- this.append(jml[method]({'#': childNodes}));
560
+ this.append(this._replaceCharacterMaps(
561
+ jml[method]({'#': childNodes})
562
+ ));
574
563
  }
575
564
  cb.call(this);
576
565
 
@@ -585,6 +574,17 @@ class StringJoiningTransformer extends AbstractJoiningTransformer {
585
574
  return this;
586
575
  }
587
576
 
577
+ /**
578
+ * @param {string} prefix
579
+ * @param {string} namespaceURI
580
+ * @returns {StringJoiningTransformer}
581
+ */
582
+ namespace (prefix, namespaceURI) {
583
+ this.append(' xmlns:' + prefix + '="' +
584
+ this._replaceCharacterMaps(namespaceURI) + '"');
585
+ return this;
586
+ }
587
+
588
588
  /**
589
589
  * @param {string} name - Attribute name
590
590
  * @param {string|Record<string, unknown>|
@@ -648,7 +648,7 @@ class StringJoiningTransformer extends AbstractJoiningTransformer {
648
648
  val = (this._cfg.preEscapedAttributes || avoidAttEscape)
649
649
  ? valStr
650
650
  : valStr.replaceAll('&', '&amp;').replaceAll('"', '&quot;');
651
- this.append(' ' + name + '="' + val + '"');
651
+ this.append(' ' + name + '="' + this._replaceCharacterMaps(val) + '"');
652
652
  return this;
653
653
  }
654
654
 
@@ -663,7 +663,11 @@ class StringJoiningTransformer extends AbstractJoiningTransformer {
663
663
  this.append('>');
664
664
  this._openTagState = false;
665
665
  }
666
- this.append(txt.replaceAll('&', '&amp;').replaceAll('<', '&lt;'));
666
+ this.append(
667
+ this._replaceCharacterMaps(
668
+ txt
669
+ ).replaceAll('&', '&amp;').replaceAll('<', '&lt;')
670
+ );
667
671
  return this;
668
672
  }
669
673
 
@@ -734,7 +738,7 @@ class StringJoiningTransformer extends AbstractJoiningTransformer {
734
738
  // Save current state
735
739
  /** @type {any} */
736
740
  const oldRoot = this.root;
737
- /** @type {any} */
741
+ /** @type {OutputConfig|undefined} */
738
742
  const oldOutputConfig = this._outputConfig;
739
743
  const oldStr = this._str;
740
744
  /** @type {any} */
@@ -742,7 +746,7 @@ class StringJoiningTransformer extends AbstractJoiningTransformer {
742
746
 
743
747
  // Reset state for new document
744
748
  this.root = undefined;
745
- /** @type {any} */
749
+ /** @type {OutputConfig} */
746
750
  this._outputConfig = cfg;
747
751
  this._str = '';
748
752
  this._openTagState = false;
@@ -795,7 +799,7 @@ class StringJoiningTransformer extends AbstractJoiningTransformer {
795
799
 
796
800
  // Reset state for new document
797
801
  this.root = undefined;
798
- /** @type {any} */
802
+ /** @type {OutputConfig} */
799
803
  this._outputConfig = cfg;
800
804
  this._str = '';
801
805
  this._openTagState = false;
@@ -6,7 +6,7 @@ import XPathTransformerContext from './XPathTransformerContext.js';
6
6
  * @property {boolean} [errorOnEqualPriority] Throw on equal priority
7
7
  * @property {import('./index.js').
8
8
  * XPathTemplateArray<T>} templates Template objects
9
- * @property {number} [xpathVersion] XPath version (1|2)
9
+ * @property {number} [xpathVersion] XPath version (1|2|3.1)
10
10
  */
11
11
 
12
12
  /**
@@ -83,6 +83,8 @@ class XPathTransformer {
83
83
  if (len > 1) {
84
84
  this._triggerEqualPriorityError();
85
85
  }
86
+ // Set up parameter context for valueOf() access in root template
87
+ xte._params = {0: xte._contextNode};
86
88
  const ret = templateObj.template.call(xte, undefined, {mode});
87
89
  if (typeof ret !== 'undefined') {
88
90
  /** @type {any} */ (xte)._getJoiningTransformer().append(ret);