@primmel/primmel 1.0.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 (223) hide show
  1. package/LICENSE +21 -0
  2. package/README.adoc +52 -0
  3. package/dist/index.d.ts +23 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +9 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/ser-des/config/approval.d.ts +6 -0
  8. package/dist/src/ser-des/config/approval.d.ts.map +1 -0
  9. package/dist/src/ser-des/config/approval.js +115 -0
  10. package/dist/src/ser-des/config/approval.js.map +1 -0
  11. package/dist/src/ser-des/config/calculation.d.ts +7 -0
  12. package/dist/src/ser-des/config/calculation.d.ts.map +1 -0
  13. package/dist/src/ser-des/config/calculation.js +182 -0
  14. package/dist/src/ser-des/config/calculation.js.map +1 -0
  15. package/dist/src/ser-des/config/data.d.ts +12 -0
  16. package/dist/src/ser-des/config/data.d.ts.map +1 -0
  17. package/dist/src/ser-des/config/data.js +278 -0
  18. package/dist/src/ser-des/config/data.js.map +1 -0
  19. package/dist/src/ser-des/config/event.d.ts +8 -0
  20. package/dist/src/ser-des/config/event.d.ts.map +1 -0
  21. package/dist/src/ser-des/config/event.js +144 -0
  22. package/dist/src/ser-des/config/event.js.map +1 -0
  23. package/dist/src/ser-des/config/figure.d.ts +5 -0
  24. package/dist/src/ser-des/config/figure.d.ts.map +1 -0
  25. package/dist/src/ser-des/config/figure.js +42 -0
  26. package/dist/src/ser-des/config/figure.js.map +1 -0
  27. package/dist/src/ser-des/config/flow.d.ts +20 -0
  28. package/dist/src/ser-des/config/flow.d.ts.map +1 -0
  29. package/dist/src/ser-des/config/flow.js +288 -0
  30. package/dist/src/ser-des/config/flow.js.map +1 -0
  31. package/dist/src/ser-des/config/form.d.ts +5 -0
  32. package/dist/src/ser-des/config/form.d.ts.map +1 -0
  33. package/dist/src/ser-des/config/form.js +353 -0
  34. package/dist/src/ser-des/config/form.js.map +1 -0
  35. package/dist/src/ser-des/config/gateway.d.ts +5 -0
  36. package/dist/src/ser-des/config/gateway.d.ts.map +1 -0
  37. package/dist/src/ser-des/config/gateway.js +50 -0
  38. package/dist/src/ser-des/config/gateway.js.map +1 -0
  39. package/dist/src/ser-des/config/index.d.ts +5 -0
  40. package/dist/src/ser-des/config/index.d.ts.map +1 -0
  41. package/dist/src/ser-des/config/index.js +266 -0
  42. package/dist/src/ser-des/config/index.js.map +1 -0
  43. package/dist/src/ser-des/config/link.d.ts +5 -0
  44. package/dist/src/ser-des/config/link.d.ts.map +1 -0
  45. package/dist/src/ser-des/config/link.js +55 -0
  46. package/dist/src/ser-des/config/link.js.map +1 -0
  47. package/dist/src/ser-des/config/mapProfile.d.ts +5 -0
  48. package/dist/src/ser-des/config/mapProfile.d.ts.map +1 -0
  49. package/dist/src/ser-des/config/mapProfile.js +65 -0
  50. package/dist/src/ser-des/config/mapProfile.js.map +1 -0
  51. package/dist/src/ser-des/config/metadata.d.ts +5 -0
  52. package/dist/src/ser-des/config/metadata.d.ts.map +1 -0
  53. package/dist/src/ser-des/config/metadata.js +64 -0
  54. package/dist/src/ser-des/config/metadata.js.map +1 -0
  55. package/dist/src/ser-des/config/note.d.ts +7 -0
  56. package/dist/src/ser-des/config/note.d.ts.map +1 -0
  57. package/dist/src/ser-des/config/note.js +77 -0
  58. package/dist/src/ser-des/config/note.js.map +1 -0
  59. package/dist/src/ser-des/config/process.d.ts +6 -0
  60. package/dist/src/ser-des/config/process.d.ts.map +1 -0
  61. package/dist/src/ser-des/config/process.js +152 -0
  62. package/dist/src/ser-des/config/process.js.map +1 -0
  63. package/dist/src/ser-des/config/provision.d.ts +7 -0
  64. package/dist/src/ser-des/config/provision.d.ts.map +1 -0
  65. package/dist/src/ser-des/config/provision.js +81 -0
  66. package/dist/src/ser-des/config/provision.js.map +1 -0
  67. package/dist/src/ser-des/config/reference.d.ts +5 -0
  68. package/dist/src/ser-des/config/reference.d.ts.map +1 -0
  69. package/dist/src/ser-des/config/reference.js +46 -0
  70. package/dist/src/ser-des/config/reference.js.map +1 -0
  71. package/dist/src/ser-des/config/role.d.ts +5 -0
  72. package/dist/src/ser-des/config/role.d.ts.map +1 -0
  73. package/dist/src/ser-des/config/role.js +39 -0
  74. package/dist/src/ser-des/config/role.js.map +1 -0
  75. package/dist/src/ser-des/config/stateMachine.d.ts +5 -0
  76. package/dist/src/ser-des/config/stateMachine.d.ts.map +1 -0
  77. package/dist/src/ser-des/config/stateMachine.js +175 -0
  78. package/dist/src/ser-des/config/stateMachine.js.map +1 -0
  79. package/dist/src/ser-des/config/subform.d.ts +5 -0
  80. package/dist/src/ser-des/config/subform.d.ts.map +1 -0
  81. package/dist/src/ser-des/config/subform.js +248 -0
  82. package/dist/src/ser-des/config/subform.js.map +1 -0
  83. package/dist/src/ser-des/config/symbol.d.ts +7 -0
  84. package/dist/src/ser-des/config/symbol.d.ts.map +1 -0
  85. package/dist/src/ser-des/config/symbol.js +111 -0
  86. package/dist/src/ser-des/config/symbol.js.map +1 -0
  87. package/dist/src/ser-des/config/table.d.ts +5 -0
  88. package/dist/src/ser-des/config/table.d.ts.map +1 -0
  89. package/dist/src/ser-des/config/table.js +92 -0
  90. package/dist/src/ser-des/config/table.js.map +1 -0
  91. package/dist/src/ser-des/config/viewProfile.d.ts +5 -0
  92. package/dist/src/ser-des/config/viewProfile.d.ts.map +1 -0
  93. package/dist/src/ser-des/config/viewProfile.js +57 -0
  94. package/dist/src/ser-des/config/viewProfile.js.map +1 -0
  95. package/dist/src/ser-des/dump.d.ts +12 -0
  96. package/dist/src/ser-des/dump.d.ts.map +1 -0
  97. package/dist/src/ser-des/dump.js +28 -0
  98. package/dist/src/ser-des/dump.js.map +1 -0
  99. package/dist/src/ser-des/includes.d.ts +13 -0
  100. package/dist/src/ser-des/includes.d.ts.map +1 -0
  101. package/dist/src/ser-des/includes.js +51 -0
  102. package/dist/src/ser-des/includes.js.map +1 -0
  103. package/dist/src/ser-des/index.d.ts +19 -0
  104. package/dist/src/ser-des/index.d.ts.map +1 -0
  105. package/dist/src/ser-des/index.js +33 -0
  106. package/dist/src/ser-des/index.js.map +1 -0
  107. package/dist/src/ser-des/parse.d.ts +11 -0
  108. package/dist/src/ser-des/parse.d.ts.map +1 -0
  109. package/dist/src/ser-des/parse.js +64 -0
  110. package/dist/src/ser-des/parse.js.map +1 -0
  111. package/dist/src/ser-des/resolve.d.ts +22 -0
  112. package/dist/src/ser-des/resolve.d.ts.map +1 -0
  113. package/dist/src/ser-des/resolve.js +110 -0
  114. package/dist/src/ser-des/resolve.js.map +1 -0
  115. package/dist/src/ser-des/tokenize.d.ts +5 -0
  116. package/dist/src/ser-des/tokenize.d.ts.map +1 -0
  117. package/dist/src/ser-des/tokenize.js +127 -0
  118. package/dist/src/ser-des/tokenize.js.map +1 -0
  119. package/dist/src/ser-des/types.d.ts +65 -0
  120. package/dist/src/ser-des/types.d.ts.map +1 -0
  121. package/dist/src/ser-des/types.js +3 -0
  122. package/dist/src/ser-des/types.js.map +1 -0
  123. package/dist/src/types/Approval.d.ts +15 -0
  124. package/dist/src/types/Approval.d.ts.map +1 -0
  125. package/dist/src/types/Approval.js +3 -0
  126. package/dist/src/types/Approval.js.map +1 -0
  127. package/dist/src/types/Calculation.d.ts +26 -0
  128. package/dist/src/types/Calculation.d.ts.map +1 -0
  129. package/dist/src/types/Calculation.js +3 -0
  130. package/dist/src/types/Calculation.js.map +1 -0
  131. package/dist/src/types/Figure.d.ts +9 -0
  132. package/dist/src/types/Figure.d.ts.map +1 -0
  133. package/dist/src/types/Figure.js +3 -0
  134. package/dist/src/types/Figure.js.map +1 -0
  135. package/dist/src/types/Form.d.ts +67 -0
  136. package/dist/src/types/Form.d.ts.map +1 -0
  137. package/dist/src/types/Form.js +3 -0
  138. package/dist/src/types/Form.js.map +1 -0
  139. package/dist/src/types/Gateway.d.ts +14 -0
  140. package/dist/src/types/Gateway.d.ts.map +1 -0
  141. package/dist/src/types/Gateway.js +3 -0
  142. package/dist/src/types/Gateway.js.map +1 -0
  143. package/dist/src/types/Link.d.ts +11 -0
  144. package/dist/src/types/Link.d.ts.map +1 -0
  145. package/dist/src/types/Link.js +3 -0
  146. package/dist/src/types/Link.js.map +1 -0
  147. package/dist/src/types/MapProfile.d.ts +9 -0
  148. package/dist/src/types/MapProfile.d.ts.map +1 -0
  149. package/dist/src/types/MapProfile.js +3 -0
  150. package/dist/src/types/MapProfile.js.map +1 -0
  151. package/dist/src/types/Metadata.d.ts +9 -0
  152. package/dist/src/types/Metadata.d.ts.map +1 -0
  153. package/dist/src/types/Metadata.js +3 -0
  154. package/dist/src/types/Metadata.js.map +1 -0
  155. package/dist/src/types/Node.d.ts +4 -0
  156. package/dist/src/types/Node.d.ts.map +1 -0
  157. package/dist/src/types/Node.js +3 -0
  158. package/dist/src/types/Node.js.map +1 -0
  159. package/dist/src/types/Note.d.ts +12 -0
  160. package/dist/src/types/Note.d.ts.map +1 -0
  161. package/dist/src/types/Note.js +3 -0
  162. package/dist/src/types/Note.js.map +1 -0
  163. package/dist/src/types/ParallelGateway.d.ts +3 -0
  164. package/dist/src/types/ParallelGateway.d.ts.map +1 -0
  165. package/dist/src/types/ParallelGateway.js +3 -0
  166. package/dist/src/types/ParallelGateway.js.map +1 -0
  167. package/dist/src/types/Provision.d.ts +11 -0
  168. package/dist/src/types/Provision.d.ts.map +1 -0
  169. package/dist/src/types/Provision.js +3 -0
  170. package/dist/src/types/Provision.js.map +1 -0
  171. package/dist/src/types/Reference.d.ts +6 -0
  172. package/dist/src/types/Reference.d.ts.map +1 -0
  173. package/dist/src/types/Reference.js +3 -0
  174. package/dist/src/types/Reference.js.map +1 -0
  175. package/dist/src/types/Resolvable.d.ts +7 -0
  176. package/dist/src/types/Resolvable.d.ts.map +1 -0
  177. package/dist/src/types/Resolvable.js +3 -0
  178. package/dist/src/types/Resolvable.js.map +1 -0
  179. package/dist/src/types/Role.d.ts +5 -0
  180. package/dist/src/types/Role.d.ts.map +1 -0
  181. package/dist/src/types/Role.js +3 -0
  182. package/dist/src/types/Role.js.map +1 -0
  183. package/dist/src/types/Standard.d.ts +49 -0
  184. package/dist/src/types/Standard.d.ts.map +1 -0
  185. package/dist/src/types/Standard.js +3 -0
  186. package/dist/src/types/Standard.js.map +1 -0
  187. package/dist/src/types/StateMachine.d.ts +38 -0
  188. package/dist/src/types/StateMachine.d.ts.map +1 -0
  189. package/dist/src/types/StateMachine.js +3 -0
  190. package/dist/src/types/StateMachine.js.map +1 -0
  191. package/dist/src/types/Subform.d.ts +30 -0
  192. package/dist/src/types/Subform.d.ts.map +1 -0
  193. package/dist/src/types/Subform.js +3 -0
  194. package/dist/src/types/Subform.js.map +1 -0
  195. package/dist/src/types/Symbol.d.ts +16 -0
  196. package/dist/src/types/Symbol.d.ts.map +1 -0
  197. package/dist/src/types/Symbol.js +3 -0
  198. package/dist/src/types/Symbol.js.map +1 -0
  199. package/dist/src/types/Table.d.ts +12 -0
  200. package/dist/src/types/Table.d.ts.map +1 -0
  201. package/dist/src/types/Table.js +3 -0
  202. package/dist/src/types/Table.js.map +1 -0
  203. package/dist/src/types/ViewProfile.d.ts +10 -0
  204. package/dist/src/types/ViewProfile.d.ts.map +1 -0
  205. package/dist/src/types/ViewProfile.js +3 -0
  206. package/dist/src/types/ViewProfile.js.map +1 -0
  207. package/dist/src/types/data.d.ts +42 -0
  208. package/dist/src/types/data.d.ts.map +1 -0
  209. package/dist/src/types/data.js +3 -0
  210. package/dist/src/types/data.js.map +1 -0
  211. package/dist/src/types/events.d.ts +20 -0
  212. package/dist/src/types/events.d.ts.map +1 -0
  213. package/dist/src/types/events.js +3 -0
  214. package/dist/src/types/events.js.map +1 -0
  215. package/dist/src/types/flow.d.ts +32 -0
  216. package/dist/src/types/flow.d.ts.map +1 -0
  217. package/dist/src/types/flow.js +3 -0
  218. package/dist/src/types/flow.js.map +1 -0
  219. package/dist/src/types/process.d.ts +18 -0
  220. package/dist/src/types/process.d.ts.map +1 -0
  221. package/dist/src/types/process.js +3 -0
  222. package/dist/src/types/process.js.map +1 -0
  223. package/package.json +43 -0
