@open-rap/compiler 0.0.0-stage → 0.1.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 (227) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +21 -2
  3. package/dist/agent/server.d.ts +35 -0
  4. package/dist/agent/server.js +408 -0
  5. package/dist/agent/server.js.map +1 -0
  6. package/dist/authoring/abapgit.d.ts +38 -0
  7. package/dist/authoring/abapgit.js +242 -0
  8. package/dist/authoring/abapgit.js.map +1 -0
  9. package/dist/authoring/catalog.d.ts +48 -0
  10. package/dist/authoring/catalog.js +117 -0
  11. package/dist/authoring/catalog.js.map +1 -0
  12. package/dist/authoring/floorplan.d.ts +28 -0
  13. package/dist/authoring/floorplan.js +31 -0
  14. package/dist/authoring/floorplan.js.map +1 -0
  15. package/dist/authoring/generate.d.ts +57 -0
  16. package/dist/authoring/generate.js +630 -0
  17. package/dist/authoring/generate.js.map +1 -0
  18. package/dist/authoring/mcp.d.ts +15 -0
  19. package/dist/authoring/mcp.js +52 -0
  20. package/dist/authoring/mcp.js.map +1 -0
  21. package/dist/authoring/new.d.ts +35 -0
  22. package/dist/authoring/new.js +389 -0
  23. package/dist/authoring/new.js.map +1 -0
  24. package/dist/bdef/ast.d.ts +249 -0
  25. package/dist/bdef/ast.js +3 -0
  26. package/dist/bdef/ast.js.map +1 -0
  27. package/dist/bdef/lexer.d.ts +105 -0
  28. package/dist/bdef/lexer.js +148 -0
  29. package/dist/bdef/lexer.js.map +1 -0
  30. package/dist/bdef/parser.d.ts +22 -0
  31. package/dist/bdef/parser.js +1012 -0
  32. package/dist/bdef/parser.js.map +1 -0
  33. package/dist/build.d.ts +26 -0
  34. package/dist/build.js +62 -0
  35. package/dist/build.js.map +1 -0
  36. package/dist/cds/adapter.d.ts +91 -0
  37. package/dist/cds/adapter.js +381 -0
  38. package/dist/cds/adapter.js.map +1 -0
  39. package/dist/cds/expression-ast.d.ts +65 -0
  40. package/dist/cds/expression-ast.js +330 -0
  41. package/dist/cds/expression-ast.js.map +1 -0
  42. package/dist/cli.d.ts +9 -0
  43. package/dist/cli.js +485 -0
  44. package/dist/cli.js.map +1 -0
  45. package/dist/dcl/parser.d.ts +59 -0
  46. package/dist/dcl/parser.js +338 -0
  47. package/dist/dcl/parser.js.map +1 -0
  48. package/dist/ddic/catalog.d.ts +17 -0
  49. package/dist/ddic/catalog.js +211 -0
  50. package/dist/ddic/catalog.js.map +1 -0
  51. package/dist/ddic/cds-types.d.ts +47 -0
  52. package/dist/ddic/cds-types.js +131 -0
  53. package/dist/ddic/cds-types.js.map +1 -0
  54. package/dist/ddic/table-source.d.ts +70 -0
  55. package/dist/ddic/table-source.js +500 -0
  56. package/dist/ddic/table-source.js.map +1 -0
  57. package/dist/ddic/xml.d.ts +65 -0
  58. package/dist/ddic/xml.js +201 -0
  59. package/dist/ddic/xml.js.map +1 -0
  60. package/dist/dev.d.ts +128 -0
  61. package/dist/dev.js +434 -0
  62. package/dist/dev.js.map +1 -0
  63. package/dist/diagnostics.d.ts +33 -0
  64. package/dist/diagnostics.js +53 -0
  65. package/dist/diagnostics.js.map +1 -0
  66. package/dist/gen/abap/derived-types.d.ts +26 -0
  67. package/dist/gen/abap/derived-types.js +323 -0
  68. package/dist/gen/abap/derived-types.js.map +1 -0
  69. package/dist/gen/abap/eml.d.ts +118 -0
  70. package/dist/gen/abap/eml.js +362 -0
  71. package/dist/gen/abap/eml.js.map +1 -0
  72. package/dist/gen/abap/enums.d.ts +13 -0
  73. package/dist/gen/abap/enums.js +74 -0
  74. package/dist/gen/abap/enums.js.map +1 -0
  75. package/dist/gen/abap/framework-http.d.ts +14 -0
  76. package/dist/gen/abap/framework-http.js +1049 -0
  77. package/dist/gen/abap/framework-http.js.map +1 -0
  78. package/dist/gen/abap/framework-query.d.ts +14 -0
  79. package/dist/gen/abap/framework-query.js +225 -0
  80. package/dist/gen/abap/framework-query.js.map +1 -0
  81. package/dist/gen/abap/framework-utils.d.ts +29 -0
  82. package/dist/gen/abap/framework-utils.js +3707 -0
  83. package/dist/gen/abap/framework-utils.js.map +1 -0
  84. package/dist/gen/abap/framework.d.ts +12 -0
  85. package/dist/gen/abap/framework.js +480 -0
  86. package/dist/gen/abap/framework.js.map +1 -0
  87. package/dist/gen/abap/generate.d.ts +40 -0
  88. package/dist/gen/abap/generate.js +238 -0
  89. package/dist/gen/abap/generate.js.map +1 -0
  90. package/dist/gen/abap/rewrite.d.ts +82 -0
  91. package/dist/gen/abap/rewrite.js +957 -0
  92. package/dist/gen/abap/rewrite.js.map +1 -0
  93. package/dist/gen/abap/shadow.d.ts +25 -0
  94. package/dist/gen/abap/shadow.js +175 -0
  95. package/dist/gen/abap/shadow.js.map +1 -0
  96. package/dist/gen/abap/tokens.d.ts +33 -0
  97. package/dist/gen/abap/tokens.js +87 -0
  98. package/dist/gen/abap/tokens.js.map +1 -0
  99. package/dist/gen/app/index.d.ts +25 -0
  100. package/dist/gen/app/index.js +322 -0
  101. package/dist/gen/app/index.js.map +1 -0
  102. package/dist/gen/csdl.d.ts +11 -0
  103. package/dist/gen/csdl.js +562 -0
  104. package/dist/gen/csdl.js.map +1 -0
  105. package/dist/gen/deploy.d.ts +12 -0
  106. package/dist/gen/deploy.js +53 -0
  107. package/dist/gen/deploy.js.map +1 -0
  108. package/dist/gen/docs/index.d.ts +35 -0
  109. package/dist/gen/docs/index.js +267 -0
  110. package/dist/gen/docs/index.js.map +1 -0
  111. package/dist/gen/docs/markdown.d.ts +23 -0
  112. package/dist/gen/docs/markdown.js +187 -0
  113. package/dist/gen/docs/markdown.js.map +1 -0
  114. package/dist/gen/docs/site.d.ts +17 -0
  115. package/dist/gen/docs/site.js +106 -0
  116. package/dist/gen/docs/site.js.map +1 -0
  117. package/dist/gen/keycloak.d.ts +21 -0
  118. package/dist/gen/keycloak.js +90 -0
  119. package/dist/gen/keycloak.js.map +1 -0
  120. package/dist/gen/launchpad/index.d.ts +48 -0
  121. package/dist/gen/launchpad/index.js +302 -0
  122. package/dist/gen/launchpad/index.js.map +1 -0
  123. package/dist/gen/launchpad/ui.d.ts +14 -0
  124. package/dist/gen/launchpad/ui.js +350 -0
  125. package/dist/gen/launchpad/ui.js.map +1 -0
  126. package/dist/gen/mcp.d.ts +23 -0
  127. package/dist/gen/mcp.js +244 -0
  128. package/dist/gen/mcp.js.map +1 -0
  129. package/dist/gen/sql-expressions.d.ts +12 -0
  130. package/dist/gen/sql-expressions.js +136 -0
  131. package/dist/gen/sql-expressions.js.map +1 -0
  132. package/dist/gen/sql.d.ts +38 -0
  133. package/dist/gen/sql.js +612 -0
  134. package/dist/gen/sql.js.map +1 -0
  135. package/dist/gen/ui/index.d.ts +7 -0
  136. package/dist/gen/ui/index.js +27 -0
  137. package/dist/gen/ui/index.js.map +1 -0
  138. package/dist/gen/ui/layout.d.ts +230 -0
  139. package/dist/gen/ui/layout.js +511 -0
  140. package/dist/gen/ui/layout.js.map +1 -0
  141. package/dist/gen/ui/static.d.ts +55 -0
  142. package/dist/gen/ui/static.js +2901 -0
  143. package/dist/gen/ui/static.js.map +1 -0
  144. package/dist/gen/ui/views.d.ts +10 -0
  145. package/dist/gen/ui/views.js +511 -0
  146. package/dist/gen/ui/views.js.map +1 -0
  147. package/dist/gen/vendor.d.ts +23 -0
  148. package/dist/gen/vendor.js +68 -0
  149. package/dist/gen/vendor.js.map +1 -0
  150. package/dist/gen/xml.d.ts +9 -0
  151. package/dist/gen/xml.js +42 -0
  152. package/dist/gen/xml.js.map +1 -0
  153. package/dist/index.d.ts +20 -0
  154. package/dist/index.js +20 -0
  155. package/dist/index.js.map +1 -0
  156. package/dist/input/project.d.ts +50 -0
  157. package/dist/input/project.js +128 -0
  158. package/dist/input/project.js.map +1 -0
  159. package/dist/ir/access-controls.d.ts +11 -0
  160. package/dist/ir/access-controls.js +148 -0
  161. package/dist/ir/access-controls.js.map +1 -0
  162. package/dist/ir/authorizations.d.ts +25 -0
  163. package/dist/ir/authorizations.js +178 -0
  164. package/dist/ir/authorizations.js.map +1 -0
  165. package/dist/ir/behaviors.d.ts +16 -0
  166. package/dist/ir/behaviors.js +548 -0
  167. package/dist/ir/behaviors.js.map +1 -0
  168. package/dist/ir/builder.d.ts +20 -0
  169. package/dist/ir/builder.js +505 -0
  170. package/dist/ir/builder.js.map +1 -0
  171. package/dist/ir/config.d.ts +25 -0
  172. package/dist/ir/config.js +130 -0
  173. package/dist/ir/config.js.map +1 -0
  174. package/dist/ir/dictionary.d.ts +54 -0
  175. package/dist/ir/dictionary.js +328 -0
  176. package/dist/ir/dictionary.js.map +1 -0
  177. package/dist/ir/entities.d.ts +58 -0
  178. package/dist/ir/entities.js +676 -0
  179. package/dist/ir/entities.js.map +1 -0
  180. package/dist/ir/expressions.d.ts +33 -0
  181. package/dist/ir/expressions.js +327 -0
  182. package/dist/ir/expressions.js.map +1 -0
  183. package/dist/ir/handlers.d.ts +63 -0
  184. package/dist/ir/handlers.js +398 -0
  185. package/dist/ir/handlers.js.map +1 -0
  186. package/dist/ir/number-ranges.d.ts +24 -0
  187. package/dist/ir/number-ranges.js +74 -0
  188. package/dist/ir/number-ranges.js.map +1 -0
  189. package/dist/ir/seed.d.ts +23 -0
  190. package/dist/ir/seed.js +78 -0
  191. package/dist/ir/seed.js.map +1 -0
  192. package/dist/ir/service.d.ts +21 -0
  193. package/dist/ir/service.js +96 -0
  194. package/dist/ir/service.js.map +1 -0
  195. package/dist/launchpad/config.d.ts +47 -0
  196. package/dist/launchpad/config.js +321 -0
  197. package/dist/launchpad/config.js.map +1 -0
  198. package/dist/launchpad/workspace.d.ts +48 -0
  199. package/dist/launchpad/workspace.js +166 -0
  200. package/dist/launchpad/workspace.js.map +1 -0
  201. package/dist/srvd/parser.d.ts +36 -0
  202. package/dist/srvd/parser.js +193 -0
  203. package/dist/srvd/parser.js.map +1 -0
  204. package/dist/standard/data.d.ts +18 -0
  205. package/dist/standard/data.js +534 -0
  206. package/dist/standard/data.js.map +1 -0
  207. package/dist/standard/index.d.ts +36 -0
  208. package/dist/standard/index.js +507 -0
  209. package/dist/standard/index.js.map +1 -0
  210. package/dist/version.d.ts +2 -0
  211. package/dist/version.js +4 -0
  212. package/dist/version.js.map +1 -0
  213. package/docs/AGENTS.md +79 -0
  214. package/docs/ANNOTATIONS.md +76 -0
  215. package/docs/DECISIONS.md +1526 -0
  216. package/docs/DEPLOYMENT.md +113 -0
  217. package/docs/DIAGNOSTICS.md +116 -0
  218. package/docs/FEATURES.md +287 -0
  219. package/docs/GUIDE.md +560 -0
  220. package/docs/KNOWN_GAPS.md +216 -0
  221. package/docs/MCP.md +84 -0
  222. package/docs/PLAN.md +690 -0
  223. package/docs/README.md +148 -0
  224. package/docs/REMOTE_APIS.md +121 -0
  225. package/docs/ROADMAP.md +35 -0
  226. package/docs/UTILITIES.md +95 -0
  227. package/package.json +49 -3
