@open-rap/compiler 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +21 -2
  3. package/dist/agent/server.d.ts +35 -0
  4. package/dist/agent/server.js +408 -0
  5. package/dist/agent/server.js.map +1 -0
  6. package/dist/authoring/abapgit.d.ts +38 -0
  7. package/dist/authoring/abapgit.js +242 -0
  8. package/dist/authoring/abapgit.js.map +1 -0
  9. package/dist/authoring/catalog.d.ts +48 -0
  10. package/dist/authoring/catalog.js +117 -0
  11. package/dist/authoring/catalog.js.map +1 -0
  12. package/dist/authoring/floorplan.d.ts +28 -0
  13. package/dist/authoring/floorplan.js +31 -0
  14. package/dist/authoring/floorplan.js.map +1 -0
  15. package/dist/authoring/generate.d.ts +57 -0
  16. package/dist/authoring/generate.js +630 -0
  17. package/dist/authoring/generate.js.map +1 -0
  18. package/dist/authoring/mcp.d.ts +15 -0
  19. package/dist/authoring/mcp.js +52 -0
  20. package/dist/authoring/mcp.js.map +1 -0
  21. package/dist/authoring/new.d.ts +35 -0
  22. package/dist/authoring/new.js +389 -0
  23. package/dist/authoring/new.js.map +1 -0
  24. package/dist/bdef/ast.d.ts +249 -0
  25. package/dist/bdef/ast.js +3 -0
  26. package/dist/bdef/ast.js.map +1 -0
  27. package/dist/bdef/lexer.d.ts +105 -0
  28. package/dist/bdef/lexer.js +148 -0
  29. package/dist/bdef/lexer.js.map +1 -0
  30. package/dist/bdef/parser.d.ts +22 -0
  31. package/dist/bdef/parser.js +1012 -0
  32. package/dist/bdef/parser.js.map +1 -0
  33. package/dist/build.d.ts +26 -0
  34. package/dist/build.js +62 -0
  35. package/dist/build.js.map +1 -0
  36. package/dist/cds/adapter.d.ts +91 -0
  37. package/dist/cds/adapter.js +381 -0
  38. package/dist/cds/adapter.js.map +1 -0
  39. package/dist/cds/expression-ast.d.ts +65 -0
  40. package/dist/cds/expression-ast.js +330 -0
  41. package/dist/cds/expression-ast.js.map +1 -0
  42. package/dist/cli.d.ts +9 -0
  43. package/dist/cli.js +485 -0
  44. package/dist/cli.js.map +1 -0
  45. package/dist/dcl/parser.d.ts +59 -0
  46. package/dist/dcl/parser.js +338 -0
  47. package/dist/dcl/parser.js.map +1 -0
  48. package/dist/ddic/catalog.d.ts +17 -0
  49. package/dist/ddic/catalog.js +211 -0
  50. package/dist/ddic/catalog.js.map +1 -0
  51. package/dist/ddic/cds-types.d.ts +47 -0
  52. package/dist/ddic/cds-types.js +131 -0
  53. package/dist/ddic/cds-types.js.map +1 -0
  54. package/dist/ddic/table-source.d.ts +70 -0
  55. package/dist/ddic/table-source.js +500 -0
  56. package/dist/ddic/table-source.js.map +1 -0
  57. package/dist/ddic/xml.d.ts +65 -0
  58. package/dist/ddic/xml.js +201 -0
  59. package/dist/ddic/xml.js.map +1 -0
  60. package/dist/dev.d.ts +128 -0
  61. package/dist/dev.js +434 -0
  62. package/dist/dev.js.map +1 -0
  63. package/dist/diagnostics.d.ts +33 -0
  64. package/dist/diagnostics.js +53 -0
  65. package/dist/diagnostics.js.map +1 -0
  66. package/dist/gen/abap/derived-types.d.ts +26 -0
  67. package/dist/gen/abap/derived-types.js +323 -0
  68. package/dist/gen/abap/derived-types.js.map +1 -0
  69. package/dist/gen/abap/eml.d.ts +118 -0
  70. package/dist/gen/abap/eml.js +362 -0
  71. package/dist/gen/abap/eml.js.map +1 -0
  72. package/dist/gen/abap/enums.d.ts +13 -0
  73. package/dist/gen/abap/enums.js +74 -0
  74. package/dist/gen/abap/enums.js.map +1 -0
  75. package/dist/gen/abap/framework-http.d.ts +14 -0
  76. package/dist/gen/abap/framework-http.js +1049 -0
  77. package/dist/gen/abap/framework-http.js.map +1 -0
  78. package/dist/gen/abap/framework-query.d.ts +14 -0
  79. package/dist/gen/abap/framework-query.js +225 -0
  80. package/dist/gen/abap/framework-query.js.map +1 -0
  81. package/dist/gen/abap/framework-utils.d.ts +29 -0
  82. package/dist/gen/abap/framework-utils.js +3707 -0
  83. package/dist/gen/abap/framework-utils.js.map +1 -0
  84. package/dist/gen/abap/framework.d.ts +12 -0
  85. package/dist/gen/abap/framework.js +480 -0
  86. package/dist/gen/abap/framework.js.map +1 -0
  87. package/dist/gen/abap/generate.d.ts +40 -0
  88. package/dist/gen/abap/generate.js +238 -0
  89. package/dist/gen/abap/generate.js.map +1 -0
  90. package/dist/gen/abap/rewrite.d.ts +82 -0
  91. package/dist/gen/abap/rewrite.js +957 -0
  92. package/dist/gen/abap/rewrite.js.map +1 -0
  93. package/dist/gen/abap/shadow.d.ts +25 -0
  94. package/dist/gen/abap/shadow.js +175 -0
  95. package/dist/gen/abap/shadow.js.map +1 -0
  96. package/dist/gen/abap/tokens.d.ts +33 -0
  97. package/dist/gen/abap/tokens.js +87 -0
  98. package/dist/gen/abap/tokens.js.map +1 -0
  99. package/dist/gen/app/index.d.ts +25 -0
  100. package/dist/gen/app/index.js +322 -0
  101. package/dist/gen/app/index.js.map +1 -0
  102. package/dist/gen/csdl.d.ts +11 -0
  103. package/dist/gen/csdl.js +562 -0
  104. package/dist/gen/csdl.js.map +1 -0
  105. package/dist/gen/deploy.d.ts +12 -0
  106. package/dist/gen/deploy.js +53 -0
  107. package/dist/gen/deploy.js.map +1 -0
  108. package/dist/gen/docs/index.d.ts +35 -0
  109. package/dist/gen/docs/index.js +267 -0
  110. package/dist/gen/docs/index.js.map +1 -0
  111. package/dist/gen/docs/markdown.d.ts +23 -0
  112. package/dist/gen/docs/markdown.js +187 -0
  113. package/dist/gen/docs/markdown.js.map +1 -0
  114. package/dist/gen/docs/site.d.ts +17 -0
  115. package/dist/gen/docs/site.js +106 -0
  116. package/dist/gen/docs/site.js.map +1 -0
  117. package/dist/gen/keycloak.d.ts +21 -0
  118. package/dist/gen/keycloak.js +90 -0
  119. package/dist/gen/keycloak.js.map +1 -0
  120. package/dist/gen/launchpad/index.d.ts +48 -0
  121. package/dist/gen/launchpad/index.js +302 -0
  122. package/dist/gen/launchpad/index.js.map +1 -0
  123. package/dist/gen/launchpad/ui.d.ts +14 -0
  124. package/dist/gen/launchpad/ui.js +350 -0
  125. package/dist/gen/launchpad/ui.js.map +1 -0
  126. package/dist/gen/mcp.d.ts +23 -0
  127. package/dist/gen/mcp.js +244 -0
  128. package/dist/gen/mcp.js.map +1 -0
  129. package/dist/gen/sql-expressions.d.ts +12 -0
  130. package/dist/gen/sql-expressions.js +136 -0
  131. package/dist/gen/sql-expressions.js.map +1 -0
  132. package/dist/gen/sql.d.ts +38 -0
  133. package/dist/gen/sql.js +612 -0
  134. package/dist/gen/sql.js.map +1 -0
  135. package/dist/gen/ui/index.d.ts +7 -0
  136. package/dist/gen/ui/index.js +27 -0
  137. package/dist/gen/ui/index.js.map +1 -0
  138. package/dist/gen/ui/layout.d.ts +230 -0
  139. package/dist/gen/ui/layout.js +511 -0
  140. package/dist/gen/ui/layout.js.map +1 -0
  141. package/dist/gen/ui/static.d.ts +55 -0
  142. package/dist/gen/ui/static.js +2901 -0
  143. package/dist/gen/ui/static.js.map +1 -0
  144. package/dist/gen/ui/views.d.ts +10 -0
  145. package/dist/gen/ui/views.js +511 -0
  146. package/dist/gen/ui/views.js.map +1 -0
  147. package/dist/gen/vendor.d.ts +23 -0
  148. package/dist/gen/vendor.js +68 -0
  149. package/dist/gen/vendor.js.map +1 -0
  150. package/dist/gen/xml.d.ts +9 -0
  151. package/dist/gen/xml.js +42 -0
  152. package/dist/gen/xml.js.map +1 -0
  153. package/dist/index.d.ts +20 -0
  154. package/dist/index.js +20 -0
  155. package/dist/index.js.map +1 -0
  156. package/dist/input/project.d.ts +50 -0
  157. package/dist/input/project.js +128 -0
  158. package/dist/input/project.js.map +1 -0
  159. package/dist/ir/access-controls.d.ts +11 -0
  160. package/dist/ir/access-controls.js +148 -0
  161. package/dist/ir/access-controls.js.map +1 -0
  162. package/dist/ir/authorizations.d.ts +25 -0
  163. package/dist/ir/authorizations.js +178 -0
  164. package/dist/ir/authorizations.js.map +1 -0
  165. package/dist/ir/behaviors.d.ts +16 -0
  166. package/dist/ir/behaviors.js +548 -0
  167. package/dist/ir/behaviors.js.map +1 -0
  168. package/dist/ir/builder.d.ts +20 -0
  169. package/dist/ir/builder.js +505 -0
  170. package/dist/ir/builder.js.map +1 -0
  171. package/dist/ir/config.d.ts +25 -0
  172. package/dist/ir/config.js +130 -0
  173. package/dist/ir/config.js.map +1 -0
  174. package/dist/ir/dictionary.d.ts +54 -0
  175. package/dist/ir/dictionary.js +328 -0
  176. package/dist/ir/dictionary.js.map +1 -0
  177. package/dist/ir/entities.d.ts +58 -0
  178. package/dist/ir/entities.js +676 -0
  179. package/dist/ir/entities.js.map +1 -0
  180. package/dist/ir/expressions.d.ts +33 -0
  181. package/dist/ir/expressions.js +327 -0
  182. package/dist/ir/expressions.js.map +1 -0
  183. package/dist/ir/handlers.d.ts +63 -0
  184. package/dist/ir/handlers.js +398 -0
  185. package/dist/ir/handlers.js.map +1 -0
  186. package/dist/ir/number-ranges.d.ts +24 -0
  187. package/dist/ir/number-ranges.js +74 -0
  188. package/dist/ir/number-ranges.js.map +1 -0
  189. package/dist/ir/seed.d.ts +23 -0
  190. package/dist/ir/seed.js +78 -0
  191. package/dist/ir/seed.js.map +1 -0
  192. package/dist/ir/service.d.ts +21 -0
  193. package/dist/ir/service.js +96 -0
  194. package/dist/ir/service.js.map +1 -0
  195. package/dist/launchpad/config.d.ts +47 -0
  196. package/dist/launchpad/config.js +321 -0
  197. package/dist/launchpad/config.js.map +1 -0
  198. package/dist/launchpad/workspace.d.ts +48 -0
  199. package/dist/launchpad/workspace.js +166 -0
  200. package/dist/launchpad/workspace.js.map +1 -0
  201. package/dist/srvd/parser.d.ts +36 -0
  202. package/dist/srvd/parser.js +193 -0
  203. package/dist/srvd/parser.js.map +1 -0
  204. package/dist/standard/data.d.ts +18 -0
  205. package/dist/standard/data.js +534 -0
  206. package/dist/standard/data.js.map +1 -0
  207. package/dist/standard/index.d.ts +36 -0
  208. package/dist/standard/index.js +507 -0
  209. package/dist/standard/index.js.map +1 -0
  210. package/dist/version.d.ts +2 -0
  211. package/dist/version.js +4 -0
  212. package/dist/version.js.map +1 -0
  213. package/docs/AGENTS.md +79 -0
  214. package/docs/ANNOTATIONS.md +76 -0
  215. package/docs/DECISIONS.md +1554 -0
  216. package/docs/DEPLOYMENT.md +113 -0
  217. package/docs/DIAGNOSTICS.md +116 -0
  218. package/docs/FEATURES.md +287 -0
  219. package/docs/GUIDE.md +560 -0
  220. package/docs/KNOWN_GAPS.md +216 -0
  221. package/docs/MCP.md +84 -0
  222. package/docs/PLAN.md +690 -0
  223. package/docs/README.md +148 -0
  224. package/docs/REMOTE_APIS.md +121 -0
  225. package/docs/ROADMAP.md +35 -0
  226. package/docs/UTILITIES.md +95 -0
  227. package/package.json +49 -3
