fba-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,434 @@
1
+ import * as yaml from 'js-yaml';
2
+ import ShortUniqueId from 'short-unique-id';
3
+ import * as zlib from 'zlib';
4
+ export const currentFBAFileVersion = '0.7';
5
+ export const rqUriDecode = (rq) => {
6
+ const res = {
7
+ path: '',
8
+ commands: [],
9
+ };
10
+ if (!rq || rq.length === 0) {
11
+ return res;
12
+ }
13
+ const indexOfQ = rq?.indexOf('?');
14
+ if (indexOfQ > 0) {
15
+ res.path = rq.slice(0, indexOfQ + 1); // + '\n'
16
+ const options = rq.slice(indexOfQ + 1);
17
+ const optionArr = options.split('&');
18
+ for (const commandStr of optionArr) {
19
+ const eqIdx = commandStr.indexOf('=');
20
+ const command = commandStr.slice(0, eqIdx);
21
+ const commandParams = decodeURIComponent(commandStr.slice(eqIdx + 1));
22
+ res.commands.push({ cmd: command, param: commandParams });
23
+ }
24
+ }
25
+ else {
26
+ res.path = rq;
27
+ }
28
+ return res;
29
+ };
30
+ export const rqUriEncode = (rq) => {
31
+ let toRet = rq.path;
32
+ if (rq.commands.length > 0) {
33
+ if (!toRet.endsWith('?')) {
34
+ toRet += '?';
35
+ }
36
+ toRet += rq.commands.map((rqCmd) => rqCmd.cmd + '=' + encodeURIComponent(rqCmd.param)).join('&');
37
+ /*
38
+ for (const [idx, rqCmd] of rq.commands.entries()) {
39
+ const cmdStr = rqCmd.cmd + '=' + encodeURIComponent(rqCmd.param)
40
+ if (idx > 0) {
41
+ toRet += '&'
42
+ }
43
+ toRet += cmdStr
44
+ }*/
45
+ }
46
+ return toRet;
47
+ };
48
+ const uid = new ShortUniqueId.default({ length: 8 });
49
+ export function getFBDataFromText(text) {
50
+ // here we do return the data that we pass as data=... to the Fishbone
51
+ // our document is a yaml document.
52
+ // representing a single object with properties:
53
+ // type <- expect "fba"
54
+ // version <- 0.4 (currentFBAFileVersion)
55
+ // title
56
+ // fishbone : array of effect objects
57
+ // attributes
58
+ let yamlObj = undefined;
59
+ if (text.trim().length === 0) {
60
+ yamlObj = {
61
+ type: 'fba',
62
+ version: currentFBAFileVersion,
63
+ title: '<no title>',
64
+ fishbone: [
65
+ {
66
+ fbUid: uid.rnd(),
67
+ name: '<enter effect to analyse>',
68
+ categories: [
69
+ {
70
+ fbUid: uid.rnd(),
71
+ name: 'category 1',
72
+ rootCauses: [],
73
+ },
74
+ ],
75
+ },
76
+ ],
77
+ attributes: [],
78
+ };
79
+ }
80
+ else {
81
+ yamlObj = yaml.load(text, { schema: yaml.JSON_SCHEMA });
82
+ }
83
+ if (typeof yamlObj !== 'object') {
84
+ throw new Error(`content is no 'object' but '${typeof yamlObj}'`);
85
+ }
86
+ // console.log(`getFBDataFromText(len=${text.length}) type=${yamlObj.type}, version=${yamlObj.version}, title=${yamlObj.title}`)
87
+ // convert data from prev. versions?
88
+ const convertv01Effects = (effects) => {
89
+ return effects.map((effectsPair) => {
90
+ return {
91
+ name: effectsPair[0],
92
+ categories: effectsPair[1].map((catPair) => {
93
+ return {
94
+ name: catPair[0],
95
+ rootCauses: catPair[1].map((rootCause) => {
96
+ if (typeof rootCause === 'object' && rootCause.type === 'nested') {
97
+ const newRootCause = { ...rootCause };
98
+ newRootCause.data = convertv01Effects(rootCause.data);
99
+ return newRootCause;
100
+ }
101
+ else {
102
+ return rootCause;
103
+ }
104
+ }),
105
+ };
106
+ }),
107
+ };
108
+ });
109
+ };
110
+ // todo remove duplicate... to async version
111
+ const deepRootCausesForEachNonAsync = (fishbone, parents, fn) => {
112
+ for (const effect of fishbone) {
113
+ const nrCats = effect?.categories?.length;
114
+ if (nrCats > 0) {
115
+ for (let c = 0; c < nrCats; ++c) {
116
+ const category = effect.categories[c];
117
+ let nrRcs = category?.rootCauses?.length;
118
+ if (nrRcs > 0) {
119
+ for (let r = 0; r < nrRcs; ++r) {
120
+ const rc = category.rootCauses[r];
121
+ let modRc = fn(rc, parents); // we call the callback in any case
122
+ if (modRc === undefined) {
123
+ // no change
124
+ modRc = rc;
125
+ }
126
+ else if (modRc === null) {
127
+ // delete this rc.
128
+ category.rootCauses.splice(r, 1);
129
+ --nrRcs;
130
+ modRc = undefined;
131
+ }
132
+ else {
133
+ // update
134
+ category.rootCauses[r] = modRc;
135
+ }
136
+ if (modRc !== undefined) {
137
+ // and if its a nested we do nest automatically:
138
+ if (modRc?.type === 'nested') {
139
+ deepRootCausesForEachNonAsync(modRc.data, [...parents, modRc], fn);
140
+ }
141
+ }
142
+ }
143
+ }
144
+ }
145
+ }
146
+ }
147
+ };
148
+ // convert data from prev. version 0.2
149
+ const convertv02TextFields = (yamlObj) => {
150
+ // we have to modify directly the yamlObj passed: and not return a new obj.
151
+ console.warn(`FBAEditorProvider.convertv02TextFields converting from v02 to v03 ...`);
152
+ // update instructions, backgroundDescription and comments;
153
+ deepRootCausesForEachNonAsync(yamlObj.fishbone, [], (rootCause) => {
154
+ // Updating fields
155
+ try {
156
+ if (rootCause.props && typeof rootCause.props.instructions === 'string') {
157
+ rootCause.props.instructions = { textValue: rootCause.props.instructions };
158
+ }
159
+ if (rootCause.props && typeof rootCause.props.backgroundDescription === 'string') {
160
+ rootCause.props.backgroundDescription = { textValue: rootCause.props.backgroundDescription };
161
+ }
162
+ if (rootCause.props && typeof rootCause.props.comments === 'string') {
163
+ rootCause.props.comments = { textValue: rootCause.props.comments };
164
+ }
165
+ return rootCause;
166
+ }
167
+ catch (e) {
168
+ console.warn(` FBAEditorProvider.convertv02TextFields got error ${e.type}:${e.message} migrating ${JSON.stringify(rootCause)}`);
169
+ return null; // this root cause will be deleted!
170
+ }
171
+ });
172
+ //console.log(`FBAEditorProvider.convertv02TextFields converting from v02 to v03 ... done`)
173
+ yamlObj.version = '0.3';
174
+ };
175
+ // convert data from prev v0.3:
176
+ const convertv03RestParameters = (yamlObj) => {
177
+ // we have to modify directly the yamlObj passed: and not return a new obj.
178
+ console.assert(yamlObj.version === '0.3', `logical error! unexpected version=${yamlObj.version}`);
179
+ if (yamlObj.version === '0.3') {
180
+ //console.warn(`FBAEditorProvider.convertv03RestParameters converting from v03 to v04 ...`)
181
+ const updateSource = (obj) => {
182
+ // old format was as well: source.url=...
183
+ const srcString = typeof obj.source === 'string' ? obj.source : typeof obj.source?.url === 'string' ? obj.source.url : '';
184
+ if (srcString.startsWith('ext:mbehr1.dlt-logs')) {
185
+ // split into the components: path?cmd1=parm1&cmd2=parm2&...
186
+ // parmx needs to be uri encoded
187
+ const indexOfQ = srcString.indexOf('?');
188
+ if (indexOfQ > 0) {
189
+ const commandsNew = [];
190
+ const options = srcString.slice(indexOfQ + 1);
191
+ const optionArr = options.split('&');
192
+ for (const commandStr of optionArr) {
193
+ const eqIdx = commandStr.indexOf('=');
194
+ const command = commandStr.slice(0, eqIdx);
195
+ const commandParams = commandStr.slice(eqIdx + 1);
196
+ commandsNew.push(`${command}=${encodeURIComponent(commandParams)}`);
197
+ }
198
+ const newRequest = `${srcString.slice(0, indexOfQ)}?${commandsNew.join('&')}`;
199
+ //console.warn(` converted (uri encoded)\n ${JSON.stringify(obj)} to .source=\n '${newRequest}'`)
200
+ obj.source = newRequest;
201
+ }
202
+ }
203
+ else {
204
+ if (typeof obj.source !== 'string') {
205
+ // to get rid of the "source.url ones..."
206
+ //console.warn(` converted (.source.url to .source)\n ${JSON.stringify(obj)} to .source=\n '${srcString}'`)
207
+ obj.source = srcString;
208
+ }
209
+ }
210
+ };
211
+ // update all badge.source, badge2.source, filter.source for ext...dlt-logs...
212
+ deepRootCausesForEachNonAsync(yamlObj.fishbone, [], (rc) => {
213
+ try {
214
+ if (rc.type === 'react' && rc.element === 'FBACheckbox' && typeof rc.props === 'object') {
215
+ if ('filter' in rc.props && 'badge' in rc.props.filter) {
216
+ if (!('badge' in rc.props)) {
217
+ rc.props.badge = rc.props.filter.badge;
218
+ delete rc.props.filter['badge'];
219
+ }
220
+ }
221
+ if ('filter' in rc.props && 'badge2' in rc.props.filter) {
222
+ if (!('badge2' in rc.props)) {
223
+ rc.props.badge2 = rc.props.filter.badge2;
224
+ delete rc.props.filter['badge2'];
225
+ }
226
+ }
227
+ if ('badge' in rc.props && 'source' in rc.props.badge) {
228
+ updateSource(rc.props.badge);
229
+ }
230
+ if ('badge2' in rc.props && 'source' in rc.props.badge2) {
231
+ updateSource(rc.props.badge2);
232
+ }
233
+ if ('filter' in rc.props && 'source' in rc.props.filter) {
234
+ updateSource(rc.props.filter);
235
+ }
236
+ // prev. we had filter.apply. -> change it consistently to filter.source as well.
237
+ if ('filter' in rc.props && 'apply' in rc.props.filter) {
238
+ if (!('source' in rc.props.filter)) {
239
+ // if its there already we dont overwrite
240
+ rc.props.filter.source = rc.props.filter.apply;
241
+ updateSource(rc.props.filter);
242
+ }
243
+ else {
244
+ console.warn(` FBAEditorProvider.convertv03RestParameters deleting filter.apply as filter.source already exists while migrating ${JSON.stringify(rc)}`);
245
+ }
246
+ delete rc.props.filter['apply']; // we delete anyhow to cleanup
247
+ }
248
+ return rc;
249
+ }
250
+ return undefined; // no change
251
+ }
252
+ catch (e) {
253
+ console.warn(` FBAEditorProvider.convertv03RestParameters got error ${e.type}:${e.message} migrating ${JSON.stringify(rc)}`);
254
+ return null; // this root cause will be deleted!
255
+ }
256
+ });
257
+ // update all attributes with
258
+ // <key>.dataProvider: {
259
+ // source: 'ext:mbehr1.dlt-logs/get/docs?ecu="${attributes.ecu}"',
260
+ if (Array.isArray(yamlObj.attributes) && yamlObj.attributes.length > 0) {
261
+ yamlObj.attributes.forEach((attr) => {
262
+ const keyObj = attr[Object.keys(attr)[0]];
263
+ if ('dataProvider' in keyObj && 'source' in keyObj.dataProvider) {
264
+ updateSource(keyObj.dataProvider);
265
+ }
266
+ });
267
+ }
268
+ //console.log(`FBAEditorProvider.convertv03RestParameters converting from v03 to v04 ... done`)
269
+ yamlObj.version = '0.4';
270
+ }
271
+ };
272
+ // convert data from prev v0.4: attributes change values to query only for current doc
273
+ const convertv04Attributes = (yamlObj) => {
274
+ if (yamlObj.version === '0.4') {
275
+ //console.warn(`FBAEditorProvider.convertv04Attributes converting from v04 to v05 ...`)
276
+ if (Array.isArray(yamlObj.attributes) && yamlObj.attributes.length > 0) {
277
+ yamlObj.attributes.forEach((attr) => {
278
+ const attrId = Object.keys(attr)[0];
279
+ const keyObj = attr[attrId];
280
+ if ('dataProvider' in keyObj) {
281
+ switch (attrId) {
282
+ case 'ecu':
283
+ keyObj.dataProvider = {
284
+ source: 'ext:mbehr1.dlt-logs/get/docs/0',
285
+ jsonPath: '$.data.attributes.ecus[*].name',
286
+ };
287
+ break;
288
+ case 'sw':
289
+ keyObj.dataProvider = {
290
+ // eslint-disable-next-line no-template-curly-in-string
291
+ source: `ext:mbehr1.dlt-logs/get/docs/0/ecus?ecu=${encodeURIComponent('"${attributes.ecu}"')}`,
292
+ jsonPath: '$.data[*].attributes.sws[*]',
293
+ };
294
+ break;
295
+ case 'lifecycles':
296
+ keyObj.dataProvider = {
297
+ // eslint-disable-next-line no-template-curly-in-string
298
+ source: `ext:mbehr1.dlt-logs/get/docs/0/ecus?ecu=${encodeURIComponent('"${attributes.ecu}"')}`,
299
+ jsonPath: '$.data[*].attributes.lifecycles[*].attributes',
300
+ };
301
+ break;
302
+ default:
303
+ break; // skip
304
+ }
305
+ }
306
+ });
307
+ }
308
+ //console.warn(`FBAEditorProvider.convertv04Attributes converting from v04 to v05 ... done`)
309
+ yamlObj.version = '0.5';
310
+ }
311
+ };
312
+ // convert from prev. known formats:
313
+ if (yamlObj?.version === '0.1') {
314
+ // the effects storage has changed:
315
+ if (yamlObj.fishbone) {
316
+ const fbv02 = convertv01Effects(yamlObj.fishbone);
317
+ console.log(`fbv02=`, fbv02);
318
+ yamlObj.fishbone = fbv02;
319
+ }
320
+ yamlObj.version = '0.2';
321
+ }
322
+ if (yamlObj?.version === '0.2') {
323
+ // the instruction, background and comment field has changed from string to object:
324
+ convertv02TextFields(yamlObj);
325
+ }
326
+ if (yamlObj?.version === '0.3') {
327
+ // uri encoded parameter for dlt-logs rest queries:
328
+ convertv03RestParameters(yamlObj);
329
+ }
330
+ if (yamlObj?.version === '0.4') {
331
+ convertv04Attributes(yamlObj);
332
+ }
333
+ if (yamlObj?.version === '0.5') {
334
+ yamlObj.version = '0.6'; // change from js-yaml lib 3.x to 4.x
335
+ // no further migration needed but to identify files in case of errors we create a backup
336
+ if (yamlObj.backups === undefined) {
337
+ yamlObj.backups = [];
338
+ }
339
+ yamlObj.backups.push({
340
+ date: Date.now(),
341
+ reason: `conversion from v0.5 to v0.6`,
342
+ textDeflated: zlib.deflateSync(text).toString('base64'),
343
+ });
344
+ }
345
+ if (yamlObj?.version === '0.6') {
346
+ //console.warn(`FBAEditorProvider converting from v0.6 to v0.7 ...`)
347
+ try {
348
+ iterateAllFBElements(yamlObj.fishbone, [], (type, elem, parent) => {
349
+ if (typeof elem !== 'object') {
350
+ // some rcs are just strings
351
+ return;
352
+ }
353
+ if (!('fbUid' in elem)) {
354
+ elem.fbUid = uid.rnd();
355
+ }
356
+ });
357
+ if (Array.isArray(yamlObj.attributes) && yamlObj.attributes.length > 0) {
358
+ for (const attr of yamlObj.attributes) {
359
+ if (typeof attr === 'object' && !('fbUid' in attr)) {
360
+ attr.fbUid = uid.rnd();
361
+ }
362
+ }
363
+ }
364
+ if (yamlObj.backups === undefined) {
365
+ yamlObj.backups = [];
366
+ }
367
+ yamlObj.backups.push({
368
+ date: Date.now(),
369
+ reason: `conversion from v0.6 to v0.7`,
370
+ textDeflated: zlib.deflateSync(text).toString('base64'),
371
+ });
372
+ yamlObj.version = '0.7';
373
+ //console.log(`FBAEditorProvider converting from v0.6 to v0.7 done`)
374
+ }
375
+ catch (e) {
376
+ console.error(`FBAEditorProvider converting from v0.6 to v0.7 got error: '${e}'`);
377
+ }
378
+ }
379
+ // we're not forwards compatible.
380
+ if (yamlObj?.version !== currentFBAFileVersion) {
381
+ const msg = `Fishbone: The document uses unknown version ${yamlObj?.version}. Please check whether an extension update is available.`;
382
+ throw new Error(msg);
383
+ }
384
+ return {
385
+ // todo return type and version as well! (will this cause harm?)
386
+ // why not return yamlObj directly?
387
+ attributes: yamlObj?.attributes,
388
+ fishbone: yamlObj.fishbone,
389
+ title: yamlObj.title || '<please add title to .fba>',
390
+ backups: yamlObj.backups || [],
391
+ };
392
+ }
393
+ /// but don't allow delete. callback fn can modify directly
394
+ export const iterateAllFBElements = (fishbone, parents, fn) => {
395
+ for (const effect of fishbone) {
396
+ fn('effect', effect, fishbone);
397
+ if (effect?.categories?.length) {
398
+ for (const category of effect.categories) {
399
+ fn('category', category, effect);
400
+ if (category?.rootCauses?.length) {
401
+ for (const rc of category.rootCauses) {
402
+ fn('rc', rc, category);
403
+ if (rc.type === 'nested') {
404
+ iterateAllFBElements(rc.data, [...parents, rc], fn);
405
+ }
406
+ }
407
+ }
408
+ }
409
+ }
410
+ }
411
+ };
412
+ export function fbaToString(fba) {
413
+ return yaml.dump(fba, { schema: yaml.JSON_SCHEMA, forceQuotes: true });
414
+ }
415
+ /**
416
+ * parse a text as yaml and return the raw object.
417
+ * This is supposed to be a fishbone/fba format but actually
418
+ * does parse yet any yaml.
419
+ *
420
+ * @param text persisted text to parse as fba yaml
421
+ * @returns raw object. no conversions/checks done yet.
422
+ * @throws Error if the text is not valid yaml or not a valid fba
423
+ */
424
+ export function fbaYamlFromText(text) {
425
+ try {
426
+ const fbaYaml = yaml.load(text, { schema: yaml.JSON_SCHEMA });
427
+ return fbaYaml;
428
+ }
429
+ catch (e) {
430
+ console.error(`fbaYamlFromText: Could not parse text. Context is not valid yaml e=${e.name}:${e.message}`);
431
+ throw e;
432
+ }
433
+ }
434
+ //# sourceMappingURL=fbaFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fbaFormat.js","sourceRoot":"","sources":["../src/fbaFormat.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,30 @@
1
+ #! /usr/bin/env node
2
+ /**
3
+ * todos:
4
+ */
5
+ import { Command } from 'commander';
6
+ import { version } from './util.js';
7
+ import { cmdExec } from './cmdExec.js';
8
+ try {
9
+ const program = new Command();
10
+ program
11
+ .name('fba-cli')
12
+ .version(version())
13
+ .description('A CLI (command line interface) to execute FBA (fishbone analysis) files with DLT-logs/adlt')
14
+ .showHelpAfterError();
15
+ program // todo or move to cmdExec?
16
+ .command('exec')
17
+ .description('execute FBA files with DLT-logs')
18
+ .option('-c, --config <config>', 'json config file with object key dlt-logs.plugins')
19
+ .option('-p, --port <port>', 'adlt remote host:port e.g. 127.0.0.1:7777. Otherwise an adlt if in path will be started locally.')
20
+ // .option('-j, --junit <output>', 'junit output filename ')
21
+ .argument('<files...>', 'FBA and DLT files to be processed')
22
+ .action(cmdExec);
23
+ program.parse();
24
+ const options = program.opts();
25
+ // console.log('options:', options)
26
+ }
27
+ catch (e) {
28
+ console.error(`got error:${e}`);
29
+ }
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,IAAI;IACF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAE7B,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,OAAO,CAAC,OAAO,EAAE,CAAC;SAClB,WAAW,CAAC,4FAA4F,CAAC;SACzG,kBAAkB,EAAE,CAAA;IAEvB,OAAO,CAAC,2BAA2B;SAChC,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,uBAAuB,EAAE,mDAAmD,CAAC;SACpF,MAAM,CAAC,mBAAmB,EAAE,kGAAkG,CAAC;QAChI,4DAA4D;SAC3D,QAAQ,CAAC,YAAY,EAAE,mCAAmC,CAAC;SAC3D,MAAM,CAAC,OAAO,CAAC,CAAA;IAElB,OAAO,CAAC,KAAK,EAAE,CAAA;IACf,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IAE9B,mCAAmC;CACpC;AAAC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;CAChC"}