@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.
- package/LICENSE +21 -0
- package/README.md +21 -2
- package/dist/agent/server.d.ts +35 -0
- package/dist/agent/server.js +408 -0
- package/dist/agent/server.js.map +1 -0
- package/dist/authoring/abapgit.d.ts +38 -0
- package/dist/authoring/abapgit.js +242 -0
- package/dist/authoring/abapgit.js.map +1 -0
- package/dist/authoring/catalog.d.ts +48 -0
- package/dist/authoring/catalog.js +117 -0
- package/dist/authoring/catalog.js.map +1 -0
- package/dist/authoring/floorplan.d.ts +28 -0
- package/dist/authoring/floorplan.js +31 -0
- package/dist/authoring/floorplan.js.map +1 -0
- package/dist/authoring/generate.d.ts +57 -0
- package/dist/authoring/generate.js +630 -0
- package/dist/authoring/generate.js.map +1 -0
- package/dist/authoring/mcp.d.ts +15 -0
- package/dist/authoring/mcp.js +52 -0
- package/dist/authoring/mcp.js.map +1 -0
- package/dist/authoring/new.d.ts +35 -0
- package/dist/authoring/new.js +389 -0
- package/dist/authoring/new.js.map +1 -0
- package/dist/bdef/ast.d.ts +249 -0
- package/dist/bdef/ast.js +3 -0
- package/dist/bdef/ast.js.map +1 -0
- package/dist/bdef/lexer.d.ts +105 -0
- package/dist/bdef/lexer.js +148 -0
- package/dist/bdef/lexer.js.map +1 -0
- package/dist/bdef/parser.d.ts +22 -0
- package/dist/bdef/parser.js +1012 -0
- package/dist/bdef/parser.js.map +1 -0
- package/dist/build.d.ts +26 -0
- package/dist/build.js +62 -0
- package/dist/build.js.map +1 -0
- package/dist/cds/adapter.d.ts +91 -0
- package/dist/cds/adapter.js +381 -0
- package/dist/cds/adapter.js.map +1 -0
- package/dist/cds/expression-ast.d.ts +65 -0
- package/dist/cds/expression-ast.js +330 -0
- package/dist/cds/expression-ast.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.js +485 -0
- package/dist/cli.js.map +1 -0
- package/dist/dcl/parser.d.ts +59 -0
- package/dist/dcl/parser.js +338 -0
- package/dist/dcl/parser.js.map +1 -0
- package/dist/ddic/catalog.d.ts +17 -0
- package/dist/ddic/catalog.js +211 -0
- package/dist/ddic/catalog.js.map +1 -0
- package/dist/ddic/cds-types.d.ts +47 -0
- package/dist/ddic/cds-types.js +131 -0
- package/dist/ddic/cds-types.js.map +1 -0
- package/dist/ddic/table-source.d.ts +70 -0
- package/dist/ddic/table-source.js +500 -0
- package/dist/ddic/table-source.js.map +1 -0
- package/dist/ddic/xml.d.ts +65 -0
- package/dist/ddic/xml.js +201 -0
- package/dist/ddic/xml.js.map +1 -0
- package/dist/dev.d.ts +128 -0
- package/dist/dev.js +434 -0
- package/dist/dev.js.map +1 -0
- package/dist/diagnostics.d.ts +33 -0
- package/dist/diagnostics.js +53 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/gen/abap/derived-types.d.ts +26 -0
- package/dist/gen/abap/derived-types.js +323 -0
- package/dist/gen/abap/derived-types.js.map +1 -0
- package/dist/gen/abap/eml.d.ts +118 -0
- package/dist/gen/abap/eml.js +362 -0
- package/dist/gen/abap/eml.js.map +1 -0
- package/dist/gen/abap/enums.d.ts +13 -0
- package/dist/gen/abap/enums.js +74 -0
- package/dist/gen/abap/enums.js.map +1 -0
- package/dist/gen/abap/framework-http.d.ts +14 -0
- package/dist/gen/abap/framework-http.js +1049 -0
- package/dist/gen/abap/framework-http.js.map +1 -0
- package/dist/gen/abap/framework-query.d.ts +14 -0
- package/dist/gen/abap/framework-query.js +225 -0
- package/dist/gen/abap/framework-query.js.map +1 -0
- package/dist/gen/abap/framework-utils.d.ts +29 -0
- package/dist/gen/abap/framework-utils.js +3707 -0
- package/dist/gen/abap/framework-utils.js.map +1 -0
- package/dist/gen/abap/framework.d.ts +12 -0
- package/dist/gen/abap/framework.js +480 -0
- package/dist/gen/abap/framework.js.map +1 -0
- package/dist/gen/abap/generate.d.ts +40 -0
- package/dist/gen/abap/generate.js +238 -0
- package/dist/gen/abap/generate.js.map +1 -0
- package/dist/gen/abap/rewrite.d.ts +82 -0
- package/dist/gen/abap/rewrite.js +957 -0
- package/dist/gen/abap/rewrite.js.map +1 -0
- package/dist/gen/abap/shadow.d.ts +25 -0
- package/dist/gen/abap/shadow.js +175 -0
- package/dist/gen/abap/shadow.js.map +1 -0
- package/dist/gen/abap/tokens.d.ts +33 -0
- package/dist/gen/abap/tokens.js +87 -0
- package/dist/gen/abap/tokens.js.map +1 -0
- package/dist/gen/app/index.d.ts +25 -0
- package/dist/gen/app/index.js +322 -0
- package/dist/gen/app/index.js.map +1 -0
- package/dist/gen/csdl.d.ts +11 -0
- package/dist/gen/csdl.js +562 -0
- package/dist/gen/csdl.js.map +1 -0
- package/dist/gen/deploy.d.ts +12 -0
- package/dist/gen/deploy.js +53 -0
- package/dist/gen/deploy.js.map +1 -0
- package/dist/gen/docs/index.d.ts +35 -0
- package/dist/gen/docs/index.js +267 -0
- package/dist/gen/docs/index.js.map +1 -0
- package/dist/gen/docs/markdown.d.ts +23 -0
- package/dist/gen/docs/markdown.js +187 -0
- package/dist/gen/docs/markdown.js.map +1 -0
- package/dist/gen/docs/site.d.ts +17 -0
- package/dist/gen/docs/site.js +106 -0
- package/dist/gen/docs/site.js.map +1 -0
- package/dist/gen/keycloak.d.ts +21 -0
- package/dist/gen/keycloak.js +90 -0
- package/dist/gen/keycloak.js.map +1 -0
- package/dist/gen/launchpad/index.d.ts +48 -0
- package/dist/gen/launchpad/index.js +302 -0
- package/dist/gen/launchpad/index.js.map +1 -0
- package/dist/gen/launchpad/ui.d.ts +14 -0
- package/dist/gen/launchpad/ui.js +350 -0
- package/dist/gen/launchpad/ui.js.map +1 -0
- package/dist/gen/mcp.d.ts +23 -0
- package/dist/gen/mcp.js +244 -0
- package/dist/gen/mcp.js.map +1 -0
- package/dist/gen/sql-expressions.d.ts +12 -0
- package/dist/gen/sql-expressions.js +136 -0
- package/dist/gen/sql-expressions.js.map +1 -0
- package/dist/gen/sql.d.ts +38 -0
- package/dist/gen/sql.js +612 -0
- package/dist/gen/sql.js.map +1 -0
- package/dist/gen/ui/index.d.ts +7 -0
- package/dist/gen/ui/index.js +27 -0
- package/dist/gen/ui/index.js.map +1 -0
- package/dist/gen/ui/layout.d.ts +230 -0
- package/dist/gen/ui/layout.js +511 -0
- package/dist/gen/ui/layout.js.map +1 -0
- package/dist/gen/ui/static.d.ts +55 -0
- package/dist/gen/ui/static.js +2901 -0
- package/dist/gen/ui/static.js.map +1 -0
- package/dist/gen/ui/views.d.ts +10 -0
- package/dist/gen/ui/views.js +511 -0
- package/dist/gen/ui/views.js.map +1 -0
- package/dist/gen/vendor.d.ts +23 -0
- package/dist/gen/vendor.js +68 -0
- package/dist/gen/vendor.js.map +1 -0
- package/dist/gen/xml.d.ts +9 -0
- package/dist/gen/xml.js +42 -0
- package/dist/gen/xml.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/input/project.d.ts +50 -0
- package/dist/input/project.js +128 -0
- package/dist/input/project.js.map +1 -0
- package/dist/ir/access-controls.d.ts +11 -0
- package/dist/ir/access-controls.js +148 -0
- package/dist/ir/access-controls.js.map +1 -0
- package/dist/ir/authorizations.d.ts +25 -0
- package/dist/ir/authorizations.js +178 -0
- package/dist/ir/authorizations.js.map +1 -0
- package/dist/ir/behaviors.d.ts +16 -0
- package/dist/ir/behaviors.js +548 -0
- package/dist/ir/behaviors.js.map +1 -0
- package/dist/ir/builder.d.ts +20 -0
- package/dist/ir/builder.js +505 -0
- package/dist/ir/builder.js.map +1 -0
- package/dist/ir/config.d.ts +25 -0
- package/dist/ir/config.js +130 -0
- package/dist/ir/config.js.map +1 -0
- package/dist/ir/dictionary.d.ts +54 -0
- package/dist/ir/dictionary.js +328 -0
- package/dist/ir/dictionary.js.map +1 -0
- package/dist/ir/entities.d.ts +58 -0
- package/dist/ir/entities.js +676 -0
- package/dist/ir/entities.js.map +1 -0
- package/dist/ir/expressions.d.ts +33 -0
- package/dist/ir/expressions.js +327 -0
- package/dist/ir/expressions.js.map +1 -0
- package/dist/ir/handlers.d.ts +63 -0
- package/dist/ir/handlers.js +398 -0
- package/dist/ir/handlers.js.map +1 -0
- package/dist/ir/number-ranges.d.ts +24 -0
- package/dist/ir/number-ranges.js +74 -0
- package/dist/ir/number-ranges.js.map +1 -0
- package/dist/ir/seed.d.ts +23 -0
- package/dist/ir/seed.js +78 -0
- package/dist/ir/seed.js.map +1 -0
- package/dist/ir/service.d.ts +21 -0
- package/dist/ir/service.js +96 -0
- package/dist/ir/service.js.map +1 -0
- package/dist/launchpad/config.d.ts +47 -0
- package/dist/launchpad/config.js +321 -0
- package/dist/launchpad/config.js.map +1 -0
- package/dist/launchpad/workspace.d.ts +48 -0
- package/dist/launchpad/workspace.js +166 -0
- package/dist/launchpad/workspace.js.map +1 -0
- package/dist/srvd/parser.d.ts +36 -0
- package/dist/srvd/parser.js +193 -0
- package/dist/srvd/parser.js.map +1 -0
- package/dist/standard/data.d.ts +18 -0
- package/dist/standard/data.js +534 -0
- package/dist/standard/data.js.map +1 -0
- package/dist/standard/index.d.ts +36 -0
- package/dist/standard/index.js +507 -0
- package/dist/standard/index.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/docs/AGENTS.md +79 -0
- package/docs/ANNOTATIONS.md +76 -0
- package/docs/DECISIONS.md +1526 -0
- package/docs/DEPLOYMENT.md +113 -0
- package/docs/DIAGNOSTICS.md +116 -0
- package/docs/FEATURES.md +287 -0
- package/docs/GUIDE.md +560 -0
- package/docs/KNOWN_GAPS.md +216 -0
- package/docs/MCP.md +84 -0
- package/docs/PLAN.md +690 -0
- package/docs/README.md +148 -0
- package/docs/REMOTE_APIS.md +121 -0
- package/docs/ROADMAP.md +35 -0
- package/docs/UTILITIES.md +95 -0
- 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/RAP-Transpiler/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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"}
|