json-renderers-build-table 1.22.3 → 1.26.2

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 (191) hide show
  1. package/package.json +2 -2
  2. package/src/index.js +2 -2
  3. package/src/{v21 → v23/builders}/bodyOnly/index.js +1 -1
  4. package/src/v23/builders/footerOnly/base.json +3 -0
  5. package/src/v23/builders/footerOnly/index.js +21 -0
  6. package/src/v23/builders/footerOnly/instructions/single.json +19 -0
  7. package/src/{v21 → v23/builders}/headerOnly/index.js +1 -1
  8. package/src/{v21 → v23/builders}/simple/index.js +2 -2
  9. package/src/{v17/simple → v23/builders}/spec.json +17 -0
  10. package/src/{v20/simple → v23/builders/withFooter}/index.js +7 -5
  11. package/src/v23/builders/withFooter/instructions/single.json +56 -0
  12. package/src/v23/builders/withOptions/index.js +51 -0
  13. package/src/v23/builders/withOptions/instructions/double.json +19 -0
  14. package/src/v23/builders/withOptions/instructions/postSingle.json +22 -0
  15. package/src/v23/builders/withOptions/instructions/single.json +78 -0
  16. package/src/v23/builders/withSerial/index.js +51 -0
  17. package/src/v23/builders/withSerial/instructions/double.json +19 -0
  18. package/src/v23/builders/withSerial/instructions/postSingle.json +22 -0
  19. package/src/v23/builders/withSerial/instructions/single.json +78 -0
  20. package/src/v23/index.js +34 -0
  21. package/src/{v21 → v23}/singleInstruction/index.js +14 -1
  22. package/src/v24/actions/index.js +5 -0
  23. package/src/v24/actions/insertOptions/index.js +47 -0
  24. package/src/v24/actions/insertOptions/instructions/footer.json +22 -0
  25. package/src/v24/actions/insertOptions/instructions/single.json +62 -0
  26. package/src/v24/actions/insertSerial/index.js +47 -0
  27. package/src/v24/actions/insertSerial/instructions/footer.json +22 -0
  28. package/src/v24/actions/insertSerial/instructions/single.json +62 -0
  29. package/src/{v20 → v24/builders}/bodyOnly/index.js +3 -3
  30. package/src/v24/builders/footerOnly/base.json +3 -0
  31. package/src/v24/builders/footerOnly/index.js +21 -0
  32. package/src/v24/builders/footerOnly/instructions/single.json +19 -0
  33. package/src/{v20 → v24/builders}/headerOnly/index.js +3 -3
  34. package/src/v24/builders/simple/index.js +49 -0
  35. package/src/{v18/headerOnly → v24/builders}/spec.json +21 -0
  36. package/src/v24/builders/withFooter/index.js +49 -0
  37. package/src/v24/builders/withFooter/instructions/single.json +56 -0
  38. package/src/{v20 → v24}/doubleInstruction/index.js +5 -3
  39. package/src/v24/guards/index.js +10 -0
  40. package/src/v24/guards/references/func/index.js +8 -0
  41. package/src/v24/guards/references/index.js +9 -0
  42. package/src/v24/guards/references/templateKey/index.js +8 -0
  43. package/src/v24/guards/structure/destinationPath/index.js +8 -0
  44. package/src/v24/guards/structure/func/index.js +8 -0
  45. package/src/v24/guards/structure/index.js +15 -0
  46. package/src/v24/guards/structure/sourcePath/index.js +8 -0
  47. package/src/v24/guards/structure/templateKey/index.js +9 -0
  48. package/src/v24/index.js +71 -0
  49. package/src/v24/singleInstruction/index.js +32 -0
  50. package/src/v25/actions/index.js +20 -0
  51. package/src/v25/actions/insertOptions/index.js +47 -0
  52. package/src/v25/actions/insertOptions/instructions/footer.json +22 -0
  53. package/src/v25/actions/insertOptions/instructions/single.json +62 -0
  54. package/src/v25/actions/insertSerial/index.js +47 -0
  55. package/src/v25/actions/insertSerial/instructions/footer.json +22 -0
  56. package/src/v25/actions/insertSerial/instructions/single.json +62 -0
  57. package/src/v25/builders/bodyOnly/index.js +18 -0
  58. package/src/v25/builders/footerOnly/base.json +3 -0
  59. package/src/v25/builders/footerOnly/index.js +21 -0
  60. package/src/v25/builders/footerOnly/instructions/single.json +19 -0
  61. package/src/v25/builders/headerOnly/index.js +18 -0
  62. package/src/v25/builders/simple/base.json +53 -0
  63. package/src/v25/builders/simple/index.js +40 -0
  64. package/src/{v18/bodyOnly → v25/builders}/spec.json +21 -0
  65. package/src/v25/builders/withFooter/base.json +53 -0
  66. package/src/v25/builders/withFooter/index.js +40 -0
  67. package/src/v25/builders/withFooter/instructions/double.json +19 -0
  68. package/src/v25/builders/withFooter/instructions/single.json +56 -0
  69. package/src/v25/doubleInstruction/index.js +21 -0
  70. package/src/v25/guards/index.js +10 -0
  71. package/src/v25/guards/references/func/index.js +8 -0
  72. package/src/v25/guards/references/index.js +9 -0
  73. package/src/v25/guards/references/templateKey/index.js +8 -0
  74. package/src/v25/guards/structure/destinationPath/index.js +8 -0
  75. package/src/v25/guards/structure/func/index.js +8 -0
  76. package/src/v25/guards/structure/index.js +15 -0
  77. package/src/v25/guards/structure/sourcePath/index.js +8 -0
  78. package/src/v25/guards/structure/templateKey/index.js +9 -0
  79. package/src/v25/index.js +21 -0
  80. package/src/v25/singleInstruction/index.js +32 -0
  81. package/src/v25/writePath/index.js +62 -0
  82. package/src/v26/actions/index.js +20 -0
  83. package/src/v26/actions/insertOptions/index.js +47 -0
  84. package/src/v26/actions/insertOptions/instructions/footer.json +22 -0
  85. package/src/v26/actions/insertOptions/instructions/single.json +62 -0
  86. package/src/v26/actions/insertSerial/index.js +47 -0
  87. package/src/v26/actions/insertSerial/instructions/footer.json +22 -0
  88. package/src/v26/actions/insertSerial/instructions/single.json +62 -0
  89. package/src/v26/builders/bodyOnly/base.json +1 -0
  90. package/src/v26/builders/bodyOnly/index.js +18 -0
  91. package/src/v26/builders/footerOnly/base.json +3 -0
  92. package/src/v26/builders/footerOnly/index.js +21 -0
  93. package/src/v26/builders/footerOnly/instructions/single.json +19 -0
  94. package/src/v26/builders/headerOnly/base.json +53 -0
  95. package/src/v26/builders/headerOnly/index.js +18 -0
  96. package/src/v26/builders/simple/base.json +53 -0
  97. package/src/v26/builders/simple/index.js +40 -0
  98. package/src/v26/builders/simple/instructions/double.json +19 -0
  99. package/src/{v17 → v26/builders}/spec.json +21 -0
  100. package/src/v26/builders/withFooter/base.json +53 -0
  101. package/src/v26/builders/withFooter/index.js +40 -0
  102. package/src/v26/builders/withFooter/instructions/double.json +19 -0
  103. package/src/v26/builders/withFooter/instructions/single.json +56 -0
  104. package/src/v26/doubleInstruction/index.js +21 -0
  105. package/src/v26/guards/index.js +10 -0
  106. package/src/v26/guards/references/func/index.js +8 -0
  107. package/src/v26/guards/references/index.js +9 -0
  108. package/src/v26/guards/references/templateKey/index.js +8 -0
  109. package/src/v26/guards/structure/destinationPath/index.js +8 -0
  110. package/src/v26/guards/structure/func/index.js +8 -0
  111. package/src/v26/guards/structure/index.js +15 -0
  112. package/src/v26/guards/structure/sourcePath/index.js +8 -0
  113. package/src/v26/guards/structure/templateKey/index.js +9 -0
  114. package/src/v26/index.js +21 -0
  115. package/src/v26/singleInstruction/index.js +32 -0
  116. package/src/v26/writePath/index.js +62 -0
  117. package/src/v17/index.js +0 -5
  118. package/src/v17/simple/index.js +0 -56
  119. package/src/v17/simple/writePath/index.js +0 -47
  120. package/src/v18/bodyOnly/base.json +0 -1
  121. package/src/v18/bodyOnly/index.js +0 -36
  122. package/src/v18/bodyOnly/writePath/index.js +0 -47
  123. package/src/v18/headerOnly/index.js +0 -42
  124. package/src/v18/headerOnly/writePath/index.js +0 -47
  125. package/src/v18/index.js +0 -5
  126. package/src/v18/simple/index.js +0 -57
  127. package/src/v18/simple/spec.json +0 -86
  128. package/src/v18/simple/writePath/index.js +0 -47
  129. package/src/v18/spec.json +0 -86
  130. package/src/v19/bodyOnly/index.js +0 -36
  131. package/src/v19/bodyOnly/spec.json +0 -86
  132. package/src/v19/headerOnly/index.js +0 -42
  133. package/src/v19/headerOnly/spec.json +0 -86
  134. package/src/v19/index.js +0 -5
  135. package/src/v19/simple/index.js +0 -57
  136. package/src/v19/simple/spec.json +0 -86
  137. package/src/v19/spec.json +0 -86
  138. package/src/v19/writePath/index.js +0 -47
  139. package/src/v20/bodyOnly/spec.json +0 -86
  140. package/src/v20/headerOnly/spec.json +0 -86
  141. package/src/v20/index.js +0 -5
  142. package/src/v20/simple/spec.json +0 -86
  143. package/src/v20/singleInstruction/index.js +0 -17
  144. package/src/v20/spec.json +0 -86
  145. package/src/v21/bodyOnly/spec.json +0 -86
  146. package/src/v21/headerOnly/spec.json +0 -86
  147. package/src/v21/index.js +0 -5
  148. package/src/v21/simple/instructions/single.json +0 -38
  149. package/src/v21/simple/spec.json +0 -86
  150. package/src/v21/spec.json +0 -86
  151. /package/src/{v19 → v23/builders}/bodyOnly/base.json +0 -0
  152. /package/src/{v18 → v23/builders}/bodyOnly/instructions/double.json +0 -0
  153. /package/src/{v17/simple → v23/builders/headerOnly}/base.json +0 -0
  154. /package/src/{v17/simple → v23/builders/headerOnly}/instructions/single.json +0 -0
  155. /package/src/{v18/headerOnly → v23/builders/simple}/base.json +0 -0
  156. /package/src/{v17 → v23/builders}/simple/instructions/double.json +0 -0
  157. /package/src/{v18/headerOnly → v23/builders/simple}/instructions/single.json +0 -0
  158. /package/src/{v18/simple → v23/builders/withFooter}/base.json +0 -0
  159. /package/src/{v18/simple → v23/builders/withFooter}/instructions/double.json +0 -0
  160. /package/src/{v19/headerOnly → v23/builders/withOptions}/base.json +0 -0
  161. /package/src/{v19/simple → v23/builders/withSerial}/base.json +0 -0
  162. /package/src/{v21 → v23}/doubleInstruction/index.js +0 -0
  163. /package/src/{v21 → v23}/guards/index.js +0 -0
  164. /package/src/{v21 → v23}/guards/references/func/index.js +0 -0
  165. /package/src/{v21 → v23}/guards/references/index.js +0 -0
  166. /package/src/{v21 → v23}/guards/references/templateKey/index.js +0 -0
  167. /package/src/{v21 → v23}/guards/structure/destinationPath/index.js +0 -0
  168. /package/src/{v21 → v23}/guards/structure/func/index.js +0 -0
  169. /package/src/{v21 → v23}/guards/structure/index.js +0 -0
  170. /package/src/{v21 → v23}/guards/structure/sourcePath/index.js +0 -0
  171. /package/src/{v21 → v23}/guards/structure/templateKey/index.js +0 -0
  172. /package/src/{v20 → v23}/writePath/index.js +0 -0
  173. /package/src/{v20 → v24/builders}/bodyOnly/base.json +0 -0
  174. /package/src/{v19 → v24/builders}/bodyOnly/instructions/double.json +0 -0
  175. /package/src/{v20 → v24/builders}/headerOnly/base.json +0 -0
  176. /package/src/{v18/simple → v24/builders/headerOnly}/instructions/single.json +0 -0
  177. /package/src/{v20 → v24/builders}/simple/base.json +0 -0
  178. /package/src/{v19 → v24/builders}/simple/instructions/double.json +0 -0
  179. /package/src/{v19/headerOnly → v24/builders/simple}/instructions/single.json +0 -0
  180. /package/src/{v21/headerOnly → v24/builders/withFooter}/base.json +0 -0
  181. /package/src/{v20/simple → v24/builders/withFooter}/instructions/double.json +0 -0
  182. /package/src/{v21 → v24}/writePath/index.js +0 -0
  183. /package/src/{v21 → v25/builders}/bodyOnly/base.json +0 -0
  184. /package/src/{v20 → v25/builders}/bodyOnly/instructions/double.json +0 -0
  185. /package/src/{v21/simple → v25/builders/headerOnly}/base.json +0 -0
  186. /package/src/{v19/simple → v25/builders/headerOnly}/instructions/single.json +0 -0
  187. /package/src/{v21 → v25/builders}/simple/instructions/double.json +0 -0
  188. /package/src/{v20/headerOnly → v25/builders/simple}/instructions/single.json +0 -0
  189. /package/src/{v21 → v26/builders}/bodyOnly/instructions/double.json +0 -0
  190. /package/src/{v20/simple → v26/builders/headerOnly}/instructions/single.json +0 -0
  191. /package/src/{v21/headerOnly → v26/builders/simple}/instructions/single.json +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ "children": []
