circuitscript 0.0.22 → 0.0.25
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/cjs/BaseVisitor.js +487 -0
- package/dist/cjs/SemanticTokenVisitor.js +218 -0
- package/dist/cjs/SymbolValidatorVisitor.js +233 -0
- package/dist/cjs/antlr/CircuitScriptLexer.js +302 -0
- package/dist/cjs/antlr/CircuitScriptParser.js +5128 -0
- package/dist/cjs/antlr/CircuitScriptVisitor.js +7 -0
- package/dist/cjs/draw_symbols.js +819 -0
- package/dist/cjs/execute.js +778 -0
- package/{src/export.ts → dist/cjs/export.js} +34 -56
- package/dist/cjs/fonts.js +4 -0
- package/dist/cjs/geometry.js +450 -0
- package/dist/cjs/globals.js +60 -0
- package/dist/cjs/helpers.js +269 -0
- package/dist/cjs/index.js +31 -0
- package/{src/layout.ts → dist/cjs/layout.js} +421 -1002
- package/dist/cjs/lexer.js +111 -0
- package/dist/cjs/logger.js +17 -0
- package/dist/cjs/main.js +82 -0
- package/dist/cjs/objects/ClassComponent.js +145 -0
- package/dist/cjs/objects/ExecutionScope.js +135 -0
- package/dist/cjs/objects/Frame.js +22 -0
- package/{src/objects/Net.ts → dist/cjs/objects/Net.js} +9 -24
- package/dist/cjs/objects/ParamDefinition.js +42 -0
- package/dist/cjs/objects/PinDefinition.js +31 -0
- package/dist/cjs/objects/PinTypes.js +11 -0
- package/dist/cjs/objects/Wire.js +9 -0
- package/dist/cjs/objects/types.js +15 -0
- package/dist/cjs/parser.js +70 -0
- package/dist/cjs/regenerate-tests.js +23 -0
- package/dist/cjs/render.js +155 -0
- package/{src/server.ts → dist/cjs/server.js} +15 -21
- package/dist/cjs/sizing.js +105 -0
- package/{src/utils.ts → dist/cjs/utils.js} +25 -35
- package/dist/cjs/validate.js +81 -0
- package/dist/cjs/visitor.js +844 -0
- package/dist/esm/BaseVisitor.mjs +488 -0
- package/dist/esm/SemanticTokenVisitor.mjs +215 -0
- package/dist/esm/SymbolValidatorVisitor.mjs +222 -0
- package/dist/esm/antlr/CircuitScriptLexer.mjs +276 -0
- package/dist/esm/antlr/CircuitScriptParser.mjs +5038 -0
- package/{build/src/antlr/CircuitScriptVisitor.js → dist/esm/antlr/CircuitScriptVisitor.mjs} +8 -3
- package/{build/src/draw_symbols.js → dist/esm/draw_symbols.mjs} +78 -33
- package/{build/src/execute.js → dist/esm/execute.mjs} +59 -60
- package/{build/src/export.js → dist/esm/export.mjs} +2 -2
- package/{build/src/geometry.js → dist/esm/geometry.mjs} +31 -15
- package/dist/esm/helpers.mjs +252 -0
- package/dist/esm/index.mjs +15 -0
- package/{build/src/layout.js → dist/esm/layout.mjs} +19 -11
- package/{build/src/lexer.js → dist/esm/lexer.mjs} +10 -10
- package/{build/src/main.js → dist/esm/main.mjs} +9 -14
- package/{build/src/objects/ClassComponent.js → dist/esm/objects/ClassComponent.mjs} +6 -3
- package/{build/src/objects/ExecutionScope.js → dist/esm/objects/ExecutionScope.mjs} +1 -0
- package/{build/src/objects/PinDefinition.js → dist/esm/objects/PinDefinition.mjs} +1 -1
- package/dist/esm/objects/types.mjs +12 -0
- package/dist/esm/parser.mjs +64 -0
- package/{build/src/regenerate-tests.js → dist/esm/regenerate-tests.mjs} +1 -1
- package/{build/src/render.js → dist/esm/render.mjs} +7 -24
- package/{build/src/sizing.js → dist/esm/sizing.mjs} +22 -8
- package/{src/main.ts → dist/esm/validate.mjs} +31 -62
- package/dist/esm/visitor.mjs +838 -0
- package/dist/types/BaseVisitor.d.ts +69 -0
- package/dist/types/SemanticTokenVisitor.d.ts +36 -0
- package/dist/types/SymbolValidatorVisitor.d.ts +61 -0
- package/{build/src → dist/types}/antlr/CircuitScriptLexer.d.ts +28 -27
- package/dist/types/antlr/CircuitScriptParser.d.ts +719 -0
- package/{build/src → dist/types}/antlr/CircuitScriptVisitor.d.ts +69 -59
- package/{build/src → dist/types}/draw_symbols.d.ts +11 -2
- package/{build/src → dist/types}/execute.d.ts +6 -9
- package/{build/src → dist/types}/geometry.d.ts +5 -1
- package/dist/types/helpers.d.ts +40 -0
- package/dist/types/index.d.ts +15 -0
- package/{build/src → dist/types}/layout.d.ts +10 -10
- package/{build/src → dist/types}/lexer.d.ts +2 -2
- package/{build/src → dist/types}/objects/ClassComponent.d.ts +2 -2
- package/{build/src → dist/types}/objects/ExecutionScope.d.ts +4 -1
- package/{build/src → dist/types}/objects/PinDefinition.d.ts +1 -1
- package/{build/src → dist/types}/objects/types.d.ts +5 -0
- package/dist/types/parser.d.ts +25 -0
- package/{build/src → dist/types}/render.d.ts +1 -1
- package/{build/src → dist/types}/sizing.d.ts +3 -1
- package/dist/types/validate.d.ts +2 -0
- package/dist/types/visitor.d.ts +80 -0
- package/libs/lib.cst +0 -2
- package/package.json +38 -15
- package/.editorconfig +0 -15
- package/.eslintignore +0 -1
- package/.eslintrc.json +0 -27
- package/.gitlab-ci.yml +0 -81
- package/.prettierignore +0 -8
- package/.prettierrc +0 -16
- package/__tests__/expectedResults.ts +0 -657
- package/__tests__/helpers.ts +0 -82
- package/__tests__/parseScripts.ts +0 -593
- package/__tests__/renderData/script1.cst +0 -58
- package/__tests__/renderData/script1.cst.svg +0 -1
- package/__tests__/renderData/script2.cst +0 -16
- package/__tests__/renderData/script2.cst.svg +0 -1
- package/__tests__/renderData/script3.cst +0 -30
- package/__tests__/renderData/script3.cst.svg +0 -1
- package/__tests__/renderData/script4.cst +0 -54
- package/__tests__/renderData/script4.cst.svg +0 -1
- package/__tests__/renderData/script5.cst +0 -23
- package/__tests__/renderData/script5.cst.svg +0 -1
- package/__tests__/renderData/script6.cst +0 -28
- package/__tests__/renderData/script6.cst.svg +0 -1
- package/__tests__/renderData/script7.cst +0 -26
- package/__tests__/renderData/script7.cst.svg +0 -1
- package/__tests__/renderData/script8.cst +0 -37
- package/__tests__/renderData/script8.cst.svg +0 -1
- package/__tests__/testCLI.ts +0 -68
- package/__tests__/testMathOps.ts +0 -36
- package/__tests__/testMergeWires.ts +0 -141
- package/__tests__/testParse.ts +0 -263
- package/__tests__/testRender.ts +0 -38
- package/build/src/antlr/CircuitScriptLexer.js +0 -287
- package/build/src/antlr/CircuitScriptParser.d.ts +0 -674
- package/build/src/antlr/CircuitScriptParser.js +0 -4841
- package/build/src/helpers.d.ts +0 -1
- package/build/src/helpers.js +0 -73
- package/build/src/objects/types.js +0 -6
- package/build/src/parser.js +0 -69
- package/build/src/visitor.d.ts +0 -133
- package/build/src/visitor.js +0 -1154
- package/documentation.md +0 -238
- package/examples/example_arduino_uno.cst +0 -1146
- package/examples/example_garden_pump.cst +0 -567
- package/examples/lib.cst +0 -185
- package/jest.config.js +0 -23
- package/refresh.html +0 -42
- package/server.cjs +0 -50
- package/src/antlr/CircuitScript.g4 +0 -209
- package/src/antlr/CircuitScriptLexer.ts +0 -317
- package/src/antlr/CircuitScriptParser.ts +0 -4979
- package/src/antlr/CircuitScriptVisitor.ts +0 -420
- package/src/draw_symbols.ts +0 -1085
- package/src/execute.ts +0 -1227
- package/src/fonts.ts +0 -1
- package/src/geometry.ts +0 -638
- package/src/globals.ts +0 -67
- package/src/helpers.ts +0 -114
- package/src/lexer.ts +0 -151
- package/src/logger.ts +0 -17
- package/src/objects/ClassComponent.ts +0 -223
- package/src/objects/ExecutionScope.ts +0 -201
- package/src/objects/Frame.ts +0 -20
- package/src/objects/ParamDefinition.ts +0 -49
- package/src/objects/PinDefinition.ts +0 -49
- package/src/objects/PinTypes.ts +0 -7
- package/src/objects/Wire.ts +0 -19
- package/src/objects/types.ts +0 -66
- package/src/parser.ts +0 -106
- package/src/regenerate-tests.ts +0 -25
- package/src/render.ts +0 -260
- package/src/sizing.ts +0 -96
- package/src/visitor.ts +0 -1691
- package/tsconfig.json +0 -27
- package/tsconfig.release.json +0 -8
- /package/{build/src/fonts.js → dist/esm/fonts.mjs} +0 -0
- /package/{build/src/globals.js → dist/esm/globals.mjs} +0 -0
- /package/{build/src/logger.js → dist/esm/logger.mjs} +0 -0
- /package/{build/src/objects/Frame.js → dist/esm/objects/Frame.mjs} +0 -0
- /package/{build/src/objects/Net.js → dist/esm/objects/Net.mjs} +0 -0
- /package/{build/src/objects/ParamDefinition.js → dist/esm/objects/ParamDefinition.mjs} +0 -0
- /package/{build/src/objects/PinTypes.js → dist/esm/objects/PinTypes.mjs} +0 -0
- /package/{build/src/objects/Wire.js → dist/esm/objects/Wire.mjs} +0 -0
- /package/{build/src/server.js → dist/esm/server.mjs} +0 -0
- /package/{build/src/utils.js → dist/esm/utils.mjs} +0 -0
- /package/{build/src → dist/types}/export.d.ts +0 -0
- /package/{build/src → dist/types}/fonts.d.ts +0 -0
- /package/{build/src → dist/types}/globals.d.ts +0 -0
- /package/{build/src → dist/types}/logger.d.ts +0 -0
- /package/{build/src → dist/types}/main.d.ts +0 -0
- /package/{build/src → dist/types}/objects/Frame.d.ts +0 -0
- /package/{build/src → dist/types}/objects/Net.d.ts +0 -0
- /package/{build/src → dist/types}/objects/ParamDefinition.d.ts +0 -0
- /package/{build/src → dist/types}/objects/PinTypes.d.ts +0 -0
- /package/{build/src → dist/types}/objects/Wire.d.ts +0 -0
- /package/{build/src → dist/types}/regenerate-tests.d.ts +0 -0
- /package/{build/src → dist/types}/server.d.ts +0 -0
- /package/{build/src → dist/types}/utils.d.ts +0 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getPackageVersion = exports.getDefaultLibsPath = exports.getFontsPath = exports.getCurrentPath = exports.detectJSModuleType = exports.renderScript = exports.validateScript = exports.ParseErrorStrategy = exports.getSemanticTokens = exports.getScriptText = exports.prepareFile = exports.JSModuleType = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const export_js_1 = require("./export.js");
|
|
9
|
+
const layout_js_1 = require("./layout.js");
|
|
10
|
+
const ExecutionScope_js_1 = require("./objects/ExecutionScope.js");
|
|
11
|
+
const parser_js_1 = require("./parser.js");
|
|
12
|
+
const render_js_1 = require("./render.js");
|
|
13
|
+
const utils_js_1 = require("./utils.js");
|
|
14
|
+
const visitor_js_1 = require("./visitor.js");
|
|
15
|
+
const this_file_1 = require("this-file");
|
|
16
|
+
const SymbolValidatorVisitor_js_1 = require("./SymbolValidatorVisitor.js");
|
|
17
|
+
const antlr4ng_1 = require("antlr4ng");
|
|
18
|
+
const lexer_js_1 = require("./lexer.js");
|
|
19
|
+
const CircuitScriptParser_js_1 = require("./antlr/CircuitScriptParser.js");
|
|
20
|
+
const SemanticTokenVisitor_js_1 = require("./SemanticTokenVisitor.js");
|
|
21
|
+
const path_1 = __importDefault(require("path"));
|
|
22
|
+
var JSModuleType;
|
|
23
|
+
(function (JSModuleType) {
|
|
24
|
+
JSModuleType["CommonJs"] = "cjs";
|
|
25
|
+
JSModuleType["ESM"] = "mjs";
|
|
26
|
+
})(JSModuleType || (exports.JSModuleType = JSModuleType = {}));
|
|
27
|
+
function prepareFile(textData) {
|
|
28
|
+
const chars = antlr4ng_1.CharStream.fromString(textData);
|
|
29
|
+
const lexer = new lexer_js_1.MainLexer(chars);
|
|
30
|
+
const lexerTimer = new utils_js_1.SimpleStopwatch();
|
|
31
|
+
const tokens = new antlr4ng_1.CommonTokenStream(lexer);
|
|
32
|
+
tokens.fill();
|
|
33
|
+
const lexerTimeTaken = lexerTimer.lap();
|
|
34
|
+
const parser = new CircuitScriptParser_js_1.CircuitScriptParser(tokens);
|
|
35
|
+
return {
|
|
36
|
+
parser,
|
|
37
|
+
lexer,
|
|
38
|
+
lexerTimeTaken,
|
|
39
|
+
tokens
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
exports.prepareFile = prepareFile;
|
|
43
|
+
function getScriptText(filePath) {
|
|
44
|
+
try {
|
|
45
|
+
return (0, fs_1.readFileSync)(filePath, { encoding: 'utf-8' });
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.getScriptText = getScriptText;
|
|
52
|
+
function getSemanticTokens(scriptData, options) {
|
|
53
|
+
const { parser, lexer, tokens } = prepareFile(scriptData);
|
|
54
|
+
const tree = parser.script();
|
|
55
|
+
const { currentDirectory = null, defaultLibsPath, } = options;
|
|
56
|
+
const visitor = new SemanticTokenVisitor_js_1.SemanticTokensVisitor(true, null, currentDirectory, defaultLibsPath, lexer, scriptData);
|
|
57
|
+
parser.removeErrorListeners();
|
|
58
|
+
visitor.onImportFile = (visitor, textData) => {
|
|
59
|
+
let hasError = false;
|
|
60
|
+
let hasParseError = false;
|
|
61
|
+
if (textData !== null) {
|
|
62
|
+
const { parser } = prepareFile(textData);
|
|
63
|
+
const tree = parser.script();
|
|
64
|
+
try {
|
|
65
|
+
visitor.visit(tree);
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
console.log('Error while parsing: ', err);
|
|
69
|
+
hasParseError = true;
|
|
70
|
+
hasError = true;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
console.log('File does not exist');
|
|
75
|
+
hasError = true;
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
hasError, hasParseError
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
visitor.visit(tree);
|
|
82
|
+
const semanticTokens = visitor.getTokens();
|
|
83
|
+
const parsedTokens = (0, SemanticTokenVisitor_js_1.prepareTokens)(tokens.getTokens(), lexer, scriptData);
|
|
84
|
+
const finalParsedTokens = [];
|
|
85
|
+
parsedTokens.forEach(token => {
|
|
86
|
+
const location = `${token.line}_${token.column}`;
|
|
87
|
+
if (semanticTokens.has(location)) {
|
|
88
|
+
finalParsedTokens.push(semanticTokens.get(location));
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
finalParsedTokens.push(token);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
return {
|
|
95
|
+
visitor,
|
|
96
|
+
parsedTokens: finalParsedTokens
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
exports.getSemanticTokens = getSemanticTokens;
|
|
100
|
+
class TokenErrorListener extends antlr4ng_1.BaseErrorListener {
|
|
101
|
+
syntaxError(recognizer, offendingSymbol, line, column, msg, e) {
|
|
102
|
+
console.log(msg);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
class ParseErrorStrategy extends antlr4ng_1.DefaultErrorStrategy {
|
|
106
|
+
reportUnwantedToken(recognizer) {
|
|
107
|
+
if (this.inErrorRecoveryMode(recognizer)) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
this.beginErrorCondition(recognizer);
|
|
111
|
+
const t = recognizer.getCurrentToken();
|
|
112
|
+
const tokenName = this.getTokenErrorDisplay(t);
|
|
113
|
+
const msg = "extraneous input " + tokenName;
|
|
114
|
+
recognizer.notifyErrorListeners(msg, t, null);
|
|
115
|
+
this.endErrorCondition(recognizer);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.ParseErrorStrategy = ParseErrorStrategy;
|
|
119
|
+
function validateScript(scriptData, options) {
|
|
120
|
+
const { parser } = prepareFile(scriptData);
|
|
121
|
+
parser.removeErrorListeners();
|
|
122
|
+
parser.errorHandler = new ParseErrorStrategy();
|
|
123
|
+
parser.addErrorListener(new TokenErrorListener());
|
|
124
|
+
const tree = parser.script();
|
|
125
|
+
const { currentDirectory = null, defaultLibsPath, } = options;
|
|
126
|
+
const visitor = new SymbolValidatorVisitor_js_1.SymbolValidatorVisitor(true, null, currentDirectory, defaultLibsPath);
|
|
127
|
+
visitor.onImportFile = (visitor, textData) => {
|
|
128
|
+
let hasError = false;
|
|
129
|
+
let hasParseError = false;
|
|
130
|
+
if (textData !== null) {
|
|
131
|
+
const { parser } = prepareFile(textData);
|
|
132
|
+
const tree = parser.script();
|
|
133
|
+
try {
|
|
134
|
+
visitor.visit(tree);
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
console.log('got an error while parsing tree: ', err);
|
|
138
|
+
hasParseError = true;
|
|
139
|
+
hasError = true;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
console.log('file does not exist!');
|
|
144
|
+
hasError = true;
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
hasError, hasParseError
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
visitor.visit(tree);
|
|
151
|
+
const symbolTable = visitor.getSymbols();
|
|
152
|
+
symbolTable.clearUndefined();
|
|
153
|
+
const visitorResolver = new SymbolValidatorVisitor_js_1.SymbolValidatorResolveVisitor(true, null, currentDirectory, defaultLibsPath);
|
|
154
|
+
visitorResolver.setSymbols(visitor.getSymbols());
|
|
155
|
+
visitorResolver.onImportFile = visitor.onImportFile;
|
|
156
|
+
visitorResolver.visit(tree);
|
|
157
|
+
return visitorResolver;
|
|
158
|
+
}
|
|
159
|
+
exports.validateScript = validateScript;
|
|
160
|
+
function renderScript(scriptData, outputPath, options) {
|
|
161
|
+
const { currentDirectory = null, defaultLibsPath, dumpNets = false, dumpData = false, kicadNetlistPath = null, showStats = false } = options;
|
|
162
|
+
const onErrorHandler = (line, column, message, error) => {
|
|
163
|
+
if (error instanceof visitor_js_1.VisitorExecutionException) {
|
|
164
|
+
console.log('Error', line, column, message, error.errorMessage);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
const visitor = new visitor_js_1.ParserVisitor(true, onErrorHandler, currentDirectory, defaultLibsPath);
|
|
168
|
+
visitor.onImportFile = (visitor, fileData) => {
|
|
169
|
+
const { hasError, hasParseError } = (0, parser_js_1.parseFileWithVisitor)(visitor, fileData);
|
|
170
|
+
return { hasError, hasParseError };
|
|
171
|
+
};
|
|
172
|
+
visitor.log('reading file');
|
|
173
|
+
visitor.log('done reading file');
|
|
174
|
+
const { tree, parser, hasParseError, hasError, parserTimeTaken, lexerTimeTaken } = (0, parser_js_1.parseFileWithVisitor)(visitor, scriptData);
|
|
175
|
+
showStats && console.log('Lexing took:', lexerTimeTaken);
|
|
176
|
+
showStats && console.log('Parsing took:', parserTimeTaken);
|
|
177
|
+
dumpNets && console.log(visitor.dumpNets());
|
|
178
|
+
dumpData && (0, fs_1.writeFileSync)('dump/tree.lisp', tree.toStringTree(null, parser));
|
|
179
|
+
dumpData && (0, fs_1.writeFileSync)('dump/raw-parser.txt', visitor.logger.dump());
|
|
180
|
+
if (hasError || hasParseError) {
|
|
181
|
+
console.log('Error while parsing');
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
visitor.annotateComponents();
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
console.log('Error during annotation: ', err);
|
|
189
|
+
}
|
|
190
|
+
if (kicadNetlistPath) {
|
|
191
|
+
const kicadNetList = (0, export_js_1.generateKiCADNetList)(visitor.getNetList());
|
|
192
|
+
(0, fs_1.writeFileSync)(kicadNetlistPath, kicadNetList);
|
|
193
|
+
console.log('Generated KiCad netlist file');
|
|
194
|
+
}
|
|
195
|
+
const { sequence, nets } = visitor.getGraph();
|
|
196
|
+
const tmpSequence = sequence.map(item => {
|
|
197
|
+
const tmp = [...item];
|
|
198
|
+
const action = tmp[0];
|
|
199
|
+
if (action === ExecutionScope_js_1.SequenceAction.Wire) {
|
|
200
|
+
tmp[2] = tmp[2].map(item2 => {
|
|
201
|
+
return [item2.direction, item2.value].join(",");
|
|
202
|
+
}).join(" ");
|
|
203
|
+
}
|
|
204
|
+
else if (action === ExecutionScope_js_1.SequenceAction.Frame) {
|
|
205
|
+
tmp[1] = item[1].frameId;
|
|
206
|
+
}
|
|
207
|
+
else if (action !== ExecutionScope_js_1.SequenceAction.WireJump) {
|
|
208
|
+
tmp[1] = item[1].instanceName;
|
|
209
|
+
}
|
|
210
|
+
return tmp.join(" | ");
|
|
211
|
+
});
|
|
212
|
+
dumpData && (0, fs_1.writeFileSync)('dump/raw-sequence.txt', tmpSequence.join('\n'));
|
|
213
|
+
let svgOutput = null;
|
|
214
|
+
try {
|
|
215
|
+
const layoutEngine = new layout_js_1.LayoutEngine();
|
|
216
|
+
const layoutTimer = new utils_js_1.SimpleStopwatch();
|
|
217
|
+
const graph = layoutEngine.runLayout(sequence, nets);
|
|
218
|
+
layoutEngine.printWarnings();
|
|
219
|
+
showStats && console.log('Layout took:', layoutTimer.lap());
|
|
220
|
+
dumpData && (0, fs_1.writeFileSync)('dump/raw-layout.txt', layoutEngine.logger.dump());
|
|
221
|
+
const generateSvgTimer = new utils_js_1.SimpleStopwatch();
|
|
222
|
+
svgOutput = (0, render_js_1.generateSVG2)(graph);
|
|
223
|
+
showStats && console.log('Render took:', generateSvgTimer.lap());
|
|
224
|
+
if (outputPath) {
|
|
225
|
+
(0, fs_1.writeFileSync)(outputPath, svgOutput);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
catch (err) {
|
|
229
|
+
console.log('Error during render: ', err);
|
|
230
|
+
}
|
|
231
|
+
return svgOutput;
|
|
232
|
+
}
|
|
233
|
+
exports.renderScript = renderScript;
|
|
234
|
+
function detectJSModuleType() {
|
|
235
|
+
if (typeof __filename === 'undefined' &&
|
|
236
|
+
typeof __dirname === 'undefined') {
|
|
237
|
+
return JSModuleType.ESM;
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
return JSModuleType.CommonJs;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
exports.detectJSModuleType = detectJSModuleType;
|
|
244
|
+
const context = (0, this_file_1.createContext)();
|
|
245
|
+
function getCurrentPath() {
|
|
246
|
+
const filename = context.filename;
|
|
247
|
+
return { filePath: filename };
|
|
248
|
+
}
|
|
249
|
+
exports.getCurrentPath = getCurrentPath;
|
|
250
|
+
function getToolsPath() {
|
|
251
|
+
const { filePath } = getCurrentPath();
|
|
252
|
+
return path_1.default.normalize(path_1.default.dirname(filePath) + '/../../');
|
|
253
|
+
}
|
|
254
|
+
function getFontsPath() {
|
|
255
|
+
const toolsPath = getToolsPath();
|
|
256
|
+
return path_1.default.normalize(toolsPath + "fonts");
|
|
257
|
+
}
|
|
258
|
+
exports.getFontsPath = getFontsPath;
|
|
259
|
+
function getDefaultLibsPath() {
|
|
260
|
+
const toolsPath = getToolsPath();
|
|
261
|
+
return path_1.default.normalize(toolsPath + "libs");
|
|
262
|
+
}
|
|
263
|
+
exports.getDefaultLibsPath = getDefaultLibsPath;
|
|
264
|
+
function getPackageVersion() {
|
|
265
|
+
const packageJson = JSON.parse((0, fs_1.readFileSync)(getToolsPath() + 'package.json').toString());
|
|
266
|
+
const { version } = packageJson;
|
|
267
|
+
return version;
|
|
268
|
+
}
|
|
269
|
+
exports.getPackageVersion = getPackageVersion;
|
|
@@ -0,0 +1,31 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./draw_symbols.js"), exports);
|
|
18
|
+
__exportStar(require("./execute.js"), exports);
|
|
19
|
+
__exportStar(require("./export.js"), exports);
|
|
20
|
+
__exportStar(require("./geometry.js"), exports);
|
|
21
|
+
__exportStar(require("./globals.js"), exports);
|
|
22
|
+
__exportStar(require("./helpers.js"), exports);
|
|
23
|
+
__exportStar(require("./layout.js"), exports);
|
|
24
|
+
__exportStar(require("./lexer.js"), exports);
|
|
25
|
+
__exportStar(require("./logger.js"), exports);
|
|
26
|
+
__exportStar(require("./parser.js"), exports);
|
|
27
|
+
__exportStar(require("./render.js"), exports);
|
|
28
|
+
__exportStar(require("./utils.js"), exports);
|
|
29
|
+
__exportStar(require("./visitor.js"), exports);
|
|
30
|
+
__exportStar(require("./sizing.js"), exports);
|
|
31
|
+
__exportStar(require("./objects/types.js"), exports);
|