mirror of
https://github.com/openharmony/developtools_ace-ets2bundle.git
synced 2026-07-18 16:04:32 -04:00
fixed c4475d8 from https://gitee.com/houhaoyu/developtools_ace-ets2bundle/pulls/378
houhaoyu@huawei.com fix debugline fileName Signed-off-by: houhaoyu <houhaoyu@huawei.com> Change-Id: Iaeb719f4775f03e498f46f9324633c0a7c8e429a
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
|
||||
const WebSocket = require('ws');
|
||||
const ts = require('typescript');
|
||||
const path = require('path');
|
||||
|
||||
const { processComponentChild } = require('../lib/process_component_build');
|
||||
|
||||
@@ -25,7 +26,8 @@ let pluginSocket = '';
|
||||
let supplement = {
|
||||
isAcceleratePreview: false,
|
||||
line: 0,
|
||||
column: 0
|
||||
column: 0,
|
||||
fileName: ''
|
||||
}
|
||||
|
||||
const pluginCommandChannelMessageHandlers = {
|
||||
@@ -56,16 +58,22 @@ function handlePluginCommand(jsonData) {
|
||||
|
||||
function handlePluginCompileComponent(jsonData) {
|
||||
const receivedMsg = jsonData;
|
||||
const sourceNode = ts.createSourceFile('preview.ts', receivedMsg.data.script,
|
||||
ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
||||
const compilerOptions = ts.readConfigFile(
|
||||
path.resolve(__dirname, '../tsconfig.json'), ts.sys.readFile).config.compilerOptions;
|
||||
Object.assign(compilerOptions, {
|
||||
"sourceMap": false,
|
||||
});
|
||||
const sourceNode = ts.createSourceFile('preview.ets', 'struct{build(){' + receivedMsg.data.script + '}}',
|
||||
ts.ScriptTarget.Latest, true, ts.ScriptKind.ETS, compilerOptions);
|
||||
const previewStatements = [];
|
||||
const log = [];
|
||||
supplement = {
|
||||
isAcceleratePreview: true,
|
||||
line: parseInt(JSON.parse(receivedMsg.data.offset).line),
|
||||
column: parseInt(JSON.parse(receivedMsg.data.offset).column)
|
||||
column: parseInt(JSON.parse(receivedMsg.data.offset).column),
|
||||
fileName: receivedMsg.data.filePath || ''
|
||||
}
|
||||
processComponentChild(sourceNode, previewStatements, log, supplement);
|
||||
processComponentChild(sourceNode.statements[0].members[1].body, previewStatements, log, supplement);
|
||||
supplement.isAcceleratePreview = false;
|
||||
const newSource = ts.factory.updateSourceFile(sourceNode, previewStatements);
|
||||
const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });
|
||||
@@ -73,11 +81,11 @@ function handlePluginCompileComponent(jsonData) {
|
||||
receivedMsg.data.script = ts.transpileModule(result, {}).outputText;
|
||||
if (receivedMsg.data.offset) {
|
||||
for (let i = 0; i < log.length; i++) {
|
||||
let line = parseInt(newSource.getLineAndCharacterOfPosition(log[i].pos).line);
|
||||
let column = parseInt(newSource.getLineAndCharacterOfPosition(log[i].pos).character);
|
||||
let line = parseInt(sourceNode.getLineAndCharacterOfPosition(log[i].pos).line);
|
||||
let column = parseInt(sourceNode.getLineAndCharacterOfPosition(log[i].pos).character);
|
||||
if (line === 0) {
|
||||
log[i].line = parseInt(JSON.parse(receivedMsg.data.offset).line);
|
||||
log[i].column = parseInt(JSON.parse(receivedMsg.data.offset).column) + column;
|
||||
log[i].column = parseInt(JSON.parse(receivedMsg.data.offset).column) + column - 15;
|
||||
} else {
|
||||
log[i].line = parseInt(JSON.parse(receivedMsg.data.offset).line) + line;
|
||||
log[i].column = column;
|
||||
|
||||
@@ -151,13 +151,15 @@ function validateRootNode(node: ts.MethodDeclaration, log: LogInfo[]): boolean {
|
||||
interface supplementType {
|
||||
isAcceleratePreview: boolean,
|
||||
line: number,
|
||||
column: number
|
||||
column: number,
|
||||
fileName: string
|
||||
}
|
||||
|
||||
let newsupplement: supplementType = {
|
||||
isAcceleratePreview: false,
|
||||
line: 0,
|
||||
column: 0
|
||||
column: 0,
|
||||
fileName: ''
|
||||
};
|
||||
|
||||
function validateEtsComponentNode(node: ts.CallExpression | ts.EtsComponentExpression) {
|
||||
@@ -173,8 +175,8 @@ function validateEtsComponentNode(node: ts.CallExpression | ts.EtsComponentExpre
|
||||
}
|
||||
}
|
||||
|
||||
export function processComponentChild(node: ts.Block | ts.SourceFile, newStatements: ts.Statement[],
|
||||
log: LogInfo[], supplement: supplementType = {isAcceleratePreview: false, line: 0, column: 0}): void {
|
||||
export function processComponentChild(node: ts.Block | ts.SourceFile, newStatements: ts.Statement[], log: LogInfo[],
|
||||
supplement: supplementType = {isAcceleratePreview: false, line: 0, column: 0, fileName: ''}): void {
|
||||
if (supplement.isAcceleratePreview) {
|
||||
newsupplement = supplement;
|
||||
}
|
||||
@@ -290,19 +292,21 @@ function processInnerComponent(node: ts.ExpressionStatement, index: number, arr:
|
||||
const posOfNode: ts.LineAndCharacter =
|
||||
transformLog.sourceFile.getLineAndCharacterOfPosition(getRealNodePos(node));
|
||||
const projectPath: string = projectConfig.projectPath;
|
||||
const curFileName: string = transformLog.sourceFile.fileName.replace(/.ts$/, '');
|
||||
let curFileName: string = transformLog.sourceFile.fileName.replace(/\.ts$/, '');
|
||||
let line: number = 1;
|
||||
let col: number = 1;
|
||||
if (newsupplement.isAcceleratePreview) {
|
||||
if (posOfNode.line === 0) {
|
||||
col = newsupplement.column;
|
||||
col = newsupplement.column - 15;
|
||||
}
|
||||
line = newsupplement.line;
|
||||
curFileName = newsupplement.fileName;
|
||||
}
|
||||
newsupplement = {
|
||||
isAcceleratePreview: false,
|
||||
line: 0,
|
||||
column: 0
|
||||
column: 0,
|
||||
fileName: ''
|
||||
};
|
||||
const debugInfo: string =
|
||||
`${path.relative(projectPath, curFileName).replace(/\\+/g, '/')}` +
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
|
||||
const CopyPlugin = require('copy-webpack-plugin');
|
||||
const Webpack = require('webpack');
|
||||
const { GenAbcPlugin } = require('./lib/gen_abc_plugin');
|
||||
@@ -117,7 +116,6 @@ function initConfig(config) {
|
||||
/\.d\.ts$/
|
||||
]
|
||||
}),
|
||||
new CleanWebpackPlugin(),
|
||||
new ResultStates()
|
||||
]
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user