3
+ }
@@ -0,0 +1,21 @@
1
+ import fromCollection from "json-transformer-funcs-one-dimension";
2
+ import twoDimensional from "json-transformer-funcs-two-dimensions";
3
+
4
+ import spec from "../spec.json" with { type: "json" };
5
+ import base from "./base.json" with { type: "json" };
6
+ import singleInstructions from "./instructions/single.json" with { type: "json" };
7
+
8
+ import runSingleInstructions from "../../singleInstruction/index.js";
9
+
10
+ const registry = { data: {}, base, spec };
11
+ const functions = { fromCollection, twoDimensional };
12
+
13
+ const startFunc = (data, showLog = false, returnLog = []) => {
14
+ registry.data = data;
15
+
16
+ runSingleInstructions(singleInstructions, registry, functions, spec, showLog, returnLog);
17
+
18
+ return base?.children;
19
+ };
20
+
21
+ export default startFunc;
@@ -0,0 +1,19 @@
1
+ [
2
+ {
3
+ "narration": "Build the footer row for the table using the configured columns.",
4
+ "destinationPath": {
5
+ "fileName": "base",
6
+ "filePath": [
7
+ "children"
8
+ ]
9
+ },
10
+ "sourcePath": {
11
+ "fileName": "data",
12
+ "filePath": [
13
+ "columns"
14
+ ]
15
+ },
16
+ "templateKey": "buildFooter",
17
+ "func": "fromCollection"
18
+ }
19
+ ]
@@ -0,0 +1,53 @@
1
+ {
2
+ "tagName": "table",
3
+ "attributes": {
4
+ "class": "table table-hover table-striped align-middle border mb-0"
5
+ },
6
+ "children": [
7
+ {
8
+ "tagName": "colgroup",
9
+ "attributes": {
10
+ "data-role": "table-colgroup"
11
+ },
12
+ "children": []
13
+ },
14
+ {
15
+ "tagName": "thead",
16
+ "attributes": {
17
+ "class": "table-dark",
18
+ "data-role": "table-header"
19
+ },
20
+ "children": [
21
+ {
22
+ "tagName": "tr",
23
+ "attributes": {
24
+ "data-role": "table-header-row"
25
+ },
26
+ "children": []
27
+ }
28
+ ]
29
+ },
30
+ {
31
+ "tagName": "tbody",
32
+ "attributes": {
33
+ "data-role": "table-body"
34
+ },
35
+ "children": []
36
+ },
37
+ {
38
+ "tagName": "tfoot",
39
+ "attributes": {
40
+ "data-role": "table-footer"
41
+ },
42
+ "children": [
43
+ {
44
+ "tagName": "tr",
45
+ "attributes": {
46
+ "data-role": "table-footer-row"
47
+ },
48
+ "children": []
49
+ }
50
+ ]
51
+ }
52
+ ]
53
+ }
@@ -0,0 +1,18 @@
1
+ import fromCollection from "json-transformer-funcs-one-dimension";
2
+
3
+ import spec from "../spec.json" with { type: "json" };
4
+ import base from "./base.json" with { type: "json" };
5
+ import singleInstructions from "./instructions/single.json" with { type: "json" };
6
+
7
+ import runSingleInstructions from "../../singleInstruction/index.js";
8
+
9
+ const registry = { data: {}, base, spec };
10
+ const functions = { fromCollection };
11
+
12
+ const startFunc = (data, showLog = false, returnLog = []) => {
13
+ registry.data = data;
14
+ runSingleInstructions(singleInstructions, registry, functions, spec, showLog, returnLog);
15
+ return base;
16
+ };
17
+
18
+ export default startFunc;
@@ -0,0 +1,53 @@
1
+ {
2
+ "tagName": "table",
3
+ "attributes": {
4
+ "class": "table table-hover table-striped align-middle border mb-0"
5
+ },
6
+ "children": [
7
+ {
8
+ "tagName": "colgroup",
9
+ "attributes": {
10
+ "data-role": "table-colgroup"
11
+ },
12
+ "children": []
13
+ },
14
+ {
15
+ "tagName": "thead",
16
+ "attributes": {
17
+ "class": "table-dark",
18
+ "data-role": "table-header"
19
+ },
20
+ "children": [
21
+ {
22
+ "tagName": "tr",
23
+ "attributes": {
24
+ "data-role": "table-header-row"
25
+ },
26
+ "children": []
27
+ }
28
+ ]
29
+ },
30
+ {
31
+ "tagName": "tbody",
32
+ "attributes": {
33
+ "data-role": "table-body"
34
+ },
35
+ "children": []
36
+ },
37
+ {
38
+ "tagName": "tfoot",
39
+ "attributes": {
40
+ "data-role": "table-footer"
41
+ },
42
+ "children": [
43
+ {
44
+ "tagName": "tr",
45
+ "attributes": {
46
+ "data-role": "table-footer-row"
47
+ },
48
+ "children": []
49
+ }
50
+ ]
51
+ }
52
+ ]
53
+ }
@@ -0,0 +1,40 @@
1
+ import fromCollection from "json-transformer-funcs-one-dimension";
2
+ import twoDimensional from "json-transformer-funcs-two-dimensions";
3
+
4
+ import spec from "../spec.json" with { type: "json" };
5
+ import base from "./base.json" with { type: "json" };
6
+ import singleInstructions from "./instructions/single.json" with { type: "json" };
7
+ import doubleInstructions from "./instructions/double.json" with { type: "json" };
8
+
9
+ import runSingleInstructions from "../../singleInstruction/index.js";
10
+ import runDoubleInstructions from "../../doubleInstruction/index.js";
11
+ import actions from "../../actions/index.js";
12
+
13
+ const functions = { fromCollection, twoDimensional };
14
+
15
+ const startFunc = (inConfig = {}, showLog = false, returnLog = []) => {
16
+ const localConfig = inConfig;
17
+
18
+ const localColumns = localConfig.columns || [];
19
+ const localData = localConfig.data || [];
20
+ const localOptions = localConfig.options
21
+
22
+ const localBase = structuredClone(base);
23
+ const registry = {
24
+ data: {
25
+ columns: localColumns,
26
+ data: localData
27
+ },
28
+ base: localBase,
29
+ spec
30
+ };
31
+
32
+ runSingleInstructions(singleInstructions, registry, functions, spec, showLog, returnLog);
33
+ runDoubleInstructions(doubleInstructions, registry, functions, spec, showLog, returnLog);
34
+
35
+ actions({ inOptions: localOptions, inBase: localBase });
36
+
37
+ return localBase;
38
+ };
39
+
40
+ export default startFunc;
@@ -0,0 +1,19 @@
1
+ [
2
+ {
3
+ "narration": "Build the table body rows for the table using the configured columns and data.",
4
+ "destinationPath": {
5
+ "fileName": "base",
6
+ "dataRole": "table-body",
7
+ "filePath": [
8
+ "children"
9
+ ]
10
+ },
11
+ "sourcePath": {
12
+ "fileName": "data",
13
+ "filePath": [
14
+ "columns"
15
+ ]
16
+ },
17
+ "func": "twoDimensional"
18
+ }
19
+ ]
@@ -28,6 +28,8 @@
28
28
  "type": "text",
