@open-rap/runtime 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.
- package/LICENSE +21 -0
- package/README.md +14 -2
- package/dist/abap/background.d.ts +14 -0
- package/dist/abap/background.js +130 -0
- package/dist/abap/background.js.map +1 -0
- package/dist/abap/bridge.d.ts +62 -0
- package/dist/abap/bridge.js +402 -0
- package/dist/abap/bridge.js.map +1 -0
- package/dist/abap/convert.d.ts +26 -0
- package/dist/abap/convert.js +197 -0
- package/dist/abap/convert.js.map +1 -0
- package/dist/abap/http.d.ts +34 -0
- package/dist/abap/http.js +133 -0
- package/dist/abap/http.js.map +1 -0
- package/dist/abap/mail.d.ts +10 -0
- package/dist/abap/mail.js +83 -0
- package/dist/abap/mail.js.map +1 -0
- package/dist/abap/odata-client.d.ts +33 -0
- package/dist/abap/odata-client.js +576 -0
- package/dist/abap/odata-client.js.map +1 -0
- package/dist/abap/sql.d.ts +92 -0
- package/dist/abap/sql.js +261 -0
- package/dist/abap/sql.js.map +1 -0
- package/dist/abap/utils.d.ts +41 -0
- package/dist/abap/utils.js +976 -0
- package/dist/abap/utils.js.map +1 -0
- package/dist/app.d.ts +53 -0
- package/dist/app.js +169 -0
- package/dist/app.js.map +1 -0
- package/dist/auth/auth.d.ts +68 -0
- package/dist/auth/auth.js +140 -0
- package/dist/auth/auth.js.map +1 -0
- package/dist/auth/authorizations.d.ts +39 -0
- package/dist/auth/authorizations.js +103 -0
- package/dist/auth/authorizations.js.map +1 -0
- package/dist/auth/business-users.d.ts +15 -0
- package/dist/auth/business-users.js +36 -0
- package/dist/auth/business-users.js.map +1 -0
- package/dist/auth/dev-oauth.d.ts +38 -0
- package/dist/auth/dev-oauth.js +156 -0
- package/dist/auth/dev-oauth.js.map +1 -0
- package/dist/auth/environment.d.ts +7 -0
- package/dist/auth/environment.js +57 -0
- package/dist/auth/environment.js.map +1 -0
- package/dist/auth/session.d.ts +45 -0
- package/dist/auth/session.js +257 -0
- package/dist/auth/session.js.map +1 -0
- package/dist/auth/user.d.ts +21 -0
- package/dist/auth/user.js +12 -0
- package/dist/auth/user.js.map +1 -0
- package/dist/db/database.d.ts +30 -0
- package/dist/db/database.js +131 -0
- package/dist/db/database.js.map +1 -0
- package/dist/db/seed.d.ts +9 -0
- package/dist/db/seed.js +63 -0
- package/dist/db/seed.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/launchpad/dev.d.ts +14 -0
- package/dist/launchpad/dev.js +48 -0
- package/dist/launchpad/dev.js.map +1 -0
- package/dist/launchpad/proxy.d.ts +30 -0
- package/dist/launchpad/proxy.js +98 -0
- package/dist/launchpad/proxy.js.map +1 -0
- package/dist/launchpad/server.d.ts +77 -0
- package/dist/launchpad/server.js +177 -0
- package/dist/launchpad/server.js.map +1 -0
- package/dist/mcp/server.d.ts +22 -0
- package/dist/mcp/server.js +222 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/odata/access.d.ts +31 -0
- package/dist/odata/access.js +142 -0
- package/dist/odata/access.js.map +1 -0
- package/dist/odata/batch.d.ts +36 -0
- package/dist/odata/batch.js +147 -0
- package/dist/odata/batch.js.map +1 -0
- package/dist/odata/csrf.d.ts +13 -0
- package/dist/odata/csrf.js +27 -0
- package/dist/odata/csrf.js.map +1 -0
- package/dist/odata/custom.d.ts +90 -0
- package/dist/odata/custom.js +373 -0
- package/dist/odata/custom.js.map +1 -0
- package/dist/odata/draft.d.ts +78 -0
- package/dist/odata/draft.js +590 -0
- package/dist/odata/draft.js.map +1 -0
- package/dist/odata/errors.d.ts +27 -0
- package/dist/odata/errors.js +41 -0
- package/dist/odata/errors.js.map +1 -0
- package/dist/odata/handler.d.ts +90 -0
- package/dist/odata/handler.js +312 -0
- package/dist/odata/handler.js.map +1 -0
- package/dist/odata/json.d.ts +23 -0
- package/dist/odata/json.js +85 -0
- package/dist/odata/json.js.map +1 -0
- package/dist/odata/read.d.ts +90 -0
- package/dist/odata/read.js +686 -0
- package/dist/odata/read.js.map +1 -0
- package/dist/odata/service.d.ts +45 -0
- package/dist/odata/service.js +145 -0
- package/dist/odata/service.js.map +1 -0
- package/dist/odata/uri/ast.d.ts +103 -0
- package/dist/odata/uri/ast.js +3 -0
- package/dist/odata/uri/ast.js.map +1 -0
- package/dist/odata/uri/parser.d.ts +26 -0
- package/dist/odata/uri/parser.js +697 -0
- package/dist/odata/uri/parser.js.map +1 -0
- package/dist/odata/write.d.ts +127 -0
- package/dist/odata/write.js +799 -0
- package/dist/odata/write.js.map +1 -0
- package/dist/platform.d.ts +14 -0
- package/dist/platform.js +66 -0
- package/dist/platform.js.map +1 -0
- package/dist/rap/bo.d.ts +76 -0
- package/dist/rap/bo.js +184 -0
- package/dist/rap/bo.js.map +1 -0
- package/dist/rap/kernel.d.ts +7 -0
- package/dist/rap/kernel.js +287 -0
- package/dist/rap/kernel.js.map +1 -0
- package/dist/rap/runtime.d.ts +84 -0
- package/dist/rap/runtime.js +128 -0
- package/dist/rap/runtime.js.map +1 -0
- package/dist/rap/transaction.d.ts +227 -0
- package/dist/rap/transaction.js +1385 -0
- package/dist/rap/transaction.js.map +1 -0
- package/dist/rap/types.d.ts +74 -0
- package/dist/rap/types.js +25 -0
- package/dist/rap/types.js.map +1 -0
- package/dist/server.d.ts +34 -0
- package/dist/server.js +114 -0
- package/dist/server.js.map +1 -0
- package/dist/ui/plugin.d.ts +14 -0
- package/dist/ui/plugin.js +47 -0
- package/dist/ui/plugin.js.map +1 -0
- package/dist/ui/resources.d.ts +22 -0
- package/dist/ui/resources.js +88 -0
- package/dist/ui/resources.js.map +1 -0
- package/dist/ui/variants.d.ts +25 -0
- package/dist/ui/variants.js +68 -0
- package/dist/ui/variants.js.map +1 -0
- package/dist/values.d.ts +43 -0
- package/dist/values.js +367 -0
- package/dist/values.js.map +1 -0
- package/package.json +60 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/abap/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversions between canonical values (D16) and the data objects of @abaplint/runtime, used by
|
|
3
|
+
* the EML kernel and the handler calls. The ABAP data objects are those of the transpiled code:
|
|
4
|
+
* they are reached through the global `abap` object set by the generated `init.mjs`.
|
|
5
|
+
*/
|
|
6
|
+
import { type AbapType } from "@open-rap/model";
|
|
7
|
+
import type { CanonicalValue } from "../values.js";
|
|
8
|
+
/** A data object of @abaplint/runtime (structure, table, elementary value). */
|
|
9
|
+
export type AbapData = any;
|
|
10
|
+
/** The global ABAP runtime of the transpiled code. */
|
|
11
|
+
export declare function abapGlobal(): AbapData;
|
|
12
|
+
/** Sets an ABAP data object from a canonical value. */
|
|
13
|
+
export declare function setAbapValue(target: AbapData, t: AbapType, value: CanonicalValue | undefined): void;
|
|
14
|
+
/** Reads an ABAP data object as a canonical value. */
|
|
15
|
+
export declare function getAbapValue(source: AbapData, t: AbapType): CanonicalValue;
|
|
16
|
+
/** A component of an ABAP structure (component names are lower case). */
|
|
17
|
+
export declare function component(structure: AbapData, name: string): AbapData | undefined;
|
|
18
|
+
/** The rows of an ABAP internal table. */
|
|
19
|
+
export declare function rowsOf(table: AbapData): AbapData[];
|
|
20
|
+
/** Appends a new row (a copy of the row type) filled by `fill`. */
|
|
21
|
+
export declare function appendRow(table: AbapData, fill: (row: AbapData) => void): void;
|
|
22
|
+
/** `'01'` (if_abap_behv=>mk-on) and other flags of the derived types. */
|
|
23
|
+
export declare function isFlagOn(value: AbapData | undefined): boolean;
|
|
24
|
+
export declare function setFlag(target: AbapData | undefined, on: boolean): void;
|
|
25
|
+
/** A string, ABAP string or character data object as a JavaScript string. */
|
|
26
|
+
export declare function abapString(value: AbapData | undefined): string;
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversions between canonical values (D16) and the data objects of @abaplint/runtime, used by
|
|
3
|
+
* the EML kernel and the handler calls. The ABAP data objects are those of the transpiled code:
|
|
4
|
+
* they are reached through the global `abap` object set by the generated `init.mjs`.
|
|
5
|
+
*/
|
|
6
|
+
import { isUuid } from "@open-rap/model";
|
|
7
|
+
/** The global ABAP runtime of the transpiled code. */
|
|
8
|
+
export function abapGlobal() {
|
|
9
|
+
const abap = globalThis.abap;
|
|
10
|
+
if (abap === undefined) {
|
|
11
|
+
throw new Error("the ABAP runtime is not loaded (abap/init.mjs)");
|
|
12
|
+
}
|
|
13
|
+
return abap;
|
|
14
|
+
}
|
|
15
|
+
const DIGITS = /^\d+$/;
|
|
16
|
+
function uuidToHex(value) {
|
|
17
|
+
return value.replace(/-/g, "").toUpperCase();
|
|
18
|
+
}
|
|
19
|
+
function hexToUuid(hex) {
|
|
20
|
+
const h = hex.toLowerCase();
|
|
21
|
+
return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20, 32)}`;
|
|
22
|
+
}
|
|
23
|
+
/** ISO time stamp (canonical) → ABAP `YYYYMMDDhhmmss[.fffffff]`. */
|
|
24
|
+
function isoToAbapTimestamp(value, decimals) {
|
|
25
|
+
const m = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?Z?$/.exec(value);
|
|
26
|
+
if (m === null) {
|
|
27
|
+
throw new Error(`invalid canonical time stamp ${value}`);
|
|
28
|
+
}
|
|
29
|
+
const base = `${m[1]}${m[2]}${m[3]}${m[4]}${m[5]}${m[6]}`;
|
|
30
|
+
return decimals === 0 ? base : `${base}.${(m[7] ?? "").padEnd(decimals, "0").slice(0, decimals)}`;
|
|
31
|
+
}
|
|
32
|
+
/** ABAP time stamp digits (`20261109123456.1234567`) → canonical ISO (microseconds), null when initial. */
|
|
33
|
+
function abapTimestampToIso(text, precision) {
|
|
34
|
+
const [whole = "", fraction = ""] = text.replace(/^-/, "").split(".");
|
|
35
|
+
if (/^0*$/.test(whole) && /^0*$/.test(fraction)) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const digits = whole.padStart(14, "0");
|
|
39
|
+
const base = `${digits.slice(0, 4)}-${digits.slice(4, 6)}-${digits.slice(6, 8)}T${digits.slice(8, 10)}:${digits.slice(10, 12)}:${digits.slice(12, 14)}`;
|
|
40
|
+
return precision === 0 ? `${base}Z` : `${base}.${fraction.padEnd(6, "0").slice(0, 6)}Z`;
|
|
41
|
+
}
|
|
42
|
+
/** Sets an ABAP data object from a canonical value. */
|
|
43
|
+
export function setAbapValue(target, t, value) {
|
|
44
|
+
if (value === undefined || value === null) {
|
|
45
|
+
target.clear();
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
switch (t.kind) {
|
|
49
|
+
case "char":
|
|
50
|
+
case "sstring":
|
|
51
|
+
case "string":
|
|
52
|
+
case "cuky":
|
|
53
|
+
case "unit":
|
|
54
|
+
case "lang":
|
|
55
|
+
case "clnt":
|
|
56
|
+
target.set(String(value));
|
|
57
|
+
return;
|
|
58
|
+
case "numc":
|
|
59
|
+
target.set(String(value));
|
|
60
|
+
return;
|
|
61
|
+
case "bool":
|
|
62
|
+
target.set(value === true || value === "X" ? "X" : "");
|
|
63
|
+
return;
|
|
64
|
+
case "dec":
|
|
65
|
+
case "curr":
|
|
66
|
+
case "quan":
|
|
67
|
+
case "decfloat16":
|
|
68
|
+
case "decfloat34":
|
|
69
|
+
target.set(String(value));
|
|
70
|
+
return;
|
|
71
|
+
case "int1":
|
|
72
|
+
case "int2":
|
|
73
|
+
case "int4":
|
|
74
|
+
case "fltp":
|
|
75
|
+
target.set(Number(value));
|
|
76
|
+
return;
|
|
77
|
+
case "int8":
|
|
78
|
+
target.set(BigInt(String(value)));
|
|
79
|
+
return;
|
|
80
|
+
case "dats":
|
|
81
|
+
target.set(String(value).replace(/-/g, ""));
|
|
82
|
+
return;
|
|
83
|
+
case "tims":
|
|
84
|
+
target.set(String(value).replace(/:/g, ""));
|
|
85
|
+
return;
|
|
86
|
+
case "timestamp":
|
|
87
|
+
target.set(isoToAbapTimestamp(String(value), 0));
|
|
88
|
+
return;
|
|
89
|
+
case "timestampl":
|
|
90
|
+
target.set(isoToAbapTimestamp(String(value), 7));
|
|
91
|
+
return;
|
|
92
|
+
case "utclong":
|
|
93
|
+
target.set(String(value).replace(/Z$/, ""));
|
|
94
|
+
return;
|
|
95
|
+
case "raw":
|
|
96
|
+
target.set(isUuid(t) ? uuidToHex(String(value)) : String(value).toUpperCase());
|
|
97
|
+
return;
|
|
98
|
+
case "rawstring":
|
|
99
|
+
target.set(String(value).toUpperCase());
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/** Reads an ABAP data object as a canonical value. */
|
|
104
|
+
export function getAbapValue(source, t) {
|
|
105
|
+
switch (t.kind) {
|
|
106
|
+
case "char":
|
|
107
|
+
case "sstring":
|
|
108
|
+
case "cuky":
|
|
109
|
+
case "unit":
|
|
110
|
+
case "lang":
|
|
111
|
+
case "clnt":
|
|
112
|
+
return String(source.get()).replace(/\s+$/, "");
|
|
113
|
+
case "string":
|
|
114
|
+
return String(source.get());
|
|
115
|
+
case "numc":
|
|
116
|
+
return String(source.get());
|
|
117
|
+
case "bool":
|
|
118
|
+
return String(source.get()).trim() !== "";
|
|
119
|
+
case "dec":
|
|
120
|
+
case "curr":
|
|
121
|
+
case "quan":
|
|
122
|
+
return typeof source.toFixed === "function" ? source.toFixed(t.decimals ?? 0) : String(source.get());
|
|
123
|
+
case "decfloat16":
|
|
124
|
+
case "decfloat34":
|
|
125
|
+
return typeof source.toText === "function" ? source.toText() : String(source.get());
|
|
126
|
+
case "int1":
|
|
127
|
+
case "int2":
|
|
128
|
+
case "int4":
|
|
129
|
+
case "fltp":
|
|
130
|
+
return Number(source.get());
|
|
131
|
+
case "int8":
|
|
132
|
+
return String(source.get());
|
|
133
|
+
case "dats": {
|
|
134
|
+
const d = String(source.get());
|
|
135
|
+
return DIGITS.test(d) && !/^0+$/.test(d) ? `${d.slice(0, 4)}-${d.slice(4, 6)}-${d.slice(6, 8)}` : null;
|
|
136
|
+
}
|
|
137
|
+
case "tims": {
|
|
138
|
+
const d = String(source.get()).padEnd(6, "0");
|
|
139
|
+
return `${d.slice(0, 2)}:${d.slice(2, 4)}:${d.slice(4, 6)}`;
|
|
140
|
+
}
|
|
141
|
+
case "timestamp":
|
|
142
|
+
return abapTimestampToIso(typeof source.toFixed === "function" ? source.toFixed(0) : String(source.get()), 0);
|
|
143
|
+
case "timestampl":
|
|
144
|
+
return abapTimestampToIso(typeof source.toFixed === "function" ? source.toFixed(7) : String(source.get()), 6);
|
|
145
|
+
case "utclong": {
|
|
146
|
+
const text = String(source.get());
|
|
147
|
+
return text === "" ? null : `${text.slice(0, 26)}Z`;
|
|
148
|
+
}
|
|
149
|
+
case "raw": {
|
|
150
|
+
const hex = String(source.get()).toUpperCase();
|
|
151
|
+
if (/^0*$/.test(hex)) {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
return isUuid(t) ? hexToUuid(hex) : hex;
|
|
155
|
+
}
|
|
156
|
+
case "rawstring": {
|
|
157
|
+
const hex = String(source.get()).toUpperCase();
|
|
158
|
+
return hex === "" ? null : hex;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/** A component of an ABAP structure (component names are lower case). */
|
|
163
|
+
export function component(structure, name) {
|
|
164
|
+
return structure.get()[name.toLowerCase()];
|
|
165
|
+
}
|
|
166
|
+
/** The rows of an ABAP internal table. */
|
|
167
|
+
export function rowsOf(table) {
|
|
168
|
+
return table === undefined ? [] : table.array();
|
|
169
|
+
}
|
|
170
|
+
/** Appends a new row (a copy of the row type) filled by `fill`. */
|
|
171
|
+
export function appendRow(table, fill) {
|
|
172
|
+
const row = table.getRowType().clone();
|
|
173
|
+
fill(row);
|
|
174
|
+
table.append(row);
|
|
175
|
+
}
|
|
176
|
+
/** `'01'` (if_abap_behv=>mk-on) and other flags of the derived types. */
|
|
177
|
+
export function isFlagOn(value) {
|
|
178
|
+
if (value === undefined) {
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
const v = String(value.get()).trim();
|
|
182
|
+
return v !== "" && !/^0+$/.test(v);
|
|
183
|
+
}
|
|
184
|
+
export function setFlag(target, on) {
|
|
185
|
+
target?.set(on ? "01" : "00");
|
|
186
|
+
}
|
|
187
|
+
/** A string, ABAP string or character data object as a JavaScript string. */
|
|
188
|
+
export function abapString(value) {
|
|
189
|
+
if (value === undefined || value === null) {
|
|
190
|
+
return "";
|
|
191
|
+
}
|
|
192
|
+
if (typeof value === "string") {
|
|
193
|
+
return value;
|
|
194
|
+
}
|
|
195
|
+
return String(value.get()).replace(/\s+$/, "");
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=convert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/abap/convert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The HTTP client of the behavior pools (decision D31): the kernel side of the clean-room
|
|
3
|
+
* cl_http_destination_provider / cl_web_http_client_manager / if_web_http_client.
|
|
4
|
+
*
|
|
5
|
+
* Destinations come from the environment of the application, one set of variables per
|
|
6
|
+
* destination: `DESTINATION_<NAME>_URL` (required), `DESTINATION_<NAME>_USER` and `_PASSWORD`
|
|
7
|
+
* (basic authentication), `DESTINATION_<NAME>_TOKEN` (bearer), `DESTINATION_<NAME>_HEADERS` (a
|
|
8
|
+
* JSON object of further headers, an API key for example). `<NAME>` is the name of
|
|
9
|
+
* create_by_cloud_destination, or the communication scenario of create_by_comm_arrangement
|
|
10
|
+
* (`<SCENARIO>_<SERVICE_ID>` first when a service ID is given), in upper case, other characters
|
|
11
|
+
* than letters and digits as `_`. The credentials stay in the kernel: the ABAP code only sees the
|
|
12
|
+
* URL.
|
|
13
|
+
*/
|
|
14
|
+
import { destinationKeys } from "@open-rap/model";
|
|
15
|
+
import { type AbapData } from "./convert.js";
|
|
16
|
+
export { destinationKeys };
|
|
17
|
+
export interface Destination {
|
|
18
|
+
url: string;
|
|
19
|
+
headers: Record<string, string>;
|
|
20
|
+
}
|
|
21
|
+
export declare function resolveDestination(name: string, env?: NodeJS.ProcessEnv): Destination | undefined;
|
|
22
|
+
/** Raises an ABAP exception of the framework with a text (`zrap_text`) and further attributes. */
|
|
23
|
+
export declare function raise(name: string, text: string, extra?: Record<string, AbapData>): Promise<never>;
|
|
24
|
+
/** URL of a request: the destination, then the path (absolute or relative to it), then the query. */
|
|
25
|
+
export declare function requestUrl(base: string, path: string, query: string): string;
|
|
26
|
+
export interface Exchange {
|
|
27
|
+
status: number;
|
|
28
|
+
reason: string;
|
|
29
|
+
headers: Headers;
|
|
30
|
+
body: Buffer;
|
|
31
|
+
}
|
|
32
|
+
/** One HTTP request; a failure of the connection is an Error with the cause. */
|
|
33
|
+
export declare function exchange(method: string, url: string, headers: Record<string, string>, body?: string | Buffer, timeoutSeconds?: number): Promise<Exchange>;
|
|
34
|
+
export declare function installHttp(kernel: AbapData): void;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The HTTP client of the behavior pools (decision D31): the kernel side of the clean-room
|
|
3
|
+
* cl_http_destination_provider / cl_web_http_client_manager / if_web_http_client.
|
|
4
|
+
*
|
|
5
|
+
* Destinations come from the environment of the application, one set of variables per
|
|
6
|
+
* destination: `DESTINATION_<NAME>_URL` (required), `DESTINATION_<NAME>_USER` and `_PASSWORD`
|
|
7
|
+
* (basic authentication), `DESTINATION_<NAME>_TOKEN` (bearer), `DESTINATION_<NAME>_HEADERS` (a
|
|
8
|
+
* JSON object of further headers, an API key for example). `<NAME>` is the name of
|
|
9
|
+
* create_by_cloud_destination, or the communication scenario of create_by_comm_arrangement
|
|
10
|
+
* (`<SCENARIO>_<SERVICE_ID>` first when a service ID is given), in upper case, other characters
|
|
11
|
+
* than letters and digits as `_`. The credentials stay in the kernel: the ABAP code only sees the
|
|
12
|
+
* URL.
|
|
13
|
+
*/
|
|
14
|
+
import { destinationKeys } from "@open-rap/model";
|
|
15
|
+
import { abapGlobal, abapString, appendRow, component, rowsOf } from "./convert.js";
|
|
16
|
+
export { destinationKeys };
|
|
17
|
+
export function resolveDestination(name, env = process.env) {
|
|
18
|
+
for (const key of destinationKeys(name)) {
|
|
19
|
+
const url = env[`DESTINATION_${key}_URL`];
|
|
20
|
+
if (url === undefined || url === "") {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const headers = {};
|
|
24
|
+
const user = env[`DESTINATION_${key}_USER`];
|
|
25
|
+
if (user !== undefined && user !== "") {
|
|
26
|
+
headers["authorization"] = `Basic ${Buffer.from(`${user}:${env[`DESTINATION_${key}_PASSWORD`] ?? ""}`).toString("base64")}`;
|
|
27
|
+
}
|
|
28
|
+
const token = env[`DESTINATION_${key}_TOKEN`];
|
|
29
|
+
if (token !== undefined && token !== "") {
|
|
30
|
+
headers["authorization"] = `Bearer ${token}`;
|
|
31
|
+
}
|
|
32
|
+
const extra = env[`DESTINATION_${key}_HEADERS`];
|
|
33
|
+
if (extra !== undefined && extra !== "") {
|
|
34
|
+
for (const [header, value] of Object.entries(JSON.parse(extra))) {
|
|
35
|
+
headers[header.toLowerCase()] = String(value);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return { url, headers };
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
/** Raises an ABAP exception of the framework with a text (`zrap_text`) and further attributes. */
|
|
43
|
+
export async function raise(name, text, extra = {}) {
|
|
44
|
+
const abap = abapGlobal();
|
|
45
|
+
const Class = abap.Classes[name.toUpperCase()];
|
|
46
|
+
if (Class === undefined) {
|
|
47
|
+
throw new Error(`${name}: ${text}`);
|
|
48
|
+
}
|
|
49
|
+
throw await new Class().constructor_({ zrap_text: new abap.types.String().set(text), ...extra });
|
|
50
|
+
}
|
|
51
|
+
/** URL of a request: the destination, then the path (absolute or relative to it), then the query. */
|
|
52
|
+
export function requestUrl(base, path, query) {
|
|
53
|
+
let url = /^[a-z][a-z0-9+.-]*:\/\//i.test(path) ? path : `${base.replace(/\/+$/, "")}${path === "" ? "" : path.startsWith("/") ? path : `/${path}`}`;
|
|
54
|
+
const q = query.replace(/^\?/, "");
|
|
55
|
+
if (q !== "") {
|
|
56
|
+
url += `${url.includes("?") ? "&" : "?"}${q}`;
|
|
57
|
+
}
|
|
58
|
+
return url;
|
|
59
|
+
}
|
|
60
|
+
/** One HTTP request; a failure of the connection is an Error with the cause. */
|
|
61
|
+
export async function exchange(method, url, headers, body, timeoutSeconds = 0) {
|
|
62
|
+
const init = { method, headers, redirect: "follow", signal: AbortSignal.timeout((timeoutSeconds > 0 ? timeoutSeconds : 60) * 1000) };
|
|
63
|
+
if (body !== undefined && method !== "GET" && method !== "HEAD") {
|
|
64
|
+
init.body = typeof body === "string" ? body : new Uint8Array(body);
|
|
65
|
+
}
|
|
66
|
+
const response = await fetch(url, init);
|
|
67
|
+
return { status: response.status, reason: response.statusText, headers: response.headers, body: Buffer.from(await response.arrayBuffer()) };
|
|
68
|
+
}
|
|
69
|
+
function headerTable(table) {
|
|
70
|
+
const result = {};
|
|
71
|
+
for (const row of rowsOf(table)) {
|
|
72
|
+
const name = abapString(component(row, "name")).toLowerCase();
|
|
73
|
+
if (name !== "") {
|
|
74
|
+
result[name] = abapString(component(row, "value"));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
export function installHttp(kernel) {
|
|
80
|
+
const abap = abapGlobal();
|
|
81
|
+
kernel.destination = async (input) => {
|
|
82
|
+
const name = abapString(input?.["name"]);
|
|
83
|
+
const destination = resolveDestination(name);
|
|
84
|
+
if (destination === undefined) {
|
|
85
|
+
return raise("CX_HTTP_DEST_PROVIDER_ERROR", `the destination ${name} is not configured: set ${destinationKeys(name).map((k) => `DESTINATION_${k}_URL`).join(" or ")}`);
|
|
86
|
+
}
|
|
87
|
+
return new abap.types.String().set(destination.url);
|
|
88
|
+
};
|
|
89
|
+
kernel.base64_encode = async (input) => new abap.types.String().set(Buffer.from(abapString(input?.["text"]), "utf8").toString("base64"));
|
|
90
|
+
kernel.http_execute = async (input) => {
|
|
91
|
+
const method = (abapString(input?.["method"]) || "GET").toUpperCase();
|
|
92
|
+
const url = requestUrl(abapString(input?.["base"]), abapString(input?.["path"]), abapString(input?.["query"]));
|
|
93
|
+
const own = headerTable(input?.["headers"]);
|
|
94
|
+
const name = abapString(input?.["destination"]);
|
|
95
|
+
const destination = name === "" ? undefined : resolveDestination(name);
|
|
96
|
+
const headers = { ...(destination?.headers ?? {}), ...own };
|
|
97
|
+
const binary = abapString(input?.["binary"]);
|
|
98
|
+
const text = String(input?.["body"]?.get?.() ?? "");
|
|
99
|
+
const form = rowsOf(input?.["form"]);
|
|
100
|
+
let body;
|
|
101
|
+
if (binary !== "") {
|
|
102
|
+
body = Buffer.from(binary, "hex");
|
|
103
|
+
}
|
|
104
|
+
else if (text !== "") {
|
|
105
|
+
body = text;
|
|
106
|
+
}
|
|
107
|
+
else if (form.length > 0) {
|
|
108
|
+
body = new URLSearchParams(form.map((row) => [abapString(component(row, "name")), abapString(component(row, "value"))])).toString();
|
|
109
|
+
headers["content-type"] ??= "application/x-www-form-urlencoded";
|
|
110
|
+
}
|
|
111
|
+
let response;
|
|
112
|
+
try {
|
|
113
|
+
response = await exchange(method, url, headers, body, Number(input?.["timeout"]?.get?.() ?? 0));
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
const cause = error.cause?.message;
|
|
117
|
+
return raise("CX_WEB_HTTP_CLIENT_ERROR", `${method} ${url}: ${cause ?? error.message}`);
|
|
118
|
+
}
|
|
119
|
+
input?.["status"]?.set(response.status);
|
|
120
|
+
input?.["reason"]?.set(response.reason);
|
|
121
|
+
const responseHeaders = input?.["response_headers"];
|
|
122
|
+
responseHeaders?.clear();
|
|
123
|
+
response.headers.forEach((value, header) => {
|
|
124
|
+
appendRow(responseHeaders, (row) => {
|
|
125
|
+
component(row, "name")?.set(header.toLowerCase());
|
|
126
|
+
component(row, "value")?.set(value);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
input?.["response_body"]?.set(response.body.toString("utf8"));
|
|
130
|
+
input?.["response_binary"]?.set(response.body.toString("hex").toUpperCase());
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/abap/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* E-mails (cl_bcs_mail_message, decision D41): send( ) composes the mail (MIME, attachments) and
|
|
3
|
+
* keeps it in the table rapt_mail of the LUW (state WAITING); once the LUW is committed, the mail
|
|
4
|
+
* is sent through the SMTP server of MAIL_SMTP_URL (SENT, or ERROR with the reason). Without
|
|
5
|
+
* MAIL_SMTP_URL the mail stays in rapt_mail (STORED), to be read in development. A rolled back
|
|
6
|
+
* LUW sends nothing.
|
|
7
|
+
*/
|
|
8
|
+
import type { RapRuntime } from "../rap/runtime.js";
|
|
9
|
+
import { type AbapData } from "./convert.js";
|
|
10
|
+
export declare function installMail(kernel: AbapData, runtime: RapRuntime): void;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* E-mails (cl_bcs_mail_message, decision D41): send( ) composes the mail (MIME, attachments) and
|
|
3
|
+
* keeps it in the table rapt_mail of the LUW (state WAITING); once the LUW is committed, the mail
|
|
4
|
+
* is sent through the SMTP server of MAIL_SMTP_URL (SENT, or ERROR with the reason). Without
|
|
5
|
+
* MAIL_SMTP_URL the mail stays in rapt_mail (STORED), to be read in development. A rolled back
|
|
6
|
+
* LUW sends nothing.
|
|
7
|
+
*/
|
|
8
|
+
import { randomUUID } from "node:crypto";
|
|
9
|
+
import { sql } from "kysely";
|
|
10
|
+
import { createTransport } from "nodemailer";
|
|
11
|
+
import { abapGlobal, abapString, rowsOf } from "./convert.js";
|
|
12
|
+
import { raise } from "./http.js";
|
|
13
|
+
const ADDRESS = /^[^\s@<>]+@[^\s@<>]+$/;
|
|
14
|
+
export function installMail(kernel, runtime) {
|
|
15
|
+
const abap = abapGlobal();
|
|
16
|
+
kernel.mail_send = async (input) => {
|
|
17
|
+
const context = runtime.context();
|
|
18
|
+
const env = process.env;
|
|
19
|
+
const sender = abapString(input?.["sender"]) || env["MAIL_FROM"] || "";
|
|
20
|
+
const recipients = rowsOf(input?.["recipients"]).map((row) => ({ address: abapString(row.get()["address"]), kind: abapString(row.get()["kind"]) || "T" }));
|
|
21
|
+
if (recipients.length === 0) {
|
|
22
|
+
return raise("cx_bcs_mail", "the mail has no recipient (add_recipient)");
|
|
23
|
+
}
|
|
24
|
+
for (const address of [sender, ...recipients.map((r) => r.address)]) {
|
|
25
|
+
if (!ADDRESS.test(address)) {
|
|
26
|
+
return raise("cx_bcs_mail", address === "" ? "the mail has no sender: set_sender, or MAIL_FROM" : `${address} is not a mail address`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const parts = rowsOf(input?.["parts"]).map((row) => {
|
|
30
|
+
const c = row.get();
|
|
31
|
+
const binary = abapString(c["is_binary"]) !== "";
|
|
32
|
+
return {
|
|
33
|
+
main: abapString(c["main"]) !== "",
|
|
34
|
+
contentType: abapString(c["content_type"]) || "text/plain",
|
|
35
|
+
filename: abapString(c["filename"]),
|
|
36
|
+
content: binary ? Buffer.from(String(c["binary"].get()), "hex") : String(c["text"].get()),
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
const main = parts.find((p) => p.main);
|
|
40
|
+
const subject = abapString(input?.["subject"]);
|
|
41
|
+
const replyTo = abapString(input?.["reply_to"]);
|
|
42
|
+
const to = (kind) => recipients.filter((r) => r.kind === kind).map((r) => r.address);
|
|
43
|
+
// the MIME message, composed now (as it will be sent)
|
|
44
|
+
const composed = await createTransport({ streamTransport: true, buffer: true }).sendMail({
|
|
45
|
+
from: sender,
|
|
46
|
+
to: to("T"),
|
|
47
|
+
cc: to("C"),
|
|
48
|
+
bcc: to("B"),
|
|
49
|
+
subject,
|
|
50
|
+
...(replyTo === "" ? {} : { replyTo }),
|
|
51
|
+
...(main === undefined ? {} : /html/i.test(main.contentType) ? { html: main.content } : { text: main.content }),
|
|
52
|
+
attachments: parts.filter((p) => !p.main).map((p) => ({ content: p.content, contentType: p.contentType, ...(p.filename === "" ? {} : { filename: p.filename }) })),
|
|
53
|
+
});
|
|
54
|
+
const raw = Buffer.isBuffer(composed.message) ? composed.message : Buffer.from(String(composed.message));
|
|
55
|
+
const id = randomUUID().replace(/-/g, "").toUpperCase();
|
|
56
|
+
await sql `INSERT INTO rapt_mail (mail_id, sender, recipients, subject, raw_message, state, mail_user, created_at)
|
|
57
|
+
VALUES (${id}, ${sender}, ${recipients.map((r) => r.address).join(", ")}, ${subject}, ${raw.toString("utf8")}, 'WAITING', ${context.user.abapName}, now())`.execute(context.tx.db);
|
|
58
|
+
context.afterCommit.push(async (luw) => {
|
|
59
|
+
const url = env["MAIL_SMTP_URL"];
|
|
60
|
+
let state = "STORED";
|
|
61
|
+
let error = "";
|
|
62
|
+
if (url !== undefined && url !== "") {
|
|
63
|
+
try {
|
|
64
|
+
await createTransport(url).sendMail({ envelope: { from: sender, to: recipients.map((r) => r.address) }, raw });
|
|
65
|
+
state = "SENT";
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
state = "ERROR";
|
|
69
|
+
error = e.message;
|
|
70
|
+
process.stderr.write(`open-rap-runtime: the mail "${subject}" was not sent: ${error}\n`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
process.stdout.write(`open-rap-runtime: mail "${subject}" to ${recipients.map((r) => r.address).join(", ")} kept in rapt_mail (MAIL_SMTP_URL is not set)\n`);
|
|
75
|
+
}
|
|
76
|
+
await runtime.transaction(luw.db, luw.user, luw.language, async (tx) => {
|
|
77
|
+
await sql `UPDATE rapt_mail SET state = ${state}, error_text = ${error}, sent_at = now() WHERE mail_id = ${id}`.execute(tx.db);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
return new abap.types.String().set(id);
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=mail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/abap/mail.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The OData client proxy of the behavior pools (decision D31): the kernel side of the clean-room
|
|
3
|
+
* /iwbep/cl_cp_factory_remote and cl_web_odata_client_factory (service consumption model, SCM
|
|
4
|
+
* and SCM2), for OData V2 and V4.
|
|
5
|
+
*
|
|
6
|
+
* The proxy reads the $metadata of the remote service once: entity sets, entity types, keys and
|
|
7
|
+
* property types. The names of the ABAP code (internal names of a consumption model class such
|
|
8
|
+
* as `TRAVEL_ID`, `gcs_entity_set-travel`, or the element names of an abstract entity) are matched
|
|
9
|
+
* with the EDM names case-insensitively, underscores ignored (`TRAVEL_ID` ↔ `TravelID`). The
|
|
10
|
+
* values are converted by EDM type and ABAP type, decimals as exact strings
|
|
11
|
+
* (IEEE754Compatible for V4). Modifying requests fetch a CSRF token first, as SAP Gateway needs.
|
|
12
|
+
*/
|
|
13
|
+
import { type AbapData } from "./convert.js";
|
|
14
|
+
interface EdmProperty {
|
|
15
|
+
name: string;
|
|
16
|
+
type: string;
|
|
17
|
+
nullable: boolean;
|
|
18
|
+
scale?: number;
|
|
19
|
+
/** Digits of the fractional seconds of a time stamp (0 when not given, OData V4). */
|
|
20
|
+
precision?: number;
|
|
21
|
+
}
|
|
22
|
+
interface EdmEntityType {
|
|
23
|
+
name: string;
|
|
24
|
+
keys: string[];
|
|
25
|
+
properties: EdmProperty[];
|
|
26
|
+
}
|
|
27
|
+
interface Metadata {
|
|
28
|
+
sets: Map<string, EdmEntityType>;
|
|
29
|
+
}
|
|
30
|
+
/** Entity sets and entity types of an EDMX document (V2 or V4). */
|
|
31
|
+
export declare function parseMetadata(xml: string): Metadata;
|
|
32
|
+
export declare function installODataClient(kernel: AbapData): void;
|
|
33
|
+
export {};
|