@fyuld/pano 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/assessments/classes/index.d.ts +15 -0
- package/dist/src/assessments/classes/index.d.ts.map +1 -0
- package/dist/src/assessments/classes/index.js +112 -0
- package/dist/src/assessments/classes/index.js.map +1 -0
- package/dist/src/assessments/index-files/index.d.ts +13 -0
- package/dist/src/assessments/index-files/index.d.ts.map +1 -0
- package/dist/src/assessments/index-files/index.js +91 -0
- package/dist/src/assessments/index-files/index.js.map +1 -0
- package/dist/src/assessments/throws/index.d.ts +16 -0
- package/dist/src/assessments/throws/index.d.ts.map +1 -0
- package/dist/src/assessments/throws/index.js +110 -0
- package/dist/src/assessments/throws/index.js.map +1 -0
- package/dist/src/assessments/types/index.d.ts +14 -0
- package/dist/src/assessments/types/index.d.ts.map +1 -0
- package/dist/src/assessments/types/index.js +96 -0
- package/dist/src/assessments/types/index.js.map +1 -0
- package/dist/src/fitness-tests/barrel-purity/index.d.ts +11 -0
- package/dist/src/fitness-tests/barrel-purity/index.d.ts.map +1 -0
- package/dist/src/fitness-tests/barrel-purity/index.js +84 -0
- package/dist/src/fitness-tests/barrel-purity/index.js.map +1 -0
- package/dist/src/fitness-tests/datamodel-encapsulation/index.d.ts +10 -0
- package/dist/src/fitness-tests/datamodel-encapsulation/index.d.ts.map +1 -0
- package/dist/src/fitness-tests/datamodel-encapsulation/index.js +99 -0
- package/dist/src/fitness-tests/datamodel-encapsulation/index.js.map +1 -0
- package/dist/src/fitness-tests/error-factories/index.d.ts +17 -0
- package/dist/src/fitness-tests/error-factories/index.d.ts.map +1 -0
- package/dist/src/fitness-tests/error-factories/index.js +97 -0
- package/dist/src/fitness-tests/error-factories/index.js.map +1 -0
- package/dist/src/fitness-tests/unhelpful-errors/index.d.ts +11 -0
- package/dist/src/fitness-tests/unhelpful-errors/index.d.ts.map +1 -0
- package/dist/src/fitness-tests/unhelpful-errors/index.js +87 -0
- package/dist/src/fitness-tests/unhelpful-errors/index.js.map +1 -0
- package/dist/src/format.d.ts +3 -0
- package/dist/src/format.d.ts.map +1 -0
- package/dist/src/format.js +11 -0
- package/dist/src/format.js.map +1 -0
- package/dist/src/fpou-cli.d.ts +3 -0
- package/dist/src/fpou-cli.d.ts.map +1 -0
- package/dist/src/fpou-cli.js +235 -0
- package/dist/src/fpou-cli.js.map +1 -0
- package/dist/src/languages/gherkin/index.d.ts +2 -0
- package/dist/src/languages/gherkin/index.d.ts.map +1 -0
- package/dist/src/languages/gherkin/index.js +18 -0
- package/dist/src/languages/gherkin/index.js.map +1 -0
- package/dist/src/languages/gherkin/parser.d.ts +3 -0
- package/dist/src/languages/gherkin/parser.d.ts.map +1 -0
- package/dist/src/languages/gherkin/parser.js +11 -0
- package/dist/src/languages/gherkin/parser.js.map +1 -0
- package/dist/src/languages/typescript/comment-classification.d.ts +9 -0
- package/dist/src/languages/typescript/comment-classification.d.ts.map +1 -0
- package/dist/src/languages/typescript/comment-classification.js +45 -0
- package/dist/src/languages/typescript/comment-classification.js.map +1 -0
- package/dist/src/languages/typescript/comments.d.ts +12 -0
- package/dist/src/languages/typescript/comments.d.ts.map +1 -0
- package/dist/src/languages/typescript/comments.js +77 -0
- package/dist/src/languages/typescript/comments.js.map +1 -0
- package/dist/src/languages/typescript/index.d.ts +4 -0
- package/dist/src/languages/typescript/index.d.ts.map +1 -0
- package/dist/src/languages/typescript/index.js +20 -0
- package/dist/src/languages/typescript/index.js.map +1 -0
- package/dist/src/languages/typescript/parser.d.ts +4 -0
- package/dist/src/languages/typescript/parser.d.ts.map +1 -0
- package/dist/src/languages/typescript/parser.js +52 -0
- package/dist/src/languages/typescript/parser.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PlainTextFileFormats } from '@fyuld/ldm';
|
|
2
|
+
export type ConstructorVisibility = 'public' | 'private' | 'protected';
|
|
3
|
+
export type ClassEntry = {
|
|
4
|
+
file: string;
|
|
5
|
+
line: number;
|
|
6
|
+
name: string;
|
|
7
|
+
constructorVisibility?: ConstructorVisibility;
|
|
8
|
+
};
|
|
9
|
+
export type ClassesReport = {
|
|
10
|
+
classes: ClassEntry[];
|
|
11
|
+
};
|
|
12
|
+
export declare const runClassesAssessment: (files: string[], formats: PlainTextFileFormats[], outDir: string) => {
|
|
13
|
+
report: ClassesReport;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/assessments/classes/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAGjD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAA;AAEtE,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAA;CACtB,CAAA;AA4ED,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,EAAE,EACf,SAAS,oBAAoB,EAAE,EAC/B,QAAQ,MAAM,KACb;IAAE,MAAM,EAAE,aAAa,CAAA;CAUzB,CAAA"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.runClassesAssessment = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const ts = __importStar(require("typescript"));
|
|
40
|
+
const typescript_1 = require("../../languages/typescript");
|
|
41
|
+
const visibilityFromConstructor = (cls) => {
|
|
42
|
+
for (const member of cls.members) {
|
|
43
|
+
if (!ts.isConstructorDeclaration(member))
|
|
44
|
+
continue;
|
|
45
|
+
const mods = ts.canHaveModifiers(member)
|
|
46
|
+
? ts.getModifiers(member)
|
|
47
|
+
: undefined;
|
|
48
|
+
if (!mods)
|
|
49
|
+
return 'public';
|
|
50
|
+
for (const mod of mods) {
|
|
51
|
+
if (mod.kind === ts.SyntaxKind.PrivateKeyword)
|
|
52
|
+
return 'private';
|
|
53
|
+
if (mod.kind === ts.SyntaxKind.ProtectedKeyword)
|
|
54
|
+
return 'protected';
|
|
55
|
+
if (mod.kind === ts.SyntaxKind.PublicKeyword)
|
|
56
|
+
return 'public';
|
|
57
|
+
}
|
|
58
|
+
return 'public';
|
|
59
|
+
}
|
|
60
|
+
return undefined;
|
|
61
|
+
};
|
|
62
|
+
const collectClasses = (sourceFile, filePath) => {
|
|
63
|
+
const out = [];
|
|
64
|
+
const visit = (node) => {
|
|
65
|
+
if (ts.isClassDeclaration(node) && node.name) {
|
|
66
|
+
const line = sourceFile.getLineAndCharacterOfPosition(node.name.getStart(sourceFile))
|
|
67
|
+
.line + 1;
|
|
68
|
+
out.push({
|
|
69
|
+
file: filePath,
|
|
70
|
+
line,
|
|
71
|
+
name: node.name.text,
|
|
72
|
+
constructorVisibility: visibilityFromConstructor(node),
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
node.forEachChild(visit);
|
|
76
|
+
};
|
|
77
|
+
visit(sourceFile);
|
|
78
|
+
return out;
|
|
79
|
+
};
|
|
80
|
+
const renderJson = (report) => JSON.stringify(report, null, 2) + '\n';
|
|
81
|
+
const renderCsv = (classes) => [
|
|
82
|
+
'name,file,line,constructorVisibility',
|
|
83
|
+
...classes.map((c) => `${c.name},${c.file},${c.line},${c.constructorVisibility ?? ''}`),
|
|
84
|
+
].join('\n') + '\n';
|
|
85
|
+
const writeReport = (report, formats, outDir) => {
|
|
86
|
+
fs.mkdirSync(outDir, { recursive: true });
|
|
87
|
+
for (const format of formats) {
|
|
88
|
+
const f = format;
|
|
89
|
+
if (f === 'Json') {
|
|
90
|
+
fs.writeFileSync(path.join(outDir, 'classes.json'), renderJson(report));
|
|
91
|
+
}
|
|
92
|
+
else if (f === 'Csv') {
|
|
93
|
+
fs.writeFileSync(path.join(outDir, 'classes.csv'), renderCsv(report.classes));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
throw new Error(`Unknown assessment format: ${f}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
const runClassesAssessment = (files, formats, outDir) => {
|
|
101
|
+
const all = [];
|
|
102
|
+
for (const file of files) {
|
|
103
|
+
const source = fs.readFileSync(file, 'utf-8');
|
|
104
|
+
const sourceFile = (0, typescript_1.parseTypeScript)(source, file);
|
|
105
|
+
all.push(...collectClasses(sourceFile, path.relative(process.cwd(), file)));
|
|
106
|
+
}
|
|
107
|
+
const report = { classes: all };
|
|
108
|
+
writeReport(report, formats, outDir);
|
|
109
|
+
return { report };
|
|
110
|
+
};
|
|
111
|
+
exports.runClassesAssessment = runClassesAssessment;
|
|
112
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/assessments/classes/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PlainTextFileFormats } from '@fyuld/ldm';
|
|
2
|
+
export type IndexFileEntry = {
|
|
3
|
+
file: string;
|
|
4
|
+
impureStatementCount: number;
|
|
5
|
+
};
|
|
6
|
+
export type IndexFilesReport = {
|
|
7
|
+
totalIndexFiles: number;
|
|
8
|
+
violations: IndexFileEntry[];
|
|
9
|
+
};
|
|
10
|
+
export declare const runIndexFilesAssessment: (files: string[], formats: PlainTextFileFormats[], outDir: string) => {
|
|
11
|
+
report: IndexFilesReport;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/assessments/index-files/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAGjD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,cAAc,EAAE,CAAA;CAC7B,CAAA;AA2CD,eAAO,MAAM,uBAAuB,GAClC,OAAO,MAAM,EAAE,EACf,SAAS,oBAAoB,EAAE,EAC/B,QAAQ,MAAM,KACb;IAAE,MAAM,EAAE,gBAAgB,CAAA;CAmB5B,CAAA"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.runIndexFilesAssessment = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const ts = __importStar(require("typescript"));
|
|
40
|
+
const typescript_1 = require("../../languages/typescript");
|
|
41
|
+
const countImpureStatements = (sourceFile) => {
|
|
42
|
+
let n = 0;
|
|
43
|
+
for (const stmt of sourceFile.statements) {
|
|
44
|
+
if (!ts.isExportDeclaration(stmt))
|
|
45
|
+
n++;
|
|
46
|
+
}
|
|
47
|
+
return n;
|
|
48
|
+
};
|
|
49
|
+
const renderJson = (report) => JSON.stringify(report, null, 2) + '\n';
|
|
50
|
+
const renderCsv = (entries) => [
|
|
51
|
+
'file,impureStatementCount',
|
|
52
|
+
...entries.map((e) => `${e.file},${e.impureStatementCount}`),
|
|
53
|
+
].join('\n') + '\n';
|
|
54
|
+
const writeReport = (report, formats, outDir) => {
|
|
55
|
+
fs.mkdirSync(outDir, { recursive: true });
|
|
56
|
+
for (const format of formats) {
|
|
57
|
+
const f = format;
|
|
58
|
+
if (f === 'Json') {
|
|
59
|
+
fs.writeFileSync(path.join(outDir, 'index-files.json'), renderJson(report));
|
|
60
|
+
}
|
|
61
|
+
else if (f === 'Csv') {
|
|
62
|
+
fs.writeFileSync(path.join(outDir, 'index-files.csv'), renderCsv(report.violations));
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
throw new Error(`Unknown assessment format: ${f}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const runIndexFilesAssessment = (files, formats, outDir) => {
|
|
70
|
+
const violations = [];
|
|
71
|
+
let totalIndexFiles = 0;
|
|
72
|
+
for (const file of files) {
|
|
73
|
+
if (path.basename(file) !== 'index.ts')
|
|
74
|
+
continue;
|
|
75
|
+
totalIndexFiles++;
|
|
76
|
+
const source = fs.readFileSync(file, 'utf-8');
|
|
77
|
+
const sourceFile = (0, typescript_1.parseTypeScript)(source, file);
|
|
78
|
+
const impureStatementCount = countImpureStatements(sourceFile);
|
|
79
|
+
if (impureStatementCount > 0) {
|
|
80
|
+
violations.push({
|
|
81
|
+
file: path.relative(process.cwd(), file),
|
|
82
|
+
impureStatementCount,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const report = { totalIndexFiles, violations };
|
|
87
|
+
writeReport(report, formats, outDir);
|
|
88
|
+
return { report };
|
|
89
|
+
};
|
|
90
|
+
exports.runIndexFilesAssessment = runIndexFilesAssessment;
|
|
91
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/assessments/index-files/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PlainTextFileFormats } from '@fyuld/ldm';
|
|
2
|
+
export type ThrowKind = 'new' | 'literal' | 'rethrow' | 'other';
|
|
3
|
+
export type ThrowEntry = {
|
|
4
|
+
file: string;
|
|
5
|
+
line: number;
|
|
6
|
+
kind: ThrowKind;
|
|
7
|
+
className?: string;
|
|
8
|
+
};
|
|
9
|
+
export type ThrowsReport = {
|
|
10
|
+
totalThrows: number;
|
|
11
|
+
throws: ThrowEntry[];
|
|
12
|
+
};
|
|
13
|
+
export declare const runThrowsAssessment: (files: string[], formats: PlainTextFileFormats[], outDir: string) => {
|
|
14
|
+
report: ThrowsReport;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/assessments/throws/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAGjD,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AAE/D,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,SAAS,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,UAAU,EAAE,CAAA;CACrB,CAAA;AA6ED,eAAO,MAAM,mBAAmB,GAC9B,OAAO,MAAM,EAAE,EACf,SAAS,oBAAoB,EAAE,EAC/B,QAAQ,MAAM,KACb;IAAE,MAAM,EAAE,YAAY,CAAA;CAUxB,CAAA"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.runThrowsAssessment = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const ts = __importStar(require("typescript"));
|
|
40
|
+
const typescript_1 = require("../../languages/typescript");
|
|
41
|
+
const classifyThrow = (node) => {
|
|
42
|
+
const expr = node.expression;
|
|
43
|
+
if (ts.isNewExpression(expr)) {
|
|
44
|
+
let className;
|
|
45
|
+
if (ts.isIdentifier(expr.expression)) {
|
|
46
|
+
className = expr.expression.text;
|
|
47
|
+
}
|
|
48
|
+
else if (ts.isPropertyAccessExpression(expr.expression)) {
|
|
49
|
+
className = expr.expression.name.text;
|
|
50
|
+
}
|
|
51
|
+
return { kind: 'new', className };
|
|
52
|
+
}
|
|
53
|
+
if (ts.isIdentifier(expr))
|
|
54
|
+
return { kind: 'rethrow' };
|
|
55
|
+
if (ts.isStringLiteral(expr) ||
|
|
56
|
+
ts.isNumericLiteral(expr) ||
|
|
57
|
+
ts.isObjectLiteralExpression(expr) ||
|
|
58
|
+
ts.isNoSubstitutionTemplateLiteral(expr) ||
|
|
59
|
+
ts.isTemplateExpression(expr)) {
|
|
60
|
+
return { kind: 'literal' };
|
|
61
|
+
}
|
|
62
|
+
return { kind: 'other' };
|
|
63
|
+
};
|
|
64
|
+
const collectThrows = (sourceFile, filePath) => {
|
|
65
|
+
const out = [];
|
|
66
|
+
const visit = (node) => {
|
|
67
|
+
if (ts.isThrowStatement(node)) {
|
|
68
|
+
const { kind, className } = classifyThrow(node);
|
|
69
|
+
const line = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile))
|
|
70
|
+
.line + 1;
|
|
71
|
+
out.push({ file: filePath, line, kind, className });
|
|
72
|
+
}
|
|
73
|
+
node.forEachChild(visit);
|
|
74
|
+
};
|
|
75
|
+
visit(sourceFile);
|
|
76
|
+
return out;
|
|
77
|
+
};
|
|
78
|
+
const renderJson = (report) => JSON.stringify(report, null, 2) + '\n';
|
|
79
|
+
const renderCsv = (throws) => [
|
|
80
|
+
'file,line,kind,className',
|
|
81
|
+
...throws.map((t) => `${t.file},${t.line},${t.kind},${t.className ?? ''}`),
|
|
82
|
+
].join('\n') + '\n';
|
|
83
|
+
const writeReport = (report, formats, outDir) => {
|
|
84
|
+
fs.mkdirSync(outDir, { recursive: true });
|
|
85
|
+
for (const format of formats) {
|
|
86
|
+
const f = format;
|
|
87
|
+
if (f === 'Json') {
|
|
88
|
+
fs.writeFileSync(path.join(outDir, 'throws.json'), renderJson(report));
|
|
89
|
+
}
|
|
90
|
+
else if (f === 'Csv') {
|
|
91
|
+
fs.writeFileSync(path.join(outDir, 'throws.csv'), renderCsv(report.throws));
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
throw new Error(`Unknown assessment format: ${f}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
const runThrowsAssessment = (files, formats, outDir) => {
|
|
99
|
+
const all = [];
|
|
100
|
+
for (const file of files) {
|
|
101
|
+
const source = fs.readFileSync(file, 'utf-8');
|
|
102
|
+
const sourceFile = (0, typescript_1.parseTypeScript)(source, file);
|
|
103
|
+
all.push(...collectThrows(sourceFile, path.relative(process.cwd(), file)));
|
|
104
|
+
}
|
|
105
|
+
const report = { totalThrows: all.length, throws: all };
|
|
106
|
+
writeReport(report, formats, outDir);
|
|
107
|
+
return { report };
|
|
108
|
+
};
|
|
109
|
+
exports.runThrowsAssessment = runThrowsAssessment;
|
|
110
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/assessments/throws/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as ts from 'typescript';
|
|
2
|
+
import { PlainTextFileFormats } from '@fyuld/ldm';
|
|
3
|
+
export type TypeKind = 'enum' | 'type' | 'union' | 'class' | 'interface' | 'function';
|
|
4
|
+
export type TypeEntry = {
|
|
5
|
+
name: string;
|
|
6
|
+
file: string;
|
|
7
|
+
line: number;
|
|
8
|
+
kind: TypeKind;
|
|
9
|
+
};
|
|
10
|
+
export declare const collectTypes: (sourceFile: ts.SourceFile, filePath: string) => TypeEntry[];
|
|
11
|
+
export declare const runTypesAssessment: (files: string[], formats: PlainTextFileFormats[], outDir: string) => {
|
|
12
|
+
entries: TypeEntry[];
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/assessments/types/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAA;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAGjD,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,MAAM,GACN,OAAO,GACP,OAAO,GACP,WAAW,GACX,UAAU,CAAA;AAEd,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;CACf,CAAA;AAED,eAAO,MAAM,YAAY,GACvB,YAAY,EAAE,CAAC,UAAU,EACzB,UAAU,MAAM,KACf,SAAS,EAmBX,CAAA;AAgCD,eAAO,MAAM,kBAAkB,GAC7B,OAAO,MAAM,EAAE,EACf,SAAS,oBAAoB,EAAE,EAC/B,QAAQ,MAAM,KACb;IAAE,OAAO,EAAE,SAAS,EAAE,CAAA;CAWxB,CAAA"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.runTypesAssessment = exports.collectTypes = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const ts = __importStar(require("typescript"));
|
|
40
|
+
const typescript_1 = require("../../languages/typescript");
|
|
41
|
+
const collectTypes = (sourceFile, filePath) => {
|
|
42
|
+
const out = [];
|
|
43
|
+
const push = (name, kind) => {
|
|
44
|
+
const startPos = name.getStart(sourceFile);
|
|
45
|
+
const line = sourceFile.getLineAndCharacterOfPosition(startPos).line + 1;
|
|
46
|
+
out.push({ name: name.text, file: filePath, line, kind });
|
|
47
|
+
};
|
|
48
|
+
const visit = (node) => {
|
|
49
|
+
if (ts.isEnumDeclaration(node))
|
|
50
|
+
push(node.name, 'enum');
|
|
51
|
+
else if (ts.isTypeAliasDeclaration(node))
|
|
52
|
+
push(node.name, ts.isUnionTypeNode(node.type) ? 'union' : 'type');
|
|
53
|
+
else if (ts.isClassDeclaration(node) && node.name)
|
|
54
|
+
push(node.name, 'class');
|
|
55
|
+
else if (ts.isInterfaceDeclaration(node))
|
|
56
|
+
push(node.name, 'interface');
|
|
57
|
+
else if (ts.isFunctionDeclaration(node) && node.name)
|
|
58
|
+
push(node.name, 'function');
|
|
59
|
+
node.forEachChild(visit);
|
|
60
|
+
};
|
|
61
|
+
visit(sourceFile);
|
|
62
|
+
return out;
|
|
63
|
+
};
|
|
64
|
+
exports.collectTypes = collectTypes;
|
|
65
|
+
const renderTypesJson = (entries) => JSON.stringify(entries, null, 2) + '\n';
|
|
66
|
+
const renderTypesCsv = (entries) => [
|
|
67
|
+
'name,file,line,kind',
|
|
68
|
+
...entries.map((e) => `${e.name},${e.file},${e.line},${e.kind}`),
|
|
69
|
+
].join('\n') + '\n';
|
|
70
|
+
const writeTypeReport = (entries, formats, outDir) => {
|
|
71
|
+
fs.mkdirSync(outDir, { recursive: true });
|
|
72
|
+
for (const format of formats) {
|
|
73
|
+
const f = format;
|
|
74
|
+
if (f === 'Json') {
|
|
75
|
+
fs.writeFileSync(path.join(outDir, 'types.json'), renderTypesJson(entries));
|
|
76
|
+
}
|
|
77
|
+
else if (f === 'Csv') {
|
|
78
|
+
fs.writeFileSync(path.join(outDir, 'types.csv'), renderTypesCsv(entries));
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
throw new Error(`Unknown assessment format: ${f}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const runTypesAssessment = (files, formats, outDir) => {
|
|
86
|
+
const entries = [];
|
|
87
|
+
for (const file of files) {
|
|
88
|
+
const source = fs.readFileSync(file, 'utf-8');
|
|
89
|
+
const sourceFile = (0, typescript_1.parseTypeScript)(source, file);
|
|
90
|
+
entries.push(...(0, exports.collectTypes)(sourceFile, path.relative(process.cwd(), file)));
|
|
91
|
+
}
|
|
92
|
+
writeTypeReport(entries, formats, outDir);
|
|
93
|
+
return { entries };
|
|
94
|
+
};
|
|
95
|
+
exports.runTypesAssessment = runTypesAssessment;
|
|
96
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/assessments/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BarrelPurityCriterion, Criterion } from '@fyuld/pandm';
|
|
2
|
+
import { IndexFileEntry } from '../../assessments/index-files';
|
|
3
|
+
export type BarrelPurityResult = {
|
|
4
|
+
absoluteScore: number;
|
|
5
|
+
proportionalScore: number;
|
|
6
|
+
rendered: string;
|
|
7
|
+
violations: IndexFileEntry[];
|
|
8
|
+
};
|
|
9
|
+
export declare const runBarrelPurity: (criterion: BarrelPurityCriterion, indexFilesJson: string, objectiveMarkdown?: string) => BarrelPurityResult;
|
|
10
|
+
export declare const isBarrelPurityCriterion: (c: Criterion) => c is BarrelPurityCriterion;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fitness-tests/barrel-purity/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAiB,MAAM,cAAc,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAoB,MAAM,+BAA+B,CAAA;AAGhF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,cAAc,EAAE,CAAA;CAC7B,CAAA;AA0CD,eAAO,MAAM,eAAe,GAC1B,WAAW,qBAAqB,EAChC,gBAAgB,MAAM,EACtB,oBAAoB,MAAM,KACzB,kBAsBF,CAAA;AAED,eAAO,MAAM,uBAAuB,GAClC,GAAG,SAAS,KACX,CAAC,IAAI,qBAA8D,CAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.isBarrelPurityCriterion = exports.runBarrelPurity = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const pandm_1 = require("@fyuld/pandm");
|
|
40
|
+
const format_1 = require("../../format");
|
|
41
|
+
const isInExemptedDirectory = (filePath, dirs) => {
|
|
42
|
+
const normalized = filePath.split(path.sep).join('/');
|
|
43
|
+
return dirs.some((d) => {
|
|
44
|
+
const dn = d.replace(/^\.\//, '').replace(/\/$/, '');
|
|
45
|
+
return normalized === dn || normalized.startsWith(`${dn}/`);
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
const interpolate = (template, vars) => template.replace(/\{\{(\w+)\}\}/g, (_, key) => vars[key] ?? `{{${key}}}`);
|
|
49
|
+
const render = (criterion, violations, proportionalScore, objectiveMarkdown) => {
|
|
50
|
+
const detailsRendered = interpolate(criterion.details, {});
|
|
51
|
+
const lines = [];
|
|
52
|
+
lines.push((0, format_1.styled)('30;47', criterion.title));
|
|
53
|
+
lines.push(detailsRendered);
|
|
54
|
+
if (objectiveMarkdown) {
|
|
55
|
+
lines.push('');
|
|
56
|
+
lines.push(objectiveMarkdown.trimEnd());
|
|
57
|
+
}
|
|
58
|
+
lines.push('');
|
|
59
|
+
lines.push(`Found ${violations.length} impure barrel file${violations.length === 1 ? '' : 's'}:`);
|
|
60
|
+
for (const v of violations) {
|
|
61
|
+
lines.push(` - ${v.file} (${v.impureStatementCount} impure statement${v.impureStatementCount === 1 ? '' : 's'})`);
|
|
62
|
+
}
|
|
63
|
+
lines.push('');
|
|
64
|
+
lines.push(`Absolute Score: ${violations.length}`);
|
|
65
|
+
lines.push(`Proportional Score: ${(proportionalScore * 100).toFixed(2)}%`);
|
|
66
|
+
return lines.join('\n');
|
|
67
|
+
};
|
|
68
|
+
const runBarrelPurity = (criterion, indexFilesJson, objectiveMarkdown) => {
|
|
69
|
+
const report = JSON.parse(fs.readFileSync(indexFilesJson, 'utf-8'));
|
|
70
|
+
const violations = report.violations.filter((e) => !isInExemptedDirectory(e.file, criterion.exemptedDirectories));
|
|
71
|
+
const proportionalScore = report.totalIndexFiles === 0
|
|
72
|
+
? 0
|
|
73
|
+
: violations.length / report.totalIndexFiles;
|
|
74
|
+
return {
|
|
75
|
+
absoluteScore: violations.length,
|
|
76
|
+
proportionalScore,
|
|
77
|
+
rendered: render(criterion, violations, proportionalScore, objectiveMarkdown),
|
|
78
|
+
violations,
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
exports.runBarrelPurity = runBarrelPurity;
|
|
82
|
+
const isBarrelPurityCriterion = (c) => c.kind === pandm_1.CriterionKind.BarrelPurity;
|
|
83
|
+
exports.isBarrelPurityCriterion = isBarrelPurityCriterion;
|
|
84
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fitness-tests/barrel-purity/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Criterion, DatamodelEncapsulationCriterion } from '@fyuld/pandm';
|
|
2
|
+
import { TypeEntry } from '../../assessments/types';
|
|
3
|
+
export type DatamodelEncapsulationResult = {
|
|
4
|
+
absoluteScore: number;
|
|
5
|
+
rendered: string;
|
|
6
|
+
violations: TypeEntry[];
|
|
7
|
+
};
|
|
8
|
+
export declare const runDatamodelEncapsulation: (criterion: DatamodelEncapsulationCriterion, typesFile: string, objectiveMarkdown?: string) => DatamodelEncapsulationResult;
|
|
9
|
+
export declare const isDatamodelEncapsulationCriterion: (c: Criterion) => c is DatamodelEncapsulationCriterion;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fitness-tests/datamodel-encapsulation/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EAET,+BAA+B,EAEhC,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnD,MAAM,MAAM,4BAA4B,GAAG;IACzC,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,SAAS,EAAE,CAAA;CACxB,CAAA;AAuDD,eAAO,MAAM,yBAAyB,GACpC,WAAW,+BAA+B,EAC1C,WAAW,MAAM,EACjB,oBAAoB,MAAM,KACzB,4BAeF,CAAA;AAED,eAAO,MAAM,iCAAiC,GAC5C,GAAG,SAAS,KACX,CAAC,IAAI,+BACyC,CAAA"}
|