@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.
- package/CHANGELOG.md +105 -0
- package/README.md +304 -0
- package/dist/agents.d.ts +11 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +76 -0
- package/dist/agents.js.map +1 -0
- package/dist/auftrag.d.ts +3 -0
- package/dist/auftrag.d.ts.map +1 -0
- package/dist/auftrag.js +45 -0
- package/dist/auftrag.js.map +1 -0
- package/dist/bauplan.d.ts +15 -0
- package/dist/bauplan.d.ts.map +1 -0
- package/dist/bauplan.js +219 -0
- package/dist/bauplan.js.map +1 -0
- package/dist/befehle.d.ts +12 -0
- package/dist/befehle.d.ts.map +1 -0
- package/dist/befehle.js +77 -0
- package/dist/befehle.js.map +1 -0
- package/dist/befund.d.ts +21 -0
- package/dist/befund.d.ts.map +1 -0
- package/dist/befund.js +107 -0
- package/dist/befund.js.map +1 -0
- package/dist/codeAblage.d.ts +31 -0
- package/dist/codeAblage.d.ts.map +1 -0
- package/dist/codeAblage.js +80 -0
- package/dist/codeAblage.js.map +1 -0
- package/dist/deklaration.d.ts +3 -0
- package/dist/deklaration.d.ts.map +1 -0
- package/dist/deklaration.js +14 -0
- package/dist/deklaration.js.map +1 -0
- package/dist/diff.d.ts +10 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +72 -0
- package/dist/diff.js.map +1 -0
- package/dist/erkennung.d.ts +26 -0
- package/dist/erkennung.d.ts.map +1 -0
- package/dist/erkennung.js +174 -0
- package/dist/erkennung.js.map +1 -0
- package/dist/fix.d.ts +26 -0
- package/dist/fix.d.ts.map +1 -0
- package/dist/fix.js +101 -0
- package/dist/fix.js.map +1 -0
- package/dist/geteilt/bauplan/form.d.ts +100 -0
- package/dist/geteilt/bauplan/form.d.ts.map +1 -0
- package/dist/geteilt/bauplan/form.js +21 -0
- package/dist/geteilt/bauplan/form.js.map +1 -0
- package/dist/geteilt/bauplan/index.d.ts +4 -0
- package/dist/geteilt/bauplan/index.d.ts.map +1 -0
- package/dist/geteilt/bauplan/index.js +4 -0
- package/dist/geteilt/bauplan/index.js.map +1 -0
- package/dist/geteilt/bauplan/lesen.d.ts +6 -0
- package/dist/geteilt/bauplan/lesen.d.ts.map +1 -0
- package/dist/geteilt/bauplan/lesen.js +344 -0
- package/dist/geteilt/bauplan/lesen.js.map +1 -0
- package/dist/geteilt/bauplan/schreiben.d.ts +3 -0
- package/dist/geteilt/bauplan/schreiben.d.ts.map +1 -0
- package/dist/geteilt/bauplan/schreiben.js +80 -0
- package/dist/geteilt/bauplan/schreiben.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +352 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +28 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +324 -0
- package/dist/init.js.map +1 -0
- package/dist/login.d.ts +45 -0
- package/dist/login.d.ts.map +1 -0
- package/dist/login.js +162 -0
- package/dist/login.js.map +1 -0
- package/dist/mcp.d.ts +18 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +115 -0
- package/dist/mcp.js.map +1 -0
- package/dist/neu.d.ts +17 -0
- package/dist/neu.d.ts.map +1 -0
- package/dist/neu.js +118 -0
- package/dist/neu.js.map +1 -0
- package/dist/npmrc.d.ts +9 -0
- package/dist/npmrc.d.ts.map +1 -0
- package/dist/npmrc.js +49 -0
- package/dist/npmrc.js.map +1 -0
- package/dist/projekte.d.ts +23 -0
- package/dist/projekte.d.ts.map +1 -0
- package/dist/projekte.js +82 -0
- package/dist/projekte.js.map +1 -0
- package/dist/pull.d.ts +15 -0
- package/dist/pull.d.ts.map +1 -0
- package/dist/pull.js +301 -0
- package/dist/pull.js.map +1 -0
- package/dist/push/bericht.d.ts +8 -0
- package/dist/push/bericht.d.ts.map +1 -0
- package/dist/push/bericht.js +85 -0
- package/dist/push/bericht.js.map +1 -0
- package/dist/push/form.d.ts +67 -0
- package/dist/push/form.d.ts.map +1 -0
- package/dist/push/form.js +6 -0
- package/dist/push/form.js.map +1 -0
- package/dist/push/medien.d.ts +7 -0
- package/dist/push/medien.d.ts.map +1 -0
- package/dist/push/medien.js +154 -0
- package/dist/push/medien.js.map +1 -0
- package/dist/push/sammeln.d.ts +34 -0
- package/dist/push/sammeln.d.ts.map +1 -0
- package/dist/push/sammeln.js +112 -0
- package/dist/push/sammeln.js.map +1 -0
- package/dist/push/verzeichnisse.d.ts +40 -0
- package/dist/push/verzeichnisse.d.ts.map +1 -0
- package/dist/push/verzeichnisse.js +158 -0
- package/dist/push/verzeichnisse.js.map +1 -0
- package/dist/push.d.ts +8 -0
- package/dist/push.d.ts.map +1 -0
- package/dist/push.js +306 -0
- package/dist/push.js.map +1 -0
- package/dist/starter.d.ts +4 -0
- package/dist/starter.d.ts.map +1 -0
- package/dist/starter.js +587 -0
- package/dist/starter.js.map +1 -0
- package/dist/tiefpruefung.d.ts +39 -0
- package/dist/tiefpruefung.d.ts.map +1 -0
- package/dist/tiefpruefung.js +56 -0
- package/dist/tiefpruefung.js.map +1 -0
- package/dist/vertrag.d.ts +6 -0
- package/dist/vertrag.d.ts.map +1 -0
- package/dist/vertrag.js +267 -0
- package/dist/vertrag.js.map +1 -0
- package/dist/vertragSpaet.d.ts +4 -0
- package/dist/vertragSpaet.d.ts.map +1 -0
- package/dist/vertragSpaet.js +158 -0
- package/dist/vertragSpaet.js.map +1 -0
- package/dist/vorlagen.d.ts +7 -0
- package/dist/vorlagen.d.ts.map +1 -0
- package/dist/vorlagen.js +83 -0
- package/dist/vorlagen.js.map +1 -0
- package/package.json +65 -0
package/dist/bauplan.js
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { pruefeBauplan as pruefeGeteilt, BAUPLAN_DATEI, AUFTRAG_DATEI } from './geteilt/bauplan/index.js';
|
|
4
|
+
export { BAUPLAN_DATEI, AUFTRAG_DATEI };
|
|
5
|
+
export function pruefeBauplan(wurzel) {
|
|
6
|
+
const pfad = path.join(wurzel, BAUPLAN_DATEI);
|
|
7
|
+
let roh;
|
|
8
|
+
try {
|
|
9
|
+
roh = fs.readFileSync(pfad, 'utf8');
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
let geparst;
|
|
15
|
+
try {
|
|
16
|
+
geparst = JSON.parse(roh);
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
return [{
|
|
20
|
+
regel: 'arkven/bauplan-json',
|
|
21
|
+
schwere: 'hinweis',
|
|
22
|
+
titel: `${BAUPLAN_DATEI} ist kein gültiges JSON.`,
|
|
23
|
+
ort: BAUPLAN_DATEI,
|
|
24
|
+
ausweg: `Meist fehlt ein Komma oder eine Klammer. Der Parser sagt: ${String(e?.message ?? e)}`,
|
|
25
|
+
}];
|
|
26
|
+
}
|
|
27
|
+
return pruefeGeteilt(geparst).map((b) => ({
|
|
28
|
+
regel: b.regel,
|
|
29
|
+
schwere: 'hinweis',
|
|
30
|
+
titel: b.text,
|
|
31
|
+
ort: BAUPLAN_DATEI,
|
|
32
|
+
ausweg: b.ausweg,
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
const DIENST_VARIABLEN = {
|
|
36
|
+
mail: ['ARKVEN_MAIL_GATEWAY_URL', 'ARKVEN_MAIL_TOKEN'],
|
|
37
|
+
ki: ['ARKVEN_AI_GATEWAY_URL', 'ARKVEN_AI_TOKEN'],
|
|
38
|
+
zahlungen: ['STRIPE_SECRET', 'STRIPE_SECRET_KEY'],
|
|
39
|
+
karten: ['GOOGLE_MAPS_API_KEY', 'GOOGLE_MAPS_BROWSER_KEY'],
|
|
40
|
+
einbettungen: ['ARKVEN_EMBED_GATEWAY_URL'],
|
|
41
|
+
};
|
|
42
|
+
const DIENST_NAME = {
|
|
43
|
+
mail: 'E-Mail-Versand',
|
|
44
|
+
ki: 'KI-Antworten',
|
|
45
|
+
zahlungen: 'Zahlungen (Stripe)',
|
|
46
|
+
karten: 'Karten und Adressen (Google Maps)',
|
|
47
|
+
einbettungen: 'Textsuche (Einbettungen)',
|
|
48
|
+
};
|
|
49
|
+
function quelltext(wurzel, unter) {
|
|
50
|
+
const teile = [];
|
|
51
|
+
const lauf = (dir, tiefe) => {
|
|
52
|
+
if (tiefe > 10)
|
|
53
|
+
return;
|
|
54
|
+
let eintraege;
|
|
55
|
+
try {
|
|
56
|
+
eintraege = fs.readdirSync(dir, { withFileTypes: true });
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
for (const e of eintraege) {
|
|
62
|
+
if (e.name.startsWith('.') || e.name === 'node_modules' || e.name === 'dist')
|
|
63
|
+
continue;
|
|
64
|
+
const voll = path.join(dir, e.name);
|
|
65
|
+
if (e.isDirectory()) {
|
|
66
|
+
lauf(voll, tiefe + 1);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (!/\.(ts|tsx|js|jsx|mjs|cjs|json|env|yml|yaml)$/i.test(e.name))
|
|
70
|
+
continue;
|
|
71
|
+
try {
|
|
72
|
+
teile.push(fs.readFileSync(voll, 'utf8'));
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
/* unlesbar = nicht gelesen */
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
for (const u of unter)
|
|
80
|
+
lauf(path.join(wurzel, u), 0);
|
|
81
|
+
return teile.join(String.fromCharCode(10));
|
|
82
|
+
}
|
|
83
|
+
export function pruefeBraucht(wurzel, braucht, teile) {
|
|
84
|
+
const namen = Object.keys(braucht).filter((k) => braucht[k]);
|
|
85
|
+
if (namen.length === 0)
|
|
86
|
+
return [];
|
|
87
|
+
const text = quelltext(wurzel, teile.length > 0 ? teile : ['']);
|
|
88
|
+
const befunde = [];
|
|
89
|
+
for (const dienst of namen) {
|
|
90
|
+
const variablen = DIENST_VARIABLEN[dienst];
|
|
91
|
+
if (!variablen)
|
|
92
|
+
continue;
|
|
93
|
+
const belegt = variablen.some((v) => new RegExp(`\\b${v}\\b`).test(text));
|
|
94
|
+
if (belegt)
|
|
95
|
+
continue;
|
|
96
|
+
befunde.push({
|
|
97
|
+
regel: 'arkven/braucht-ohne-beleg',
|
|
98
|
+
schwere: 'hinweis',
|
|
99
|
+
titel: `\`braucht.${dienst}\` ist gesetzt, aber kein Code liest ${variablen[0]}.`,
|
|
100
|
+
ort: 'arkven.json',
|
|
101
|
+
ausweg: `Arkven richtet ${DIENST_NAME[dienst] ?? dienst} trotzdem ein. Das ist richtig, wenn der Code noch kommt. ` +
|
|
102
|
+
`Braucht das Projekt den Dienst nicht, nimm die Zeile heraus.`,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return befunde;
|
|
106
|
+
}
|
|
107
|
+
function naechsterSchluessel(key, arten) {
|
|
108
|
+
const abstand = (a, b) => {
|
|
109
|
+
let zeile = Array.from({ length: b.length + 1 }, (_, i) => i);
|
|
110
|
+
for (let i = 1; i <= a.length; i++) {
|
|
111
|
+
const naechste = new Array(b.length + 1);
|
|
112
|
+
naechste[0] = i;
|
|
113
|
+
for (let j = 1; j <= b.length; j++) {
|
|
114
|
+
const loeschen = (zeile[j] ?? 0) + 1;
|
|
115
|
+
const einfuegen = (naechste[j - 1] ?? 0) + 1;
|
|
116
|
+
const ersetzen = (zeile[j - 1] ?? 0) + (a[i - 1] === b[j - 1] ? 0 : 1);
|
|
117
|
+
naechste[j] = Math.min(loeschen, einfuegen, ersetzen);
|
|
118
|
+
}
|
|
119
|
+
zeile = naechste;
|
|
120
|
+
}
|
|
121
|
+
return zeile[b.length] ?? Number.MAX_SAFE_INTEGER;
|
|
122
|
+
};
|
|
123
|
+
let bester;
|
|
124
|
+
let bestwert = 3;
|
|
125
|
+
for (const k of arten) {
|
|
126
|
+
const d = abstand(key, k);
|
|
127
|
+
if (d < bestwert) {
|
|
128
|
+
bestwert = d;
|
|
129
|
+
bester = k;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return bester;
|
|
133
|
+
}
|
|
134
|
+
export function pruefeMailArten(wurzel, arten) {
|
|
135
|
+
if (arten.length === 0)
|
|
136
|
+
return [];
|
|
137
|
+
const bekannt = new Set(arten);
|
|
138
|
+
const ordner = path.join(wurzel, 'arkven', 'mails');
|
|
139
|
+
let namen;
|
|
140
|
+
try {
|
|
141
|
+
namen = fs.readdirSync(ordner).filter((n) => n.endsWith('.md'));
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return [];
|
|
145
|
+
}
|
|
146
|
+
const befunde = [];
|
|
147
|
+
for (const name of namen) {
|
|
148
|
+
const key = name.slice(0, -'.md'.length);
|
|
149
|
+
if (bekannt.has(key))
|
|
150
|
+
continue;
|
|
151
|
+
const nah = naechsterSchluessel(key, arten);
|
|
152
|
+
befunde.push({
|
|
153
|
+
regel: 'arkven/mail-unbekannt',
|
|
154
|
+
schwere: 'hinweis',
|
|
155
|
+
titel: `„${key}" ist keine Mail-Art, die Arkven kennt.`,
|
|
156
|
+
ort: `arkven/mails/${name}`,
|
|
157
|
+
ausweg: nah
|
|
158
|
+
? `Meintest du „${nah}"? Benenne die Datei um, sonst wird sie nie verschickt.`
|
|
159
|
+
: `Bekannt sind: ${[...arten].sort().join(', ')}.`,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
return befunde;
|
|
163
|
+
}
|
|
164
|
+
export function pruefeAnker(dateien, screens) {
|
|
165
|
+
if (screens.length === 0)
|
|
166
|
+
return [];
|
|
167
|
+
const gefunden = new Map();
|
|
168
|
+
for (const d of dateien) {
|
|
169
|
+
for (const m of d.inhalt.matchAll(/data-arkven-screen\s*=\s*["']([\w-]+)["']/g)) {
|
|
170
|
+
const id = m[1];
|
|
171
|
+
if (!id)
|
|
172
|
+
continue;
|
|
173
|
+
const orte = gefunden.get(id) ?? [];
|
|
174
|
+
orte.push(d.pfad);
|
|
175
|
+
gefunden.set(id, orte);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const befunde = [];
|
|
179
|
+
const bekannt = new Set(screens.map((s) => s.id));
|
|
180
|
+
for (const s of screens) {
|
|
181
|
+
const orte = gefunden.get(s.id);
|
|
182
|
+
if (!orte || orte.length === 0) {
|
|
183
|
+
befunde.push({
|
|
184
|
+
regel: 'arkven/anker-fehlt',
|
|
185
|
+
schwere: 'hinweis',
|
|
186
|
+
titel: `Screen „${s.name}" hat keinen Anker im Code, er gilt damit als nicht gebaut.`,
|
|
187
|
+
...(s.slug ? { ort: s.slug } : {}),
|
|
188
|
+
ausweg: `Setze auf das Wurzelelement der Komponente, die unter „${s.slug ? `/${s.slug}` : s.name}" ` +
|
|
189
|
+
`gerendert wird: data-arkven-screen="${s.id}". Gibt die Komponente ein Fragment (<>) zurück, ` +
|
|
190
|
+
`nimm <div data-arkven-screen="${s.id}" style={{ display: 'contents' }}>. Ein zusätzliches ` +
|
|
191
|
+
'div ohne display:contents bricht Flex- und Grid-Layouts.',
|
|
192
|
+
});
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
if (orte.length > 1) {
|
|
196
|
+
befunde.push({
|
|
197
|
+
regel: 'arkven/anker-doppelt',
|
|
198
|
+
schwere: 'hinweis',
|
|
199
|
+
titel: `Der Anker „${s.id}" (Screen „${s.name}") kommt ${orte.length}-mal vor.`,
|
|
200
|
+
ort: orte[0],
|
|
201
|
+
ausweg: `Je Screen genau einmal. Gefunden in: ${orte.join(', ')}.`,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
for (const [id, orte] of gefunden) {
|
|
206
|
+
if (bekannt.has(id))
|
|
207
|
+
continue;
|
|
208
|
+
befunde.push({
|
|
209
|
+
regel: 'arkven/anker-unbekannt',
|
|
210
|
+
schwere: 'hinweis',
|
|
211
|
+
titel: `Der Anker „${id}" gehört zu keinem Screen des Bauplans.`,
|
|
212
|
+
ort: orte[0],
|
|
213
|
+
ausweg: `Bekannt sind: ${screens.map((s) => `${s.id} (${s.name})`).join(', ')}. ` +
|
|
214
|
+
'Entweder ist es ein Tippfehler, oder der Screen wurde aus dem Bauplan genommen und der Anker blieb stehen.',
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
return befunde;
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=bauplan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bauplan.js","sourceRoot":"","sources":["../src/bauplan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface BefehlsSchalter {
|
|
2
|
+
flagge: string;
|
|
3
|
+
wirkung: string;
|
|
4
|
+
}
|
|
5
|
+
export interface Befehl {
|
|
6
|
+
name: string;
|
|
7
|
+
stelle: string;
|
|
8
|
+
wirkung: string;
|
|
9
|
+
schalter: readonly BefehlsSchalter[];
|
|
10
|
+
}
|
|
11
|
+
export declare const BEFEHLE: readonly Befehl[];
|
|
12
|
+
//# sourceMappingURL=befehle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"befehle.d.ts","sourceRoot":"","sources":["../src/befehle.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,eAAe;IAE9B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,MAAM;IAErB,IAAI,EAAE,MAAM,CAAA;IAEZ,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAA;CACrC;AAED,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EA6E3B,CAAA"}
|
package/dist/befehle.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export const BEFEHLE = [
|
|
2
|
+
{
|
|
3
|
+
name: 'new',
|
|
4
|
+
stelle: '<name>',
|
|
5
|
+
wirkung: 'Legt ein neues Projekt an, das den Container-Vertrag schon erfüllt',
|
|
6
|
+
schalter: [],
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
name: 'init',
|
|
10
|
+
stelle: '[verzeichnis]',
|
|
11
|
+
wirkung: 'Erkennt, was das Projekt mitbringt, und schreibt arkven.json',
|
|
12
|
+
schalter: [{ flagge: '--apply', wirkung: 'Übernimmt die vorgeschlagenen Dateien gesammelt' }],
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'check',
|
|
16
|
+
stelle: '[verzeichnis]',
|
|
17
|
+
wirkung: 'Prüft das Projekt gegen den Container-Vertrag',
|
|
18
|
+
schalter: [
|
|
19
|
+
{ flagge: '--tief', wirkung: 'Lässt die Gates der Plattform mitlaufen (braucht Anmeldung)' },
|
|
20
|
+
{ flagge: '--json', wirkung: 'Maschinenlesbar, mit stabilen Regel-Kennungen' },
|
|
21
|
+
{ flagge: '--sarif', wirkung: 'SARIF 2.1.0 für GitHub Code-Scanning, VS Code und CI' },
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'auftrag',
|
|
26
|
+
stelle: '[verzeichnis]',
|
|
27
|
+
wirkung: 'Gibt die Arbeitsanweisung aus, ohne etwas zu tun',
|
|
28
|
+
schalter: [],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'fix',
|
|
32
|
+
stelle: '[verzeichnis]',
|
|
33
|
+
wirkung: 'Übergibt sie dem lokalen Claude Code und misst danach erneut',
|
|
34
|
+
schalter: [{ flagge: '--runden N', wirkung: 'Höchstens N Durchgänge (Standard 3)' }],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'login',
|
|
38
|
+
stelle: '',
|
|
39
|
+
wirkung: 'Meldet diesen Rechner an deinem Arkven-Konto an',
|
|
40
|
+
schalter: [
|
|
41
|
+
{ flagge: '--server=<adresse>', wirkung: 'Andere Arkven-Adresse (Standard: https://app.arkven.de)' },
|
|
42
|
+
{ flagge: '--einfuegen', wirkung: 'Wert von der Bestätigungsseite einfügen (wenn dieser Rechner den Server nicht erreicht)' },
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'pull',
|
|
47
|
+
stelle: '[verzeichnis]',
|
|
48
|
+
wirkung: 'Holt den Stand aus Arkven zurück: Code (Backend und Frontend), dazu Bauplan, Auftrag, ' +
|
|
49
|
+
'Nachweis, eigene Mail-Vorlagen und die Dokumente des Teams (nach arkven/dokumente/)',
|
|
50
|
+
schalter: [
|
|
51
|
+
{ flagge: '--yes', wirkung: 'Bestätigt die Vorschau ohne Rückfrage' },
|
|
52
|
+
{ flagge: '--nur-deklaration', wirkung: 'Ohne Code, nur Bauplan, Auftrag, Nachweis, Mail-Vorlagen' },
|
|
53
|
+
{ flagge: '--projekt=<kennung>', wirkung: 'Nennt das Projekt. Ohne diese Angabe zeigt pull deine Projekte zur Auswahl' },
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'push',
|
|
58
|
+
stelle: '[verzeichnis]',
|
|
59
|
+
wirkung: 'Zeigt erst, was passieren würde, und stellt es dann online',
|
|
60
|
+
schalter: [
|
|
61
|
+
{ flagge: '--yes', wirkung: 'Bestätigt die Vorschau ohne Rückfrage (für CI und Agenten)' },
|
|
62
|
+
{ flagge: '--deploy', wirkung: 'Rollt nach der Übernahme aus und zeigt den Lauf' },
|
|
63
|
+
{ flagge: '--name=<name>', wirkung: 'Anzeigename beim ersten Mal (sonst: der name aus der package.json, sonst der Name der Projektwurzel; steht keiner fest, wird gefragt)' },
|
|
64
|
+
{ flagge: '--server=<adresse>', wirkung: 'Andere Arkven-Adresse' },
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'mcp',
|
|
69
|
+
stelle: '',
|
|
70
|
+
wirkung: 'Meldet check, auftrag und pull als MCP-Werkzeuge an (stdio). Hinter keinem steht eigener ' +
|
|
71
|
+
'Code: es sind dieselben Funktionen wie oben. push ist bewusst NICHT dabei.',
|
|
72
|
+
schalter: [],
|
|
73
|
+
},
|
|
74
|
+
{ name: 'version', stelle: '', wirkung: 'Fassung anzeigen', schalter: [] },
|
|
75
|
+
{ name: 'help', stelle: '', wirkung: 'Diese Übersicht', schalter: [] },
|
|
76
|
+
];
|
|
77
|
+
//# sourceMappingURL=befehle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"befehle.js","sourceRoot":"","sources":["../src/befehle.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,OAAO,GAAsB;IACxC;QACE,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,oEAAoE;QAC7E,QAAQ,EAAE,EAAE;KACb;IACD;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,eAAe;QACvB,OAAO,EAAE,8DAA8D;QACvE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC;KAC9F;IACD;QACE,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,eAAe;QACvB,OAAO,EAAE,+CAA+C;QACxD,QAAQ,EAAE;YACR,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,6DAA6D,EAAE;YAC5F,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,+CAA+C,EAAE;YAC9E,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,sDAAsD,EAAE;SACvF;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,eAAe;QACvB,OAAO,EAAE,kDAAkD;QAC3D,QAAQ,EAAE,EAAE;KACb;IACD;QACE,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,eAAe;QACvB,OAAO,EAAE,8DAA8D;QACvE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC;KACrF;IACD;QACE,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,iDAAiD;QAC1D,QAAQ,EAAE;YACR,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,yDAAyD,EAAE;YACpG,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,yFAAyF,EAAE;SAC9H;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,eAAe;QACvB,OAAO,EACL,wFAAwF;YACxF,qFAAqF;QACvF,QAAQ,EAAE;YACR,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,uCAAuC,EAAE;YACrE,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,0DAA0D,EAAE;YACpG,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,4EAA4E,EAAE;SACzH;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,eAAe;QACvB,OAAO,EAAE,4DAA4D;QACrE,QAAQ,EAAE;YACR,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,4DAA4D,EAAE;YAC1F,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,iDAAiD,EAAE;YAClF,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,uIAAuI,EAAE;YAC7K,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,uBAAuB,EAAE;SACnE;KACF;IACD;QACE,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,EAAE;QACV,OAAO,EACL,2FAA2F;YAC3F,4EAA4E;QAC9E,QAAQ,EAAE,EAAE;KACb;IACD,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1E,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,EAAE;CAC9D,CAAA"}
|
package/dist/befund.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type Schwere = 'vertrag' | 'hinweis' | 'ungeprueft';
|
|
2
|
+
export interface Befund {
|
|
3
|
+
regel: string;
|
|
4
|
+
schwere: Schwere;
|
|
5
|
+
titel: string;
|
|
6
|
+
ort?: string;
|
|
7
|
+
ausweg: string;
|
|
8
|
+
verweis?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function fuerAgenten(befunde: Befund[]): Befund[];
|
|
11
|
+
export declare function fuerAgentenZusaetzlich(befunde: Befund[]): Befund[];
|
|
12
|
+
export interface Ergebnis {
|
|
13
|
+
befunde: Befund[];
|
|
14
|
+
gehalten: string[];
|
|
15
|
+
projekt: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function exitCode(e: Ergebnis): number;
|
|
18
|
+
export declare function alsText(e: Ergebnis): string;
|
|
19
|
+
export declare function alsJson(e: Ergebnis): string;
|
|
20
|
+
export declare function alsSarif(e: Ergebnis, fassung?: string): string;
|
|
21
|
+
//# sourceMappingURL=befund.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"befund.d.ts","sourceRoot":"","sources":["../src/befund.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAA;AAE1D,MAAM,WAAW,MAAM;IAErB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAEhB,KAAK,EAAE,MAAM,CAAA;IAEb,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ,MAAM,EAAE,MAAM,CAAA;IAEd,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEvD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAElE;AAED,MAAM,WAAW,QAAQ;IAEvB,OAAO,EAAE,MAAM,EAAE,CAAA;IAEjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAElB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAG5C;AAID,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CA2B3C;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAE3C;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CA2E9D"}
|
package/dist/befund.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
export function fuerAgenten(befunde) {
|
|
2
|
+
return befunde.filter((b) => b.schwere === 'vertrag' && !b.verweis);
|
|
3
|
+
}
|
|
4
|
+
export function fuerAgentenZusaetzlich(befunde) {
|
|
5
|
+
return befunde.filter((b) => b.schwere === 'hinweis' && !b.verweis);
|
|
6
|
+
}
|
|
7
|
+
export function exitCode(e) {
|
|
8
|
+
if (e.gehalten.length === 0 && e.befunde.every((b) => b.schwere === 'ungeprueft'))
|
|
9
|
+
return 2;
|
|
10
|
+
return e.befunde.some((b) => b.schwere === 'vertrag') ? 1 : 0;
|
|
11
|
+
}
|
|
12
|
+
const ZEICHEN = { vertrag: 'x', hinweis: '!', ungeprueft: '?' };
|
|
13
|
+
export function alsText(e) {
|
|
14
|
+
const z = [`Prüfe ${e.projekt}`, ''];
|
|
15
|
+
if (e.befunde.length === 0) {
|
|
16
|
+
z.push(`Alles gehalten. ${e.gehalten.length} Punkt(e) geprüft.`, '');
|
|
17
|
+
z.push('Was dieser Lauf NICHT geprüft hat: die Gates der Plattform und die Verhaltens-Proben.');
|
|
18
|
+
z.push('Sie laufen beim Veröffentlichen. Nächster Schritt: `arkven push --deploy`.');
|
|
19
|
+
return z.join('\n');
|
|
20
|
+
}
|
|
21
|
+
for (const b of e.befunde) {
|
|
22
|
+
z.push(`${ZEICHEN[b.schwere]} ${b.regel}${b.ort ? `\t${b.ort}` : ''}`);
|
|
23
|
+
z.push(` ${b.titel}`);
|
|
24
|
+
z.push(` So kommst du weiter: ${b.ausweg}`, '');
|
|
25
|
+
}
|
|
26
|
+
const vertrag = e.befunde.filter((b) => b.schwere === 'vertrag').length;
|
|
27
|
+
const hinweise = e.befunde.filter((b) => b.schwere === 'hinweis').length;
|
|
28
|
+
const offen = e.befunde.filter((b) => b.schwere === 'ungeprueft').length;
|
|
29
|
+
z.push(`${e.gehalten.length} gehalten, ${vertrag} blockierend, ${hinweise} Hinweis(e), ${offen} nicht geprüft.`, '');
|
|
30
|
+
z.push(vertrag > 0
|
|
31
|
+
? 'Die blockierenden Punkte zuerst: ohne sie startet der Container nicht. Danach erneut `arkven check`.'
|
|
32
|
+
: 'Nichts blockiert. Nächster Schritt: `arkven push --deploy`.');
|
|
33
|
+
return z.join('\n');
|
|
34
|
+
}
|
|
35
|
+
export function alsJson(e) {
|
|
36
|
+
return JSON.stringify({ projekt: e.projekt, gehalten: e.gehalten, befunde: e.befunde }, null, 2);
|
|
37
|
+
}
|
|
38
|
+
export function alsSarif(e, fassung) {
|
|
39
|
+
const stufe = { vertrag: 'error', hinweis: 'warning', ungeprueft: 'none' };
|
|
40
|
+
const artDesUrteils = { vertrag: 'fail', hinweis: 'fail', ungeprueft: 'open' };
|
|
41
|
+
const regeln = [];
|
|
42
|
+
const platz = new Map();
|
|
43
|
+
const merke = (regel, titel, ausweg, schwere) => {
|
|
44
|
+
const da = platz.get(regel);
|
|
45
|
+
if (da !== undefined)
|
|
46
|
+
return da;
|
|
47
|
+
platz.set(regel, regeln.length);
|
|
48
|
+
regeln.push({ id: regel, titel, ausweg, schwere });
|
|
49
|
+
return regeln.length - 1;
|
|
50
|
+
};
|
|
51
|
+
for (const b of e.befunde)
|
|
52
|
+
merke(b.regel, b.titel, b.ausweg, b.schwere);
|
|
53
|
+
for (const r of e.gehalten)
|
|
54
|
+
merke(r, `${r} wird eingehalten.`, 'Nichts zu tun.', 'hinweis');
|
|
55
|
+
const ortsAngabe = (ort) => {
|
|
56
|
+
const m = /^(.*?):(\d+)$/.exec(ort);
|
|
57
|
+
const datei = (m ? (m[1] ?? ort) : ort).replace(/^\.?\//, '');
|
|
58
|
+
return {
|
|
59
|
+
physicalLocation: {
|
|
60
|
+
artifactLocation: { uri: datei },
|
|
61
|
+
...(m ? { region: { startLine: Number(m[2]) } } : {}),
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
const ergebnisse = [
|
|
66
|
+
...e.befunde.map((b) => ({
|
|
67
|
+
ruleId: b.regel,
|
|
68
|
+
ruleIndex: platz.get(b.regel) ?? 0,
|
|
69
|
+
level: stufe[b.schwere],
|
|
70
|
+
kind: artDesUrteils[b.schwere],
|
|
71
|
+
message: { text: `${b.titel} So kommst du weiter: ${b.ausweg}` },
|
|
72
|
+
...(b.ort ? { locations: [ortsAngabe(b.ort)] } : {}),
|
|
73
|
+
})),
|
|
74
|
+
...e.gehalten.map((r) => ({
|
|
75
|
+
ruleId: r,
|
|
76
|
+
ruleIndex: platz.get(r) ?? 0,
|
|
77
|
+
level: 'none',
|
|
78
|
+
kind: 'pass',
|
|
79
|
+
message: { text: `${r} wird eingehalten.` },
|
|
80
|
+
})),
|
|
81
|
+
];
|
|
82
|
+
return JSON.stringify({
|
|
83
|
+
$schema: 'https://json.schemastore.org/sarif-2.1.0.json',
|
|
84
|
+
version: '2.1.0',
|
|
85
|
+
runs: [
|
|
86
|
+
{
|
|
87
|
+
tool: {
|
|
88
|
+
driver: {
|
|
89
|
+
name: 'Arkven',
|
|
90
|
+
informationUri: 'https://arkven.de',
|
|
91
|
+
...(fassung ? { version: fassung } : {}),
|
|
92
|
+
rules: regeln.map((r) => ({
|
|
93
|
+
id: r.id,
|
|
94
|
+
name: r.id.replace(/^arkven\//, ''),
|
|
95
|
+
shortDescription: { text: r.titel },
|
|
96
|
+
help: { text: r.ausweg },
|
|
97
|
+
defaultConfiguration: { level: stufe[r.schwere] },
|
|
98
|
+
})),
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
originalUriBaseIds: { PROJEKT: { uri: 'file:///' } },
|
|
102
|
+
results: ergebnisse,
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
}, null, 2);
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=befund.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"befund.js","sourceRoot":"","sources":["../src/befund.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,WAAW,CAAC,OAAiB;IAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAiB;IACtD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AACrE,CAAC;AAWD,MAAM,UAAU,QAAQ,CAAC,CAAW;IAClC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC;QAAE,OAAO,CAAC,CAAA;IAC3F,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/D,CAAC;AAED,MAAM,OAAO,GAA4B,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;AAExF,MAAM,UAAU,OAAO,CAAC,CAAW;IACjC,MAAM,CAAC,GAAa,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;IAE9C,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,MAAM,oBAAoB,EAAE,EAAE,CAAC,CAAA;QACpE,CAAC,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAA;QAC/F,CAAC,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAA;QACpF,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACvE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QACvB,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,MAAM,CAAA;IACvE,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,MAAM,CAAA;IACxE,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC,MAAM,CAAA;IAExE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,cAAc,OAAO,iBAAiB,QAAQ,gBAAgB,KAAK,iBAAiB,EAAE,EAAE,CAAC,CAAA;IACpH,CAAC,CAAC,IAAI,CACJ,OAAO,GAAG,CAAC;QACT,CAAC,CAAC,sGAAsG;QACxG,CAAC,CAAC,6DAA6D,CAClE,CAAA;IACD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAW;IACjC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAClG,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAW,EAAE,OAAgB;IACpD,MAAM,KAAK,GAA4B,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;IACnG,MAAM,aAAa,GAA4B,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;IAEvG,MAAM,MAAM,GAA2E,EAAE,CAAA;IACzF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;IACvC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,MAAc,EAAE,OAAgB,EAAU,EAAE;QACvF,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC3B,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,EAAE,CAAA;QAC/B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;QAClD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAA;IAED,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;QAAE,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;IACvE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;QAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAA;IAE3F,MAAM,UAAU,GAAG,CAAC,GAAW,EAA2B,EAAE;QAC1D,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC7D,OAAO;YACL,gBAAgB,EAAE;gBAChB,gBAAgB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;gBAChC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtD;SACF,CAAA;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG;QACjB,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,MAAM,EAAE,CAAC,CAAC,KAAK;YACf,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAClC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YACvB,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;YAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,yBAAyB,CAAC,CAAC,MAAM,EAAE,EAAE;YAChE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrD,CAAC,CAAC;QACH,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5B,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,oBAAoB,EAAE;SAC5C,CAAC,CAAC;KACJ,CAAA;IAED,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,OAAO,EAAE,+CAA+C;QACxD,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE;YACJ;gBACE,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,cAAc,EAAE,mBAAmB;wBACnC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACxC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BACxB,EAAE,EAAE,CAAC,CAAC,EAAE;4BACR,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;4BACnC,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE;4BACnC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;4BACxB,oBAAoB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;yBAClD,CAAC,CAAC;qBACJ;iBACF;gBAED,kBAAkB,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE;gBACpD,OAAO,EAAE,UAAU;aACpB;SACF;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface CodeDatei {
|
|
2
|
+
path: string;
|
|
3
|
+
content: string;
|
|
4
|
+
}
|
|
5
|
+
export interface CodeAntwort {
|
|
6
|
+
rev?: string | null;
|
|
7
|
+
oberflaeche?: CodeDatei[];
|
|
8
|
+
server?: CodeDatei[];
|
|
9
|
+
grund?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface Verzeichnisse {
|
|
12
|
+
server?: string;
|
|
13
|
+
frontend?: string;
|
|
14
|
+
}
|
|
15
|
+
export type Art = 'neu' | 'ueberschrieben' | 'unveraendert';
|
|
16
|
+
export interface Vorhaben {
|
|
17
|
+
rel: string;
|
|
18
|
+
inhalt: string;
|
|
19
|
+
art: Art;
|
|
20
|
+
}
|
|
21
|
+
export interface AblagePlan {
|
|
22
|
+
schreiben: Vorhaben[];
|
|
23
|
+
unveraendert: number;
|
|
24
|
+
nurLokal: string[];
|
|
25
|
+
}
|
|
26
|
+
export declare function ausDerWurzel(rel: string): boolean;
|
|
27
|
+
export declare function zielPfad(datei: CodeDatei, verzeichnisse: Verzeichnisse): string;
|
|
28
|
+
export declare function planeAblage(wurzel: string, antwort: CodeAntwort, verzeichnisse: Verzeichnisse, vorhanden?: (abs: string) => string | undefined): AblagePlan;
|
|
29
|
+
export declare function vorschauText(plan: AblagePlan, hoechstens?: number): string[];
|
|
30
|
+
export declare function schreibeAblage(wurzel: string, plan: AblagePlan): number;
|
|
31
|
+
//# sourceMappingURL=codeAblage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeAblage.d.ts","sourceRoot":"","sources":["../src/codeAblage.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,WAAW,CAAC,EAAE,SAAS,EAAE,CAAA;IACzB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,GAAG,GAAG,KAAK,GAAG,gBAAgB,GAAG,cAAc,CAAA;AAE3D,MAAM,WAAW,QAAQ;IAEvB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;CACT;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IAEpB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAMD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIjD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,GAAG,MAAM,CAQ/E;AAUD,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,aAAa,EAC5B,SAAS,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAqB,GACzD,UAAU,CAmBZ;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,SAAK,GAAG,MAAM,EAAE,CAyBxE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAOvE"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { BEGLEIT_DATEIEN, MAIL_ORDNER } from './push/form.js';
|
|
4
|
+
import { DATEI } from './push/sammeln.js';
|
|
5
|
+
const OHNE_SERVER = (p) => p.replace(/^\/?server\//, '');
|
|
6
|
+
const roh = (p) => p.replace(/^\/+/, '');
|
|
7
|
+
export function ausDerWurzel(rel) {
|
|
8
|
+
if (rel === DATEI)
|
|
9
|
+
return true;
|
|
10
|
+
if (BEGLEIT_DATEIEN.includes(rel))
|
|
11
|
+
return true;
|
|
12
|
+
return rel.startsWith(MAIL_ORDNER + '/') && rel.endsWith('.md');
|
|
13
|
+
}
|
|
14
|
+
export function zielPfad(datei, verzeichnisse) {
|
|
15
|
+
const istServer = /^\/?server\//.test(datei.path);
|
|
16
|
+
if (istServer) {
|
|
17
|
+
return verzeichnisse.server ? `${verzeichnisse.server}/${OHNE_SERVER(datei.path)}` : roh(datei.path);
|
|
18
|
+
}
|
|
19
|
+
if (ausDerWurzel(roh(datei.path)))
|
|
20
|
+
return roh(datei.path);
|
|
21
|
+
return verzeichnisse.frontend ? `${verzeichnisse.frontend}/${roh(datei.path)}` : roh(datei.path);
|
|
22
|
+
}
|
|
23
|
+
function liesLokal(abs) {
|
|
24
|
+
try {
|
|
25
|
+
return fs.readFileSync(abs, 'utf8');
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function planeAblage(wurzel, antwort, verzeichnisse, vorhanden = liesLokal) {
|
|
32
|
+
const dateien = [...(antwort.oberflaeche ?? []), ...(antwort.server ?? [])];
|
|
33
|
+
const schreiben = [];
|
|
34
|
+
let unveraendert = 0;
|
|
35
|
+
const bekannt = new Set();
|
|
36
|
+
for (const d of dateien) {
|
|
37
|
+
const rel = zielPfad(d, verzeichnisse);
|
|
38
|
+
bekannt.add(rel);
|
|
39
|
+
const alt = vorhanden(path.join(wurzel, rel));
|
|
40
|
+
if (alt === d.content) {
|
|
41
|
+
unveraendert++;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
schreiben.push({ rel, inhalt: d.content, art: alt === undefined ? 'neu' : 'ueberschrieben' });
|
|
45
|
+
}
|
|
46
|
+
schreiben.sort((a, b) => a.rel.localeCompare(b.rel));
|
|
47
|
+
return { schreiben, unveraendert, nurLokal: [] };
|
|
48
|
+
}
|
|
49
|
+
export function vorschauText(plan, hoechstens = 20) {
|
|
50
|
+
const neu = plan.schreiben.filter((v) => v.art === 'neu');
|
|
51
|
+
const drueber = plan.schreiben.filter((v) => v.art === 'ueberschrieben');
|
|
52
|
+
const zeilen = [];
|
|
53
|
+
if (plan.schreiben.length === 0) {
|
|
54
|
+
zeilen.push('Dein Verzeichnis ist bereits auf diesem Stand. Es gibt nichts zu schreiben.');
|
|
55
|
+
return zeilen;
|
|
56
|
+
}
|
|
57
|
+
zeilen.push(`${plan.schreiben.length} Datei(en) würden geschrieben: ${neu.length} neu, ${drueber.length} überschrieben.` +
|
|
58
|
+
(plan.unveraendert > 0 ? ` ${plan.unveraendert} sind bereits gleich.` : ''));
|
|
59
|
+
zeilen.push('');
|
|
60
|
+
for (const v of drueber)
|
|
61
|
+
zeilen.push(` ${v.rel} wird überschrieben`);
|
|
62
|
+
if (drueber.length > 0 && neu.length > 0)
|
|
63
|
+
zeilen.push('');
|
|
64
|
+
const zeigen = neu.slice(0, hoechstens);
|
|
65
|
+
for (const v of zeigen)
|
|
66
|
+
zeilen.push(` ${v.rel} wird angelegt`);
|
|
67
|
+
if (neu.length > zeigen.length) {
|
|
68
|
+
zeilen.push(` … und ${neu.length - zeigen.length} weitere neue Datei(en), die ebenfalls angelegt werden`);
|
|
69
|
+
}
|
|
70
|
+
return zeilen;
|
|
71
|
+
}
|
|
72
|
+
export function schreibeAblage(wurzel, plan) {
|
|
73
|
+
for (const v of plan.schreiben) {
|
|
74
|
+
const abs = path.join(wurzel, v.rel);
|
|
75
|
+
fs.mkdirSync(path.dirname(abs), { recursive: true });
|
|
76
|
+
fs.writeFileSync(abs, v.inhalt, 'utf8');
|
|
77
|
+
}
|
|
78
|
+
return plan.schreiben.length;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=codeAblage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeAblage.js","sourceRoot":"","sources":["../src/codeAblage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deklaration.d.ts","sourceRoot":"","sources":["../src/deklaration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAIzC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAU5D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { pruefeBauplan, pruefeBraucht } from './bauplan.js';
|
|
2
|
+
import { leseArkvenDatei } from './push.js';
|
|
3
|
+
export function deklarationsBefunde(wurzel) {
|
|
4
|
+
const befunde = pruefeBauplan(wurzel);
|
|
5
|
+
const datei = leseArkvenDatei(wurzel);
|
|
6
|
+
const roh = datei['braucht'];
|
|
7
|
+
const braucht = roh && typeof roh === 'object' && !Array.isArray(roh) ? roh : {};
|
|
8
|
+
const v = datei['verzeichnisse'];
|
|
9
|
+
const verz = v && typeof v === 'object' && !Array.isArray(v) ? v : {};
|
|
10
|
+
const teile = [verz.server, verz.frontend].filter((x) => typeof x === 'string' && x.length > 0);
|
|
11
|
+
befunde.push(...pruefeBraucht(wurzel, braucht, teile));
|
|
12
|
+
return befunde;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=deklaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deklaration.js","sourceRoot":"","sources":["../src/deklaration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IACrC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IACrC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;IAC5B,MAAM,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAA+B,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7G,MAAM,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAA6B,CAAC,CAAC,CAAC,EAAE,CAAA;IAClG,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC5G,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IACtD,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
package/dist/diff.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface DiffZeile {
|
|
2
|
+
art: ' ' | '+' | '-';
|
|
3
|
+
text: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function vergleiche(vorherText: string, nachherText: string): DiffZeile[];
|
|
6
|
+
export declare function alsZeilen(vorher: string, nachher: string, { kontext, hoechstens }?: {
|
|
7
|
+
kontext?: number;
|
|
8
|
+
hoechstens?: number;
|
|
9
|
+
}): string[];
|
|
10
|
+
//# sourceMappingURL=diff.d.ts.map
|