mirror of
https://github.com/openharmony/developtools_ace-ets2bundle.git
synced 2026-07-22 04:25:23 -04:00
@@ -62,6 +62,7 @@ function initProjectConfig(projectConfig) {
|
|||||||
projectConfig.aceBuildJson = projectConfig.aceBuildJson || process.env.aceBuildJson;
|
projectConfig.aceBuildJson = projectConfig.aceBuildJson || process.env.aceBuildJson;
|
||||||
projectConfig.cachePath = projectConfig.cachePath || process.env.cachePath ||
|
projectConfig.cachePath = projectConfig.cachePath || process.env.cachePath ||
|
||||||
path.resolve(__dirname, 'node_modules/.cache');
|
path.resolve(__dirname, 'node_modules/.cache');
|
||||||
|
projectConfig.aceSoPath = projectConfig.aceSoPath || process.env.aceSoPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadEntryObj(projectConfig) {
|
function loadEntryObj(projectConfig) {
|
||||||
|
|||||||
@@ -29,9 +29,15 @@ import CachedSource from 'webpack-sources/lib/CachedSource';
|
|||||||
import ConcatSource from 'webpack-sources/lib/ConcatSource';
|
import ConcatSource from 'webpack-sources/lib/ConcatSource';
|
||||||
|
|
||||||
import { transformLog } from './process_ui_syntax';
|
import { transformLog } from './process_ui_syntax';
|
||||||
import { moduleCollection } from './validate_ui_syntax';
|
import {
|
||||||
|
moduleCollection,
|
||||||
|
useOSFiles
|
||||||
|
} from './validate_ui_syntax';
|
||||||
import { projectConfig } from '../main';
|
import { projectConfig } from '../main';
|
||||||
import { circularFile } from './utils';
|
import {
|
||||||
|
circularFile,
|
||||||
|
mkDir
|
||||||
|
} from './utils';
|
||||||
import { MODULE_SHARE_PATH, BUILD_SHARE_PATH } from './pre_define';
|
import { MODULE_SHARE_PATH, BUILD_SHARE_PATH } from './pre_define';
|
||||||
import {
|
import {
|
||||||
createLanguageService,
|
createLanguageService,
|
||||||
@@ -179,6 +185,10 @@ export class ResultStates {
|
|||||||
});
|
});
|
||||||
|
|
||||||
compiler.hooks.done.tap('Result States', (stats: Stats) => {
|
compiler.hooks.done.tap('Result States', (stats: Stats) => {
|
||||||
|
if (projectConfig.isPreview && projectConfig.aceSoPath &&
|
||||||
|
useOSFiles && useOSFiles.size > 0) {
|
||||||
|
this.writeUseOSFiles();
|
||||||
|
}
|
||||||
this.mStats = stats;
|
this.mStats = stats;
|
||||||
this.warningCount = 0;
|
this.warningCount = 0;
|
||||||
this.noteCount = 0;
|
this.noteCount = 0;
|
||||||
@@ -204,6 +214,17 @@ export class ResultStates {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private writeUseOSFiles(): void {
|
||||||
|
let info: string = '';
|
||||||
|
if (!fs.existsSync(projectConfig.aceSoPath)) {
|
||||||
|
const parent: string = path.join(projectConfig.aceSoPath, '..');
|
||||||
|
if (!(fs.existsSync(parent) && !fs.statSync(parent).isFile())) {
|
||||||
|
mkDir(parent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fs.writeFileSync(projectConfig.aceSoPath, info + Array.from(useOSFiles).join('\n'));
|
||||||
|
}
|
||||||
|
|
||||||
private printResult(): void {
|
private printResult(): void {
|
||||||
this.printWarning();
|
this.printWarning();
|
||||||
this.printError();
|
this.printError();
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ export function createLanguageService(rootFileNames: string[]): ts.LanguageServi
|
|||||||
}
|
}
|
||||||
if (/(?<!\.d)\.(ets|ts)$/.test(fileName)) {
|
if (/(?<!\.d)\.(ets|ts)$/.test(fileName)) {
|
||||||
checkUISyntax(fs.readFileSync(fileName).toString(), fileName);
|
checkUISyntax(fs.readFileSync(fileName).toString(), fileName);
|
||||||
return ts.ScriptSnapshot.fromString(processContent(fs.readFileSync(fileName).toString()));
|
return ts.ScriptSnapshot.fromString(processContent(fs.readFileSync(fileName).toString(), fileName));
|
||||||
}
|
}
|
||||||
return ts.ScriptSnapshot.fromString(fs.readFileSync(fileName).toString());
|
return ts.ScriptSnapshot.fromString(fs.readFileSync(fileName).toString());
|
||||||
},
|
},
|
||||||
@@ -263,8 +263,8 @@ function processDraw(source: string): string {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function processContent(source: string): string {
|
function processContent(source: string, sourcePath: string): string {
|
||||||
source = processSystemApi(source);
|
source = processSystemApi(source, false, sourcePath);
|
||||||
source = preprocessExtend(source, extendCollection);
|
source = preprocessExtend(source, extendCollection);
|
||||||
source = processDraw(source);
|
source = processDraw(source);
|
||||||
return source;
|
return source;
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ function preProcess(source: string): string {
|
|||||||
}
|
}
|
||||||
return newContent;
|
return newContent;
|
||||||
} else {
|
} else {
|
||||||
return processSystemApi(source);
|
return processSystemApi(source, false, this.resourcePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ export default function processImport(node: ts.ImportDeclaration | ts.ImportEqua
|
|||||||
fs.readFileSync(fileResolvePath, { encoding: 'utf-8' }).replace(
|
fs.readFileSync(fileResolvePath, { encoding: 'utf-8' }).replace(
|
||||||
new RegExp('\\b' + STRUCT + '\\b.+\\{', 'g'), item => {
|
new RegExp('\\b' + STRUCT + '\\b.+\\{', 'g'), item => {
|
||||||
return item.replace(new RegExp('\\b' + STRUCT + '\\b', 'g'), `${CLASS} `);
|
return item.replace(new RegExp('\\b' + STRUCT + '\\b', 'g'), `${CLASS} `);
|
||||||
})));
|
}), false, fileResolvePath));
|
||||||
const sourceFile: ts.SourceFile = ts.createSourceFile(filePath, content,
|
const sourceFile: ts.SourceFile = ts.createSourceFile(filePath, content,
|
||||||
ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
||||||
visitAllNode(sourceFile, defaultName, asName, path.dirname(fileResolvePath), log);
|
visitAllNode(sourceFile, defaultName, asName, path.dirname(fileResolvePath), log);
|
||||||
|
|||||||
@@ -16,5 +16,5 @@
|
|||||||
import { processSystemApi } from './validate_ui_syntax';
|
import { processSystemApi } from './validate_ui_syntax';
|
||||||
|
|
||||||
module.exports = function processSystemModule(source: string): string {
|
module.exports = function processSystemModule(source: string): string {
|
||||||
return processSystemApi(source);
|
return processSystemApi(source, false, this.resourcePath);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ import { abilityConfig } from '../main';
|
|||||||
|
|
||||||
module.exports = function resultProcess(source: string, map: any): void {
|
module.exports = function resultProcess(source: string, map: any): void {
|
||||||
process.env.compiler = BUILD_OFF;
|
process.env.compiler = BUILD_OFF;
|
||||||
source = processSystemApi(source, true);
|
source = processSystemApi(source, true, this.resourcePath);
|
||||||
if (/\.ets$/.test(this.resourcePath)) {
|
if (/\.ets$/.test(this.resourcePath)) {
|
||||||
componentInfo.id = 0;
|
componentInfo.id = 0;
|
||||||
propertyCollection.clear();
|
propertyCollection.clear();
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ export const objectLinkCollection: Map<string, Set<string>> = new Map();
|
|||||||
export const isStaticViewCollection: Map<string, boolean> = new Map();
|
export const isStaticViewCollection: Map<string, boolean> = new Map();
|
||||||
|
|
||||||
export const moduleCollection: Set<string> = new Set();
|
export const moduleCollection: Set<string> = new Set();
|
||||||
|
export const useOSFiles: Set<string> = new Set();
|
||||||
|
|
||||||
export function validateUISyntax(source: string, content: string, filePath: string,
|
export function validateUISyntax(source: string, content: string, filePath: string,
|
||||||
fileQuery: string): LogInfo[] {
|
fileQuery: string): LogInfo[] {
|
||||||
@@ -734,7 +735,7 @@ export function preprocessExtend(content: string, extendCollection?: Set<string>
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function processSystemApi(content: string, isProcessWhiteList: boolean = false): string {
|
export function processSystemApi(content: string, isProcessWhiteList: boolean = false, sourcePath: string): string {
|
||||||
let REG_SYSTEM: RegExp;
|
let REG_SYSTEM: RegExp;
|
||||||
if (isProcessWhiteList) {
|
if (isProcessWhiteList) {
|
||||||
REG_SYSTEM =
|
REG_SYSTEM =
|
||||||
@@ -749,6 +750,9 @@ export function processSystemApi(content: string, isProcessWhiteList: boolean =
|
|||||||
const newContent: string = content.replace(REG_LIB_SO, (_, item1, item2, item3, item4) => {
|
const newContent: string = content.replace(REG_LIB_SO, (_, item1, item2, item3, item4) => {
|
||||||
const libSoValue: string = item1 || item3;
|
const libSoValue: string = item1 || item3;
|
||||||
const libSoKey: string = item2 || item4;
|
const libSoKey: string = item2 || item4;
|
||||||
|
if (sourcePath) {
|
||||||
|
useOSFiles.add(sourcePath);
|
||||||
|
}
|
||||||
return `var ${libSoValue} = globalThis.requireNapi("${libSoKey}", true);`;
|
return `var ${libSoValue} = globalThis.requireNapi("${libSoKey}", true);`;
|
||||||
}).replace(REG_SYSTEM, (item, item1, item2, item3, item4, item5, item6, item7) => {
|
}).replace(REG_SYSTEM, (item, item1, item2, item3, item4, item5, item6, item7) => {
|
||||||
let moduleType: string = item2 || item5;
|
let moduleType: string = item2 || item5;
|
||||||
|
|||||||
Reference in New Issue
Block a user