sol2uml 2.1.9 → 2.2.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.
@@ -158,9 +158,23 @@ function convertAST2UmlClasses(node, relativePath, filesystem = false) {
158
158
  else {
159
159
  throw new Error(`AST node not of type SourceUnit`);
160
160
  }
161
- umlClasses.forEach((umlClass) => {
162
- umlClass.imports = imports;
163
- });
161
+ if (umlClasses.length > 0) {
162
+ umlClasses.forEach((umlClass) => {
163
+ umlClass.imports = imports;
164
+ });
165
+ }
166
+ else {
167
+ const importUmlClass = new umlClass_1.UmlClass({
168
+ name: 'Import',
169
+ stereotype: umlClass_1.ClassStereotype.Import,
170
+ absolutePath: filesystem
171
+ ? path.resolve(relativePath) // resolve the absolute path
172
+ : relativePath,
173
+ relativePath,
174
+ });
175
+ importUmlClass.imports = imports;
176
+ umlClasses = [importUmlClass];
177
+ }
164
178
  return umlClasses;
165
179
  }
166
180
  exports.convertAST2UmlClasses = convertAST2UmlClasses;
@@ -265,6 +279,7 @@ function parseContractDefinition(umlClass, node) {
265
279
  stereotype,
266
280
  parameters: parseParameters(subNode.parameters),
267
281
  returnParameters: parseParameters(subNode.returnParameters),
282
+ modifiers: subNode.modifiers.map((m) => m.name),
268
283
  });
269
284
  }
270
285
  // Recursively parse function parameters for associations
@@ -6,8 +6,9 @@ const umlClass_1 = require("./umlClass");
6
6
  const regEx_1 = require("./utils/regEx");
7
7
  const convertClass2Dot = (umlClass, options = {}) => {
8
8
  // do not include library, interface, abstracts, struct or enum classes if hidden
9
- if ((options.hideLibraries &&
10
- umlClass.stereotype === umlClass_1.ClassStereotype.Library) ||
9
+ if (umlClass.stereotype === umlClass_1.ClassStereotype.Import ||
10
+ (options.hideLibraries &&
11
+ umlClass.stereotype === umlClass_1.ClassStereotype.Library) ||
11
12
  (options.hideInterfaces &&
12
13
  umlClass.stereotype === umlClass_1.ClassStereotype.Interface) ||
13
14
  (options.hideAbstracts &&
@@ -175,6 +176,9 @@ const dotOperators = (umlClass, vizGroup, operators, options) => {
175
176
  if (operator.returnParameters?.length > 0) {
176
177
  dotString += ': ' + dotParameters(operator.returnParameters, true);
177
178
  }
179
+ if (options.hideModifiers === false && operator.modifiers?.length > 0) {
180
+ dotString += ` \\<\\<${operator.modifiers.join(', ')}\\>\\>`;
181
+ }
178
182
  dotString += '\\l';
179
183
  }
180
184
  return dotString;
@@ -8,6 +8,7 @@ const axios_1 = __importDefault(require("axios"));
8
8
  const parser_1 = require("@solidity-parser/parser");
9
9
  const converterAST2Classes_1 = require("./converterAST2Classes");
10
10
  const filterClasses_1 = require("./filterClasses");
11
+ require('axios-debug-log');
11
12
  const debug = require('debug')('sol2uml');
12
13
  exports.networks = [
13
14
  'mainnet',
@@ -139,6 +140,7 @@ class EtherscanParser {
139
140
  // find any files that didn't have dependencies found
140
141
  const nonDependentFiles = files.filter((f) => !dependentFilenames.includes(f.filename));
141
142
  const nonDependentFilenames = nonDependentFiles.map((f) => f.filename);
143
+ debug(`Failed to find dependencies to files: ${nonDependentFilenames}`);
142
144
  let solidityCode = '';
143
145
  // output non dependent code before the dependent files just in case sol2uml missed some dependencies
144
146
  const filenames = [...nonDependentFilenames, ...dependentFilenames];
package/lib/sol2uml.js CHANGED
@@ -179,7 +179,7 @@ In order for the merged code to compile, the following is done:
179
179
  }
180
180
  });
181
181
  program.on('option:verbose', () => {
182
- debugControl.enable('sol2uml');
182
+ debugControl.enable('sol2uml,axios');
183
183
  debug('verbose on');
184
184
  });
185
185
  const main = async () => {
package/lib/umlClass.d.ts CHANGED
@@ -13,7 +13,8 @@ export declare enum ClassStereotype {
13
13
  Contract = 4,
14
14
  Struct = 5,
15
15
  Enum = 6,
16
- Constant = 7
16
+ Constant = 7,
17
+ Import = 8
17
18
  }
18
19
  export declare enum OperatorStereotype {
19
20
  None = 0,
@@ -53,6 +54,7 @@ export interface Operator extends Attribute {
53
54
  parameters?: Parameter[];
54
55
  returnParameters?: Parameter[];
55
56
  isPayable?: boolean;
57
+ modifiers?: string[];
56
58
  }
57
59
  export declare enum ReferenceType {
58
60
  Memory = 0,
package/lib/umlClass.js CHANGED
@@ -19,6 +19,7 @@ var ClassStereotype;
19
19
  ClassStereotype[ClassStereotype["Struct"] = 5] = "Struct";
20
20
  ClassStereotype[ClassStereotype["Enum"] = 6] = "Enum";
21
21
  ClassStereotype[ClassStereotype["Constant"] = 7] = "Constant";
22
+ ClassStereotype[ClassStereotype["Import"] = 8] = "Import";
22
23
  })(ClassStereotype = exports.ClassStereotype || (exports.ClassStereotype = {}));
23
24
  var OperatorStereotype;
24
25
  (function (OperatorStereotype) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sol2uml",
3
- "version": "2.1.9",
3
+ "version": "2.2.1",
4
4
  "description": "Solidity contract visualisation tool.",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -22,6 +22,7 @@
22
22
  "@aduh95/viz.js": "^3.7.0",
23
23
  "@solidity-parser/parser": "^0.14.3",
24
24
  "axios": "^0.27.2",
25
+ "axios-debug-log": "^0.8.4",
25
26
  "commander": "^9.4.0",
26
27
  "convert-svg-to-png": "^0.6.4",
27
28
  "debug": "^4.3.4",