@@ -0,0 +1,288 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dumpSubprocess = exports.resolveSubprocess = exports.parseSubprocess = void 0;
4
+ const resolve_1 = require("../resolve");
5
+ const tokenize_1 = require("../tokenize");
6
+ // Parsers
7
+ const parseSubprocess = function (id, data) {
8
+ let result = {
9
+ id: id,
10
+ childs: [],
11
+ edges: [],
12
+ data: [],
13
+ _relations: {
14
+ childs: [],
15
+ edges: [],
16
+ data: [],
17
+ },
18
+ _components: {},
19
+ };
20
+ if (data !== '') {
21
+ const t = (0, tokenize_1.tokenizePackage)(data);
22
+ let i = 0;
23
+ while (i < t.length) {
24
+ const keyword = t[i++];
25
+ if (i < t.length) {
26
+ if (keyword === 'elements') {
27
+ result = parseElements((0, tokenize_1.removePackage)(t[i++]))(result);
28
+ }
29
+ else if (keyword === 'process_flow') {
30
+ result = parseEdges((0, tokenize_1.removePackage)(t[i++]))(result);
31
+ }
32
+ else if (keyword === 'data') {
33
+ result = parseData((0, tokenize_1.removePackage)(t[i++]))(result);
34
+ }
35
+ else {
36
+ i++; // forward-compatible: skip unknown keyword value
37
+ }
38
+ }
39
+ else {
40
+ throw new Error(`Parsing error: subprocess. ID ${id}: Expecting value for ${keyword}`);
41
+ }
42
+ }
43
+ }
44
+ return ctx => {
45
+ ctx.pages[id] = result;
46
+ return ctx;
47
+ };
48
+ };
49
+ exports.parseSubprocess = parseSubprocess;
50
+ const parseElements = function (data) {
51
+ const t = (0, tokenize_1.tokenizePackage)(data);
52
+ const elements = {};
53
+ let i = 0;
54
+ while (i < t.length) {
55
+ const name = t[i++];
56
+ if (i < t.length) {
57
+ const id = name.trim();
58
+ elements[id] = readSubprocessComponent(id, t[i++]);
59
+ }
60
+ else {
61
+ throw new Error(`Parsing error: elements in subprocess. Expecting value for ${name}`);
62
+ }
63
+ }
64
+ return ctx => ({
65
+ ...ctx,
66
+ _components: { ...ctx._components, ...elements },
67
+ _relations: { ...ctx._relations, childs: Object.values(elements) },
68
+ });
69
+ };
70
+ const parseData = function (data) {
71
+ const t = (0, tokenize_1.tokenizePackage)(data);
72
+ const elements = {};
73
+ let i = 0;
74
+ while (i < t.length) {
75
+ const name = t[i++];
76
+ if (i < t.length) {
77
+ const id = name.trim();
78
+ elements[id] = readSubprocessComponent(id, t[i++]);
79
+ }
80
+ else {
81
+ throw new Error(`Parsing error: data in subprocess. Expecting value for ${name}`);
82
+ }
83
+ }
84
+ return ctx => ({
85
+ ...ctx,
86
+ _components: { ...ctx._components, ...elements },
87
+ _relations: { ...ctx._relations, data: Object.values(elements) },
88
+ });
89
+ };
90
+ const parseEdges = function (data) {
91
+ const t = (0, tokenize_1.tokenizePackage)(data);
92
+ const edges = {};
93
+ let i = 0;
94
+ while (i < t.length) {
95
+ const id = t[i++].trim();
96
+ if (i < t.length) {
97
+ edges[id] = readEdge(id.trim(), t[i++]);
98
+ }
99
+ else {
100
+ throw new Error(`Parsing error: edges in subprocess. Expecting value for ${id}`);
101
+ }
102
+ }
103
+ return ctx => ({
104
+ ...ctx,
105
+ _relations: { ...ctx._relations, edges: Object.values(edges) },
106
+ });
107
+ };
108
+ function readSubprocessComponent(elm, data) {
109
+ const com = {
110
+ name: elm,
111
+ element: null,
112
+ x: 0,
113
+ y: 0,
114
+ _relations: {
115
+ element: elm,
116
+ },
117
+ };
118
+ const t = (0, tokenize_1.tokenizePackage)(data);
119
+ let i = 0;
120
+ while (i < t.length) {
121
+ const keyword = t[i++];
122
+ if (i < t.length) {
123
+ if (keyword === 'x') {
124
+ com.x = parseFloat(t[i++]);
125
+ }
126
+ else if (keyword === 'y') {
127
+ com.y = parseFloat(t[i++]);
128
+ }
129
+ else {
130
+ throw new Error(`Parsing error: subprocess component. Element ${elm}: Unknown keyword ${keyword}`);
131
+ }
132
+ }
133
+ else {
134
+ throw new Error(`Parsing error: subprocess component. Element ${elm}: Expecting value for ${keyword}`);
135
+ }
136
+ }
137
+ return com;
138
+ }
139
+ function readEdge(id, data) {
140
+ const edge = {
141
+ id: id,
142
+ from: null,
143
+ to: null,
144
+ description: '',
145
+ condition: '',
146
+ _relations: {
147
+ from: '',
148
+ to: '',
149
+ },
150
+ };
151
+ const t = (0, tokenize_1.tokenizePackage)(data);
152
+ let i = 0;
153
+ while (i < t.length) {
154
+ const command = t[i++];
155
+ if (i < t.length) {
156
+ if (command === 'from') {
157
+ edge._relations.from = t[i++];
158
+ }
159
+ else if (command === 'description') {
160
+ edge.description = (0, tokenize_1.removePackage)(t[i++]);
161
+ }
162
+ else if (command === 'condition') {
163
+ edge.condition = (0, tokenize_1.removePackage)(t[i++]);
164
+ }
165
+ else if (command === 'to') {
166
+ edge._relations.to = t[i++];
167
+ }
168
+ else {
169
+ throw new Error(`Parsing error: process_flow. ID ${id}: Unknown keyword ${command}`);
170
+ }
171
+ }
172
+ else {
173
+ throw new Error(`Parsing error: process_flow. ID ${id}: Expecting value for ${command}`);
174
+ }
175
+ }
176
+ return edge;
177
+ }
178
+ // Dumpers
179
+ /**
180
+ * Resolve a parsed subprocess into its final shape.
181
+ *
182
+ * The parser stores components (elements + data) and edges inside
183
+ * `_relations` rather than on the top-level fields, and keeps a flat
184
+ * `_components` map keyed by element ID for edge lookups. This resolver
185
+ * walks each component / edge and swaps the string ID references for
186
+ * real objects:
187
+ *
188
+ * - component._relations.element → a Node (process/approval/event/gateway)
189
+ * - edge._relations.from / .to → a resolved SubprocessComponent
190
+ *
191
+ * Lenient: missing references leave the field null rather than throwing.
192
+ */
193
+ const resolveSubprocess = function (ctx, unresolved) {
194
+ const componentsById = new Map();
195
+ for (const c of Object.values(unresolved._components)) {
196
+ componentsById.set(c._relations.element, c);
197
+ }
198
+ const resolveComponent = (c) => ({
199
+ name: c.name,
200
+ x: c.x,
201
+ y: c.y,
202
+ element: lookupNode(ctx, c._relations.element),
203
+ });
204
+ const resolveEdge = (e) => {
205
+ const fromComp = e._relations.from
206
+ ? componentsById.get(e._relations.from)
207
+ : undefined;
208
+ const toComp = e._relations.to
209
+ ? componentsById.get(e._relations.to)
210
+ : undefined;
211
+ return {
212
+ id: e.id,
213
+ description: e.description,
214
+ condition: e.condition,
215
+ from: fromComp ? resolveComponent(fromComp) : null,
216
+ to: toComp ? resolveComponent(toComp) : null,
217
+ };
218
+ };
219
+ return {
220
+ id: unresolved.id,
221
+ childs: unresolved._relations.childs.map(resolveComponent),
222
+ edges: unresolved._relations.edges.map(resolveEdge),
223
+ data: unresolved._relations.data.map(resolveComponent),
224
+ };
225
+ };
226
+ exports.resolveSubprocess = resolveSubprocess;
227
+ /**
228
+ * Look up a Node by ID across every construct that can appear as a
229
+ * subprocess element. Returns null when the ID is unknown (lenient).
230
+ */
231
+ function lookupNode(ctx, id) {
232
+ const found = (0, resolve_1.resolveFromContext)(ctx, 'processes', id) ??
233
+ (0, resolve_1.resolveFromContext)(ctx, 'approvals', id) ??
234
+ (0, resolve_1.resolveFromContext)(ctx, 'events', id) ??
235
+ (0, resolve_1.resolveFromContext)(ctx, 'gateways', id) ??
236
+ null;
237
+ return found;
238
+ }
239
+ const dumpSubprocess = function (sub) {
240
+ let out = 'subprocess ' + sub.id + ' {\n';
241
+ out += ' elements {\n';
242
+ sub.childs.forEach(x => {
243
+ out += dumpSubprocessComponent(x);
244
+ });
245
+ out += ' }\n';
246
+ out += ' process_flow {\n';
247
+ sub.edges.forEach(e => {
248
+ out += dumpEdge(e);
249
+ });
250
+ out += ' }\n';
251
+ out += ' data {\n';
252
+ sub.data.forEach(d => {
253
+ out += dumpSubprocessComponent(d);
254
+ });
255
+ out += ' }\n';
256
+ out += '}\n';
257
+ return out;
258
+ };
259
+ exports.dumpSubprocess = dumpSubprocess;
260
+ function dumpSubprocessComponent(com) {
261
+ // Components are always emitted, even when element is null — data
262
+ // components in particular often have no Node reference. Use the
263
+ // preserved source name as the key.
264
+ const key = com.element?.id ?? com.name;
265
+ let out = ' ' + key + ' {\n';
266
+ out += ' x ' + com.x + '\n';
267
+ out += ' y ' + com.y + '\n';
268
+ out += ' }\n';
269
+ return out;
270
+ }
271
+ function dumpEdge(edge) {
272
+ let out = ' ' + edge.id + ' {\n';
273
+ if (edge.from !== null && edge.from.element !== null) {
274
+ out += ' from ' + edge.from.element.id + '\n';
275
+ }
276
+ if (edge.to !== null && edge.to.element !== null) {
277
+ out += ' to ' + edge.to.element.id + '\n';
278
+ }
279
+ if (edge.description !== '') {
280
+ out += ' description "' + edge.description + '"\n';
281
+ }
282
+ if (edge.condition !== '') {
283
+ out += ' condition "' + edge.condition + '"\n';
284
+ }
285
+ out += ' }\n';
286
+ return out;
287
+ }
288
+ //# sourceMappingURL=flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.js","sourceRoot":"","sources":["../../../../src/ser-des/config/flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Dumper, Parser } from '../types';
2
+ import type Form from '../../types/Form';
3
+ export declare const parseForm: Parser;
4
+ export declare const dumpForm: Dumper<Form>;
5
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../../src/ser-des/config/form.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAC;AAQzC,eAAO,MAAM,SAAS,EAAE,MA+DvB,CAAC;AAgMF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,IAAI,CAmEjC,CAAC"}
@@ -0,0 +1,353 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dumpForm = exports.parseForm = void 0;
4
+ const tokenize_1 = require("../tokenize");
5
+ const parseForm = function (id, data) {
6
+ const result = {
7
+ id,
8
+ name: '',
9
+ description: '',
10
+ dataClassId: '',
11
+ headerFormId: '',
12
+ conformanceProcessId: '',
13
+ applicability: [],
14
+ fields: [],
15
+ passFail: null,
16
+ referenceIds: [],
17
+ ref: [],
18
+ };
19
+ if (data !== '') {
20
+ const t = (0, tokenize_1.tokenizePackage)(data);
21
+ let i = 0;
22
+ while (i < t.length) {
23
+ const command = t[i++];
24
+ if (i < t.length) {
25
+ if (command === 'name') {
26
+ result.name = (0, tokenize_1.removePackage)(t[i++]);
27
+ }
28
+ else if (command === 'description') {
29
+ result.description = (0, tokenize_1.removePackage)(t[i++]);
30
+ }
31
+ else if (command === 'data_class') {
32
+ result.dataClassId = (0, tokenize_1.removePackage)(t[i++]);
33
+ }
34
+ else if (command === 'header') {
35
+ result.headerFormId = (0, tokenize_1.removePackage)(t[i++]);
36
+ }
37
+ else if (command === 'conformance_process') {
38
+ result.conformanceProcessId = (0, tokenize_1.removePackage)(t[i++]);
39
+ }
40
+ else if (command === 'applicability') {
41
+ result.applicability = parseApplicability((0, tokenize_1.removePackage)(t[i++]));
42
+ }
43
+ else if (command === 'field') {
44
+ const fieldName = t[i++];
45
+ if (i < t.length) {
46
+ const fieldBlock = (0, tokenize_1.removePackage)(t[i++]);
47
+ result.fields.push(parseFormField(fieldName, fieldBlock));
48
+ }
49
+ }
50
+ else if (command === 'subform_ref') {
51
+ // subform_ref SubformID { parameters { ... } applicability { ... } }
52
+ const subformId = t[i++];
53
+ const refBlock = i < t.length ? (0, tokenize_1.removePackage)(t[i++]) : '';
54
+ result.fields.push(makeSubformRefField(subformId, refBlock));
55
+ }
56
+ else if (command === 'pass_fail') {
57
+ result.passFail = parsePassFail((0, tokenize_1.removePackage)(t[i++]));
58
+ }
59
+ else if (command === 'reference') {
60
+ result.referenceIds = (0, tokenize_1.tokenizePackage)(t[i++]);
61
+ }
62
+ else {
63
+ i++; // forward-compatible: skip unknown keyword value
64
+ }
65
+ }
66
+ else {
67
+ throw new Error(`Parsing error: form. ID ${id}: Expecting value for ${command}`);
68
+ }
69
+ }
70
+ }
71
+ return ctx => {
72
+ ctx.forms[id] = result;
73
+ return ctx;
74
+ };
75
+ };
76
+ exports.parseForm = parseForm;
77
+ function parseApplicability(block) {
78
+ const entries = [];
79
+ const t = (0, tokenize_1.tokenizePackage)(block);
80
+ let i = 0;
81
+ while (i < t.length) {
82
+ const dimension = t[i++];
83
+ if (i >= t.length) {
84
+ break;
85
+ }
86
+ if (t[i] === ':') {
87
+ i++;
88
+ }
89
+ if (i < t.length) {
90
+ const valueBlock = (0, tokenize_1.removePackage)(t[i++]);
91
+ // valueBlock is `[A, B]` or `{ A: 5, B: 5 }`
92
+ const trimmed = valueBlock.trim();
93
+ if (trimmed.startsWith('[')) {
94
+ const inner = trimmed.slice(1, -1);
95
+ const values = inner.split(/[,\s]+/).filter(s => s.length > 0);
96
+ entries.push({ dimension, values, mapping: null });
97
+ }
98
+ else if (trimmed.startsWith('{')) {
99
+ // Mapping form
100
+ const inner = trimmed.slice(1, -1);
101
+ const mapping = {};
102
+ for (const pair of inner
103
+ .split(/[,\n]+/)
104
+ .map(s => s.trim())
105
+ .filter(s => s)) {
106
+ const m = pair.match(/^(\w+)\s*:\s*(.+)$/);
107
+ if (m) {
108
+ mapping[m[1]] = m[2].trim();
109
+ }
110
+ }
111
+ entries.push({ dimension, values: [], mapping });
112
+ }
113
+ else {
114
+ // Single value
115
+ entries.push({ dimension, values: [trimmed], mapping: null });
116
+ }
117
+ }
118
+ }
119
+ return entries;
120
+ }
121
+ function parsePassFail(block) {
122
+ const pf = { criteria: '', passIf: '' };
123
+ const t = (0, tokenize_1.tokenizePackage)(block);
124
+ let i = 0;
125
+ while (i < t.length) {
126
+ const cmd = t[i++];
127
+ if (i < t.length) {
128
+ if (cmd === 'criteria') {
129
+ pf.criteria = (0, tokenize_1.removePackage)(t[i++]);
130
+ }
131
+ else if (cmd === 'pass_if') {
132
+ pf.passIf = (0, tokenize_1.removePackage)(t[i++]);
133
+ }
134
+ else {
135
+ (0, tokenize_1.removePackage)(t[i++]);
136
+ }
137
+ }
138
+ }
139
+ return pf;
140
+ }
141
+ function parseFormField(name, block) {
142
+ const field = {
143
+ name,
144
+ type: 'string',
145
+ label: '',
146
+ definition: '',
147
+ unit: '',
148
+ required: false,
149
+ measurementMethod: '',
150
+ calculationId: null,
151
+ calculationBindings: [],
152
+ derivation: '',
153
+ evaluation: null,
154
+ values: [],
155
+ defaultValue: '',
156
+ hasDefault: false,
157
+ referenceIds: [],
158
+ fields: [],
159
+ itemsType: '',
160
+ subformRef: null,
161
+ };
162
+ // Same field parsing as subform.ts (kept inline to avoid circular imports)
163
+ if (block && block.trim()) {
164
+ const t = (0, tokenize_1.tokenizePackage)(block);
165
+ let i = 0;
166
+ while (i < t.length) {
167
+ const cmd = t[i++];
168
+ if (i < t.length) {
169
+ if (cmd === 'label') {
170
+ field.label = (0, tokenize_1.removePackage)(t[i++]);
171
+ }
172
+ else if (cmd === 'definition') {
173
+ field.definition = (0, tokenize_1.removePackage)(t[i++]);
174
+ }
175
+ else if (cmd === 'unit') {
176
+ field.unit = (0, tokenize_1.removePackage)(t[i++]);
177
+ }
178
+ else if (cmd === 'required') {
179
+ field.required = (0, tokenize_1.removePackage)(t[i++]) === 'true';
180
+ }
181
+ else if (cmd === 'measurement_method') {
182
+ field.measurementMethod = (0, tokenize_1.removePackage)(t[i++]);
183
+ }
184
+ else if (cmd === 'calculation') {
185
+ field.calculationId = (0, tokenize_1.removePackage)(t[i++]);
186
+ }
187
+ else if (cmd === 'calculation_bindings') {
188
+ (0, tokenize_1.removePackage)(t[i++]);
189
+ }
190
+ else if (cmd === 'derivation') {
191
+ field.derivation = (0, tokenize_1.removePackage)(t[i++]);
192
+ }
193
+ else if (cmd === 'evaluation') {
194
+ (0, tokenize_1.removePackage)(t[i++]);
195
+ }
196
+ else if (cmd === 'values') {
197
+ field.values = (0, tokenize_1.tokenizePackage)(t[i++]);
198
+ }
199
+ else if (cmd === 'default') {
200
+ field.defaultValue = (0, tokenize_1.removePackage)(t[i++]);
201
+ field.hasDefault = true;
202
+ }
203
+ else if (cmd === 'min_items' || cmd === 'max_items') {
204
+ (0, tokenize_1.removePackage)(t[i++]);
205
+ }
206
+ else if (cmd === 'items' || cmd === 'fields') {
207
+ (0, tokenize_1.removePackage)(t[i++]);
208
+ }
209
+ else if (cmd === 'reference') {
210
+ field.referenceIds = (0, tokenize_1.tokenizePackage)(t[i++]);
211
+ }
212
+ else {
213
+ (0, tokenize_1.removePackage)(t[i++]);
214
+ }
215
+ }
216
+ }
217
+ }
218
+ return field;
219
+ }
220
+ function makeSubformRefField(subformId, block) {
221
+ const field = {
222
+ name: '', // caller wraps this in a named field
223
+ type: 'array',
224
+ label: '',
225
+ definition: '',
226
+ unit: '',
227
+ required: false,
228
+ measurementMethod: '',
229
+ calculationId: null,
230
+ calculationBindings: [],
231
+ derivation: '',
232
+ evaluation: null,
233
+ values: [],
234
+ defaultValue: '',
235
+ hasDefault: false,
236
+ referenceIds: [],
237
+ fields: [],
238
+ itemsType: '',
239
+ subformRef: parseSubformRef(subformId, block),
240
+ };
241
+ return field;
242
+ }
243
+ function parseSubformRef(subformId, block) {
244
+ const ref = {
245
+ subformId,
246
+ parameters: {},
247
+ applicability: [],
248
+ };
249
+ if (block && block.trim()) {
250
+ const t = (0, tokenize_1.tokenizePackage)(block);
251
+ let i = 0;
252
+ while (i < t.length) {
253
+ const cmd = t[i++];
254
+ if (i < t.length) {
255
+ if (cmd === 'parameters') {
256
+ const pblock = (0, tokenize_1.removePackage)(t[i++]);
257
+ const pt = (0, tokenize_1.tokenizePackage)(pblock);
258
+ let j = 0;
259
+ while (j < pt.length) {
260
+ const key = pt[j++];
261
+ if (j < pt.length) {
262
+ if (pt[j] === ':') {
263
+ j++;
264
+ }
265
+ if (j < pt.length) {
266
+ ref.parameters[key] = (0, tokenize_1.removePackage)(pt[j++]);
267
+ }
268
+ }
269
+ }
270
+ }
271
+ else if (cmd === 'applicability') {
272
+ ref.applicability = parseApplicability((0, tokenize_1.removePackage)(t[i++]));
273
+ }
274
+ else {
275
+ (0, tokenize_1.removePackage)(t[i++]);
276
+ }
277
+ }
278
+ }
279
+ }
280
+ return ref;
281
+ }
282
+ const dumpForm = function (f) {
283
+ let out = 'form ' + f.id + ' {\n';
284
+ out += ' name "' + f.name + '"\n';
285
+ if (f.description) {
286
+ out += ' description "' + f.description + '"\n';
287
+ }
288
+ if (f.dataClassId) {
289
+ out += ' data_class ' + f.dataClassId + '\n';
290
+ }
291
+ if (f.headerFormId) {
292
+ out += ' header ' + f.headerFormId + '\n';
293
+ }
294
+ if (f.conformanceProcessId) {
295
+ out += ' conformance_process ' + f.conformanceProcessId + '\n';
296
+ }
297
+ if (f.applicability.length > 0) {
298
+ out += ' applicability {\n';
299
+ for (const a of f.applicability) {
300
+ if (a.mapping) {
301
+ out += ' ' + a.dimension + ': { ';
302
+ for (const [k, v] of Object.entries(a.mapping)) {
303
+ out += k + ': ' + v + ' ';
304
+ }
305
+ out += '}\n';
306
+ }
307
+ else {
308
+ out += ' ' + a.dimension + ': [' + a.values.join(', ') + ']\n';
309
+ }
310
+ }
311
+ out += ' }\n';
312
+ }
313
+ for (const field of f.fields) {
314
+ if (field.subformRef) {
315
+ const sr = field.subformRef;
316
+ out += ' subform_ref ' + sr.subformId + ' { ';
317
+ const pkeys = Object.keys(sr.parameters);
318
+ if (pkeys.length > 0) {
319
+ out += 'parameters { ';
320
+ for (const k of pkeys) {
321
+ out += k + ': ' + sr.parameters[k] + ' ';
322
+ }
323
+ out += '} ';
324
+ }
325
+ out += '}\n';
326
+ }
327
+ else {
328
+ out += ' field ' + field.name + ' { ';
329
+ if (field.label) {
330
+ out += 'label "' + field.label + '" ';
331
+ }
332
+ if (field.unit) {
333
+ out += 'unit "' + field.unit + '" ';
334
+ }
335
+ if (field.required) {
336
+ out += 'required true ';
337
+ }
338
+ out += '}\n';
339
+ }
340
+ }
341
+ if (f.passFail) {
342
+ out +=
343
+ ' pass_fail { criteria "' +
344
+ f.passFail.criteria +
345
+ '" pass_if "' +
346
+ f.passFail.passIf +
347
+ '" }\n';
348
+ }
349
+ out += '}\n';
350
+ return out;
351
+ };
352
+ exports.dumpForm = dumpForm;
353
+ //# sourceMappingURL=form.js.map