@@ -0,0 +1,362 @@
1
+ /**
2
+ * Token-level parser of the EML statements (READ / MODIFY / COMMIT / ROLLBACK ENTITIES).
3
+ *
4
+ * It works on the tokens of the statement rather than on the abaplint statement tree: abaplint
5
+ * does not parse every EML form (`CREATE AUTO FILL CID SET FIELDS WITH` is an unknown
6
+ * statement for it), and the rewrite pass needs only the structure of the statement and the
7
+ * tokens of its operands.
8
+ */
9
+ import { adjacent, depthDelta, joinTokens } from "./tokens.js";
10
+ export class EmlSyntaxError extends Error {
11
+ token;
12
+ constructor(message, token) {
13
+ super(message);
14
+ this.token = token;
15
+ }
16
+ }
17
+ /** Is the statement (its first tokens) an EML statement this parser handles? */
18
+ export function isEmlStatement(tokens) {
19
+ const [a, b] = tokens;
20
+ if (a === undefined || b === undefined) {
21
+ return false;
22
+ }
23
+ return (((a.upper === "READ" || a.upper === "MODIFY") && (b.upper === "ENTITIES" || b.upper === "ENTITY")) ||
24
+ ((a.upper === "COMMIT" || a.upper === "ROLLBACK") && b.upper === "ENTITIES"));
25
+ }
26
+ const RESPONSES = new Set(["MAPPED", "FAILED", "REPORTED"]);
27
+ const READ_STOP = new Set(["ENTITY", "BY", "ALL", "FIELDS", "FROM", "WITH", "EXECUTE", "RESULT", "LINK", "FAILED", "REPORTED", "OPERATIONS"]);
28
+ const MODIFY_STOP = new Set([
29
+ "ENTITY",
30
+ "CREATE",
31
+ "UPDATE",
32
+ "DELETE",
33
+ "EXECUTE",
34
+ "FIELDS",
35
+ "SET",
36
+ "FROM",
37
+ "WITH",
38
+ "AUTO",
39
+ "RESULT",
40
+ "MAPPED",
41
+ "FAILED",
42
+ "REPORTED",
43
+ "RELATING",
44
+ "AUGMENTING",
45
+ "OPERATIONS",
46
+ "REQUEST",
47
+ ]);
48
+ const COMMIT_STOP = new Set(["RESPONSE", "RESPONSES", "FAILED", "REPORTED"]);
49
+ class Cursor {
50
+ tokens;
51
+ pos = 0;
52
+ constructor(tokens) {
53
+ this.tokens = tokens;
54
+ }
55
+ peek(offset = 0) {
56
+ return this.tokens[this.pos + offset];
57
+ }
58
+ is(...words) {
59
+ return words.every((w, i) => this.peek(i)?.upper === w);
60
+ }
61
+ accept(...words) {
62
+ if (this.is(...words)) {
63
+ this.pos += words.length;
64
+ return true;
65
+ }
66
+ return false;
67
+ }
68
+ expect(...words) {
69
+ if (!this.accept(...words)) {
70
+ throw new EmlSyntaxError(`expected ${words.join(" ")}`, this.peek());
71
+ }
72
+ }
73
+ done() {
74
+ return this.pos >= this.tokens.length;
75
+ }
76
+ /** A name, with the tokens glued to it (`zr_travel\\travel\_booking`, `travel~accept`). */
77
+ name(what) {
78
+ const first = this.peek();
79
+ if (first === undefined) {
80
+ throw new EmlSyntaxError(`expected ${what}`, undefined);
81
+ }
82
+ this.pos++;
83
+ let last = first;
84
+ let text = first.str;
85
+ for (let next = this.peek(); next !== undefined && adjacent(last, next) && depthDelta(next) === 0; next = this.peek()) {
86
+ text += next.str;
87
+ last = next;
88
+ this.pos++;
89
+ }
90
+ return { ...first, str: text, upper: text.toUpperCase(), endRow: last.endRow, endCol: last.endCol };
91
+ }
92
+ /** An operand: the tokens up to the next keyword of the statement at nesting depth 0. */
93
+ operand(stop, what) {
94
+ const start = this.pos;
95
+ let depth = 0;
96
+ while (!this.done()) {
97
+ const t = this.peek();
98
+ const previous = this.tokens[this.pos - 1];
99
+ const next = this.peek(1);
100
+ const standalone = (previous === undefined || !adjacent(previous, t)) && (next === undefined || !adjacent(t, next));
101
+ if (depth === 0 && this.pos > start && standalone && stop.has(t.upper)) {
102
+ break;
103
+ }
104
+ depth += depthDelta(t);
105
+ this.pos++;
106
+ }
107
+ if (this.pos === start) {
108
+ throw new EmlSyntaxError(`expected ${what}`, this.peek());
109
+ }
110
+ return { tokens: this.tokens.slice(start, this.pos) };
111
+ }
112
+ }
113
+ function fieldSpec(c) {
114
+ if (c.accept("ALL", "FIELDS", "WITH")) {
115
+ return { kind: "all" };
116
+ }
117
+ if (c.accept("SET", "FIELDS", "WITH")) {
118
+ return { kind: "set" };
119
+ }
120
+ if (c.accept("FIELDS")) {
121
+ if (c.peek()?.str !== "(") {
122
+ throw new EmlSyntaxError("expected ( after FIELDS", c.peek());
123
+ }
124
+ c.pos++;
125
+ const fields = [];
126
+ while (!c.done() && c.peek()?.str !== ")") {
127
+ fields.push(c.peek());
128
+ c.pos++;
129
+ }
130
+ c.expect(")");
131
+ c.expect("WITH");
132
+ if (fields.length === 0) {
133
+ throw new EmlSyntaxError("empty field list", c.peek());
134
+ }
135
+ return { kind: "list", fields };
136
+ }
137
+ if (c.accept("FROM") || c.accept("WITH")) {
138
+ return { kind: "from" };
139
+ }
140
+ throw new EmlSyntaxError("expected FROM, WITH, ALL FIELDS WITH, FIELDS ( … ) WITH or SET FIELDS WITH", c.peek());
141
+ }
142
+ function mode(c) {
143
+ if (c.accept("IN", "LOCAL", "MODE")) {
144
+ return "local";
145
+ }
146
+ if (c.accept("PRIVILEGED")) {
147
+ return "privileged";
148
+ }
149
+ return "default";
150
+ }
151
+ function readOperations(c) {
152
+ const operations = [];
153
+ for (;;) {
154
+ if (c.accept("BY")) {
155
+ const association = c.name("an association");
156
+ const fields = fieldSpec(c);
157
+ const operation = { kind: "readBy", association, fields, source: c.operand(READ_STOP, "the import table") };
158
+ if (c.accept("RESULT")) {
159
+ operation.result = c.operand(READ_STOP, "the result table");
160
+ }
161
+ if (c.accept("LINK")) {
162
+ operation.link = c.operand(READ_STOP, "the link table");
163
+ }
164
+ operations.push(operation);
165
+ }
166
+ else if (c.accept("EXECUTE")) {
167
+ const name = c.name("a function");
168
+ c.expect("FROM");
169
+ const operation = { kind: "function", name, source: c.operand(READ_STOP, "the import table") };
170
+ if (c.accept("RESULT")) {
171
+ operation.result = c.operand(READ_STOP, "the result table");
172
+ }
173
+ operations.push(operation);
174
+ }
175
+ else if (c.is("ALL") || c.is("FIELDS") || c.is("FROM")) {
176
+ const fields = fieldSpec(c);
177
+ const operation = { kind: "read", fields, source: c.operand(READ_STOP, "the import table") };
178
+ if (c.accept("RESULT")) {
179
+ operation.result = c.operand(READ_STOP, "the result table");
180
+ }
181
+ operations.push(operation);
182
+ }
183
+ else {
184
+ break;
185
+ }
186
+ }
187
+ if (operations.length === 0) {
188
+ throw new EmlSyntaxError("expected a read operation", c.peek());
189
+ }
190
+ return operations;
191
+ }
192
+ function modifyOperations(c) {
193
+ const operations = [];
194
+ for (;;) {
195
+ if (c.accept("CREATE")) {
196
+ if (c.accept("BY")) {
197
+ const association = c.name("an association");
198
+ const autoFillCid = c.accept("AUTO", "FILL", "CID");
199
+ const fields = fieldSpec(c);
200
+ operations.push({ kind: "createBy", association, autoFillCid, fields, source: c.operand(MODIFY_STOP, "the instances") });
201
+ }
202
+ else {
203
+ const autoFillCid = c.accept("AUTO", "FILL", "CID");
204
+ const fields = fieldSpec(c);
205
+ operations.push({ kind: "create", autoFillCid, fields, source: c.operand(MODIFY_STOP, "the instances") });
206
+ }
207
+ }
208
+ else if (c.accept("UPDATE")) {
209
+ const fields = fieldSpec(c);
210
+ operations.push({ kind: "update", fields, source: c.operand(MODIFY_STOP, "the instances") });
211
+ }
212
+ else if (c.accept("DELETE")) {
213
+ c.expect("FROM");
214
+ operations.push({ kind: "delete", source: c.operand(MODIFY_STOP, "the instances") });
215
+ }
216
+ else if (c.accept("EXECUTE")) {
217
+ const name = c.name("an action");
218
+ const autoFillCid = c.accept("AUTO", "FILL", "CID");
219
+ if (!c.accept("FROM") && !c.accept("WITH")) {
220
+ throw new EmlSyntaxError("expected FROM", c.peek());
221
+ }
222
+ const operation = { kind: "execute", name, autoFillCid, source: c.operand(MODIFY_STOP, "the instances") };
223
+ if (c.accept("RESULT")) {
224
+ operation.result = c.operand(MODIFY_STOP, "the result table");
225
+ }
226
+ operations.push(operation);
227
+ }
228
+ else {
229
+ break;
230
+ }
231
+ if (c.is("RELATING") || c.is("AUGMENTING") || c.is("REQUEST")) {
232
+ throw new EmlSyntaxError(`${c.peek()?.upper} is not supported`, c.peek());
233
+ }
234
+ }
235
+ if (operations.length === 0) {
236
+ throw new EmlSyntaxError("expected an operation (CREATE, UPDATE, DELETE, EXECUTE)", c.peek());
237
+ }
238
+ return operations;
239
+ }
240
+ function responses(c, stop, allowed) {
241
+ const result = {};
242
+ while (!c.done()) {
243
+ const t = c.peek();
244
+ if (!RESPONSES.has(t.upper) || !allowed.has(t.upper)) {
245
+ throw new EmlSyntaxError(`unexpected ${t.str}`, t);
246
+ }
247
+ c.pos++;
248
+ const key = t.upper.toLowerCase();
249
+ if (result[key] !== undefined) {
250
+ throw new EmlSyntaxError(`${t.upper} given twice`, t);
251
+ }
252
+ result[key] = c.operand(stop, `the ${key} response`);
253
+ }
254
+ return result;
255
+ }
256
+ /** Parses the tokens of an EML statement, without its final period. */
257
+ export function parseEml(tokens) {
258
+ const c = new Cursor(tokens);
259
+ if (c.accept("ROLLBACK", "ENTITIES")) {
260
+ if (!c.done()) {
261
+ throw new EmlSyntaxError(`unexpected ${c.peek()?.str}`, c.peek());
262
+ }
263
+ return { kind: "rollback" };
264
+ }
265
+ if (c.accept("COMMIT", "ENTITIES")) {
266
+ const simulation = c.accept("IN", "SIMULATION", "MODE");
267
+ const result = { kind: "commit", simulation, responses: [] };
268
+ while (!c.done()) {
269
+ if (c.accept("RESPONSE", "OF")) {
270
+ const response = { bdef: c.name("a behavior definition") };
271
+ for (;;) {
272
+ if (c.accept("FAILED")) {
273
+ response.failed = c.operand(COMMIT_STOP, "the failed response");
274
+ }
275
+ else if (c.accept("REPORTED")) {
276
+ response.reported = c.operand(COMMIT_STOP, "the reported response");
277
+ }
278
+ else {
279
+ break;
280
+ }
281
+ }
282
+ result.responses.push(response);
283
+ }
284
+ else if (c.is("RESPONSES")) {
285
+ throw new EmlSyntaxError("COMMIT ENTITIES RESPONSES is not supported, use RESPONSE OF", c.peek());
286
+ }
287
+ else {
288
+ throw new EmlSyntaxError(`unexpected ${c.peek()?.str}`, c.peek());
289
+ }
290
+ }
291
+ return result;
292
+ }
293
+ const kind = c.accept("READ") ? "read" : c.accept("MODIFY") ? "modify" : undefined;
294
+ if (kind === undefined) {
295
+ throw new EmlSyntaxError("not an EML statement", c.peek());
296
+ }
297
+ const stop = kind === "read" ? READ_STOP : MODIFY_STOP;
298
+ let bdef;
299
+ let statementMode;
300
+ const groups = [];
301
+ if (c.accept("ENTITIES")) {
302
+ if (c.is("OPERATIONS")) {
303
+ throw new EmlSyntaxError(`${kind.toUpperCase()} ENTITIES OPERATIONS (dynamic EML) is not supported`, c.peek());
304
+ }
305
+ c.expect("OF");
306
+ bdef = c.name("a behavior definition");
307
+ statementMode = mode(c);
308
+ while (c.accept("ENTITY")) {
309
+ const entity = c.name("an entity");
310
+ groups.push({ entity, operations: kind === "read" ? readOperations(c) : modifyOperations(c) });
311
+ }
312
+ if (groups.length === 0) {
313
+ throw new EmlSyntaxError("expected ENTITY", c.peek());
314
+ }
315
+ }
316
+ else {
317
+ c.expect("ENTITY");
318
+ statementMode = mode(c);
319
+ const entity = c.name("an entity");
320
+ if (statementMode === "default") {
321
+ statementMode = mode(c);
322
+ }
323
+ groups.push({ entity, operations: kind === "read" ? readOperations(c) : modifyOperations(c) });
324
+ }
325
+ const allowed = kind === "read" ? new Set(["FAILED", "REPORTED"]) : RESPONSES;
326
+ const { mapped, failed, reported } = responses(c, stop, allowed);
327
+ if (kind === "read") {
328
+ const statement = { kind, mode: statementMode, groups: groups };
329
+ if (bdef !== undefined)
330
+ statement.bdef = bdef;
331
+ if (failed !== undefined)
332
+ statement.failed = failed;
333
+ if (reported !== undefined)
334
+ statement.reported = reported;
335
+ return statement;
336
+ }
337
+ const statement = { kind, mode: statementMode, groups: groups };
338
+ if (bdef !== undefined)
339
+ statement.bdef = bdef;
340
+ if (mapped !== undefined)
341
+ statement.mapped = mapped;
342
+ if (failed !== undefined)
343
+ statement.failed = failed;
344
+ if (reported !== undefined)
345
+ statement.reported = reported;
346
+ return statement;
347
+ }
348
+ /** `DATA(x)` or `FINAL(x)`: the name of an inline declaration, else undefined. */
349
+ export function inlineDeclaration(operand) {
350
+ const m = /^(?:DATA|FINAL)\(\s*([^\s()]+)\s*\)$/i.exec(joinTokens(operand.tokens));
351
+ return m?.[1];
352
+ }
353
+ const CONSTRUCTORS = new Set(["VALUE", "CORRESPONDING", "CONV", "COND", "SWITCH", "REDUCE", "FILTER", "EXACT"]);
354
+ /** The `#` of a constructor expression operand (`VALUE #( … )`), to be given an explicit type. */
355
+ export function inferredTypeToken(operand) {
356
+ const [first, second] = operand.tokens;
357
+ if (first !== undefined && second !== undefined && CONSTRUCTORS.has(first.upper) && second.str === "#") {
358
+ return second;
359
+ }
360
+ return undefined;
361
+ }
362
+ //# sourceMappingURL=eml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eml.js","sourceRoot":"","sources":["../../../src/gen/abap/eml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The constants of the CDS enumerated types in the ABAP code (D55): `zrt_status-open` is the
3
+ * enumerated constant OPEN of the CDS enumerated type ZRT_STATUS. The transpiler knows no CDS
4
+ * enumerated type: the type is given as a data element of its base type (shadow), and each
5
+ * constant is replaced by the literal of its value, which keeps the line and the meaning of the
6
+ * comparisons and assignments (the values of the database are the base values).
7
+ */
8
+ import type { EnumTypeModel } from "@open-rap/model";
9
+ /**
10
+ * Replaces `type-constant` outside literals, string templates and comments. Returns the source
11
+ * unchanged when it names no enumerated type.
12
+ */
13
+ export declare function replaceEnumConstants(source: string, enumTypes: readonly EnumTypeModel[]): string;
@@ -0,0 +1,74 @@
1
+ /**
2
+ * The constants of the CDS enumerated types in the ABAP code (D55): `zrt_status-open` is the
3
+ * enumerated constant OPEN of the CDS enumerated type ZRT_STATUS. The transpiler knows no CDS
4
+ * enumerated type: the type is given as a data element of its base type (shadow), and each
5
+ * constant is replaced by the literal of its value, which keeps the line and the meaning of the
6
+ * comparisons and assignments (the values of the database are the base values).
7
+ */
8
+ /** The ABAP literal of an enumerated value. */
9
+ function literalOf(enumType, value) {
10
+ if (enumType.base.kind === "char" || enumType.base.kind === "numc") {
11
+ const text = String(value);
12
+ return `'${(text === "" ? " " : text).replace(/'/g, "''")}'`;
13
+ }
14
+ return String(value);
15
+ }
16
+ /**
17
+ * Replaces `type-constant` outside literals, string templates and comments. Returns the source
18
+ * unchanged when it names no enumerated type.
19
+ */
20
+ export function replaceEnumConstants(source, enumTypes) {
21
+ if (enumTypes.length === 0) {
22
+ return source;
23
+ }
24
+ const constants = new Map();
25
+ for (const enumType of enumTypes) {
26
+ constants.set(enumType.name.toLowerCase(), new Map(enumType.values.map((v) => [v.name.toLowerCase(), literalOf(enumType, v.value)])));
27
+ }
28
+ const names = [...constants.keys()].map((n) => n.replace(/[/]/g, "\\/")).join("|");
29
+ const pattern = new RegExp(`(^|[^A-Za-z0-9_/>-])(${names})-([A-Za-z_][A-Za-z0-9_]*)(?![A-Za-z0-9_])`, "gi");
30
+ return source
31
+ .split("\n")
32
+ .map((line) => {
33
+ if (line.startsWith("*")) {
34
+ return line;
35
+ }
36
+ // the code parts of the line: outside '…', `…`, |…| and after a " comment
37
+ let result = "";
38
+ let code = "";
39
+ let quote;
40
+ const flush = () => {
41
+ result += code.replace(pattern, (whole, before, type, constant) => {
42
+ const literal = constants.get(type.toLowerCase())?.get(constant.toLowerCase());
43
+ return literal === undefined ? whole : `${before}${literal}`;
44
+ });
45
+ code = "";
46
+ };
47
+ for (let i = 0; i < line.length; i++) {
48
+ const c = line[i] ?? "";
49
+ if (quote !== undefined) {
50
+ result += c;
51
+ if (c === quote) {
52
+ quote = undefined;
53
+ }
54
+ }
55
+ else if (c === "'" || c === "`" || c === "|") {
56
+ flush();
57
+ quote = c;
58
+ result += c;
59
+ }
60
+ else if (c === '"') {
61
+ flush();
62
+ result += line.slice(i);
63
+ return result;
64
+ }
65
+ else {
66
+ code += c;
67
+ }
68
+ }
69
+ flush();
70
+ return result;
71
+ })
72
+ .join("\n");
73
+ }
74
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/gen/abap/enums.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Clean-room ABAP for the consumption of remote APIs from a behavior pool (decision D31): the
3
+ * HTTP client of ABAP Cloud (cl_http_destination_provider, cl_web_http_client_manager,
4
+ * if_web_http_client, if_web_http_request, if_web_http_response) and the OData client proxy of
5
+ * the service consumption model (/iwbep/cl_cp_factory_remote, cl_web_odata_client_factory and the
6
+ * /iwbep/if_cp_* requests). The ABAP keeps the state of the objects; the kernel (ZRAP_EML) does
7
+ * the network calls, reads the $metadata of the remote service and converts the values.
8
+ */
9
+ import type { FrameworkSource } from "./framework.js";
10
+ /** The sources, in an order where each object comes after the ones it uses (for reading only). */
11
+ export declare const HTTP_FRAMEWORK_SOURCES: FrameworkSource[];
12
+ /** The kernel entries of the API consumption, declared in ZRAP_EML (bodies replaced at run time). */
13
+ export declare const HTTP_KERNEL_DEFINITIONS = " \"! URL of a destination of the environment (DESTINATION_<NAME>_URL).\n CLASS-METHODS destination\n IMPORTING name TYPE string\n RETURNING VALUE(url) TYPE string\n RAISING cx_http_dest_provider_error.\n CLASS-METHODS base64_encode\n IMPORTING text TYPE string\n RETURNING VALUE(result) TYPE string.\n CLASS-METHODS http_execute\n IMPORTING method TYPE string\n base TYPE string\n path TYPE string OPTIONAL\n query TYPE string OPTIONAL\n destination TYPE string OPTIONAL\n headers TYPE zrap_if_http=>tt_header OPTIONAL\n form TYPE zrap_if_http=>tt_header OPTIONAL\n body TYPE string OPTIONAL\n binary TYPE xstring OPTIONAL\n timeout TYPE i DEFAULT 0\n EXPORTING status TYPE i\n reason TYPE string\n response_headers TYPE zrap_if_http=>tt_header\n response_body TYPE string\n response_binary TYPE xstring\n RAISING cx_web_http_client_error.\n CLASS-METHODS odata_open\n IMPORTING version TYPE string\n base TYPE string\n destination TYPE string OPTIONAL\n root TYPE string\n csrf TYPE abap_bool DEFAULT abap_true\n RETURNING VALUE(handle) TYPE string.\n CLASS-METHODS odata_key\n IMPORTING handle TYPE string\n set TYPE string\n source TYPE data\n RETURNING VALUE(predicate) TYPE string\n RAISING /iwbep/cx_gateway.\n CLASS-METHODS odata_filter\n IMPORTING handle TYPE string\n set TYPE string\n property TYPE string\n range TYPE ANY TABLE\n RETURNING VALUE(expression) TYPE string\n RAISING /iwbep/cx_gateway.\n CLASS-METHODS odata_payload\n IMPORTING handle TYPE string\n set TYPE string\n source TYPE data\n properties TYPE /iwbep/if_cp_runtime_types=>ty_t_property_path OPTIONAL\n RETURNING VALUE(json) TYPE string\n RAISING /iwbep/cx_gateway.\n CLASS-METHODS odata_request\n IMPORTING handle TYPE string\n method TYPE string\n set TYPE string\n key TYPE string OPTIONAL\n top TYPE i DEFAULT -1\n skip TYPE i DEFAULT 0\n count TYPE abap_bool DEFAULT abap_false\n no_data TYPE abap_bool DEFAULT abap_false\n filter TYPE string OPTIONAL\n select TYPE string OPTIONAL\n orderby TYPE string OPTIONAL\n payload TYPE string OPTIONAL\n if_match TYPE string OPTIONAL\n EXPORTING json TYPE string\n total TYPE int8\n RAISING /iwbep/cx_gateway.\n CLASS-METHODS odata_fill\n IMPORTING handle TYPE string\n set TYPE string\n json TYPE string\n CHANGING target TYPE data\n RAISING /iwbep/cx_gateway.\n";
14
+ export declare const HTTP_KERNEL_IMPLEMENTATIONS: string;