@@ -0,0 +1,187 @@
1
+ /**
2
+ * A small Markdown renderer for the documentation app of `rapt dev` (D49): the subset the
3
+ * documentation of Open RAP Runtime uses — headings, paragraphs, lists (nested), code blocks and
4
+ * inline code, tables, block quotes, links, emphasis. Text is escaped; links to other pages
5
+ * (`FILE.md`, `FILE.md#anchor`) become routes of the app (`#/page/file`). The website renders the
6
+ * same Markdown with its own links and images (`RenderOptions`, D63).
7
+ */
8
+ const escape = (s) => s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
9
+ /** The id of a heading, as GitHub writes it. */
10
+ export function headingId(text) {
11
+ return text
12
+ .toLowerCase()
13
+ .replace(/`/g, "")
14
+ .replace(/[^\p{L}\p{N}\s_-]/gu, "")
15
+ .trim()
16
+ .replace(/\s/g, "-");
17
+ }
18
+ /** The page id of a Markdown file name: `docs/DIAGNOSTICS.md` → `diagnostics`. */
19
+ export function pageId(file) {
20
+ return (file.split("/").pop() ?? file).replace(/\.md$/i, "").toLowerCase();
21
+ }
22
+ function appLink(href) {
23
+ if (/^[a-z]+:/i.test(href)) {
24
+ return { href, external: true };
25
+ }
26
+ const match = /^(?:\.{0,2}\/)*(?:[\w./-]*\/)?([\w-]+)\.md(#.*)?$/i.exec(href);
27
+ if (match !== null) {
28
+ return { href: `#/page/${(match[1] ?? "").toLowerCase()}${match[2] === undefined ? "" : `/${match[2].slice(1)}`}`, external: false };
29
+ }
30
+ if (href.startsWith("#")) {
31
+ return { href: `#anchor-${href.slice(1)}`, external: false };
32
+ }
33
+ return { href, external: true };
34
+ }
35
+ /** Inline Markdown: code spans first (their content stays as written), then links and emphasis. */
36
+ export function inline(text, options = {}) {
37
+ const codes = [];
38
+ let s = text.replace(/`([^`]+)`/g, (_m, code) => {
39
+ codes.push(`<code>${escape(code)}</code>`);
40
+ return `\u0000${codes.length - 1}\u0000`;
41
+ });
42
+ s = escape(s);
43
+ // images: shown from an absolute URL; the images of the repository are left out of the app
44
+ s = s.replace(/!\[([^\]]*)\]\(([^)\s]+)\)/g, (_m, alt, src) => {
45
+ const url = /^https?:\/\//i.test(src) ? src : options.image?.(src.replace(/&amp;/g, "&"));
46
+ return url === undefined ? "" : `<img src="${escape(url)}" alt="${alt}" style="max-width:100%">`;
47
+ });
48
+ s = s.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g, (_m, label, href) => {
49
+ const raw = href.replace(/&amp;/g, "&");
50
+ const target = options.link === undefined ? appLink(raw) : options.link(raw);
51
+ return target === null ? label : `<a href="${escape(target.href)}"${target.external ? ' target="_blank" rel="noopener"' : ""}>${label}</a>`;
52
+ });
53
+ s = s.replace(/\*\*([^*]+)\*\*/g, "<strong>$1</strong>").replace(/(^|[^*\w])\*([^*\s][^*]*)\*(?!\w)/g, "$1<em>$2</em>");
54
+ return s.replace(/\u0000(\d+)\u0000/g, (_m, i) => codes[Number(i)] ?? "");
55
+ }
56
+ function splitRow(line) {
57
+ const cells = [];
58
+ let current = "";
59
+ let code = false;
60
+ const body = line.trim().replace(/^\|/, "").replace(/\|$/, "");
61
+ for (let i = 0; i < body.length; i++) {
62
+ const c = body[i];
63
+ if (c === "`")
64
+ code = !code;
65
+ if (c === "\\" && body[i + 1] === "|") {
66
+ current += "|";
67
+ i++;
68
+ continue;
69
+ }
70
+ if (c === "|" && !code) {
71
+ cells.push(current.trim());
72
+ current = "";
73
+ continue;
74
+ }
75
+ current += c;
76
+ }
77
+ cells.push(current.trim());
78
+ return cells;
79
+ }
80
+ /** Renders a Markdown document as HTML. */
81
+ export function renderMarkdown(markdown, options = {}) {
82
+ const lines = markdown.replace(/\r\n/g, "\n").split("\n");
83
+ const out = [];
84
+ let i = 0;
85
+ const isBlockStart = (line) => /^(#{1,6}\s|```|>\s?|\s*[-*]\s|\s*\d+\.\s|\|)/.test(line) || line.trim() === "";
86
+ while (i < lines.length) {
87
+ const line = lines[i] ?? "";
88
+ if (line.trim() === "") {
89
+ i++;
90
+ continue;
91
+ }
92
+ const heading = /^(#{1,6})\s+(.*)$/.exec(line);
93
+ if (heading !== null) {
94
+ const level = heading[1]?.length ?? 1;
95
+ const text = heading[2] ?? "";
96
+ out.push(`<h${level} id="anchor-${escape(headingId(text))}">${inline(text, options)}</h${level}>`);
97
+ i++;
98
+ continue;
99
+ }
100
+ if (line.startsWith("```")) {
101
+ const language = line.slice(3).trim();
102
+ const code = [];
103
+ i++;
104
+ while (i < lines.length && !(lines[i] ?? "").startsWith("```")) {
105
+ code.push(lines[i] ?? "");
106
+ i++;
107
+ }
108
+ i++;
109
+ out.push(`<pre><code${language === "" ? "" : ` class="language-${escape(language)}"`}>${escape(code.join("\n"))}</code></pre>`);
110
+ continue;
111
+ }
112
+ if (/^>\s?/.test(line)) {
113
+ const quote = [];
114
+ while (i < lines.length && /^>\s?/.test(lines[i] ?? "")) {
115
+ quote.push((lines[i] ?? "").replace(/^>\s?/, ""));
116
+ i++;
117
+ }
118
+ out.push(`<blockquote>${renderMarkdown(quote.join("\n"), options)}</blockquote>`);
119
+ continue;
120
+ }
121
+ if (line.trim().startsWith("|") && /^\s*\|?\s*:?-{3,}/.test(lines[i + 1] ?? "")) {
122
+ const header = splitRow(line);
123
+ const align = splitRow(lines[i + 1] ?? "").map((c) => (c.endsWith(":") ? (c.startsWith(":") ? "center" : "right") : ""));
124
+ i += 2;
125
+ const rows = [];
126
+ while (i < lines.length && (lines[i] ?? "").trim().startsWith("|")) {
127
+ rows.push(splitRow(lines[i] ?? ""));
128
+ i++;
129
+ }
130
+ const cell = (tag, text, index) => `<${tag}${align[index] ? ` style="text-align:${align[index]}"` : ""}>${inline(text, options)}</${tag}>`;
131
+ out.push(`<table><thead><tr>${header.map((h, k) => cell("th", h, k)).join("")}</tr></thead><tbody>${rows.map((r) => `<tr>${r.map((c, k) => cell("td", c, k)).join("")}</tr>`).join("")}</tbody></table>`);
132
+ continue;
133
+ }
134
+ if (/^\s*([-*]|\d+\.)\s/.test(line)) {
135
+ const block = [];
136
+ const ordered = /^\s*\d+\./.test(line);
137
+ const indent = line.length - line.trimStart().length;
138
+ while (i < lines.length && ((lines[i] ?? "").trim() === "" ? /^\s+([-*]|\d+\.)?\s*\S/.test(lines[i + 1] ?? "") : /^(\s*([-*]|\d+\.)\s|\s{2,}\S)/.test(lines[i] ?? ""))) {
139
+ const current = lines[i] ?? "";
140
+ // a list of the other kind at the same level starts a new list
141
+ if (block.length > 0 && current.length - current.trimStart().length <= indent && /^\s*([-*]|\d+\.)\s/.test(current) && /^\s*\d+\./.test(current) !== ordered) {
142
+ break;
143
+ }
144
+ block.push(current);
145
+ i++;
146
+ }
147
+ out.push(renderList(block, options));
148
+ continue;
149
+ }
150
+ const paragraph = [];
151
+ while (i < lines.length && !isBlockStart(lines[i] ?? "")) {
152
+ paragraph.push((lines[i] ?? "").trim());
153
+ i++;
154
+ }
155
+ if (paragraph.length === 0) {
156
+ paragraph.push(line.trim());
157
+ i++;
158
+ }
159
+ out.push(`<p>${inline(paragraph.join(" "), options)}</p>`);
160
+ }
161
+ return out.join("\n");
162
+ }
163
+ /** A list and its nested lists (by indentation). */
164
+ function renderList(block, options) {
165
+ const indentOf = (l) => l.length - l.trimStart().length;
166
+ const base = indentOf(block.find((l) => l.trim() !== "") ?? "");
167
+ const ordered = /^\s*\d+\./.test(block[0] ?? "");
168
+ const items = [];
169
+ for (const line of block) {
170
+ if (line.trim() === "")
171
+ continue;
172
+ if (indentOf(line) <= base + 1 && /^\s*([-*]|\d+\.)\s/.test(line)) {
173
+ items.push([line.trim().replace(/^([-*]|\d+\.)\s+/, "")]);
174
+ }
175
+ else {
176
+ items[items.length - 1]?.push(line);
177
+ }
178
+ }
179
+ const html = items.map(([first = "", ...rest]) => {
180
+ const nested = rest.filter((l) => /^\s*([-*]|\d+\.)\s/.test(l));
181
+ const text = [first, ...rest.filter((l) => !/^\s*([-*]|\d+\.)\s/.test(l)).map((l) => l.trim())].join(" ");
182
+ const sub = nested.length === 0 ? "" : renderList(rest.slice(rest.findIndex((l) => /^\s*([-*]|\d+\.)\s/.test(l))), options);
183
+ return `<li>${inline(text, options)}${sub}</li>`;
184
+ });
185
+ return ordered ? `<ol>${html.join("")}</ol>` : `<ul>${html.join("")}</ul>`;
186
+ }
187
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/gen/docs/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The documentation pages of the website (D63): the same Markdown documents as the documentation
3
+ * app of `rapt dev` (D49), rendered as static pages `docs/<page>.html` next to the home page of
4
+ * the website. Links between documents point to the rendered pages; links to files of the
5
+ * repository that the website does not publish (sources, fixtures, license) become plain text,
6
+ * so that the website never sends a visitor to the repository.
7
+ */
8
+ import { type RenderOptions } from "./markdown.js";
9
+ /** The file of a page on the website: the README is the overview (`index.html`). */
10
+ export declare function sitePageFile(id: string): string;
11
+ /** The links and images of the Markdown, for the pages of the website. */
12
+ export declare function siteRenderOptions(ids: ReadonlySet<string>): RenderOptions;
13
+ /** The pages of the documentation for the website: `docs/index.html` (overview), `docs/<page>.html`. */
14
+ export declare function generateSiteDocs(dir?: string | undefined): Array<{
15
+ path: string;
16
+ content: string;
17
+ }>;
@@ -0,0 +1,106 @@
1
+ /**
2
+ * The documentation pages of the website (D63): the same Markdown documents as the documentation
3
+ * app of `rapt dev` (D49), rendered as static pages `docs/<page>.html` next to the home page of
4
+ * the website. Links between documents point to the rendered pages; links to files of the
5
+ * repository that the website does not publish (sources, fixtures, license) become plain text,
6
+ * so that the website never sends a visitor to the repository.
7
+ */
8
+ import { documentationDir, documentationPages } from "./index.js";
9
+ import { pageId } from "./markdown.js";
10
+ const escape = (s) => s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
11
+ /** The file of a page on the website: the README is the overview (`index.html`). */
12
+ export function sitePageFile(id) {
13
+ return id === "readme" ? "index.html" : `${id}.html`;
14
+ }
15
+ /** The links and images of the Markdown, for the pages of the website. */
16
+ export function siteRenderOptions(ids) {
17
+ return {
18
+ link: (href) => {
19
+ if (/^[a-z]+:/i.test(href)) {
20
+ return { href, external: true };
21
+ }
22
+ if (href.startsWith("#")) {
23
+ return { href: `#anchor-${href.slice(1)}`, external: false };
24
+ }
25
+ const match = /^((?:[\w.-]*\/)*)([\w-]+)\.md(?:#(.*))?$/i.exec(href);
26
+ if (match === null || /(^|\/)(fixtures|packages|site)\//.test(match[1] ?? "")) {
27
+ return null;
28
+ }
29
+ const id = pageId(match[2] ?? "");
30
+ if (!ids.has(id)) {
31
+ return null;
32
+ }
33
+ return { href: `${sitePageFile(id)}${match[3] === undefined ? "" : `#anchor-${match[3]}`}`, external: false };
34
+ },
35
+ image: (src) => {
36
+ const match = /(?:^|\/)images\/([\w.-]+\.(?:png|jpe?g|svg|gif|webp))$/i.exec(src);
37
+ return match === null ? undefined : `../images/${match[1]}`;
38
+ },
39
+ };
40
+ }
41
+ const ICON = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='7' fill='%230a6ed1'/%3E%3Cpath d='M9 22V10h7a4 4 0 0 1 0 8h-7m7 0 5 4' stroke='white' stroke-width='3' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E";
42
+ function title(page) {
43
+ return page.id === "readme" ? "Overview" : page.title;
44
+ }
45
+ function pageList(pages, current) {
46
+ return pages
47
+ .map((p) => {
48
+ const active = p.id === current.id;
49
+ const toc = active && p.headings.some((h) => h.level === 2) ? `<ul>${p.headings.filter((h) => h.level === 2).map((h) => `<li><a href="#${escape(h.id)}">${escape(h.title.replace(/\*\*/g, ""))}</a></li>`).join("")}</ul>` : "";
50
+ return `<li${active ? ' class="current"' : ""}><a href="${sitePageFile(p.id)}"${active ? ' aria-current="page"' : ""}>${escape(title(p))}</a>${toc}</li>`;
51
+ })
52
+ .join("");
53
+ }
54
+ function pageHtml(pages, page) {
55
+ const list = pageList(pages, page);
56
+ return `<!doctype html>
57
+ <html lang="en">
58
+ <head>
59
+ <meta charset="utf-8">
60
+ <meta name="viewport" content="width=device-width, initial-scale=1">
61
+ <title>${escape(title(page))} — Open RAP Runtime documentation</title>
62
+ <meta name="description" content="Open RAP Runtime documentation: ${escape(title(page))}.">
63
+ <link rel="icon" href="${ICON}">
64
+ <link rel="stylesheet" href="../style.css">
65
+ </head>
66
+ <body class="docs-page">
67
+ <header class="top">
68
+ <div class="wrap nav">
69
+ <a class="brand" href="../index.html"><span class="logo" aria-hidden="true">R</span>Open RAP Runtime</a>
70
+ <nav aria-label="Main">
71
+ <a href="../index.html#features">Features</a>
72
+ <a href="index.html">Documentation</a>
73
+ <a href="../feedback.html">Feedback</a>
74
+ <a class="button small" href="../index.html#download">Download</a>
75
+ </nav>
76
+ </div>
77
+ </header>
78
+ <div class="wrap doc-layout">
79
+ <aside class="doc-side" aria-label="Documentation pages">
80
+ <details class="doc-menu">
81
+ <summary>Documentation pages</summary>
82
+ <ul>${list}</ul>
83
+ </details>
84
+ <ul class="doc-list">${list}</ul>
85
+ </aside>
86
+ <main class="doc" id="content">
87
+ ${page.html}
88
+ </main>
89
+ </div>
90
+ <footer>
91
+ <div class="wrap foot">
92
+ <span>Open RAP Runtime · MIT · not affiliated with SAP SE. SAP, ABAP, Fiori and SAP BTP are trademarks of SAP SE.</span>
93
+ <span class="foot-links"><a href="../index.html">Home</a> · <a href="../feedback.html">Report a bug or request a feature</a></span>
94
+ </div>
95
+ </footer>
96
+ </body>
97
+ </html>
98
+ `;
99
+ }
100
+ /** The pages of the documentation for the website: `docs/index.html` (overview), `docs/<page>.html`. */
101
+ export function generateSiteDocs(dir = documentationDir()) {
102
+ const ids = new Set(documentationPages(dir).map((p) => p.id));
103
+ const pages = documentationPages(dir, siteRenderOptions(ids));
104
+ return pages.map((page) => ({ path: `docs/${sitePageFile(page.id)}`, content: pageHtml(pages, page) }));
105
+ }
106
+ //# sourceMappingURL=site.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site.js","sourceRoot":"","sources":["../../../src/gen/docs/site.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The realm of the Keycloak of a generated docker-compose (application D15, launchpad D37): the
3
+ * OIDC client, the roles (rapt/authorizations.json, D34) given to the user alice, and for each
4
+ * claim the roles read (`{claim:x}`) a user attribute (declared in the user profile, set by the
5
+ * administrator) mapped into the tokens.
6
+ */
7
+ export interface RealmOptions {
8
+ clientId: string;
9
+ clientName: string;
10
+ secret: string;
11
+ /** Public URL of the client (`http://localhost:8080`): redirect URI, web origin, logout. */
12
+ url: string;
13
+ roles: Array<{
14
+ name: string;
15
+ description?: string;
16
+ }>;
17
+ claims: string[];
18
+ }
19
+ /** The user attribute holding a claim (Keycloak attribute names: letters, digits, `_` and `-`). */
20
+ export declare const claimAttribute: (claim: string) => string;
21
+ export declare function keycloakRealm(options: RealmOptions): Record<string, unknown>;
@@ -0,0 +1,90 @@
1
+ /**
2
+ * The realm of the Keycloak of a generated docker-compose (application D15, launchpad D37): the
3
+ * OIDC client, the roles (rapt/authorizations.json, D34) given to the user alice, and for each
4
+ * claim the roles read (`{claim:x}`) a user attribute (declared in the user profile, set by the
5
+ * administrator) mapped into the tokens.
6
+ */
7
+ /** The default attributes of the Keycloak user profile (declarative user profile, Keycloak 24+). */
8
+ const PROFILE_ATTRIBUTES = [
9
+ { name: "username", displayName: "${username}", validations: { length: { min: 3, max: 255 }, "username-prohibited-characters": {}, "up-username-not-idn-homograph": {} }, permissions: { view: ["admin", "user"], edit: ["admin", "user"] }, multivalued: false },
10
+ { name: "email", displayName: "${email}", validations: { email: {}, length: { max: 255 } }, required: { roles: ["user"] }, permissions: { view: ["admin", "user"], edit: ["admin", "user"] }, multivalued: false },
11
+ { name: "firstName", displayName: "${firstName}", validations: { length: { max: 255 }, "person-name-prohibited-characters": {} }, required: { roles: ["user"] }, permissions: { view: ["admin", "user"], edit: ["admin", "user"] }, multivalued: false },
12
+ { name: "lastName", displayName: "${lastName}", validations: { length: { max: 255 }, "person-name-prohibited-characters": {} }, required: { roles: ["user"] }, permissions: { view: ["admin", "user"], edit: ["admin", "user"] }, multivalued: false },
13
+ ];
14
+ /** The user attribute holding a claim (Keycloak attribute names: letters, digits, `_` and `-`). */
15
+ export const claimAttribute = (claim) => claim.replace(/[^A-Za-z0-9_-]/g, "_");
16
+ export function keycloakRealm(options) {
17
+ const { roles, claims } = options;
18
+ const result = {
19
+ realm: "rapt",
20
+ enabled: true,
21
+ roles: { realm: [{ name: "rapt_user", description: "User of the generated application" }, ...roles.filter((r) => r.name !== "rapt_user").map((r) => ({ name: r.name, ...(r.description === undefined ? {} : { description: r.description }) }))] },
22
+ clients: [
23
+ {
24
+ clientId: options.clientId,
25
+ name: options.clientName,
26
+ enabled: true,
27
+ protocol: "openid-connect",
28
+ publicClient: false,
29
+ secret: options.secret,
30
+ standardFlowEnabled: true,
31
+ directAccessGrantsEnabled: false,
32
+ redirectUris: [`${options.url}/auth/callback`],
33
+ webOrigins: [options.url],
34
+ attributes: { "pkce.code.challenge.method": "S256", "post.logout.redirect.uris": `${options.url}/*` },
35
+ ...(claims.length === 0
36
+ ? {}
37
+ : {
38
+ protocolMappers: claims.map((claim) => ({
39
+ name: claim,
40
+ protocol: "openid-connect",
41
+ protocolMapper: "oidc-usermodel-attribute-mapper",
42
+ consentRequired: false,
43
+ config: {
44
+ "user.attribute": claimAttribute(claim),
45
+ "claim.name": claim,
46
+ "jsonType.label": "String",
47
+ multivalued: "true",
48
+ "id.token.claim": "true",
49
+ "access.token.claim": "true",
50
+ "userinfo.token.claim": "true",
51
+ "introspection.token.claim": "true",
52
+ },
53
+ })),
54
+ }),
55
+ },
56
+ ],
57
+ users: [
58
+ {
59
+ username: "alice",
60
+ enabled: true,
61
+ firstName: "Alice",
62
+ lastName: "Example",
63
+ email: "alice@example.org",
64
+ emailVerified: true,
65
+ credentials: [{ type: "password", value: "alice", temporary: false }],
66
+ realmRoles: ["rapt_user", ...roles.filter((r) => r.name !== "rapt_user").map((r) => r.name)],
67
+ },
68
+ ],
69
+ };
70
+ if (claims.length > 0) {
71
+ result["components"] = {
72
+ "org.keycloak.userprofile.UserProfileProvider": [
73
+ {
74
+ providerId: "declarative-user-profile",
75
+ subComponents: {},
76
+ config: {
77
+ "kc.user.profile.config": [
78
+ JSON.stringify({
79
+ attributes: [...PROFILE_ATTRIBUTES, ...claims.map((claim) => ({ name: claimAttribute(claim), displayName: claim, permissions: { view: ["admin"], edit: ["admin"] }, multivalued: true }))],
80
+ groups: [{ name: "user-metadata", displayHeader: "User metadata", displayDescription: "Attributes, which refer to user metadata" }],
81
+ }),
82
+ ],
83
+ },
84
+ },
85
+ ],
86
+ };
87
+ }
88
+ return result;
89
+ }
90
+ //# sourceMappingURL=keycloak.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keycloak.js","sourceRoot":"","sources":["../../src/gen/keycloak.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * `rapt launchpad`: the folder of a launchpad of applications (decision D37). Its server (the
3
+ * runtime, embedded in `vendor/`) serves the OpenUI5 launchpad, opens the sessions the
4
+ * applications read and forwards their requests; docker-compose starts it with the applications
5
+ * built by `rapt build` (one PostgreSQL each) and, in the `oidc` profile, Keycloak.
6
+ */
7
+ import { type LaunchpadModel } from "@open-rap/model";
8
+ import { Diagnostics } from "../../diagnostics.js";
9
+ import { type BuiltApp } from "../../launchpad/config.js";
10
+ export interface LaunchpadOptions {
11
+ /** Folder of the @open-rap/runtime package (default: next to the compiler). */
12
+ runtimeDir?: string;
13
+ /** The output folder: docker-compose builds the applications from their folders, relative to it. */
14
+ outDir?: string;
15
+ /** The applications built from their sources (D69), by id. */
16
+ built?: Map<string, BuiltApp>;
17
+ }
18
+ export interface LaunchpadResult {
19
+ diagnostics: Diagnostics;
20
+ model?: LaunchpadModel;
21
+ files: Array<{
22
+ path: string;
23
+ content: string;
24
+ }>;
25
+ }
26
+ /** The files of the OpenUI5 launchpad (`ui/`), served by the launchpad server. */
27
+ export declare function generateLaunchpadUi(model: LaunchpadModel): Array<{
28
+ path: string;
29
+ content: string;
30
+ }>;
31
+ /** Resolves `launchpad.json` and generates the files of the launchpad. */
32
+ export declare function generateLaunchpad(file: string, options?: LaunchpadOptions): LaunchpadResult;
33
+ export interface LaunchpadBuildResult extends LaunchpadResult {
34
+ /** The applications built from their sources, into apps/<id>/ of the output folder. */
35
+ apps: Array<{
36
+ id: string;
37
+ source: string;
38
+ out: string;
39
+ files: number;
40
+ }>;
41
+ }
42
+ /**
43
+ * `rapt launchpad`: the launchpad and, built from their sources (`source`, D69) into
44
+ * `apps/<id>/`, its applications. A single folder to deploy: docker-compose starts them all.
45
+ */
46
+ export declare function buildLaunchpad(file: string, options: LaunchpadOptions & {
47
+ outDir: string;
48
+ }): Promise<LaunchpadBuildResult>;