29
29
  "placeholder": "enter ${columnName}",
30
30
  "name": "${columnName}",
31
+ "id": "${columnName}",
32
+ "list": "${columnName}",
31
33
  "class": "form-control"
32
34
  }
33
35
  }
@@ -62,6 +64,21 @@
62
64
  }
63
65
  ]
64
66
  },
67
+ "optionsButtonCell": {
68
+ "tagName": "td",
69
+ "attributes": {
70
+ "class": "py-2 px-3 text-center"
71
+ },
72
+ "children": [
73
+ {
74
+ "tagName": "button",
75
+ "textContent": "${columnName}",
76
+ "attributes": {
77
+ "class": "btn btn-primary btn-sm"
78
+ }
79
+ }
80
+ ]
81
+ },
65
82
  "buildOption": {
66
83
  "tagName": "option",
67
84
  "textContent": "${rowValue}",
@@ -82,5 +99,9 @@
82
99
  "data-name": "${columnName}"
83
100
  },
84
101
  "children": []
102
+ },
103
+ "emptyCell": {
104
+ "tagName": "td",
105
+ "children": []
85
106
  }
86
107
  }
@@ -0,0 +1,53 @@
1
+ {
2
+ "tagName": "table",
3
+ "attributes": {
4
+ "class": "table table-hover table-striped align-middle border mb-0"
5
+ },
6
+ "children": [
7
+ {
8
+ "tagName": "colgroup",
9
+ "attributes": {
10
+ "data-role": "table-colgroup"
11
+ },
12
+ "children": []
13
+ },
14
+ {
15
+ "tagName": "thead",
16
+ "attributes": {
17
+ "class": "table-dark",
18
+ "data-role": "table-header"
19
+ },
20
+ "children": [
21
+ {
22
+ "tagName": "tr",
23
+ "attributes": {
24
+ "data-role": "table-header-row"
25
+ },
26
+ "children": []
27
+ }
28
+ ]
29
+ },
30
+ {
31
+ "tagName": "tbody",
32
+ "attributes": {
33
+ "data-role": "table-body"
34
+ },
35
+ "children": []
36
+ },
37
+ {
38
+ "tagName": "tfoot",
39
+ "attributes": {
40
+ "data-role": "table-footer"
41
+ },
42
+ "children": [
43
+ {
44
+ "tagName": "tr",
45
+ "attributes": {
46
+ "data-role": "table-footer-row"
47
+ },
48
+ "children": []
49
+ }
50
+ ]
51
+ }
52
+ ]
53
+ }
@@ -0,0 +1,40 @@
1
+ import fromCollection from "json-transformer-funcs-one-dimension";
2
+ import twoDimensional from "json-transformer-funcs-two-dimensions";
3
+
4
+ import spec from "../spec.json" with { type: "json" };
5
+ import base from "./base.json" with { type: "json" };
6
+ import singleInstructions from "./instructions/single.json" with { type: "json" };
7
+ import doubleInstructions from "./instructions/double.json" with { type: "json" };
8
+
9
+ import runSingleInstructions from "../../singleInstruction/index.js";
10
+ import runDoubleInstructions from "../../doubleInstruction/index.js";
11
+ import actions from "../../actions/index.js";
12
+
13
+ const functions = { fromCollection, twoDimensional };
14
+
15
+ const startFunc = (inConfig = {}, showLog = false, returnLog = []) => {
16
+ const localConfig = inConfig
17
+
18
+ const localColumns = localConfig.inColumns || localConfig.columns || [];
19
+ const localData = localConfig.inData || localConfig.data || [];
20
+ const localOptions = localConfig.inOptions || localConfig.options || {};
21
+
22
+ const localBase = structuredClone(base);
23
+ const registry = {
24
+ data: {
25
+ columns: localColumns,
26
+ data: localData
27
+ },
28
+ base: localBase,
29
+ spec
30
+ };
31
+
32
+ runSingleInstructions(singleInstructions, registry, functions, spec, showLog, returnLog);
33
+ runDoubleInstructions(doubleInstructions, registry, functions, spec, showLog, returnLog);
34
+
35
+ actions({ inOptions: localOptions, inBase: localBase });
36
+
37
+ return localBase;
38
+ };
39
+
40
+ export default startFunc;
@@ -0,0 +1,19 @@
1
+ [
2
+ {
3
+ "narration": "Build the table body rows for the table using the configured columns and data.",
4
+ "destinationPath": {
5
+ "fileName": "base",
6
+ "dataRole": "table-body",
7
+ "filePath": [
8
+ "children"
9
+ ]
10
+ },
11
+ "sourcePath": {
12
+ "fileName": "data",
13
+ "filePath": [
14
+ "columns"
15
+ ]
16
+ },
17
+ "func": "twoDimensional"
18
+ }
19
+ ]
@@ -0,0 +1,56 @@
1
+ [
2
+ {
3
+ "narration": "Build the column widths for the table using the configured columns.",
4
+ "destinationPath": {
5
+ "fileName": "base",
6
+ "dataRole": "table-colgroup",
7
+ "filePath": [
8
+ "children"
9
+ ]
10
+ },
11
+ "sourcePath": {
12
+ "fileName": "data",
13
+ "filePath": [
14
+ "columns"
15
+ ]
16
+ },
17
+ "templateKey": "buildColGroup",
18
+ "func": "fromCollection"
19
+ },
20
+ {
21
+ "narration": "Build the header row for the table using the configured columns.",
22
+ "destinationPath": {
23
+ "fileName": "base",
24
+ "dataRole": "table-header-row",
25
+ "filePath": [
26
+ "children"
27
+ ]
28
+ },
29
+ "sourcePath": {
30
+ "fileName": "data",
31
+ "filePath": [
32
+ "columns"
33
+ ]
34
+ },
35
+ "templateKey": "buildHeader",
36
+ "func": "fromCollection"
37
+ },
38
+ {
39
+ "narration": "Build the footer row for the table using the configured columns.",
40
+ "destinationPath": {
41
+ "fileName": "base",
42
+ "dataRole": "table-footer-row",
43
+ "filePath": [
44
+ "children"
45
+ ]
46
+ },
47
+ "sourcePath": {
48
+ "fileName": "data",
49
+ "filePath": [
50
+ "columns"
51
+ ]
52
+ },
53
+ "templateKey": "buildFooter",
54
+ "func": "fromCollection"
55
+ }
56
+ ]
@@ -0,0 +1,21 @@
1
+ import writePath from "../writePath/index.js";
2
+ import checkInstruction from "../guards/index.js";
3
+
4
+ const runDoubleInstruction = (instruction, registry, functions, spec, showLog, returnLog) => {
5
+ if (!checkInstruction(instruction, functions, spec, showLog, returnLog)) return;
6
+ const result = functions[instruction.func](
7
+ registry.data.columns,
8
+ registry.data.data,
9
+ spec
10
+ );
11
+ writePath(registry, instruction.destinationPath, result);
12
+ };
13
+
14
+ const runDoubleInstructions = (instructions, registry, functions, spec, showLog, returnLog) => {
15
+ instructions.forEach(instruction => {
16
+ runDoubleInstruction(instruction, registry, functions, spec, showLog, returnLog);
17
+ });
18
+ };
19
+
20
+ export { runDoubleInstruction, runDoubleInstructions };
21
+ export default runDoubleInstructions;
@@ -0,0 +1,10 @@
1
+ import checkStructure from "./structure/index.js";
2
+ import checkReferences from "./references/index.js";
3
+
4
+ const checkInstruction = (instruction, functions, spec, showLog, returnLog) => {
5
+ const structurePassed = checkStructure(instruction, showLog, returnLog);
6
+ if (!structurePassed) return false;
7
+ return checkReferences(instruction, functions, spec, showLog, returnLog);
8
+ };
9
+ export { checkStructure, checkReferences, checkInstruction };
10
+ export default checkInstruction;
@@ -0,0 +1,8 @@
1
+ const checkFunctionReference = (instruction, functions, showLog, returnLog) => {
2
+ const passed = typeof functions[instruction.func] === "function";
3
+ const message = `references/func (${instruction.func}): ${passed ? "passed" : "failed"}`;
4
+ returnLog.push(message);
5
+ if (showLog) console.log(message);
6
+ return passed;
7
+ };
8
+ export default checkFunctionReference;
@@ -0,0 +1,9 @@
1
+ import checkFunctionReference from "./func/index.js";
2
+ import checkSpecReference from "./templateKey/index.js";
3
+
4
+ const checkReferences = (instruction, functions, spec, showLog, returnLog) => {
5
+ const functionPassed = checkFunctionReference(instruction, functions, showLog, returnLog);
6
+ const specPassed = checkSpecReference(instruction, spec, showLog, returnLog);
7
+ return functionPassed && specPassed;
8
+ };
9
+ export default checkReferences;
@@ -0,0 +1,8 @@
1
+ const checkSpecReference = (instruction, spec, showLog, returnLog) => {
2
+ const passed = instruction.templateKey === undefined || Object.hasOwn(spec, instruction.templateKey);
3
+ const message = `references/templateKey${instruction.templateKey === undefined ? " (not used)" : ` (${instruction.templateKey})`}: ${passed ? "passed" : "failed"}`;
4
+ returnLog.push(message);
5
+ if (showLog) console.log(message);
6
+ return passed;
7
+ };
8
+ export default checkSpecReference;
@@ -0,0 +1,8 @@
1
+ const checkDestinationPath = (instruction, showLog, returnLog) => {
2
+ const passed = Boolean(instruction.destinationPath?.fileName && Array.isArray(instruction.destinationPath?.filePath));
3
+ const message = `structure/destinationPath: ${passed ? "passed" : "failed"}`;
4
+ returnLog.push(message);
5
+ if (showLog) console.log(message);
6
+ return passed;
7
+ };
8
+ export default checkDestinationPath;
@@ -0,0 +1,8 @@
1
+ const checkFunc = (instruction, showLog, returnLog) => {
2
+ const passed = typeof instruction.func === "string" && instruction.func.length > 0;
3
+ const message = `structure/func: ${passed ? "passed" : "failed"}`;
4
+ returnLog.push(message);
5
+ if (showLog) console.log(message);
6
+ return passed;
7
+ };
8
+ export default checkFunc;
@@ -0,0 +1,15 @@
1
+ import checkSourcePath from "./sourcePath/index.js";
2
+ import checkDestinationPath from "./destinationPath/index.js";
3
+ import checkTemplateKey from "./templateKey/index.js";
4
+ import checkFunc from "./func/index.js";
5
+
6
+ const checkStructure = (instruction, showLog, returnLog) => {
7
+ const results = [
8
+ checkSourcePath(instruction, showLog, returnLog),
9
+ checkDestinationPath(instruction, showLog, returnLog),
10
+ checkTemplateKey(instruction, showLog, returnLog),
11
+ checkFunc(instruction, showLog, returnLog)
12
+ ];
13
+ return results.every(Boolean);
14
+ };
15
+ export default checkStructure;
@@ -0,0 +1,8 @@
1
+ const checkSourcePath = (instruction, showLog, returnLog) => {
2
+ const passed = Boolean(instruction.sourcePath?.fileName && Array.isArray(instruction.sourcePath?.filePath));
3
+ const message = `structure/sourcePath: ${passed ? "passed" : "failed"}`;
4
+ returnLog.push(message);
5
+ if (showLog) console.log(message);
6
+ return passed;
7
+ };
8
+ export default checkSourcePath;
@@ -0,0 +1,9 @@
1
+ const checkTemplateKey = (instruction, showLog, returnLog) => {
2
+ const passed = instruction.templateKey === undefined ||
3
+ (typeof instruction.templateKey === "string" && instruction.templateKey.length > 0);
4
+ const message = `structure/templateKey: ${passed ? "passed" : "failed"}`;
5
+ returnLog.push(message);
6
+ if (showLog) console.log(message);
7
+ return passed;
8
+ };
9
+ export default checkTemplateKey;
@@ -0,0 +1,21 @@
1
+ import simple from "./builders/simple/index.js";
2
+ import headerOnly from "./builders/headerOnly/index.js";
3
+ import bodyOnly from "./builders/bodyOnly/index.js";
4
+ import withFooter from "./builders/withFooter/index.js";
5
+ import footerOnly from "./builders/footerOnly/index.js";
6
+
7
+ export {
8
+ simple,
9
+ headerOnly,
10
+ bodyOnly,
11
+ withFooter,
12
+ footerOnly
13
+ };
14
+
15
+ export default {
16
+ simple,
17
+ headerOnly,
18
+ bodyOnly,
19
+ withFooter,
20
+ footerOnly
21
+ };
@@ -0,0 +1,32 @@
1
+ import { resolvePath } from "json-transformer-funcs";
2
+ import writePath from "../writePath/index.js";
3
+ import checkInstruction from "../guards/index.js";
4
+
5
+ const runSingleInstruction = (instruction, registry, functions, spec, showLog, returnLog) => {
6
+ if (!checkInstruction(instruction, functions, spec, showLog, returnLog)) return;
7
+
8
+ const localShowLog = showLog;
9
+ const localSpec = spec;
10
+ const templateKey = instruction.templateKey;
11
+ const localSpecKey = localSpec[templateKey];
12
+
13
+ if (localShowLog) console.log("singleInstruction ; ", templateKey, localSpecKey);
14
+
15
+ const source = resolvePath(registry, instruction.sourcePath);
16
+ const result = functions[instruction.func](source, localSpecKey);
17
+
18
+ // if (templateKey === "buildFooter") {
19
+ // console.log("result ; ", result);
20
+ // };
21
+
22
+ writePath(registry, instruction.destinationPath, result);
23
+ };
24
+
25
+ const runSingleInstructions = (instructions, registry, functions, spec, showLog, returnLog) => {
26
+ instructions.forEach(instruction => {
27
+ runSingleInstruction(instruction, registry, functions, spec, showLog, returnLog);
28
+ });
29
+ };
30
+
31
+ export { runSingleInstruction, runSingleInstructions };
32
+ export default runSingleInstructions;