ts2famix 1.4.1 → 2.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.
- package/README.md +1 -1
- package/dist/analyze.js +4 -2
- package/dist/analyze_functions/process_functions.js +248 -100
- package/dist/famix2puml.js +1 -0
- package/dist/famix_functions/EntityDictionary.js +661 -155
- package/dist/famix_functions/helpers_creation.js +26 -6
- package/dist/fqn.js +156 -69
- package/dist/lib/famix/src/famix_JSON_exporter.js +1 -0
- package/dist/lib/famix/src/famix_base_element.js +1 -0
- package/dist/lib/famix/src/famix_repository.js +9 -8
- package/dist/lib/famix/src/index.js +1 -0
- package/dist/lib/famix/src/model/famix/access.js +3 -2
- package/dist/lib/famix/src/model/famix/accessor.js +1 -0
- package/dist/lib/famix/src/model/famix/alias.js +2 -1
- package/dist/lib/famix/src/model/famix/arrowFunction.js +17 -0
- package/dist/lib/famix/src/model/famix/behavioral_entity.js +13 -15
- package/dist/lib/famix/src/model/famix/class.js +1 -0
- package/dist/lib/famix/src/model/famix/comment.js +2 -1
- package/dist/lib/famix/src/model/famix/concretisation.js +31 -0
- package/dist/lib/famix/src/model/famix/container_entity.js +7 -6
- package/dist/lib/famix/src/model/famix/decorator.js +2 -1
- package/dist/lib/famix/src/model/famix/entity.js +1 -0
- package/dist/lib/famix/src/model/famix/enum.js +2 -1
- package/dist/lib/famix/src/model/famix/enum_value.js +2 -1
- package/dist/lib/famix/src/model/famix/function.js +1 -0
- package/dist/lib/famix/src/model/famix/implicit_variable.js +1 -0
- package/dist/lib/famix/src/model/famix/import_clause.js +5 -3
- package/dist/lib/famix/src/model/famix/index.js +18 -11
- package/dist/lib/famix/src/model/famix/indexed_file_anchor.js +3 -2
- package/dist/lib/famix/src/model/famix/inheritance.js +3 -2
- package/dist/lib/famix/src/model/famix/interface.js +2 -1
- package/dist/lib/famix/src/model/famix/invocation.js +3 -2
- package/dist/lib/famix/src/model/famix/method.js +2 -1
- package/dist/lib/famix/src/model/famix/module.js +53 -0
- package/dist/lib/famix/src/model/famix/named_entity.js +4 -3
- package/dist/lib/famix/src/model/famix/parameter.js +2 -1
- package/dist/lib/famix/src/model/famix/parameterConcretisation.js +44 -0
- package/dist/lib/famix/src/model/famix/parameter_type.js +22 -1
- package/dist/lib/famix/src/model/famix/parametric_arrow_function.js +31 -0
- package/dist/lib/famix/src/model/famix/parametric_class.js +44 -0
- package/dist/lib/famix/src/model/famix/parametric_function.js +31 -0
- package/dist/lib/famix/src/model/famix/parametric_interface.js +44 -0
- package/dist/lib/famix/src/model/famix/parametric_method.js +31 -0
- package/dist/lib/famix/src/model/famix/primitive_type.js +1 -0
- package/dist/lib/famix/src/model/famix/property.js +91 -9
- package/dist/lib/famix/src/model/famix/reference.js +3 -2
- package/dist/lib/famix/src/model/famix/scoping_entity.js +12 -10
- package/dist/lib/famix/src/model/famix/script_entity.js +1 -2
- package/dist/lib/famix/src/model/famix/source_anchor.js +1 -0
- package/dist/lib/famix/src/model/famix/source_language.js +1 -1
- package/dist/lib/famix/src/model/famix/sourced_entity.js +2 -1
- package/dist/lib/famix/src/model/famix/structural_entity.js +1 -0
- package/dist/lib/famix/src/model/famix/text_anchor.js +1 -0
- package/dist/lib/famix/src/model/famix/type.js +6 -4
- package/dist/lib/famix/src/model/famix/variable.js +1 -0
- package/dist/lib/ts-complex/cyclomatic-service.js +2 -2
- package/dist/ts2famix-cli-wrapper.js +16 -0
- package/dist/ts2famix-cli.js +8 -1
- package/dist/ts2famix-tsconfig.js +1 -0
- package/doc-uml/famix-typescript-model.puml +559 -0
- package/doc-uml/famix-typescript-model.svg +1 -0
- package/jest.config.json +2 -1
- package/package.json +10 -10
- package/src/analyze.ts +22 -21
- package/src/analyze_functions/process_functions.ts +272 -96
- package/src/famix_functions/EntityDictionary.ts +731 -182
- package/src/famix_functions/helpers_creation.ts +28 -2
- package/src/fqn.ts +132 -10
- package/src/lib/famix/src/famix_repository.ts +9 -9
- package/src/lib/famix/src/model/famix/access.ts +2 -2
- package/src/lib/famix/src/model/famix/alias.ts +1 -1
- package/src/lib/famix/src/model/famix/arrowFunction.ts +15 -0
- package/src/lib/famix/src/model/famix/behavioral_entity.ts +12 -19
- package/src/lib/famix/src/model/famix/comment.ts +1 -1
- package/src/lib/famix/src/model/famix/concretisation.ts +42 -0
- package/src/lib/famix/src/model/famix/container_entity.ts +6 -6
- package/src/lib/famix/src/model/famix/decorator.ts +1 -1
- package/src/lib/famix/src/model/famix/enum.ts +1 -1
- package/src/lib/famix/src/model/famix/enum_value.ts +1 -1
- package/src/lib/famix/src/model/famix/import_clause.ts +4 -3
- package/src/lib/famix/src/model/famix/index.ts +8 -5
- package/src/lib/famix/src/model/famix/indexed_file_anchor.ts +2 -2
- package/src/lib/famix/src/model/famix/inheritance.ts +3 -4
- package/src/lib/famix/src/model/famix/interface.ts +1 -1
- package/src/lib/famix/src/model/famix/invocation.ts +2 -2
- package/src/lib/famix/src/model/famix/method.ts +1 -1
- package/src/lib/famix/src/model/famix/module.ts +67 -1
- package/src/lib/famix/src/model/famix/named_entity.ts +3 -3
- package/src/lib/famix/src/model/famix/parameter.ts +1 -1
- package/src/lib/famix/src/model/famix/parameterConcretisation.ts +54 -0
- package/src/lib/famix/src/model/famix/parameter_type.ts +33 -6
- package/src/lib/famix/src/model/famix/parametric_arrow_function.ts +32 -0
- package/src/lib/famix/src/model/famix/parametric_class.ts +49 -0
- package/src/lib/famix/src/model/famix/parametric_function.ts +32 -0
- package/src/lib/famix/src/model/famix/parametric_interface.ts +49 -0
- package/src/lib/famix/src/model/famix/parametric_method.ts +32 -0
- package/src/lib/famix/src/model/famix/property.ts +109 -11
- package/src/lib/famix/src/model/famix/reference.ts +2 -2
- package/src/lib/famix/src/model/famix/scoping_entity.ts +12 -11
- package/src/lib/famix/src/model/famix/script_entity.ts +0 -2
- package/src/lib/famix/src/model/famix/source_language.ts +0 -1
- package/src/lib/famix/src/model/famix/sourced_entity.ts +1 -1
- package/src/lib/famix/src/model/famix/type.ts +5 -4
- package/src/ts2famix-cli-wrapper.ts +17 -0
- package/src/ts2famix-cli.ts +7 -1
- package/tsconfig.json +5 -5
- package/dist/lib/famix/src/model/famix/association.js +0 -36
- package/dist/lib/famix/src/model/famix/namespace.js +0 -24
- package/dist/lib/famix/src/model/famix/parameterizable_class.js +0 -30
- package/dist/lib/famix/src/model/famix/parameterizable_interface.js +0 -30
- package/dist/lib/famix/src/model/famix/parameterized_type.js +0 -36
- package/doc-uml/metamodel-full.svg +0 -1
- package/doc-uml/metamodel.svg +0 -1
- package/plantuml.jar +0 -0
- package/src/lib/famix/src/model/famix/association.ts +0 -44
- package/src/lib/famix/src/model/famix/namespace.ts +0 -28
- package/src/lib/famix/src/model/famix/parameterizable_class.ts +0 -31
- package/src/lib/famix/src/model/famix/parameterizable_interface.ts +0 -31
- package/src/lib/famix/src/model/famix/parameterized_type.ts +0 -40
package/README.md
CHANGED
|
@@ -106,4 +106,4 @@ ts-node src/famix2puml.ts -i JSONModels/projectName.json -o PUMLModels/projectNa
|
|
|
106
106
|
|
|
107
107
|
The following was generated by CI using [tplant](https://github.com/bafolts/tplant), in a similar fashion described [here](https://modularmoose.org/posts/2021-07-19-automatic-metamodel-documentation-generation).
|
|
108
108
|
|
|
109
|
-

|
package/dist/analyze.js
CHANGED
|
@@ -76,12 +76,13 @@ class Importer {
|
|
|
76
76
|
const classes = processFunctions.classes;
|
|
77
77
|
const interfaces = processFunctions.interfaces;
|
|
78
78
|
const modules = processFunctions.modules;
|
|
79
|
-
const exports = processFunctions.
|
|
79
|
+
const exports = processFunctions.listOfExportMaps;
|
|
80
80
|
processFunctions.processImportClausesForImportEqualsDeclarations(project.getSourceFiles(), exports);
|
|
81
81
|
processFunctions.processImportClausesForModules(modules, exports);
|
|
82
82
|
processFunctions.processAccesses(accesses);
|
|
83
83
|
processFunctions.processInvocations(methodsAndFunctionsWithId);
|
|
84
84
|
processFunctions.processInheritances(classes, interfaces);
|
|
85
|
+
processFunctions.processConcretisations(classes, interfaces, methodsAndFunctionsWithId);
|
|
85
86
|
}
|
|
86
87
|
/**
|
|
87
88
|
* Main method for tests
|
|
@@ -115,7 +116,8 @@ function initFamixRep(project) {
|
|
|
115
116
|
// get compiler options
|
|
116
117
|
const compilerOptions = project.getCompilerOptions();
|
|
117
118
|
// get baseUrl
|
|
118
|
-
const baseUrl = compilerOptions.baseUrl;
|
|
119
|
+
const baseUrl = compilerOptions.baseUrl || ".";
|
|
119
120
|
const absoluteBaseUrl = path_1.default.resolve(baseUrl);
|
|
120
121
|
exports.entityDictionary.famixRep.setAbsolutePath(path_1.default.normalize(absoluteBaseUrl));
|
|
121
122
|
}
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hbmFseXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQW1DO0FBQ25DLHVDQUF5QjtBQUV6QixpQ0FBK0I7QUFDL0Isd0ZBQTBFO0FBQzFFLHlFQUFzRTtBQUN0RSxnREFBd0I7QUFFWCxRQUFBLE1BQU0sR0FBRyxJQUFJLGNBQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkQsUUFBQSxNQUFNLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUN0QyxRQUFBLGdCQUFnQixHQUFHLElBQUksbUNBQWdCLEVBQUUsQ0FBQztBQUV2RDs7R0FFRztBQUNILE1BQWEsUUFBUTtJQUFyQjtRQUVZLFlBQU8sR0FBRyxJQUFJLGtCQUFPLENBQ3pCO1lBQ0ksZUFBZSxFQUFFO2dCQUNiLE9BQU8sRUFBRSxZQUFZO2FBQ3hCO1NBQ0osQ0FDSixDQUFDLENBQUMscURBQXFEO0lBb0Y1RCxDQUFDO0lBbEZHOzs7O09BSUc7SUFDSSxpQkFBaUIsQ0FBQyxLQUFvQjtRQUV6QyxlQUFlO1FBQ2YsY0FBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsTUFBTSxRQUFRLEdBQUcsd0JBQWdCLENBQUMsUUFBUSxDQUFDO1FBQzNDLFdBQVc7UUFDWCx5QkFBeUI7UUFDekIsK0RBQStEO1FBQy9ELCtCQUErQjtRQUMvQiw2QkFBNkI7UUFDN0IsbUJBQW1CO1FBQ25CLFdBQVc7UUFFWCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQU87UUFDM0IsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xHLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztRQUM1QyxNQUFNLHlCQUF5QixHQUFHLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDO1FBQzdFLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztRQUN6QyxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1FBQ3pDLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1FBRWxELGdCQUFnQixDQUFDLCtDQUErQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRyxnQkFBZ0IsQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEUsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDL0QsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFELGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUseUJBQXlCLENBQUMsQ0FBQztJQUU1RixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsOEpBQThKO0lBQ3ZKLGtCQUFrQixDQUFDLFFBQWdCLEVBQUUsTUFBYztRQUN0RCxNQUFNLFFBQVEsR0FBRyxjQUFjLFFBQVEsS0FBSyxDQUFDO1FBRTdDLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU1QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRXBELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksbUJBQW1CLENBQUMsT0FBZ0I7UUFDdkMsOEZBQThGO1FBRTlGLDJEQUEyRDtRQUUzRCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QixPQUFPLHdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUNyQyxDQUFDO0NBRUo7QUE1RkQsNEJBNEZDO0FBRUQsU0FBUyxZQUFZLENBQUMsT0FBZ0I7SUFDbEMsdUJBQXVCO0lBQ3ZCLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBRXJELGNBQWM7SUFDZCxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQztJQUUvQyxNQUFNLGVBQWUsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTlDLHdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsY0FBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0FBQy9FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcInRzLW1vcnBoXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBGYW1peFJlcG9zaXRvcnkgfSBmcm9tIFwiLi9saWIvZmFtaXgvc3JjL2ZhbWl4X3JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gXCJ0c2xvZ1wiO1xuaW1wb3J0ICogYXMgcHJvY2Vzc0Z1bmN0aW9ucyBmcm9tIFwiLi9hbmFseXplX2Z1bmN0aW9ucy9wcm9jZXNzX2Z1bmN0aW9uc1wiO1xuaW1wb3J0IHsgRW50aXR5RGljdGlvbmFyeSB9IGZyb20gXCIuL2ZhbWl4X2Z1bmN0aW9ucy9FbnRpdHlEaWN0aW9uYXJ5XCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5leHBvcnQgY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcih7IG5hbWU6IFwidHMyZmFtaXhcIiwgbWluTGV2ZWw6IDMgfSk7XG5leHBvcnQgY29uc3QgY29uZmlnID0geyBcImV4cGVjdEdyYXBoZW1lc1wiOiBmYWxzZSB9O1xuZXhwb3J0IGNvbnN0IGVudGl0eURpY3Rpb25hcnkgPSBuZXcgRW50aXR5RGljdGlvbmFyeSgpO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBidWlsZCBhIEZhbWl4IG1vZGVsIGZyb20gYSBUeXBlU2NyaXB0IHNvdXJjZSBjb2RlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbXBvcnRlciB7XG5cbiAgICBwcml2YXRlIHByb2plY3QgPSBuZXcgUHJvamVjdChcbiAgICAgICAge1xuICAgICAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgYmFzZVVybDogXCIuL3Rlc3Rfc3JjXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7IC8vIFRoZSBwcm9qZWN0IGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBmaWxlcyB0byBhbmFseXplXG5cbiAgICAvKipcbiAgICAgKiBNYWluIG1ldGhvZFxuICAgICAqIEBwYXJhbSBwYXRocyBBbiBhcnJheSBvZiBwYXRocyB0byB0aGUgc291cmNlIGZpbGVzIHRvIGFuYWx5emVcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggcmVwb3NpdG9yeSBjb250YWluaW5nIHRoZSBGYW1peCBtb2RlbFxuICAgICAqL1xuICAgIHB1YmxpYyBmYW1peFJlcEZyb21QYXRocyhwYXRoczogQXJyYXk8c3RyaW5nPik6IEZhbWl4UmVwb3NpdG9yeSB7XG5cbiAgICAgICAgLy8gICAgICAgIHRyeSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgZmFtaXhSZXBGcm9tUGF0aHM6IHBhdGhzOiAke3BhdGhzfWApO1xuXG4gICAgICAgIHRoaXMucHJvamVjdC5hZGRTb3VyY2VGaWxlc0F0UGF0aHMocGF0aHMpO1xuXG4gICAgICAgIGluaXRGYW1peFJlcCh0aGlzLnByb2plY3QpO1xuXG4gICAgICAgIHRoaXMucHJvY2Vzc0VudGl0aWVzKHRoaXMucHJvamVjdCk7XG5cbiAgICAgICAgY29uc3QgZmFtaXhSZXAgPSBlbnRpdHlEaWN0aW9uYXJ5LmZhbWl4UmVwO1xuICAgICAgICAvLyAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIGxvZ2dlci5lcnJvcihgPiBFUlJPUjogZ290IGV4Y2VwdGlvbiAke2Vycm9yfS4gRXhpdGluZy4uLmApO1xuICAgICAgICAvLyBsb2dnZXIuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIC8vIGxvZ2dlci5lcnJvcihlcnJvci5zdGFjayk7XG4gICAgICAgIC8vIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgLy8gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFtaXhSZXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzRW50aXRpZXMocHJvamVjdCkge1xuICAgICAgICBjb25zdCBvbmx5VHlwZVNjcmlwdEZpbGVzID0gcHJvamVjdC5nZXRTb3VyY2VGaWxlcygpLmZpbHRlcihmID0+IGYuZ2V0RmlsZVBhdGgoKS5lbmRzV2l0aCgnLnRzJykpO1xuICAgICAgICBwcm9jZXNzRnVuY3Rpb25zLnByb2Nlc3NGaWxlcyhvbmx5VHlwZVNjcmlwdEZpbGVzKTtcbiAgICAgICAgY29uc3QgYWNjZXNzZXMgPSBwcm9jZXNzRnVuY3Rpb25zLmFjY2Vzc01hcDtcbiAgICAgICAgY29uc3QgbWV0aG9kc0FuZEZ1bmN0aW9uc1dpdGhJZCA9IHByb2Nlc3NGdW5jdGlvbnMubWV0aG9kc0FuZEZ1bmN0aW9uc1dpdGhJZDtcbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IHByb2Nlc3NGdW5jdGlvbnMuY2xhc3NlcztcbiAgICAgICAgY29uc3QgaW50ZXJmYWNlcyA9IHByb2Nlc3NGdW5jdGlvbnMuaW50ZXJmYWNlcztcbiAgICAgICAgY29uc3QgbW9kdWxlcyA9IHByb2Nlc3NGdW5jdGlvbnMubW9kdWxlcztcbiAgICAgICAgY29uc3QgZXhwb3J0cyA9IHByb2Nlc3NGdW5jdGlvbnMubGlzdE9mRXhwb3J0TWFwcztcblxuICAgICAgICBwcm9jZXNzRnVuY3Rpb25zLnByb2Nlc3NJbXBvcnRDbGF1c2VzRm9ySW1wb3J0RXF1YWxzRGVjbGFyYXRpb25zKHByb2plY3QuZ2V0U291cmNlRmlsZXMoKSwgZXhwb3J0cyk7XG4gICAgICAgIHByb2Nlc3NGdW5jdGlvbnMucHJvY2Vzc0ltcG9ydENsYXVzZXNGb3JNb2R1bGVzKG1vZHVsZXMsIGV4cG9ydHMpO1xuICAgICAgICBwcm9jZXNzRnVuY3Rpb25zLnByb2Nlc3NBY2Nlc3NlcyhhY2Nlc3Nlcyk7XG4gICAgICAgIHByb2Nlc3NGdW5jdGlvbnMucHJvY2Vzc0ludm9jYXRpb25zKG1ldGhvZHNBbmRGdW5jdGlvbnNXaXRoSWQpO1xuICAgICAgICBwcm9jZXNzRnVuY3Rpb25zLnByb2Nlc3NJbmhlcml0YW5jZXMoY2xhc3NlcywgaW50ZXJmYWNlcyk7XG4gICAgICAgIHByb2Nlc3NGdW5jdGlvbnMucHJvY2Vzc0NvbmNyZXRpc2F0aW9ucyhjbGFzc2VzLCBpbnRlcmZhY2VzLCBtZXRob2RzQW5kRnVuY3Rpb25zV2l0aElkKTtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1haW4gbWV0aG9kIGZvciB0ZXN0c1xuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVuYW1lIFRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIGFuYWx5emVcbiAgICAgKiBAcGFyYW0gc291cmNlIEEgVHlwZVNjcmlwdCBzb3VyY2UgY29kZVxuICAgICAqIEByZXR1cm5zIFRoZSBGYW1peCByZXBvc2l0b3J5IGNvbnRhaW5pbmcgdGhlIEZhbWl4IG1vZGVsXG4gICAgICovXG4gICAgLy8gVE9ETzogdGhpcyBpcyBzbG93IGJlY2F1c2UgaXQgd3JpdGVzIHRoZSBzb3VyY2UgY29kZSB0byBhIGZpbGUgYW5kIHRoZW4gcmVhZHMgaXQgYWdhaW4gLSBpdCdzIHBvc3NpYmxlIHRvIGp1c3QgcGFzcyB0aGUgc291cmNlIGNvZGUgdG8gdGhlIHRzLW1vcnBoIHByb2plY3RcbiAgICBwdWJsaWMgZmFtaXhSZXBGcm9tU291cmNlKGZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKTogRmFtaXhSZXBvc2l0b3J5IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBgLi90ZXN0X3NyYy8ke2ZpbGVuYW1lfS50c2A7XG5cbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgc291cmNlLCAndXRmLTgnKTtcblxuICAgICAgICBjb25zdCBmYW1peFJlcCA9IHRoaXMuZmFtaXhSZXBGcm9tUGF0aHMoW2ZpbGVQYXRoXSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbWl4UmVwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1haW4gbWV0aG9kIGZvciBhIHRzLW1vcnBoIHByb2plY3RcbiAgICAgKiBAcGFyYW0gcHJvamVjdCBBIHRzLW1vcnBoIHByb2plY3RcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggcmVwb3NpdG9yeSBjb250YWluaW5nIHRoZSBGYW1peCBtb2RlbFxuICAgICAqL1xuICAgIHB1YmxpYyBmYW1peFJlcEZyb21Qcm9qZWN0KHByb2plY3Q6IFByb2plY3QpOiBGYW1peFJlcG9zaXRvcnkge1xuICAgICAgICAvL2NvbnN0IHNvdXJjZUZpbGVOYW1lcyA9IHByb2plY3QuZ2V0U291cmNlRmlsZXMoKS5tYXAoZiA9PiBmLmdldEZpbGVQYXRoKCkpIGFzIEFycmF5PHN0cmluZz47XG5cbiAgICAgICAgLy9jb25zdCBmYW1peFJlcCA9IHRoaXMuZmFtaXhSZXBGcm9tUGF0aHMoc291cmNlRmlsZU5hbWVzKTtcblxuICAgICAgICBpbml0RmFtaXhSZXAocHJvamVjdCk7XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzRW50aXRpZXMocHJvamVjdCk7XG5cbiAgICAgICAgcmV0dXJuIGVudGl0eURpY3Rpb25hcnkuZmFtaXhSZXA7XG4gICAgfVxuXG59XG5cbmZ1bmN0aW9uIGluaXRGYW1peFJlcChwcm9qZWN0OiBQcm9qZWN0KTogdm9pZCB7XG4gICAgLy8gZ2V0IGNvbXBpbGVyIG9wdGlvbnNcbiAgICBjb25zdCBjb21waWxlck9wdGlvbnMgPSBwcm9qZWN0LmdldENvbXBpbGVyT3B0aW9ucygpO1xuXG4gICAgLy8gZ2V0IGJhc2VVcmxcbiAgICBjb25zdCBiYXNlVXJsID0gY29tcGlsZXJPcHRpb25zLmJhc2VVcmwgfHwgXCIuXCI7XG5cbiAgICBjb25zdCBhYnNvbHV0ZUJhc2VVcmwgPSBwYXRoLnJlc29sdmUoYmFzZVVybCk7XG5cbiAgICBlbnRpdHlEaWN0aW9uYXJ5LmZhbWl4UmVwLnNldEFic29sdXRlUGF0aChwYXRoLm5vcm1hbGl6ZShhYnNvbHV0ZUJhc2VVcmwpKTtcbn1cbiJdfQ==
|