@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,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authorizations of the application (decision D34): the authorization objects of the sources
|
|
3
|
+
* (SUSO objects of abapGit) and the roles of `rapt/authorizations.json`, next to the abapGit
|
|
4
|
+
* sources — the counterpart of the IAM apps, business catalogs and business roles of the ABAP
|
|
5
|
+
* environment: each role of the identity provider gives authorizations, instances of
|
|
6
|
+
* authorization objects with field values, that AUTHORITY-CHECK and the access controls read.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
9
|
+
import path from "node:path";
|
|
10
|
+
import * as abaplint from "@abaplint/core";
|
|
11
|
+
import { XMLParser } from "fast-xml-parser";
|
|
12
|
+
import { filesOfType } from "../input/project.js";
|
|
13
|
+
/** The file of the roles, relative to the root of the abapGit project. */
|
|
14
|
+
export const AUTHORIZATIONS_FILE = "rapt/authorizations.json";
|
|
15
|
+
const parser = new XMLParser({ ignoreAttributes: true, parseTagValue: false, trimValues: true, isArray: (name) => name === "TACTZ" || name === "TOBJT" });
|
|
16
|
+
/** An authorization object from its abapGit serialization (TOBJ: FIEL1…FIEL0, TACTZ: activities). */
|
|
17
|
+
export function readSusoXml(xml) {
|
|
18
|
+
const doc = parser.parse(xml);
|
|
19
|
+
const values = doc["abapGit"]?.["asx:abap"]?.["asx:values"];
|
|
20
|
+
const tobj = values?.["TOBJ"];
|
|
21
|
+
const name = typeof tobj?.["OBJCT"] === "string" ? tobj["OBJCT"].toUpperCase() : undefined;
|
|
22
|
+
if (tobj === undefined || name === undefined) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const fields = ["FIEL1", "FIEL2", "FIEL3", "FIEL4", "FIEL5", "FIEL6", "FIEL7", "FIEL8", "FIEL9", "FIEL0"].map((f) => tobj[f]).filter((f) => typeof f === "string" && f !== "").map((f) => f.toUpperCase());
|
|
26
|
+
const object = { name, fields };
|
|
27
|
+
// TACTZ is a table of rows (TACTZ inside TACTZ in the serialization)
|
|
28
|
+
const activities = (values?.["TACTZ"] ?? [])
|
|
29
|
+
.flatMap((t) => (Array.isArray(t["TACTZ"]) ? t["TACTZ"] : [t]))
|
|
30
|
+
.map((row) => row["ACTVT"])
|
|
31
|
+
.filter((a) => typeof a === "string");
|
|
32
|
+
if (activities.length > 0) {
|
|
33
|
+
object.activities = activities;
|
|
34
|
+
}
|
|
35
|
+
const text = (values?.["TOBJT"] ?? []).find((t) => typeof t["TTEXT"] === "string")?.["TTEXT"];
|
|
36
|
+
if (typeof text === "string") {
|
|
37
|
+
object.description = text;
|
|
38
|
+
}
|
|
39
|
+
return object;
|
|
40
|
+
}
|
|
41
|
+
const isValue = (v) => typeof v === "string" || (typeof v === "object" && v !== null && typeof v.from === "string" && typeof v.to === "string");
|
|
42
|
+
/**
|
|
43
|
+
* The authorization objects of the sources and the roles of rapt/authorizations.json, checked
|
|
44
|
+
* against each other; undefined when the project has neither.
|
|
45
|
+
*/
|
|
46
|
+
export function loadAuthorizations(project, diagnostics) {
|
|
47
|
+
const objects = new Map();
|
|
48
|
+
for (const file of filesOfType(project, "SUSO").filter((f) => f.extension === "xml")) {
|
|
49
|
+
const object = readSusoXml(file.content);
|
|
50
|
+
if (object === undefined) {
|
|
51
|
+
diagnostics.error("AUTH001", "unreadable authorization object", { file: file.path, line: 1 });
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
objects.set(object.name, object);
|
|
55
|
+
}
|
|
56
|
+
const file = path.join(project.root, AUTHORIZATIONS_FILE);
|
|
57
|
+
if (!existsSync(file)) {
|
|
58
|
+
return objects.size === 0 ? undefined : { objects: [...objects.values()], roles: [] };
|
|
59
|
+
}
|
|
60
|
+
const at = { file: AUTHORIZATIONS_FILE, line: 1 };
|
|
61
|
+
let json;
|
|
62
|
+
try {
|
|
63
|
+
json = JSON.parse(readFileSync(file, "utf8"));
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
diagnostics.error("AUTH001", `${AUTHORIZATIONS_FILE} is not valid JSON: ${error.message}`, at);
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
const root = json;
|
|
70
|
+
// objects declared in the file (authorization objects that are not in the sources)
|
|
71
|
+
for (const [name, value] of Object.entries((root.objects ?? {}))) {
|
|
72
|
+
const fields = value?.fields;
|
|
73
|
+
if (!Array.isArray(fields) || !fields.every((f) => typeof f === "string")) {
|
|
74
|
+
diagnostics.error("AUTH001", `objects.${name}: "fields" must be a list of field names`, at);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (!objects.has(name.toUpperCase())) {
|
|
78
|
+
const object = { name: name.toUpperCase(), fields: fields.map((f) => f.toUpperCase()) };
|
|
79
|
+
const activities = value.activities;
|
|
80
|
+
if (Array.isArray(activities)) {
|
|
81
|
+
object.activities = activities.map(String);
|
|
82
|
+
}
|
|
83
|
+
objects.set(object.name, object);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (typeof root.roles !== "object" || root.roles === null || Array.isArray(root.roles)) {
|
|
87
|
+
diagnostics.error("AUTH001", `${AUTHORIZATIONS_FILE}: "roles" must be an object (role name → authorizations)`, at);
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
const roles = [];
|
|
91
|
+
for (const [name, value] of Object.entries(root.roles)) {
|
|
92
|
+
const definition = value;
|
|
93
|
+
if (!Array.isArray(definition?.authorizations)) {
|
|
94
|
+
diagnostics.error("AUTH001", `roles.${name}: "authorizations" must be a list`, at);
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
const role = { name, authorizations: [] };
|
|
98
|
+
if (typeof definition.description === "string") {
|
|
99
|
+
role.description = definition.description;
|
|
100
|
+
}
|
|
101
|
+
for (const [i, entry] of definition.authorizations.entries()) {
|
|
102
|
+
const where = `roles.${name}.authorizations[${i}]`;
|
|
103
|
+
const authorization = entry;
|
|
104
|
+
if (typeof authorization?.object !== "string" || typeof authorization.fields !== "object" || authorization.fields === null) {
|
|
105
|
+
diagnostics.error("AUTH001", `${where}: an authorization has an "object" and "fields"`, at);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
const objectName = authorization.object.toUpperCase();
|
|
109
|
+
const object = objects.get(objectName);
|
|
110
|
+
if (object === undefined) {
|
|
111
|
+
diagnostics.warning("AUTH002", `${where}: the authorization object ${objectName} is neither in the sources (SUSO) nor in "objects"; its fields are not checked`, at);
|
|
112
|
+
}
|
|
113
|
+
const fields = {};
|
|
114
|
+
for (const [field, raw] of Object.entries(authorization.fields)) {
|
|
115
|
+
const values = Array.isArray(raw) ? raw : [raw];
|
|
116
|
+
if (!values.every(isValue)) {
|
|
117
|
+
diagnostics.error("AUTH001", `${where}.fields.${field}: a value is a string ("02", "07*", "*", "{claim:agency}") or a range {"from", "to"}`, at);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const upper = field.toUpperCase();
|
|
121
|
+
if (object !== undefined && !object.fields.includes(upper)) {
|
|
122
|
+
diagnostics.error("AUTH003", `${where}: ${objectName} has no field ${upper} (fields: ${object.fields.join(", ")})`, at);
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if (upper === "ACTVT" && object?.activities !== undefined) {
|
|
126
|
+
const unknown = values.filter((v) => typeof v === "string" && !v.includes("*") && !v.startsWith("{") && !object.activities?.includes(v));
|
|
127
|
+
if (unknown.length > 0) {
|
|
128
|
+
diagnostics.warning("AUTH004", `${where}: ${objectName} does not permit the activities ${unknown.join(", ")}`, at);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
fields[upper] = values;
|
|
132
|
+
}
|
|
133
|
+
role.authorizations.push({ object: objectName, fields });
|
|
134
|
+
}
|
|
135
|
+
roles.push(role);
|
|
136
|
+
}
|
|
137
|
+
return { objects: [...objects.values()], roles };
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* The AUTHORITY-CHECK statements of the ABAP code: an authorization object of the sources must
|
|
141
|
+
* have the fields the statement checks (ABP010), and an unknown object is reported (ABP011).
|
|
142
|
+
*/
|
|
143
|
+
export function checkAuthorityChecks(registry, project, authorizations, diagnostics) {
|
|
144
|
+
const objects = new Map((authorizations?.objects ?? []).map((o) => [o.name, o]));
|
|
145
|
+
for (const object of registry.getObjects()) {
|
|
146
|
+
if (!(object instanceof abaplint.ABAPObject)) {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
for (const file of object.getABAPFiles()) {
|
|
150
|
+
const source = project.files.find((f) => f.fileName === file.getFilename());
|
|
151
|
+
if (source === undefined) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
for (const statement of file.getStatements()) {
|
|
155
|
+
if (!(statement.get() instanceof abaplint.Statements.AuthorityCheck)) {
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
const text = statement.concatTokens();
|
|
159
|
+
const at = { file: source.path, line: statement.getStart().getRow(), column: statement.getStart().getCol() };
|
|
160
|
+
const name = /\bOBJECT\s+'([^']+)'/i.exec(text)?.[1]?.toUpperCase();
|
|
161
|
+
if (name === undefined) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
const known = objects.get(name);
|
|
165
|
+
if (known === undefined) {
|
|
166
|
+
diagnostics.warning("ABP011", `AUTHORITY-CHECK OBJECT '${name}': the authorization object is neither in the sources (SUSO) nor in ${AUTHORIZATIONS_FILE}; no role grants it, the check fails`, at);
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
for (const id of [...text.matchAll(/\bID\s+'([^']+)'/gi)].map((m) => (m[1] ?? "").toUpperCase())) {
|
|
170
|
+
if (!known.fields.includes(id)) {
|
|
171
|
+
diagnostics.error("ABP010", `AUTHORITY-CHECK OBJECT '${name}': the object has no field ${id} (fields: ${known.fields.join(", ")})`, at);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=authorizations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorizations.js","sourceRoot":"","sources":["../../src/ir/authorizations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** BDEF AST → IR behavior, with the checks against the CDS entities and the dictionary. */
|
|
2
|
+
import { type BehaviorModel, type EntityModel, type ProjectMode } from "@open-rap/model";
|
|
3
|
+
import type { BdefAst } from "../bdef/ast.js";
|
|
4
|
+
import type { Diagnostics } from "../diagnostics.js";
|
|
5
|
+
import type { SourceFile } from "../input/project.js";
|
|
6
|
+
import type { Dictionary } from "./dictionary.js";
|
|
7
|
+
/** The actions of a draft BO, provided by the runtime (D54). */
|
|
8
|
+
export declare const DRAFT_ACTIONS: Set<string>;
|
|
9
|
+
export interface BehaviorContext {
|
|
10
|
+
diagnostics: Diagnostics;
|
|
11
|
+
dictionary: Dictionary;
|
|
12
|
+
entity: (name: string) => EntityModel | undefined;
|
|
13
|
+
/** The mode of the project (D45): some constructions are Open RAP Runtime extensions. */
|
|
14
|
+
mode?: ProjectMode;
|
|
15
|
+
}
|
|
16
|
+
export declare function buildBehavior(name: string, ast: BdefAst, file: SourceFile, ctx: BehaviorContext): BehaviorModel | undefined;
|