@open-rap/compiler 0.0.0-stage → 0.1.1

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 +1554 -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 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/authoring/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `rapt mcp <src>` (decision D47): writes `rapt/mcp.json`, the tools the MCP server of the
3
+ * application offers, each with a description to explain to an AI agent what it does and when to
4
+ * use it. A description already written is kept; new tools get their default description; tools
5
+ * the service no longer has are removed. `false` instead of a description turns a tool off.
6
+ */
7
+ import { type BuildOptions } from "../ir/builder.js";
8
+ export interface McpFileResult {
9
+ file: string;
10
+ tools: number;
11
+ added: string[];
12
+ removed: string[];
13
+ error?: string;
14
+ }
15
+ export declare function writeMcpFile(dir: string, options?: BuildOptions): McpFileResult;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * `rapt mcp <src>` (decision D47): writes `rapt/mcp.json`, the tools the MCP server of the
3
+ * application offers, each with a description to explain to an AI agent what it does and when to
4
+ * use it. A description already written is kept; new tools get their default description; tools
5
+ * the service no longer has are removed. `false` instead of a description turns a tool off.
6
+ */
7
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
8
+ import path from "node:path";
9
+ import { defaultMcpTools, MCP_FILE } from "../gen/mcp.js";
10
+ import { loadProject } from "../input/project.js";
11
+ import { buildModel } from "../ir/builder.js";
12
+ export function writeMcpFile(dir, options = {}) {
13
+ const root = path.resolve(dir);
14
+ const file = path.join(root, MCP_FILE);
15
+ const { model, diagnostics } = buildModel(loadProject(root), options);
16
+ if (model === undefined || diagnostics.hasErrors()) {
17
+ return { file: MCP_FILE, tools: 0, added: [], removed: [], error: `the sources have errors (rapt check): ${diagnostics.errors()[0]?.message ?? ""}` };
18
+ }
19
+ let current = {};
20
+ if (existsSync(file)) {
21
+ try {
22
+ current = JSON.parse(readFileSync(file, "utf8"));
23
+ }
24
+ catch (error) {
25
+ return { file: MCP_FILE, tools: 0, added: [], removed: [], error: `${MCP_FILE} is not valid JSON: ${error.message}` };
26
+ }
27
+ }
28
+ const tools = defaultMcpTools(model);
29
+ const previous = current.tools ?? {};
30
+ const next = {};
31
+ const added = [];
32
+ for (const tool of tools) {
33
+ const kept = previous[tool.name];
34
+ if (kept === undefined) {
35
+ added.push(tool.name);
36
+ }
37
+ next[tool.name] = kept ?? tool.description;
38
+ }
39
+ const removed = Object.keys(previous).filter((name) => !(name in next));
40
+ const config = {
41
+ server: {
42
+ name: current.server?.name ?? model.service.name.toLowerCase(),
43
+ instructions: current.server?.instructions ??
44
+ `Business objects of the service ${model.service.name}. Read with the _list and _get tools before changing data; the business object checks every change and returns its messages.`,
45
+ },
46
+ tools: next,
47
+ };
48
+ mkdirSync(path.dirname(file), { recursive: true });
49
+ writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`);
50
+ return { file: MCP_FILE, tools: tools.length, added, removed };
51
+ }
52
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/authoring/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * `rapt new` (decision D42): the sources of a new managed business object, ready to run with
3
+ * `rapt dev` and to pull into an SAP system with abapGit — a table written as source, the root
4
+ * and projection CDS entities with UI annotations, the behavior definitions and pool, the service
5
+ * definition and binding, seed data — then their abapGit XML (`rapt abapgit`).
6
+ */
7
+ export interface NewBoOptions {
8
+ /** Prefix of the object names (default Z): ZRT → table zrt_travel, ZRT_R_Travel, ZBP_RT_R_TRAVEL. */
9
+ prefix?: string;
10
+ /** Description of the business object (default: the entity name). */
11
+ description?: string;
12
+ }
13
+ export interface NewBoResult {
14
+ /** Files written, relative to the project root. */
15
+ written: string[];
16
+ error?: string;
17
+ }
18
+ export declare function snakeCase(name: string): string;
19
+ interface Names {
20
+ entity: string;
21
+ snake: string;
22
+ table: string;
23
+ root: string;
24
+ projection: string;
25
+ pool: string;
26
+ service: string;
27
+ binding: string;
28
+ description: string;
29
+ }
30
+ export declare function boNames(entity: string, options?: NewBoOptions): Names | {
31
+ error: string;
32
+ };
33
+ /** Writes the sources of a new business object into the project `dir` (created if needed). */
34
+ export declare function newBusinessObject(dir: string, entity: string, options?: NewBoOptions): NewBoResult;
35
+ export {};
@@ -0,0 +1,389 @@
1
+ /**
2
+ * `rapt new` (decision D42): the sources of a new managed business object, ready to run with
3
+ * `rapt dev` and to pull into an SAP system with abapGit — a table written as source, the root
4
+ * and projection CDS entities with UI annotations, the behavior definitions and pool, the service
5
+ * definition and binding, seed data — then their abapGit XML (`rapt abapgit`).
6
+ */
7
+ import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
8
+ import path from "node:path";
9
+ import { abapGitXml, xmlElement } from "../ddic/table-source.js";
10
+ import { generateAbapGitFiles } from "./abapgit.js";
11
+ const pad = (text, width) => text.padEnd(width);
12
+ export function snakeCase(name) {
13
+ return name
14
+ .replace(/([a-z0-9])([A-Z])/g, "$1_$2")
15
+ .replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2")
16
+ .toLowerCase();
17
+ }
18
+ export function boNames(entity, options = {}) {
19
+ if (!/^[A-Za-z][A-Za-z0-9]*$/.test(entity)) {
20
+ return { error: `${entity}: the entity name is made of letters and digits, e.g. Travel or SalesOrder` };
21
+ }
22
+ const prefix = (options.prefix ?? "Z").toUpperCase().replace(/_+$/, "");
23
+ if (!/^[ZY][A-Z0-9_]*$/.test(prefix)) {
24
+ return { error: `${prefix}: the prefix starts with Z or Y (customer namespace)` };
25
+ }
26
+ const name = entity.charAt(0).toUpperCase() + entity.slice(1);
27
+ const snake = snakeCase(name);
28
+ const short = prefix.replace(/^[ZY]_?/, "");
29
+ const names = {
30
+ entity: name,
31
+ snake,
32
+ table: `${prefix}_${snake}`.toLowerCase(),
33
+ root: `${prefix}_R_${name}`,
34
+ projection: `${prefix}_C_${name}`,
35
+ pool: `${prefix.charAt(0)}BP_${short === "" ? "" : `${short}_`}R_${snake}`.toLowerCase(),
36
+ service: `${prefix}_UI_${snake}`.toUpperCase(),
37
+ binding: `${prefix}_UI_${snake}_O4`.toUpperCase(),
38
+ description: options.description ?? name,
39
+ };
40
+ if (names.table.length > 16) {
41
+ return { error: `${names.table}: a table name has at most 16 characters, use a shorter prefix or entity name` };
42
+ }
43
+ for (const n of [names.root, names.projection, names.pool, names.service, names.binding]) {
44
+ if (n.length > 30) {
45
+ return { error: `${n}: an object name has at most 30 characters, use a shorter prefix or entity name` };
46
+ }
47
+ }
48
+ return names;
49
+ }
50
+ function fields(n) {
51
+ return [
52
+ { column: `${n.snake}_uuid`, element: `${n.entity}UUID`, type: "sysuuid_x16", label: "UUID" },
53
+ { column: `${n.snake}_id`, element: `${n.entity}ID`, type: "abap.numc(8)", label: `${n.entity} ID` },
54
+ { column: "description", element: "Description", type: "abap.char(256)", label: "Description" },
55
+ { column: "status", element: "Status", type: "abap.char(1)", label: "Status" },
56
+ { column: "created_by", element: "CreatedBy", type: "abp_creation_user", semantics: "@Semantics.user.createdBy: true", label: "Created By" },
57
+ { column: "created_at", element: "CreatedAt", type: "abp_creation_tstmpl", semantics: "@Semantics.systemDateTime.createdAt: true", label: "Created At" },
58
+ { column: "last_changed_by", element: "LastChangedBy", type: "abp_lastchange_user", semantics: "@Semantics.user.lastChangedBy: true", label: "Changed By" },
59
+ { column: "last_changed_at", element: "LastChangedAt", type: "abp_lastchange_tstmpl", semantics: "@Semantics.systemDateTime.lastChangedAt: true", label: "Changed At" },
60
+ {
61
+ column: "local_last_changed_at",
62
+ element: "LocalLastChangedAt",
63
+ type: "abp_locinst_lastchange_tstmpl",
64
+ semantics: "@Semantics.systemDateTime.localInstanceLastChangedAt: true",
65
+ label: "Local Changed At",
66
+ },
67
+ ];
68
+ }
69
+ function tableSource(n) {
70
+ const all = fields(n);
71
+ const width = Math.max(...all.map((f) => f.column.length), "client".length) + 4;
72
+ const lines = [
73
+ ` key ${pad("client", width - 4)} : abap.clnt not null;`,
74
+ ...all.map((f, i) => (i === 0 ? ` key ${pad(f.column, width - 4)} : ${f.type} not null;` : ` ${pad(f.column, width)} : ${f.type};`)),
75
+ ];
76
+ return `@EndUserText.label : '${n.description}'
77
+ @AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
78
+ @AbapCatalog.tableCategory : #TRANSPARENT
79
+ @AbapCatalog.deliveryClass : #A
80
+ @AbapCatalog.dataMaintenance : #RESTRICTED
81
+ define table ${n.table} {
82
+ ${lines.join("\n")}
83
+ }
84
+ `;
85
+ }
86
+ function rootView(n) {
87
+ const all = fields(n);
88
+ const width = Math.max(...all.map((f) => f.column.length)) + 1;
89
+ const elements = all.map((f, i) => {
90
+ const annotations = [`@EndUserText.label: '${f.label}'`, ...(f.semantics === undefined ? [] : [f.semantics])].map((a) => ` ${a}\n`).join("");
91
+ return `${annotations}${i === 0 ? " key " : " "}${pad(f.column, width)}as ${f.element}`;
92
+ });
93
+ return `@AccessControl.authorizationCheck: #NOT_REQUIRED
94
+ @EndUserText.label: '${n.description}'
95
+ define root view entity ${n.root}
96
+ as select from ${n.table}
97
+ {
98
+ ${elements.join(",\n")}
99
+ }
100
+ `;
101
+ }
102
+ function projectionView(n) {
103
+ const all = fields(n);
104
+ const elements = all.map((f, i) => {
105
+ const search = f.element === `${n.entity}ID` || f.element === "Description" ? " @Search.defaultSearchElement: true\n" : "";
106
+ return `${search}${i === 0 ? " key " : " "}${f.element}`;
107
+ });
108
+ return `@AccessControl.authorizationCheck: #NOT_REQUIRED
109
+ @EndUserText.label: '${n.description} (projection)'
110
+ @Metadata.allowExtensions: true
111
+ @Search.searchable: true
112
+ define root view entity ${n.projection}
113
+ provider contract transactional_query
114
+ as projection on ${n.root}
115
+ {
116
+ ${elements.join(",\n")}
117
+ }
118
+ `;
119
+ }
120
+ function metadataExtension(n) {
121
+ const plural = n.entity.endsWith("s") ? n.entity : `${n.entity}s`;
122
+ return `@Metadata.layer: #CORE
123
+ @UI.headerInfo: {
124
+ typeName: '${n.description}',
125
+ typeNamePlural: '${plural}',
126
+ title: { type: #STANDARD, value: '${n.entity}ID' },
127
+ description: { type: #STANDARD, value: 'Description' }
128
+ }
129
+ @UI.presentationVariant: [ { sortOrder: [ { by: '${n.entity}ID', direction: #DESC } ] } ]
130
+ annotate entity ${n.projection} with
131
+ {
132
+ @UI.facet: [ { id: '${n.entity}', purpose: #STANDARD, type: #IDENTIFICATION_REFERENCE, label: '${n.description}', position: 10 } ]
133
+ @UI.hidden: true
134
+ ${n.entity}UUID;
135
+
136
+ @UI: { lineItem: [ { position: 10, importance: #HIGH } ],
137
+ identification: [ { position: 10 } ],
138
+ selectionField: [ { position: 10 } ] }
139
+ ${n.entity}ID;
140
+
141
+ @UI: { lineItem: [ { position: 20, importance: #HIGH } ],
142
+ identification: [ { position: 20 } ] }
143
+ Description;
144
+
145
+ @UI: { lineItem: [ { position: 30, importance: #MEDIUM } ],
146
+ identification: [ { position: 30 } ],
147
+ selectionField: [ { position: 20 } ] }
148
+ Status;
149
+
150
+ @UI.identification: [ { position: 40 } ]
151
+ CreatedBy;
152
+
153
+ @UI.identification: [ { position: 50 } ]
154
+ LastChangedAt;
155
+
156
+ @UI.hidden: true
157
+ CreatedAt;
158
+
159
+ @UI.hidden: true
160
+ LastChangedBy;
161
+
162
+ @UI.hidden: true
163
+ LocalLastChangedAt;
164
+ }
165
+ `;
166
+ }
167
+ function behavior(n) {
168
+ const all = fields(n);
169
+ const width = Math.max(...all.map((f) => f.element.length)) + 1;
170
+ return `managed implementation in class ${n.pool} unique;
171
+ strict ( 2 );
172
+
173
+ define behavior for ${n.root} alias ${n.entity}
174
+ persistent table ${n.table}
175
+ lock master
176
+ authorization master ( global )
177
+ etag master LocalLastChangedAt
178
+ {
179
+ create;
180
+ update;
181
+ delete;
182
+
183
+ field ( numbering : managed, readonly ) ${n.entity}UUID;
184
+ field ( readonly ) Status, CreatedBy, CreatedAt, LastChangedBy, LastChangedAt, LocalLastChangedAt;
185
+ field ( mandatory ) ${n.entity}ID, Description;
186
+
187
+ determination setStatus on modify { create; }
188
+
189
+ mapping for ${n.table} corresponding
190
+ {
191
+ ${all.map((f) => ` ${pad(f.element, width)}= ${f.column};`).join("\n")}
192
+ }
193
+ }
194
+ `;
195
+ }
196
+ function projectionBehavior(n) {
197
+ return `projection;
198
+ strict ( 2 );
199
+
200
+ define behavior for ${n.projection} alias ${n.entity}
201
+ use etag
202
+ {
203
+ use create;
204
+ use update;
205
+ use delete;
206
+ }
207
+ `;
208
+ }
209
+ function pool(n) {
210
+ return `"! <p class="shorttext synchronized">Behavior pool of ${n.root.toUpperCase()}</p>
211
+ CLASS ${n.pool} DEFINITION PUBLIC ABSTRACT FINAL FOR BEHAVIOR OF ${n.root.toLowerCase()}.
212
+ ENDCLASS.
213
+
214
+
215
+
216
+ CLASS ${n.pool} IMPLEMENTATION.
217
+ ENDCLASS.
218
+ `;
219
+ }
220
+ function handler(n) {
221
+ const local = `lhc_${n.entity}`.slice(0, 30);
222
+ return `CLASS ${local} DEFINITION INHERITING FROM cl_abap_behavior_handler.
223
+ PRIVATE SECTION.
224
+ METHODS get_global_authorizations FOR GLOBAL AUTHORIZATION
225
+ IMPORTING REQUEST requested_authorizations FOR ${n.entity} RESULT result.
226
+
227
+ METHODS setStatus FOR DETERMINE ON MODIFY
228
+ IMPORTING keys FOR ${n.entity}~setStatus.
229
+ ENDCLASS.
230
+
231
+ CLASS ${local} IMPLEMENTATION.
232
+
233
+ METHOD get_global_authorizations.
234
+ " every activity is allowed: check the authorizations here (AUTHORITY-CHECK OBJECT …)
235
+ IF requested_authorizations-%create = if_abap_behv=>mk-on.
236
+ result-%create = if_abap_behv=>auth-allowed.
237
+ ENDIF.
238
+ IF requested_authorizations-%update = if_abap_behv=>mk-on.
239
+ result-%update = if_abap_behv=>auth-allowed.
240
+ ENDIF.
241
+ IF requested_authorizations-%delete = if_abap_behv=>mk-on.
242
+ result-%delete = if_abap_behv=>auth-allowed.
243
+ ENDIF.
244
+ ENDMETHOD.
245
+
246
+ METHOD setStatus.
247
+ " a new ${n.entity.toLowerCase()} starts with the status N (new)
248
+ READ ENTITIES OF ${n.root.toLowerCase()} IN LOCAL MODE
249
+ ENTITY ${n.entity}
250
+ FIELDS ( Status ) WITH CORRESPONDING #( keys )
251
+ RESULT DATA(instances).
252
+
253
+ DELETE instances WHERE Status IS NOT INITIAL.
254
+ CHECK instances IS NOT INITIAL.
255
+
256
+ MODIFY ENTITIES OF ${n.root.toLowerCase()} IN LOCAL MODE
257
+ ENTITY ${n.entity}
258
+ UPDATE FIELDS ( Status )
259
+ WITH VALUE #( FOR instance IN instances ( %tky = instance-%tky Status = 'N' ) ).
260
+ ENDMETHOD.
261
+
262
+ ENDCLASS.
263
+ `;
264
+ }
265
+ function serviceDefinition(n) {
266
+ return `@EndUserText.label: '${n.description} service'
267
+ define service ${n.service} {
268
+ expose ${n.projection} as ${n.entity};
269
+ }
270
+ `;
271
+ }
272
+ function serviceBinding(n) {
273
+ const services = ` <SERVICES>
274
+ <item>
275
+ <NAME>${n.binding}</NAME>
276
+ <VERSIONS>
277
+ <item>
278
+ <SERVICE_VERSION>0001</SERVICE_VERSION>
279
+ <SERVICE_DEFINITION>${n.service}</SERVICE_DEFINITION>
280
+ <RELEASE_STATE>NOT_RELEASED</RELEASE_STATE>
281
+ </item>
282
+ </VERSIONS>
283
+ </item>
284
+ </SERVICES>`;
285
+ const header = xmlElement("SRVB", [
286
+ ["NAME", n.binding],
287
+ ["DESCRIPTION", `${n.description} service binding (OData V4, UI)`.slice(0, 60)],
288
+ ["LANGUAGE", "EN"],
289
+ ["BINDING_TYPE", "ODATA"],
290
+ ["BINDING_TYPE_VERSION", "V4"],
291
+ ["BINDING_TYPE_CATEGORY", "0"],
292
+ ], 3);
293
+ return abapGitXml("SRVB", header.replace(/\n {3}<\/SRVB>$/, `\n${services}\n </SRVB>`));
294
+ }
295
+ function seed(n) {
296
+ const rows = [1, 2].map((i) => ({ [`${n.snake}_id`]: String(i), description: `${n.description} ${i}`, status: "N" }));
297
+ return `${JSON.stringify({ [n.table]: rows }, null, 2)}\n`;
298
+ }
299
+ /** AGENTS.md of a new project: how an AI agent works on a RAP project with Open RAP Runtime. */
300
+ function agentsFile(n) {
301
+ return `# AGENTS.md
302
+
303
+ This project is a SAP RAP business object (${n.description}) in abapGit format, run without an SAP
304
+ system by Open RAP Runtime (\`rapt\`). The same sources are imported into SAP with abapGit.
305
+
306
+ ## Commands
307
+
308
+ \`\`\`sh
309
+ rapt check . # diagnostics: file:line:column: severity CODE message (--json for tools)
310
+ rapt dev . # http://localhost:8080/: the app, rebuilt on every save (--json: events)
311
+ rapt generate . <kind> <name> [--from X] # a new object with the right file names (no kind: list)
312
+ rapt abapgit . # the abapGit XML files the sources lack
313
+ rapt mcp . # rapt/mcp.json: the MCP tools of the service, to describe
314
+ rapt agent . # MCP server (stdio) of rapt for coding agents: check, objects, documentation
315
+ \`\`\`
316
+
317
+ \`rapt\` is on the PATH of the terminals of VS Code with the Open RAP Runtime extension; elsewhere,
318
+ \`npm install -g open-rap-runtime\` (or \`npx open-rap-runtime …\`). In VS Code, the agent mode also
319
+ finds the MCP server of rapt (tools \`rapt_check\`, \`rapt_generate\`, \`rapt_docs_search\`…).
320
+
321
+ ## Rules
322
+
323
+ - Write ABAP Cloud and CDS as in the ABAP Development Tools; RAP managed, with or without draft.
324
+ - Run \`rapt check .\` after every change until there is no error; the codes are explained in
325
+ the documentation (tile *Documentation* of \`rapt dev\`, the tool \`rapt_docs_read\` of
326
+ \`rapt agent\`, or https://clementringot.github.io/Open-Rap-Runtime/docs/diagnostics.html).
327
+ - Keep \`rapt/config.json\` in mode \`standard\` when the BO must activate on SAP; \`enhanced\`
328
+ allows Open RAP Runtime extensions (mandatory fields checked automatically, managed BO on a
329
+ custom entity).
330
+ - Objects: ${n.table} (table), ${n.root} (root view), ${n.projection} (projection and UI
331
+ annotations), ${n.pool.toUpperCase()} (behavior pool), ${n.service} (service).
332
+ - \`rapt/\` holds the configuration of Open RAP Runtime (seed data, roles, number ranges, MCP); it is
333
+ not imported into SAP. Never edit \`.rapt/\` (build output).
334
+ `;
335
+ }
336
+ /** Writes the sources of a new business object into the project `dir` (created if needed). */
337
+ export function newBusinessObject(dir, entity, options = {}) {
338
+ const root = path.resolve(dir);
339
+ const names = boNames(entity, options);
340
+ if ("error" in names) {
341
+ return { written: [], error: names.error };
342
+ }
343
+ const dotAbapGit = path.join(root, ".abapgit.xml");
344
+ const folder = existsSync(dotAbapGit) ? (/<STARTING_FOLDER>([^<]*)<\/STARTING_FOLDER>/.exec(readFileSync(dotAbapGit, "utf8"))?.[1] ?? "/src/") : "/src/";
345
+ const src = path.join(root, folder.replace(/^\/+/, ""));
346
+ const files = [
347
+ [path.join(src, `${names.table}.tabl.astabl`), tableSource(names)],
348
+ [path.join(src, `${names.root.toLowerCase()}.ddls.asddls`), rootView(names)],
349
+ [path.join(src, `${names.projection.toLowerCase()}.ddls.asddls`), projectionView(names)],
350
+ [path.join(src, `${names.projection.toLowerCase()}.ddlx.asddlxs`), metadataExtension(names)],
351
+ [path.join(src, `${names.root.toLowerCase()}.bdef.asbdef`), behavior(names)],
352
+ [path.join(src, `${names.projection.toLowerCase()}.bdef.asbdef`), projectionBehavior(names)],
353
+ [path.join(src, `${names.pool}.clas.abap`), pool(names)],
354
+ [path.join(src, `${names.pool}.clas.locals_imp.abap`), handler(names)],
355
+ [path.join(src, `${names.service.toLowerCase()}.srvd.srvdsrv`), serviceDefinition(names)],
356
+ [path.join(src, `${names.binding.toLowerCase()}.srvb.xml`), serviceBinding(names)],
357
+ ];
358
+ const seedFile = path.join(root, "rapt", "seed.json");
359
+ if (!existsSync(seedFile)) {
360
+ files.push([seedFile, seed(names)]);
361
+ }
362
+ // instructions for the AI agents working on the project
363
+ const agents = path.join(root, "AGENTS.md");
364
+ if (!existsSync(agents)) {
365
+ files.push([agents, agentsFile(names)]);
366
+ }
367
+ const existing = files.filter(([file]) => existsSync(file)).map(([file]) => path.relative(root, file));
368
+ if (existing.length > 0) {
369
+ return { written: [], error: `already present: ${existing.join(", ")}` };
370
+ }
371
+ const written = [];
372
+ for (const [file, content] of files) {
373
+ mkdirSync(path.dirname(file), { recursive: true });
374
+ writeFileSync(file, content);
375
+ written.push(path.relative(root, file).split(path.sep).join("/"));
376
+ }
377
+ // the build and the database of rapt dev stay out of git
378
+ const gitignore = path.join(root, ".gitignore");
379
+ const ignored = existsSync(gitignore) ? readFileSync(gitignore, "utf8") : "";
380
+ const missing = [".rapt/", "node_modules/"].filter((line) => !ignored.split(/\r?\n/).includes(line));
381
+ if (missing.length > 0) {
382
+ appendFileSync(gitignore, `${ignored === "" || ignored.endsWith("\n") ? "" : "\n"}${missing.join("\n")}\n`);
383
+ written.push(".gitignore");
384
+ }
385
+ const abapGit = generateAbapGitFiles(root, { packageDescription: names.description });
386
+ written.push(...abapGit.written.filter((f) => !written.includes(f)));
387
+ return { written };
388
+ }
389
+ //# sourceMappingURL=new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/authoring/new.ts"],"names":[],"mappings":"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"}