@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,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CDS simple types and CDS enumerated types (D55): the TDL sources `name.drty.acds`.
|
|
3
|
+
*
|
|
4
|
+
* @EndUserText.label: 'Travel name'
|
|
5
|
+
* define type zrt_name : abap.char(40);
|
|
6
|
+
*
|
|
7
|
+
* @EndUserText.label: 'Status'
|
|
8
|
+
* define type zrt_status : abap.char(1) enum {
|
|
9
|
+
* @EndUserText.label: 'Open'
|
|
10
|
+
* OPEN = initial;
|
|
11
|
+
* @EndUserText.label: 'Accepted'
|
|
12
|
+
* ACCEPTED = 'A';
|
|
13
|
+
* }
|
|
14
|
+
*
|
|
15
|
+
* define type zrt_status_stack : zrt_status; // a stacked type
|
|
16
|
+
*
|
|
17
|
+
* abaplint knows the object type (DRTY) but does not parse it: the statement is read here.
|
|
18
|
+
*/
|
|
19
|
+
/** Comments become blanks so that the positions stay those of the source. */
|
|
20
|
+
function blankComments(source) {
|
|
21
|
+
let result = "";
|
|
22
|
+
let i = 0;
|
|
23
|
+
let quote;
|
|
24
|
+
while (i < source.length) {
|
|
25
|
+
const c = source[i] ?? "";
|
|
26
|
+
const next = source[i + 1] ?? "";
|
|
27
|
+
if (quote !== undefined) {
|
|
28
|
+
result += c;
|
|
29
|
+
if (c === quote) {
|
|
30
|
+
quote = undefined;
|
|
31
|
+
}
|
|
32
|
+
i++;
|
|
33
|
+
}
|
|
34
|
+
else if (c === "'") {
|
|
35
|
+
quote = c;
|
|
36
|
+
result += c;
|
|
37
|
+
i++;
|
|
38
|
+
}
|
|
39
|
+
else if ((c === "/" && next === "/") || (c === "-" && next === "-")) {
|
|
40
|
+
while (i < source.length && source[i] !== "\n") {
|
|
41
|
+
result += " ";
|
|
42
|
+
i++;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else if (c === "/" && next === "*") {
|
|
46
|
+
while (i < source.length && !(source[i] === "*" && source[i + 1] === "/")) {
|
|
47
|
+
result += source[i] === "\n" ? "\n" : " ";
|
|
48
|
+
i++;
|
|
49
|
+
}
|
|
50
|
+
result += " ";
|
|
51
|
+
i += 2;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
result += c;
|
|
55
|
+
i++;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
function position(text, offset) {
|
|
61
|
+
const before = text.slice(0, offset);
|
|
62
|
+
const line = before.split("\n").length;
|
|
63
|
+
return { line, column: offset - before.lastIndexOf("\n") };
|
|
64
|
+
}
|
|
65
|
+
/** The `@EndUserText.label` among annotations (`@EndUserText.label: 'x'`). */
|
|
66
|
+
function labelOf(annotations) {
|
|
67
|
+
const match = /@EndUserText\s*\.\s*label\s*:\s*'((?:[^']|'')*)'/i.exec(annotations);
|
|
68
|
+
return match === null ? undefined : (match[1] ?? "").replace(/''/g, "'");
|
|
69
|
+
}
|
|
70
|
+
export function parseCdsTypeSource(source) {
|
|
71
|
+
const issues = [];
|
|
72
|
+
const text = blankComments(source);
|
|
73
|
+
const define = /\bdefine\s+type\s+([A-Za-z0-9_/]+)\s*:\s*([A-Za-z0-9_./]+(?:\s*\(\s*\d+\s*(?:,\s*\d+\s*)?\))?)\s*(enum\b)?/i.exec(text);
|
|
74
|
+
if (define === null) {
|
|
75
|
+
const at = position(text, Math.max(0, text.search(/\S/)));
|
|
76
|
+
issues.push({ severity: "error", code: "TYPE001", message: "expected define type <name> : <type> [enum { … }]", ...at });
|
|
77
|
+
return { issues };
|
|
78
|
+
}
|
|
79
|
+
const at = position(text, define.index + define[0].indexOf(define[1] ?? ""));
|
|
80
|
+
const type = { name: define[1] ?? "", base: (define[2] ?? "").replace(/\s+/g, ""), ...at };
|
|
81
|
+
const label = labelOf(text.slice(0, define.index));
|
|
82
|
+
if (label !== undefined) {
|
|
83
|
+
type.label = label;
|
|
84
|
+
}
|
|
85
|
+
const rest = text.slice(define.index + define[0].length);
|
|
86
|
+
if (define[3] === undefined) {
|
|
87
|
+
if (!/^\s*;?\s*$/.test(rest)) {
|
|
88
|
+
const offset = define.index + define[0].length + (rest.search(/\S/) >= 0 ? rest.search(/\S/) : 0);
|
|
89
|
+
issues.push({ severity: "error", code: "TYPE001", message: "unexpected text after the type (enum { … } for an enumerated type)", ...position(text, offset) });
|
|
90
|
+
}
|
|
91
|
+
return { type, issues };
|
|
92
|
+
}
|
|
93
|
+
// enum { [annotations] CONST = value | initial; … }
|
|
94
|
+
const bodyStart = define.index + define[0].length + rest.indexOf("{");
|
|
95
|
+
const bodyEnd = text.lastIndexOf("}");
|
|
96
|
+
if (rest.indexOf("{") < 0 || bodyEnd < bodyStart) {
|
|
97
|
+
issues.push({ severity: "error", code: "TYPE001", message: "an enumerated type lists its constants in { }", ...position(text, define.index + define[0].length) });
|
|
98
|
+
return { type, issues };
|
|
99
|
+
}
|
|
100
|
+
type.enum = [];
|
|
101
|
+
const body = text.slice(bodyStart + 1, bodyEnd);
|
|
102
|
+
const constant = /((?:@[^;=]*?:\s*(?:'(?:[^']|'')*'|#?[A-Za-z0-9_.]+)\s*)*)([A-Za-z_][A-Za-z0-9_]*)\s*=\s*('(?:[^']|'')*'|-?\d+|initial)\s*;/giy;
|
|
103
|
+
let offset = 0;
|
|
104
|
+
while (offset < body.length) {
|
|
105
|
+
const blank = /\s*/y;
|
|
106
|
+
blank.lastIndex = offset;
|
|
107
|
+
blank.exec(body);
|
|
108
|
+
offset = blank.lastIndex;
|
|
109
|
+
if (offset >= body.length) {
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
constant.lastIndex = offset;
|
|
113
|
+
const match = constant.exec(body);
|
|
114
|
+
if (match === null) {
|
|
115
|
+
issues.push({ severity: "error", code: "TYPE001", message: "expected <CONSTANT> = <value> | initial;", ...position(text, bodyStart + 1 + offset) });
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
const literal = match[3] ?? "";
|
|
119
|
+
const where = position(text, bodyStart + 1 + match.index + (match[1] ?? "").length);
|
|
120
|
+
const value = /^initial$/i.test(literal) ? "initial" : literal.startsWith("'") ? literal.slice(1, -1).replace(/''/g, "'") : Number(literal);
|
|
121
|
+
const entry = { name: match[2] ?? "", value, literal, ...where };
|
|
122
|
+
const constantLabel = labelOf(match[1] ?? "");
|
|
123
|
+
if (constantLabel !== undefined) {
|
|
124
|
+
entry.label = constantLabel;
|
|
125
|
+
}
|
|
126
|
+
type.enum.push(entry);
|
|
127
|
+
offset = constant.lastIndex;
|
|
128
|
+
}
|
|
129
|
+
return { type, issues };
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=cds-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cds-types.js","sourceRoot":"","sources":["../../src/ddic/cds-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tables and structures written as source code (`name.tabl.astabl`), with the syntax of the
|
|
3
|
+
* ABAP Development Tools editor:
|
|
4
|
+
*
|
|
5
|
+
* @EndUserText.label : 'Travel'
|
|
6
|
+
* @AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
|
|
7
|
+
* @AbapCatalog.tableCategory : #TRANSPARENT
|
|
8
|
+
* @AbapCatalog.deliveryClass : #A
|
|
9
|
+
* @AbapCatalog.dataMaintenance : #RESTRICTED
|
|
10
|
+
* define table zrt_travel {
|
|
11
|
+
* key client : abap.clnt not null;
|
|
12
|
+
* key travel_uuid : sysuuid_x16 not null;
|
|
13
|
+
* description : abap.char(256);
|
|
14
|
+
* @Semantics.amount.currencyCode : 'zrt_travel.currency_code'
|
|
15
|
+
* total_price : abap.curr(16,2);
|
|
16
|
+
* currency_code : abap.cuky;
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* abapGit only knows the XML serialization of tables (DD02V, DD09L, DD03P): the source is turned
|
|
20
|
+
* into that XML, both when the project is read and by `rapt abapgit`, which writes it next to
|
|
21
|
+
* the source so the repository can be pulled into an SAP system.
|
|
22
|
+
*/
|
|
23
|
+
export interface TableSourceIssue {
|
|
24
|
+
severity: "error" | "warning";
|
|
25
|
+
message: string;
|
|
26
|
+
line: number;
|
|
27
|
+
column: number;
|
|
28
|
+
}
|
|
29
|
+
export interface TableSourceField {
|
|
30
|
+
name: string;
|
|
31
|
+
key: boolean;
|
|
32
|
+
notNull: boolean;
|
|
33
|
+
/** Data element, upper case. */
|
|
34
|
+
dataElement?: string;
|
|
35
|
+
/** Built-in dictionary type: CHAR, NUMC, CURR… */
|
|
36
|
+
builtin?: {
|
|
37
|
+
datatype: string;
|
|
38
|
+
length: number;
|
|
39
|
+
decimals?: number;
|
|
40
|
+
};
|
|
41
|
+
/** `include zstruct [with suffix _x]`. */
|
|
42
|
+
include?: {
|
|
43
|
+
name: string;
|
|
44
|
+
suffix?: string;
|
|
45
|
+
};
|
|
46
|
+
/** Currency or unit reference (`@Semantics.amount.currencyCode : 'table.field'`). */
|
|
47
|
+
reference?: {
|
|
48
|
+
table: string;
|
|
49
|
+
field: string;
|
|
50
|
+
};
|
|
51
|
+
line: number;
|
|
52
|
+
}
|
|
53
|
+
export interface TableSource {
|
|
54
|
+
kind: "table" | "structure";
|
|
55
|
+
name: string;
|
|
56
|
+
description?: string;
|
|
57
|
+
/** Annotations of the table, keys in lower case: `abapcatalog.deliveryclass` → `#A`. */
|
|
58
|
+
annotations: Map<string, string>;
|
|
59
|
+
fields: TableSourceField[];
|
|
60
|
+
}
|
|
61
|
+
export declare function parseTableSource(source: string): {
|
|
62
|
+
table?: TableSource;
|
|
63
|
+
issues: TableSourceIssue[];
|
|
64
|
+
};
|
|
65
|
+
/** Wraps `asx:values` content in the abapGit envelope. */
|
|
66
|
+
export declare function abapGitXml(serializer: string, values: string): string;
|
|
67
|
+
/** `<TAG>` blocks with their children, skipping undefined values. */
|
|
68
|
+
export declare function xmlElement(tag: string, children: [string, string | undefined][], indent: number): string;
|
|
69
|
+
/** The abapGit serialization of a table or structure source. */
|
|
70
|
+
export declare function tableSourceToXml(table: TableSource, language?: string): string;
|