@arkvenai/cli 0.5.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 (135) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/README.md +304 -0
  3. package/dist/agents.d.ts +11 -0
  4. package/dist/agents.d.ts.map +1 -0
  5. package/dist/agents.js +76 -0
  6. package/dist/agents.js.map +1 -0
  7. package/dist/auftrag.d.ts +3 -0
  8. package/dist/auftrag.d.ts.map +1 -0
  9. package/dist/auftrag.js +45 -0
  10. package/dist/auftrag.js.map +1 -0
  11. package/dist/bauplan.d.ts +15 -0
  12. package/dist/bauplan.d.ts.map +1 -0
  13. package/dist/bauplan.js +219 -0
  14. package/dist/bauplan.js.map +1 -0
  15. package/dist/befehle.d.ts +12 -0
  16. package/dist/befehle.d.ts.map +1 -0
  17. package/dist/befehle.js +77 -0
  18. package/dist/befehle.js.map +1 -0
  19. package/dist/befund.d.ts +21 -0
  20. package/dist/befund.d.ts.map +1 -0
  21. package/dist/befund.js +107 -0
  22. package/dist/befund.js.map +1 -0
  23. package/dist/codeAblage.d.ts +31 -0
  24. package/dist/codeAblage.d.ts.map +1 -0
  25. package/dist/codeAblage.js +80 -0
  26. package/dist/codeAblage.js.map +1 -0
  27. package/dist/deklaration.d.ts +3 -0
  28. package/dist/deklaration.d.ts.map +1 -0
  29. package/dist/deklaration.js +14 -0
  30. package/dist/deklaration.js.map +1 -0
  31. package/dist/diff.d.ts +10 -0
  32. package/dist/diff.d.ts.map +1 -0
  33. package/dist/diff.js +72 -0
  34. package/dist/diff.js.map +1 -0
  35. package/dist/erkennung.d.ts +26 -0
  36. package/dist/erkennung.d.ts.map +1 -0
  37. package/dist/erkennung.js +174 -0
  38. package/dist/erkennung.js.map +1 -0
  39. package/dist/fix.d.ts +26 -0
  40. package/dist/fix.d.ts.map +1 -0
  41. package/dist/fix.js +101 -0
  42. package/dist/fix.js.map +1 -0
  43. package/dist/geteilt/bauplan/form.d.ts +100 -0
  44. package/dist/geteilt/bauplan/form.d.ts.map +1 -0
  45. package/dist/geteilt/bauplan/form.js +21 -0
  46. package/dist/geteilt/bauplan/form.js.map +1 -0
  47. package/dist/geteilt/bauplan/index.d.ts +4 -0
  48. package/dist/geteilt/bauplan/index.d.ts.map +1 -0
  49. package/dist/geteilt/bauplan/index.js +4 -0
  50. package/dist/geteilt/bauplan/index.js.map +1 -0
  51. package/dist/geteilt/bauplan/lesen.d.ts +6 -0
  52. package/dist/geteilt/bauplan/lesen.d.ts.map +1 -0
  53. package/dist/geteilt/bauplan/lesen.js +344 -0
  54. package/dist/geteilt/bauplan/lesen.js.map +1 -0
  55. package/dist/geteilt/bauplan/schreiben.d.ts +3 -0
  56. package/dist/geteilt/bauplan/schreiben.d.ts.map +1 -0
  57. package/dist/geteilt/bauplan/schreiben.js +80 -0
  58. package/dist/geteilt/bauplan/schreiben.js.map +1 -0
  59. package/dist/index.d.ts +3 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +352 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/init.d.ts +28 -0
  64. package/dist/init.d.ts.map +1 -0
  65. package/dist/init.js +324 -0
  66. package/dist/init.js.map +1 -0
  67. package/dist/login.d.ts +45 -0
  68. package/dist/login.d.ts.map +1 -0
  69. package/dist/login.js +162 -0
  70. package/dist/login.js.map +1 -0
  71. package/dist/mcp.d.ts +18 -0
  72. package/dist/mcp.d.ts.map +1 -0
  73. package/dist/mcp.js +115 -0
  74. package/dist/mcp.js.map +1 -0
  75. package/dist/neu.d.ts +17 -0
  76. package/dist/neu.d.ts.map +1 -0
  77. package/dist/neu.js +118 -0
  78. package/dist/neu.js.map +1 -0
  79. package/dist/npmrc.d.ts +9 -0
  80. package/dist/npmrc.d.ts.map +1 -0
  81. package/dist/npmrc.js +49 -0
  82. package/dist/npmrc.js.map +1 -0
  83. package/dist/projekte.d.ts +23 -0
  84. package/dist/projekte.d.ts.map +1 -0
  85. package/dist/projekte.js +82 -0
  86. package/dist/projekte.js.map +1 -0
  87. package/dist/pull.d.ts +15 -0
  88. package/dist/pull.d.ts.map +1 -0
  89. package/dist/pull.js +301 -0
  90. package/dist/pull.js.map +1 -0
  91. package/dist/push/bericht.d.ts +8 -0
  92. package/dist/push/bericht.d.ts.map +1 -0
  93. package/dist/push/bericht.js +85 -0
  94. package/dist/push/bericht.js.map +1 -0
  95. package/dist/push/form.d.ts +67 -0
  96. package/dist/push/form.d.ts.map +1 -0
  97. package/dist/push/form.js +6 -0
  98. package/dist/push/form.js.map +1 -0
  99. package/dist/push/medien.d.ts +7 -0
  100. package/dist/push/medien.d.ts.map +1 -0
  101. package/dist/push/medien.js +154 -0
  102. package/dist/push/medien.js.map +1 -0
  103. package/dist/push/sammeln.d.ts +34 -0
  104. package/dist/push/sammeln.d.ts.map +1 -0
  105. package/dist/push/sammeln.js +112 -0
  106. package/dist/push/sammeln.js.map +1 -0
  107. package/dist/push/verzeichnisse.d.ts +40 -0
  108. package/dist/push/verzeichnisse.d.ts.map +1 -0
  109. package/dist/push/verzeichnisse.js +158 -0
  110. package/dist/push/verzeichnisse.js.map +1 -0
  111. package/dist/push.d.ts +8 -0
  112. package/dist/push.d.ts.map +1 -0
  113. package/dist/push.js +306 -0
  114. package/dist/push.js.map +1 -0
  115. package/dist/starter.d.ts +4 -0
  116. package/dist/starter.d.ts.map +1 -0
  117. package/dist/starter.js +587 -0
  118. package/dist/starter.js.map +1 -0
  119. package/dist/tiefpruefung.d.ts +39 -0
  120. package/dist/tiefpruefung.d.ts.map +1 -0
  121. package/dist/tiefpruefung.js +56 -0
  122. package/dist/tiefpruefung.js.map +1 -0
  123. package/dist/vertrag.d.ts +6 -0
  124. package/dist/vertrag.d.ts.map +1 -0
  125. package/dist/vertrag.js +267 -0
  126. package/dist/vertrag.js.map +1 -0
  127. package/dist/vertragSpaet.d.ts +4 -0
  128. package/dist/vertragSpaet.d.ts.map +1 -0
  129. package/dist/vertragSpaet.js +158 -0
  130. package/dist/vertragSpaet.js.map +1 -0
  131. package/dist/vorlagen.d.ts +7 -0
  132. package/dist/vorlagen.d.ts.map +1 -0
  133. package/dist/vorlagen.js +83 -0
  134. package/dist/vorlagen.js.map +1 -0
  135. package/package.json +65 -0
package/dist/pull.js ADDED
@@ -0,0 +1,301 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { leseZugang, STANDARD_SERVER } from './login.js';
4
+ import { leseArkvenDatei, leseVerzeichnisse, merkeProjekt } from './push.js';
5
+ import { holeProjekte, waehle, zeilenFuer } from './projekte.js';
6
+ import { DATEI } from './push/sammeln.js';
7
+ import { BAUPLAN_DATEI, AUFTRAG_DATEI } from './bauplan.js';
8
+ import { planeAblage, schreibeAblage, vorschauText } from './codeAblage.js';
9
+ const ZEILENENDE = String.fromCharCode(10);
10
+ const WEITER = ZEILENENDE + 'So kommst du weiter: ';
11
+ const NACHWEIS_DATEI = 'arkven/nachweis.md';
12
+ function lies(pfad) {
13
+ try {
14
+ return fs.readFileSync(pfad, 'utf8');
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ }
20
+ function schreibe(pfad, inhalt) {
21
+ fs.mkdirSync(path.dirname(pfad), { recursive: true });
22
+ fs.writeFileSync(pfad, inhalt, 'utf8');
23
+ }
24
+ export async function fahrePull(wurzel, opts) {
25
+ const zugang = leseZugang();
26
+ const server = (opts.server || zugang?.server || STANDARD_SERVER).replace(/\/+$/, '');
27
+ if (!zugang?.cliToken) {
28
+ return {
29
+ code: 1,
30
+ grund: 'Dieser Rechner ist nicht bei Arkven angemeldet.\nSo kommst du weiter: `arkven login`.',
31
+ };
32
+ }
33
+ const merker = leseArkvenDatei(wurzel);
34
+ let projekt = typeof merker.projekt === 'string' ? merker.projekt : '';
35
+ if (!projekt) {
36
+ const gewaehlt = await klaereProjekt(server, zugang.cliToken, zugang.teams ?? [], opts);
37
+ if (!gewaehlt.ok)
38
+ return { code: 1, grund: gewaehlt.grund };
39
+ projekt = gewaehlt.id;
40
+ merkeProjekt(wurzel, projekt);
41
+ opts.sage(`arkven.json kennt das Projekt jetzt (projekt: ${projekt}).`);
42
+ opts.sage('');
43
+ }
44
+ let daten;
45
+ try {
46
+ const res = await fetch(`${server}/api/projekte/${encodeURIComponent(projekt)}/deklaration`, {
47
+ headers: { authorization: `Bearer ${zugang.cliToken}` },
48
+ });
49
+ daten = (await res.json().catch(() => ({})));
50
+ if (!res.ok) {
51
+ return { code: 1, grund: `Arkven antwortete mit Status ${res.status}. ${daten.error ?? ''}`.trim() };
52
+ }
53
+ }
54
+ catch (e) {
55
+ return { code: 1, grund: `Arkven war nicht erreichbar: ${String(e?.message ?? e)}` };
56
+ }
57
+ const bauplanNeu = daten.bauplan ? `${JSON.stringify(daten.bauplan, null, 2)}\n` : null;
58
+ const auftragNeu = daten.auftrag ? `${daten.auftrag.trim()}\n` : null;
59
+ const nachweisNeu = daten.nachweis && daten.nachweis.trim() ? `${daten.nachweis.trim()}\n` : null;
60
+ const mailDateien = (daten.mails ?? []).map((m) => ({
61
+ pfad: path.join(wurzel, 'arkven', 'mails', `${m.key}.md`),
62
+ rel: `arkven/mails/${m.key}.md`,
63
+ inhalt: m.datei,
64
+ }));
65
+ if (!bauplanNeu && !auftragNeu && !nachweisNeu && mailDateien.length === 0) {
66
+ opts.sage('Arkven hat zu diesem Projekt weder Bauplan noch Auftrag.');
67
+ if (opts.nurDeklaration)
68
+ return { code: 0 };
69
+ const nurCode = await holeCode(wurzel, server, zugang.cliToken, projekt, opts);
70
+ if (nurCode.grund)
71
+ opts.sage(nurCode.grund);
72
+ if (nurCode.geschrieben > 0)
73
+ opts.sage(`Geschrieben: ${nurCode.geschrieben} Datei(en).`);
74
+ await holeDokumente(wurzel, server, zugang.cliToken, opts);
75
+ return { code: nurCode.code };
76
+ }
77
+ const bauplanPfad = path.join(wurzel, BAUPLAN_DATEI);
78
+ const auftragPfad = path.join(wurzel, AUFTRAG_DATEI);
79
+ const nachweisPfad = path.join(wurzel, NACHWEIS_DATEI);
80
+ const bauplanAlt = lies(bauplanPfad);
81
+ const auftragAlt = lies(auftragPfad);
82
+ const nachweisAlt = lies(nachweisPfad);
83
+ const aenderungen = [];
84
+ if (bauplanNeu && bauplanNeu !== bauplanAlt) {
85
+ aenderungen.push(` ${BAUPLAN_DATEI} ${bauplanAlt === null ? 'wird angelegt' : 'wird überschrieben'}`);
86
+ }
87
+ for (const m of mailDateien) {
88
+ const vorher = lies(m.pfad);
89
+ if (m.inhalt !== vorher)
90
+ aenderungen.push(` ${m.rel} ${vorher === null ? 'wird angelegt' : 'wird überschrieben'}`);
91
+ }
92
+ if (auftragNeu && auftragNeu !== auftragAlt) {
93
+ aenderungen.push(` ${AUFTRAG_DATEI} ${auftragAlt === null ? 'wird angelegt' : 'wird überschrieben'}`);
94
+ }
95
+ if (nachweisNeu && nachweisNeu !== nachweisAlt) {
96
+ aenderungen.push(` ${NACHWEIS_DATEI} ${nachweisAlt === null ? 'wird angelegt' : 'wird überschrieben'} (gerechnet, geht nie zurück)`);
97
+ }
98
+ opts.sage(`Bauplan aus Arkven (${projekt}), Version ${daten.version ?? 0}${daten.status ? `, ${daten.status}` : ''}` +
99
+ `${daten.stand ? `, Stand ${daten.stand}` : ''}.`);
100
+ if (daten.befunde?.length) {
101
+ opts.sage('');
102
+ opts.sage(`Die Datei ${daten.datei ?? BAUPLAN_DATEI} in Arkven ist gerade nicht lesbar:`);
103
+ for (const b of daten.befunde) {
104
+ opts.sage(` - ${b.text}`);
105
+ opts.sage(` ${b.ausweg}`);
106
+ }
107
+ opts.sage('Was unten steht, ist deshalb der letzte lesbare Stand und nicht der aktuelle.');
108
+ }
109
+ opts.sage('');
110
+ if (aenderungen.length === 0) {
111
+ opts.sage('Deine Dateien sind bereits auf diesem Stand. Es gibt nichts zu schreiben.');
112
+ return { code: 0 };
113
+ }
114
+ for (const z of aenderungen)
115
+ opts.sage(z);
116
+ opts.sage('');
117
+ if (!opts.ja) {
118
+ if (!opts.frage) {
119
+ return {
120
+ code: 1,
121
+ grund: 'Hier lässt sich nicht nachfragen, und ungefragt wird nichts ueberschrieben.\n' +
122
+ 'So kommst du weiter: `arkven pull --yes` bestätigt die Vorschau ohne Rückfrage.',
123
+ };
124
+ }
125
+ const ja = await opts.frage('Diese Dateien schreiben?');
126
+ if (!ja)
127
+ return { code: 0, grund: 'Abgebrochen. Es wurde nichts geschrieben.' };
128
+ }
129
+ if (bauplanNeu && bauplanNeu !== bauplanAlt)
130
+ schreibe(bauplanPfad, bauplanNeu);
131
+ if (auftragNeu && auftragNeu !== auftragAlt)
132
+ schreibe(auftragPfad, auftragNeu);
133
+ if (nachweisNeu && nachweisNeu !== nachweisAlt)
134
+ schreibe(nachweisPfad, nachweisNeu);
135
+ for (const m of mailDateien)
136
+ if (m.inhalt !== lies(m.pfad))
137
+ schreibe(m.pfad, m.inhalt);
138
+ opts.sage(`Geschrieben: ${aenderungen.length} Datei(en).`);
139
+ if (opts.nurDeklaration)
140
+ return { code: 0 };
141
+ const code = await holeCode(wurzel, server, zugang.cliToken, projekt, opts);
142
+ if (code.grund)
143
+ opts.sage(code.grund);
144
+ if (code.geschrieben > 0)
145
+ opts.sage(`Geschrieben: ${code.geschrieben} Code-Datei(en).`);
146
+ await holeDokumente(wurzel, server, zugang.cliToken, opts);
147
+ return { code: code.code };
148
+ }
149
+ async function holeDokumente(wurzel, server, token, opts) {
150
+ let res;
151
+ try {
152
+ res = await fetch(`${server}/api/dms/documents`, { headers: { authorization: `Bearer ${token}` } });
153
+ }
154
+ catch {
155
+ opts.sage('Die Dokumente liessen sich nicht holen (Arkven war nicht erreichbar). Der Rest ist geschrieben.');
156
+ return;
157
+ }
158
+ if (res.status === 403) {
159
+ opts.sage('');
160
+ opts.sage('Dokumente ausgelassen: dieser Zugang deckt den Bereich „Dokumente" nicht ab.');
161
+ opts.sage('So kommst du weiter: unter „Zugänge" einen Zugang anlegen, der ihn enthält. Alles Übrige ist geschrieben.');
162
+ return;
163
+ }
164
+ if (!res.ok) {
165
+ opts.sage(`Dokumente ausgelassen: Arkven antwortete mit Status ${res.status}. Alles Übrige ist geschrieben.`);
166
+ return;
167
+ }
168
+ const antwort = (await res.json().catch(() => ({})));
169
+ const dokumente = antwort.documents ?? antwort.items ?? [];
170
+ if (dokumente.length === 0) {
171
+ opts.sage('Zu diesem Team liegen keine Dokumente in Arkven.');
172
+ return;
173
+ }
174
+ const geschrieben = [];
175
+ for (const d of dokumente) {
176
+ if (!d.id || typeof d.content !== 'string')
177
+ continue;
178
+ const stamm = (d.title ?? d.id).replace(/[^a-zA-Z0-9äöüÄÖÜß _-]/g, '').trim().slice(0, 60) || d.id;
179
+ const rel = `arkven/dokumente/${stamm} (${d.id}).md`;
180
+ const pfad = path.join(wurzel, rel);
181
+ const inhalt = `${d.content.trim()}\n`;
182
+ if (lies(pfad) === inhalt)
183
+ continue;
184
+ schreibe(pfad, inhalt);
185
+ geschrieben.push(rel);
186
+ }
187
+ if (geschrieben.length === 0) {
188
+ opts.sage(`Dokumente: ${dokumente.length} geprüft, alle bereits auf diesem Stand.`);
189
+ return;
190
+ }
191
+ opts.sage(`Geschrieben: ${geschrieben.length} Dokument(e) nach arkven/dokumente/.`);
192
+ }
193
+ async function holeCode(wurzel, server, token, projekt, opts) {
194
+ let daten;
195
+ try {
196
+ const res = await fetch(`${server}/api/projekte/${encodeURIComponent(projekt)}/code`, {
197
+ headers: { authorization: `Bearer ${token}` },
198
+ });
199
+ daten = (await res.json().catch(() => ({})));
200
+ if (!res.ok) {
201
+ const grund = [daten.error, daten.ausweg].filter(Boolean).join(WEITER);
202
+ return { code: 1, grund: grund || `Arkven antwortete mit Status ${res.status}.`, geschrieben: 0 };
203
+ }
204
+ }
205
+ catch (e) {
206
+ return { code: 1, grund: `Arkven war nicht erreichbar: ${String(e?.message ?? e)}`, geschrieben: 0 };
207
+ }
208
+ if (daten.grund) {
209
+ opts.sage(daten.grund);
210
+ return { code: 0, geschrieben: 0 };
211
+ }
212
+ ergaenzeDeklaration(wurzel, daten, opts);
213
+ const verz = leseVerzeichnisse(wurzel);
214
+ if (!verz.ok)
215
+ return { code: 1, grund: verz.grund, geschrieben: 0 };
216
+ const plan = planeAblage(wurzel, daten, verz.verzeichnisse);
217
+ opts.sage('');
218
+ opts.sage(`Code aus Arkven: ${(daten.oberflaeche ?? []).length} Datei(en) Oberfläche, ${(daten.server ?? []).length} Server` +
219
+ (daten.rev ? ` (Stand ${String(daten.rev).slice(0, 8)})` : ''));
220
+ for (const z of vorschauText(plan))
221
+ opts.sage(z);
222
+ if (plan.schreiben.length === 0)
223
+ return { code: 0, geschrieben: 0 };
224
+ opts.sage('');
225
+ if (!opts.ja) {
226
+ if (!opts.frage) {
227
+ return {
228
+ code: 1,
229
+ grund: ['Hier lässt sich nicht nachfragen, und ungefragt wird nichts überschrieben.', 'So kommst du weiter: `arkven pull --yes` bestätigt die Vorschau ohne Rückfrage.'].join(ZEILENENDE),
230
+ geschrieben: 0,
231
+ };
232
+ }
233
+ if (!(await opts.frage('Diese Dateien schreiben?'))) {
234
+ return { code: 0, grund: 'Abgebrochen. Es wurde nichts geschrieben.', geschrieben: 0 };
235
+ }
236
+ }
237
+ return { code: 0, geschrieben: schreibeAblage(wurzel, plan) };
238
+ }
239
+ async function klaereProjekt(server, token, teams, opts) {
240
+ const genannt = opts.projektId?.trim();
241
+ if (genannt)
242
+ return { ok: true, id: genannt };
243
+ const liste = await holeProjekte(server, token, teams);
244
+ if (!liste.ok)
245
+ return { ok: false, grund: liste.grund };
246
+ for (const z of liste.unerreichbar)
247
+ opts.sage(`Nicht erreicht: ${z}`);
248
+ const zeilen = zeilenFuer(liste.projekte);
249
+ if (!opts.frageText) {
250
+ return {
251
+ ok: false,
252
+ grund: ['Dieser Ordner kennt noch kein Projekt, und hier laesst sich nicht nachfragen.',
253
+ 'So kommst du weiter: `arkven pull --projekt=<kennung>`. Zur Wahl stehen:', '', ...zeilen].join(ZEILENENDE),
254
+ };
255
+ }
256
+ opts.sage('Dieser Ordner kennt noch kein Projekt. Deine Projekte:');
257
+ opts.sage('');
258
+ for (const z of zeilen)
259
+ opts.sage(z);
260
+ opts.sage('');
261
+ const antwort = await opts.frageText(`Welches Projekt? [1-${liste.projekte.length}]`);
262
+ const gewaehlt = waehle(liste.projekte, antwort);
263
+ if (!gewaehlt) {
264
+ return {
265
+ ok: false,
266
+ grund: `Das ist keines der ${liste.projekte.length} Projekte: ${antwort.trim()}` +
267
+ WEITER +
268
+ 'die Nummer aus der Liste eingeben, oder `arkven pull --projekt=<kennung>`.',
269
+ };
270
+ }
271
+ return { ok: true, id: gewaehlt.id };
272
+ }
273
+ function ergaenzeDeklaration(wurzel, daten, opts) {
274
+ const gelesen = leseVerzeichnisse(wurzel);
275
+ if (gelesen.ok && (gelesen.verzeichnisse.server || gelesen.verzeichnisse.frontend))
276
+ return;
277
+ const eigene = (daten.oberflaeche ?? []).find((d) => d.path === DATEI || d.path === `/${DATEI}`);
278
+ if (!eigene)
279
+ return;
280
+ const pfad = path.join(wurzel, DATEI);
281
+ if (lies(pfad) === eigene.content)
282
+ return;
283
+ schreibe(pfad, eigene.content);
284
+ opts.sage(`${DATEI} kommt aus dem Projekt: dort steht, wo Server und Oberflaeche liegen.`);
285
+ let genannt;
286
+ try {
287
+ genannt = JSON.parse(eigene.content).verzeichnisse;
288
+ }
289
+ catch {
290
+ return;
291
+ }
292
+ if (!genannt || typeof genannt !== 'object')
293
+ return;
294
+ for (const wert of Object.values(genannt)) {
295
+ const rel = typeof wert === 'string' ? wert.trim() : '';
296
+ if (!rel || rel.startsWith('/') || rel.includes('..') || rel.includes(':'))
297
+ continue;
298
+ fs.mkdirSync(path.join(wurzel, rel), { recursive: true });
299
+ }
300
+ }
301
+ //# sourceMappingURL=pull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../src/pull.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Vorschau } from './form.js';
2
+ import { Sammlung } from './sammeln.js';
3
+ import { Teile } from './verzeichnisse.js';
4
+ export declare function zaehlZeile(v: Vorschau): string[];
5
+ export declare function konfliktZeilen(v: Vorschau): string[];
6
+ export declare function ausgelassenZeile(s: Sammlung): string | undefined;
7
+ export declare function berichteTeile(teile: Teile, sage: (zeile: string) => void): void;
8
+ //# sourceMappingURL=bericht.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bericht.d.ts","sourceRoot":"","sources":["../../src/push/bericht.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAS,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAQ,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAEhD,wBAAgB,UAAU,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,CAOhD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,CAepD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAShE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAoC/E"}
@@ -0,0 +1,85 @@
1
+ import { DATEI } from './sammeln.js';
2
+ export function zaehlZeile(v) {
3
+ const z = [];
4
+ if (v.neu.length)
5
+ z.push(` ${String(v.neu.length).padStart(4)} neu (in deinem Verzeichnis, in Arkven noch nicht)`);
6
+ if (v.aktualisiert.length)
7
+ z.push(` ${String(v.aktualisiert.length).padStart(4)} aktualisiert (du hast sie geändert, Arkven nicht)`);
8
+ if (v.unberuehrt.length)
9
+ z.push(` ${String(v.unberuehrt.length).padStart(4)} unberührt (in Arkven ändert sich daran nichts)`);
10
+ if (v.konflikte.length)
11
+ z.push(` ${String(v.konflikte.length).padStart(4)} Konflikt (beide Seiten geändert)`);
12
+ return z;
13
+ }
14
+ export function konfliktZeilen(v) {
15
+ const nach = new Map((v.stellen ?? []).map((s) => [s.pfad, s]));
16
+ const z = ['Diese Dateien haben beide Seiten geändert:'];
17
+ for (const pfad of v.konflikte.slice(0, 10)) {
18
+ const s = nach.get(pfad);
19
+ if (!s) {
20
+ z.push(` ${pfad}`);
21
+ continue;
22
+ }
23
+ z.push(` ${pfad} · ab Zeile ${s.zeile}`);
24
+ z.push(` in Arkven: ${s.gespeichert}`);
25
+ z.push(` bei dir: ${s.neu}`);
26
+ }
27
+ if (v.konflikte.length > 10)
28
+ z.push(` und ${v.konflikte.length - 10} weitere`);
29
+ return z;
30
+ }
31
+ export function ausgelassenZeile(s) {
32
+ const rest = [];
33
+ if (s.ausgelassen.erzeugt)
34
+ rest.push(`${s.ausgelassen.erzeugt} erzeugte Ordner`);
35
+ if (s.ausgelassen.versteckt)
36
+ rest.push(`${s.ausgelassen.versteckt} versteckte Einträge (auch .env und .git)`);
37
+ if (s.ausgelassen.binaer)
38
+ rest.push(`${s.ausgelassen.binaer} Binaerdatei(en)`);
39
+ if (s.ausgelassen.zuGross.length)
40
+ rest.push(`${s.ausgelassen.zuGross.length} Datei(en) über 1 MB`);
41
+ if (s.ausgelassen.andererTeil)
42
+ rest.push(`${s.ausgelassen.andererTeil} Eintrag/Eintraege des anderen Teils`);
43
+ if (s.ausgelassen.bericht)
44
+ rest.push(`${s.ausgelassen.bericht} Bericht(e) aus Arkven (arkven/nachweis.md wird gerechnet, nicht gelesen)`);
45
+ return rest.length ? `Bewusst nicht dabei: ${rest.join(', ')}.` : undefined;
46
+ }
47
+ export function berichteTeile(teile, sage) {
48
+ const beispiele = (teil, ausser) => {
49
+ const pfade = teil.sammlung.dateien.map((d) => d.pfad).filter((p) => !ausser.includes(p));
50
+ const gewaehlt = pfade.slice(0, 2);
51
+ const tief = pfade.find((p) => p.includes('/') && !gewaehlt.includes(p));
52
+ if (tief)
53
+ gewaehlt.push(tief);
54
+ return gewaehlt;
55
+ };
56
+ const zeigen = (teil, praefixZiel, ausser = []) => {
57
+ const her = teil.unter ? `${teil.unter}/` : './';
58
+ const zeilen = beispiele(teil, ausser);
59
+ sage('');
60
+ sage(` ${teil.ziel}`);
61
+ sage(` aus ${her} · ${teil.sammlung.dateien.length} Datei(en) · ${her}<pfad> geht nach ${praefixZiel}<pfad>`);
62
+ for (const p of zeilen)
63
+ sage(` ${her}${p} -> ${praefixZiel}${p}`);
64
+ const weitere = teil.sammlung.dateien.length - zeilen.length - ausser.length;
65
+ if (weitere > 0)
66
+ sage(` … und ${weitere} weitere nach derselben Regel`);
67
+ const rest = ausgelassenZeile(teil.sammlung);
68
+ if (rest)
69
+ sage(` ${rest}`);
70
+ };
71
+ sage(`${DATEI} nennt zwei Teile, deshalb geht dieses Projekt getrennt an seine beiden Orte:`);
72
+ zeigen(teile.app, '/', teile.deklarationMitgereist ? [DATEI] : []);
73
+ if (teile.server)
74
+ zeigen(teile.server, '');
75
+ if (teile.deklarationMitgereist) {
76
+ sage('');
77
+ sage(` ${DATEI} reist mit dem Frontend-Teil (als /${DATEI}): der Bau liest deine Angaben dort.`);
78
+ }
79
+ if (teile.liegenGeblieben.length > 0) {
80
+ sage('');
81
+ sage(` Außerhalb der beiden Teile bleibt liegen: ${teile.liegenGeblieben.join(', ')}`);
82
+ sage(' Braucht ein Teil davon etwas, muss es innerhalb seines Verzeichnisses liegen.');
83
+ }
84
+ }
85
+ //# sourceMappingURL=bericht.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bericht.js","sourceRoot":"","sources":["../../src/push/bericht.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ export declare const AUSGESCHLOSSEN: Set<string>;
2
+ export declare const BEGLEIT_DATEIEN: readonly ["arkven/bauplan.json", "arkven/auftrag.md"];
3
+ export declare const MAIL_ORDNER = "arkven/mails";
4
+ export declare const NUR_AUSGABE: Set<string>;
5
+ export declare const MAX_DATEI_BYTES: number;
6
+ export interface PushOptionen {
7
+ sage(zeile: string): void;
8
+ frage?: (text: string) => Promise<boolean>;
9
+ frageText?: (text: string) => Promise<string>;
10
+ ja: boolean;
11
+ deploy: boolean;
12
+ server?: string;
13
+ name?: string;
14
+ team?: string;
15
+ test?: {
16
+ abstandMs: number;
17
+ deadlineMs: number;
18
+ };
19
+ }
20
+ export interface PushErgebnis {
21
+ code: number;
22
+ projekt?: string;
23
+ grund?: string;
24
+ }
25
+ export interface Stelle {
26
+ pfad: string;
27
+ zeile: number;
28
+ gespeichert: string;
29
+ neu: string;
30
+ zeilen?: {
31
+ gespeichert: number;
32
+ neu: number;
33
+ };
34
+ ohneBasis?: boolean;
35
+ }
36
+ export interface Vorschau {
37
+ neu: string[];
38
+ aktualisiert: string[];
39
+ unberuehrt: string[];
40
+ konflikte: string[];
41
+ stellen?: Stelle[];
42
+ }
43
+ export interface ImportAntwort {
44
+ ok?: boolean;
45
+ projekt?: string | null;
46
+ name?: string;
47
+ angelegt?: boolean;
48
+ uebernommen?: boolean;
49
+ dateien?: number;
50
+ serverDateien?: number | null;
51
+ vorschau?: Vorschau;
52
+ serverVorschau?: Vorschau | null;
53
+ klartext?: string;
54
+ punkt?: string | null;
55
+ error?: string;
56
+ ausweg?: string;
57
+ regel?: string;
58
+ }
59
+ export interface LaufEreignis {
60
+ type: string;
61
+ message?: string;
62
+ name?: string;
63
+ ok?: boolean;
64
+ details?: string;
65
+ level?: string;
66
+ }
67
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/push/form.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,aAAwE,CAAA;AAEnG,eAAO,MAAM,eAAe,uDAAwD,CAAA;AAEpF,eAAO,MAAM,WAAW,iBAAiB,CAAA;AAEzC,eAAO,MAAM,WAAW,aAAkC,CAAA;AAE1D,eAAO,MAAM,eAAe,QAAc,CAAA;AAE1C,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAEzB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAE1C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAE7C,EAAE,EAAE,OAAO,CAAA;IAEX,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,IAAI,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CACjD;AAED,MAAM,WAAW,YAAY;IAE3B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,EAAE,CAAA;IACb,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,EAAE,MAAM,EAAE,CAAA;IAEnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,cAAc,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
@@ -0,0 +1,6 @@
1
+ export const AUSGESCHLOSSEN = new Set(['node_modules', 'dist', 'build', 'coverage', 'tmp', 'temp']);
2
+ export const BEGLEIT_DATEIEN = ['arkven/bauplan.json', 'arkven/auftrag.md'];
3
+ export const MAIL_ORDNER = 'arkven/mails';
4
+ export const NUR_AUSGABE = new Set(['arkven/nachweis.md']);
5
+ export const MAX_DATEI_BYTES = 1024 * 1024;
6
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/push/form.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;AAEnG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,qBAAqB,EAAE,mBAAmB,CAAU,CAAA;AAEpF,MAAM,CAAC,MAAM,WAAW,GAAG,cAAc,CAAA;AAEzC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;AAE1D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { PushErgebnis, PushOptionen } from './form.js';
2
+ import { Teile } from './verzeichnisse.js';
3
+ export declare function medienHash(daten: Buffer): string;
4
+ export declare function webPfad(pfad: string): string;
5
+ export declare function uebertrageMedien(server: string, token: string, projekt: string, teile: Teile, opts: PushOptionen): Promise<string | undefined>;
6
+ export declare function rolleAus(server: string, token: string, projekt: string, opts: PushOptionen): Promise<PushErgebnis>;
7
+ //# sourceMappingURL=medien.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"medien.d.ts","sourceRoot":"","sources":["../../src/push/medien.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAEpE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG5C;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiE7B;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA+ExH"}