From 80eceddcd9234248965254c84466517db1b4af21 Mon Sep 17 00:00:00 2001 From: houhaoyu Date: Mon, 6 Jun 2022 10:16:44 +0800 Subject: [PATCH 01/16] houhaoyu@huawei.com remove srcEntrance @Entry limit Signed-off-by: houhaoyu Change-Id: I0ae685cc91f4af9e7a6257aeb0ab52ba309c3b88 --- compiler/main.js | 19 ++++++++++++++----- compiler/src/validate_ui_syntax.ts | 5 +++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/compiler/main.js b/compiler/main.js index 8e9d8cb..e619212 100644 --- a/compiler/main.js +++ b/compiler/main.js @@ -44,6 +44,7 @@ const resources = { app: {}, sys: {} }; +const abilityPagesFullPath = []; function initProjectConfig(projectConfig) { projectConfig.entryObj = {}; @@ -157,7 +158,7 @@ function setAbilityPages(projectConfig) { let abilityPages = []; if (projectConfig.aceModuleJsonPath && fs.existsSync(projectConfig.aceModuleJsonPath)) { const moduleJson = JSON.parse(fs.readFileSync(projectConfig.aceModuleJsonPath).toString()); - abilityPages = readAbilityEntrance(moduleJson); + abilityPages = readAbilityEntrance(moduleJson, projectConfig); setAbilityFile(projectConfig, abilityPages); setBundleModuleInfo(projectConfig, moduleJson); } @@ -220,27 +221,34 @@ function setAbilityFile(projectConfig, abilityPages) { }); } -function readAbilityEntrance(moduleJson) { +function readAbilityEntrance(moduleJson, projectConfig) { let abilityPages = []; if (moduleJson.module) { if (moduleJson.module.srcEntrance) { abilityPages.push(moduleJson.module.srcEntrance); } if (moduleJson.module.abilities && moduleJson.module.abilities.length > 0) { - setEntrance(moduleJson.module.abilities, abilityPages); + setEntrance(moduleJson.module.abilities, abilityPages, projectConfig); } if (moduleJson.module.extensionAbilities && moduleJson.module.extensionAbilities.length > 0) { - setEntrance(moduleJson.module.extensionAbilities, abilityPages); + setEntrance(moduleJson.module.extensionAbilities, abilityPages, projectConfig); } } return abilityPages; } -function setEntrance(abilityConfig, abilityPages) { +function setEntrance(abilityConfig, abilityPages, projectConfig) { if (abilityConfig && abilityConfig.length > 0) { abilityConfig.forEach(ability => { if (ability.srcEntrance) { abilityPages.push(ability.srcEntrance); + let finalPath = path.resolve(path.resolve(projectConfig.projectPath, '../'), ability.srcEntrance); + finalPath = finalPath.replace(/\\/g, '/'); + if (fs.existsSync(finalPath)) { + abilityPagesFullPath.push(finalPath); + } else { + abilityPagesFullPath.push(ability.srcEntrance); + } } }); } @@ -350,3 +358,4 @@ exports.resources = resources; exports.loadWorker = loadWorker; exports.abilityConfig = abilityConfig; exports.readWorkerFile = readWorkerFile; +exports.abilityPagesFullPath = abilityPagesFullPath; diff --git a/compiler/src/validate_ui_syntax.ts b/compiler/src/validate_ui_syntax.ts index 318cf08..eb8a526 100644 --- a/compiler/src/validate_ui_syntax.ts +++ b/compiler/src/validate_ui_syntax.ts @@ -66,7 +66,7 @@ import { addLog, hasDecorator } from './utils'; -import { projectConfig } from '../main'; +import { projectConfig, abilityPagesFullPath } from '../main'; import { collectExtend } from './process_ui_syntax'; import { importModuleCollection } from './ets_checker'; import { isExtendFunction } from './process_ui_syntax'; @@ -225,7 +225,8 @@ function validateEntryAndPreviewCount(result: DecoratorResult, fileQuery: string + `decorator, or at least one '@Preview' decorator.`, fileName: fileName }); - } else if ((!isPreview || isPreview && checkEntry) && result.entryCount !== 1 && fileQuery === '?entry') { + } else if ((!isPreview || isPreview && checkEntry) && result.entryCount !== 1 && fileQuery === '?entry' && + !abilityPagesFullPath.includes(fileName)) { log.push({ type: LogType.ERROR, message: `A page configured in '${projectConfig.pagesJsonFileName}' must have one and only one '@Entry' ` From 838193351f51a9bfc81d8e83790324fc97ef69e5 Mon Sep 17 00:00:00 2001 From: houhaoyu Date: Sat, 11 Jun 2022 22:06:57 +0800 Subject: [PATCH 02/16] houhaoyu@huawei.com fix export @Entry struct wrong prompt Signed-off-by: houhaoyu Change-Id: I4dabe3ed14c8b346950cf4f5d7f8fb3d269e91fd --- compiler/src/process_import.ts | 55 +++++++++++++++++++++------------- compiler/src/result_process.ts | 12 +++++--- compiler/src/utils.ts | 4 ++- 3 files changed, 45 insertions(+), 26 deletions(-) diff --git a/compiler/src/process_import.ts b/compiler/src/process_import.ts index 44d7d79..caeaaa3 100644 --- a/compiler/src/process_import.ts +++ b/compiler/src/process_import.ts @@ -44,7 +44,7 @@ import { IComponentSet, builderParamObjectCollection } from './validate_ui_syntax'; -import { LogInfo, LogType } from './utils'; +import { LogInfo, LogType, repeatLog } from './utils'; import { projectConfig } from '../main'; import { isOhmUrl, resolveSourceFile } from './resolve_ohm_url'; @@ -110,17 +110,18 @@ export default function processImport(node: ts.ImportDeclaration | ts.ImportEqua })))); const sourceFile: ts.SourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS); - visitAllNode(sourceFile, defaultName, asName, path.dirname(fileResolvePath), log, new Set(), - new Set(), new Set(), new Map(), pathCollection); + visitAllNode(sourceFile, sourceFile, defaultName, asName, path.dirname(fileResolvePath), log, + new Set(), new Set(), new Set(), new Map(), pathCollection, fileResolvePath); } } catch (e) { // ignore } } -function visitAllNode(node: ts.Node, defaultNameFromParent: string, asNameFromParent: Map, - pagesDir: string, log: LogInfo[], entryCollection: Set, exportCollection: Set, - defaultCollection: Set, asExportCollection: Map, pathCollection: Set) { +function visitAllNode(node: ts.Node,sourceFile: ts.SourceFile, defaultNameFromParent: string, + asNameFromParent: Map, pagesDir: string, log: LogInfo[], entryCollection: Set, + exportCollection: Set, defaultCollection: Set, asExportCollection: Map, + pathCollection: Set, fileResolvePath: string) { if (isObservedClass(node)) { // @ts-ignore observedClassCollection.add(node.name.getText()); @@ -134,7 +135,7 @@ function visitAllNode(node: ts.Node, defaultNameFromParent: string, asNameFromPa } if (ts.isClassDeclaration(node) && ts.isIdentifier(node.name) && isCustomComponent(node)) { addDependencies(node, defaultNameFromParent, asNameFromParent); - isExportEntry(node, log, entryCollection, exportCollection); + isExportEntry(node, log, entryCollection, exportCollection, defaultCollection, fileResolvePath, sourceFile); if (asExportCollection.has(node.name.getText())) { componentCollection.customComponents.add(asExportCollection.get(node.name.getText())); } @@ -151,7 +152,7 @@ function visitAllNode(node: ts.Node, defaultNameFromParent: string, asNameFromPa if (ts.isExportAssignment(node) && node.expression && ts.isIdentifier(node.expression) && hasCollection(node.expression)) { if (projectConfig.isPreview && entryCollection.has(node.expression.escapedText.toString())) { - remindExportEntryComponent(node, log); + remindExportEntryComponent(node, log, fileResolvePath, sourceFile); } if (defaultNameFromParent) { setDependencies(defaultNameFromParent, @@ -171,9 +172,8 @@ function visitAllNode(node: ts.Node, defaultNameFromParent: string, asNameFromPa if (ts.isExportDeclaration(node) && node.exportClause && ts.isNamedExports(node.exportClause) && node.exportClause.elements) { node.exportClause.elements.forEach(item => { - if (projectConfig.isPreview && - entryCollection.has((item.propertyName ? item.propertyName : item.name).escapedText.toString())) { - remindExportEntryComponent(node, log); + if (projectConfig.isPreview) { + exportCollection.add((item.propertyName ? item.propertyName : item.name).escapedText.toString()); } if (item.name && item.propertyName && ts.isIdentifier(item.name) && ts.isIdentifier(item.propertyName)) { @@ -229,13 +229,14 @@ function visitAllNode(node: ts.Node, defaultNameFromParent: string, asNameFromPa processImport(node, pagesDir, log, asNameFromParent, false, pathCollection); } } - node.getChildren().reverse().forEach((item: ts.Node) => visitAllNode(item, defaultNameFromParent, - asNameFromParent, pagesDir, log, entryCollection, exportCollection, defaultCollection, - asExportCollection, pathCollection)); + node.getChildren().reverse().forEach((item: ts.Node) => visitAllNode(item, sourceFile, + defaultNameFromParent, asNameFromParent, pagesDir, log, entryCollection, exportCollection, + defaultCollection, asExportCollection, pathCollection, fileResolvePath)); } function isExportEntry(node: ts.ClassDeclaration, log: LogInfo[], entryCollection: Set, - exportCollection: Set): void { + exportCollection: Set, defaultCollection: Set, fileResolvePath: string, + sourceFile: ts.SourceFile): void { if (projectConfig.isPreview && node && node.decorators) { let existExport: boolean = false; let existEntry: boolean = false; @@ -254,19 +255,31 @@ function isExportEntry(node: ts.ClassDeclaration, log: LogInfo[], entryCollectio break; } } - if (existEntry && existExport || exportCollection.has(node.name.escapedText.toString())) { - remindExportEntryComponent(node, log); + if (existEntry && (existExport || defaultCollection.has(node.name.escapedText.toString()) || + exportCollection.has(node.name.escapedText.toString()))) { + remindExportEntryComponent(node, log, fileResolvePath, sourceFile); } } } -function remindExportEntryComponent(node: ts.Node, log: LogInfo[]): void { - log.push({ +function remindExportEntryComponent(node: ts.Node, log: LogInfo[], fileResolvePath: string, + sourceFile: ts.SourceFile): void { + const posOfNode: ts.LineAndCharacter = sourceFile.getLineAndCharacterOfPosition(node.getStart()); + const line: number = posOfNode.line + 1; + const column: number = posOfNode.character + 1; + let warnInfo: LogInfo = { type: LogType.WARN, message: `It's not a recommended way to export struct with @Entry decorator, ` + `which may cause ACE Engine error in component preview mode.`, - pos: node.getStart() - }); + pos: node.getStart(), + fileName: fileResolvePath, + line: line, + column: column + } + if (!repeatLog.has(fileResolvePath)) { + log.push(warnInfo); + repeatLog.set(fileResolvePath, warnInfo); + } } function addDependencies(node: ts.ClassDeclaration, defaultNameFromParent: string, diff --git a/compiler/src/result_process.ts b/compiler/src/result_process.ts index fe96bf2..ba8cc5b 100644 --- a/compiler/src/result_process.ts +++ b/compiler/src/result_process.ts @@ -45,14 +45,18 @@ module.exports = function resultProcess(source: string, map: any): void { const sourceFile: ts.SourceFile = transformLog.sourceFile; const logInfos: LogInfo[] = transformLog.errors.map((item) => { if (item.pos) { - const posOfNode: ts.LineAndCharacter = sourceFile.getLineAndCharacterOfPosition(item.pos); - item.line = posOfNode.line + 1; - item.column = posOfNode.character + 1; + if (!item.column || !item.line) { + const posOfNode: ts.LineAndCharacter = sourceFile.getLineAndCharacterOfPosition(item.pos); + item.line = posOfNode.line + 1; + item.column = posOfNode.character + 1; + } } else { item.line = undefined; item.column = undefined; } - item.fileName = sourceFile.fileName; + if (!item.fileName) { + item.fileName = sourceFile.fileName; + } return item; }); emitLogInfo(this, logInfos); diff --git a/compiler/src/utils.ts b/compiler/src/utils.ts index c208272..9738540 100644 --- a/compiler/src/utils.ts +++ b/compiler/src/utils.ts @@ -55,6 +55,8 @@ export interface LogInfo { fileName?: string } +export const repeatLog: Map = new Map(); + export class FileLog { private _sourceFile: ts.SourceFile; private _errors: LogInfo[] = []; @@ -84,7 +86,7 @@ export function emitLogInfo(loader: any, infos: LogInfo[]) { loader.emitError(getMessage(loader.resourcePath, item)); break; case LogType.WARN: - loader.emitWarning(getMessage(loader.resourcePath, item)); + loader.emitWarning(getMessage(item.fileName || loader.resourcePath, item)); break; case LogType.NOTE: loader.emitWarning(getMessage(loader.resourcePath, item)); From 9c2c915de929bee8b7c998452c0dff69d2b83350 Mon Sep 17 00:00:00 2001 From: houhaoyu Date: Tue, 14 Jun 2022 15:24:24 +0800 Subject: [PATCH 03/16] houhaoyu@huawei.com MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复import错误 Signed-off-by: houhaoyu Change-Id: Ie93d30665599c33dc5c8dad86f3c293f13a92750 --- compiler/src/process_import.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/compiler/src/process_import.ts b/compiler/src/process_import.ts index a36cb8e..d7681e1 100644 --- a/compiler/src/process_import.ts +++ b/compiler/src/process_import.ts @@ -221,12 +221,12 @@ function visitAllNode(node: ts.Node, defaultNameFromParent: string, asNameFromPa } }); } - processImport(node, pagesDir, log, asNameFromParent, true, pathCollection); + processImport(node, pagesDir, log, asNameFromParent, true, new Set(pathCollection)); } if (ts.isImportDeclaration(node)) { if (node.importClause && node.importClause.name && ts.isIdentifier(node.importClause.name) && asNameFromParent.has(node.importClause.name.getText())) { - processImport(node, pagesDir, log, asNameFromParent, false, pathCollection); + processImport(node, pagesDir, log, asNameFromParent, false, new Set(pathCollection)); } else if (node.importClause && node.importClause.namedBindings && ts.isNamedImports(node.importClause.namedBindings) && node.importClause.namedBindings.elements) { let nested: boolean = false; @@ -240,7 +240,7 @@ function visitAllNode(node: ts.Node, defaultNameFromParent: string, asNameFromPa } }); if (nested) { - processImport(node, pagesDir, log, asNameFromParent, false, pathCollection); + processImport(node, pagesDir, log, asNameFromParent, false, new Set(pathCollection)); } } } From fca8e214559d5be9fbf7272e3435dda23c54711a Mon Sep 17 00:00:00 2001 From: laibo102 Date: Thu, 16 Jun 2022 14:41:50 +0800 Subject: [PATCH 04/16] bugfix: fixed resource type support Signed-off-by: laibo102 Change-Id: I1d0fcc9d54a9f82af70aa45f755812a15ddcdae7 --- compiler/src/pre_define.ts | 3 ++- compiler/src/process_ui_syntax.ts | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/compiler/src/pre_define.ts b/compiler/src/pre_define.ts index 5a665b9..9dc8b93 100644 --- a/compiler/src/pre_define.ts +++ b/compiler/src/pre_define.ts @@ -175,7 +175,8 @@ export const RESOURCE_TYPE = { pattern: 10008, strarray: 10009, media: 20000, - rawfile: 30000 + rawfile: 30000, + graphic: 40000 }; export const WORKERS_DIR: string = 'workers'; diff --git a/compiler/src/process_ui_syntax.ts b/compiler/src/process_ui_syntax.ts index e1c7684..2b968ca 100644 --- a/compiler/src/process_ui_syntax.ts +++ b/compiler/src/process_ui_syntax.ts @@ -298,6 +298,13 @@ function processResourceData(node: ts.CallExpression): ts.Node { const resourceData: string[] = node.arguments[0].text.trim().split('.'); if (validateResourceData(resourceData, resources, node.arguments[0].getStart())) { const resourceType: number = RESOURCE_TYPE[resourceData[1]]; + if (resourceType === undefined) { + transformLog.errors.push({ + type: LogType.ERROR, + message: `The resource type ${resourceData[1]} is not supported.`, + pos: node.getStart() + }) + } const resourceValue: number = resources[resourceData[0]][resourceData[1]][resourceData[2]]; return createResourceParam(resourceValue, resourceType, Array.from(node.arguments).slice(1)); From 298fe728f2e64395bd2964d0ccbca30f0b0a83cb Mon Sep 17 00:00:00 2001 From: laibo102 Date: Thu, 16 Jun 2022 17:02:17 +0800 Subject: [PATCH 05/16] bugfix: fixed resource type support Signed-off-by: laibo102 Change-Id: I9c8daa6db88d79c5f663f164481c3cd603acf858 --- compiler/src/process_ui_syntax.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/compiler/src/process_ui_syntax.ts b/compiler/src/process_ui_syntax.ts index 2b968ca..7559ac2 100644 --- a/compiler/src/process_ui_syntax.ts +++ b/compiler/src/process_ui_syntax.ts @@ -304,6 +304,7 @@ function processResourceData(node: ts.CallExpression): ts.Node { message: `The resource type ${resourceData[1]} is not supported.`, pos: node.getStart() }) + return ; } const resourceValue: number = resources[resourceData[0]][resourceData[1]][resourceData[2]]; return createResourceParam(resourceValue, resourceType, From 7196b767ed386ba946b0b22740300e1e8609e100 Mon Sep 17 00:00:00 2001 From: laibo102 Date: Thu, 16 Jun 2022 17:07:31 +0800 Subject: [PATCH 06/16] bugfix: fixed resource type support Signed-off-by: laibo102 Change-Id: Iad85ac37326151f97fab23c90803c0160da0f6f6 --- compiler/src/process_ui_syntax.ts | 36 +++++++++++++++++-------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/compiler/src/process_ui_syntax.ts b/compiler/src/process_ui_syntax.ts index 7559ac2..9493ca3 100644 --- a/compiler/src/process_ui_syntax.ts +++ b/compiler/src/process_ui_syntax.ts @@ -294,27 +294,31 @@ function processResourceData(node: ts.CallExpression): ts.Node { if (node.expression.getText() === RESOURCE_RAWFILE) { return createResourceParam(0, RESOURCE_TYPE.rawfile, [node.arguments[0]]); } else { - // @ts-ignore - const resourceData: string[] = node.arguments[0].text.trim().split('.'); - if (validateResourceData(resourceData, resources, node.arguments[0].getStart())) { - const resourceType: number = RESOURCE_TYPE[resourceData[1]]; - if (resourceType === undefined) { - transformLog.errors.push({ - type: LogType.ERROR, - message: `The resource type ${resourceData[1]} is not supported.`, - pos: node.getStart() - }) - return ; - } - const resourceValue: number = resources[resourceData[0]][resourceData[1]][resourceData[2]]; - return createResourceParam(resourceValue, resourceType, - Array.from(node.arguments).slice(1)); - } + return getResourceDataNode(node); } } return node; } +function getResourceDataNode(node: ts.CallExpression): ts.Node { + const resourceData: string[] = (node.arguments[0] as ts.StringLiteral).text.trim().split('.'); + if (validateResourceData(resourceData, resources, node.arguments[0].getStart())) { + const resourceType: number = RESOURCE_TYPE[resourceData[1]]; + if (resourceType === undefined) { + transformLog.errors.push({ + type: LogType.ERROR, + message: `The resource type ${resourceData[1]} is not supported.`, + pos: node.getStart() + }) + return ; + } + const resourceValue: number = resources[resourceData[0]][resourceData[1]][resourceData[2]]; + return createResourceParam(resourceValue, resourceType, + Array.from(node.arguments).slice(1)); + } + return node; +} + function createResourceParam(resourceValue: number, resourceType: number, argsArr: ts.Expression[]): ts.ObjectLiteralExpression { const propertyArray: Array[ts.PropertyAssignment] = [ From 82070d7665d961904783d2e9d6fdf0777ee4a947 Mon Sep 17 00:00:00 2001 From: laibo102 Date: Thu, 16 Jun 2022 17:10:47 +0800 Subject: [PATCH 07/16] bugfix: fixed resource type support Signed-off-by: laibo102 Change-Id: I9bfea2cc7244fc74c5f8a6786f0dea61c014d94d --- compiler/src/process_ui_syntax.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/src/process_ui_syntax.ts b/compiler/src/process_ui_syntax.ts index 9493ca3..0b0e244 100644 --- a/compiler/src/process_ui_syntax.ts +++ b/compiler/src/process_ui_syntax.ts @@ -309,8 +309,8 @@ function getResourceDataNode(node: ts.CallExpression): ts.Node { type: LogType.ERROR, message: `The resource type ${resourceData[1]} is not supported.`, pos: node.getStart() - }) - return ; + }); + return; } const resourceValue: number = resources[resourceData[0]][resourceData[1]][resourceData[2]]; return createResourceParam(resourceValue, resourceType, From d7cd4a13aba83232ded963fec73bd8a9b442137e Mon Sep 17 00:00:00 2001 From: laibo102 Date: Fri, 17 Jun 2022 10:56:50 +0800 Subject: [PATCH 08/16] bugfix: fixed resource type support Signed-off-by: laibo102 Change-Id: I0168b45ea9b177fe4fce6451be770cfce5a23f63 --- compiler/src/process_ui_syntax.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/src/process_ui_syntax.ts b/compiler/src/process_ui_syntax.ts index 0b0e244..ebba07a 100644 --- a/compiler/src/process_ui_syntax.ts +++ b/compiler/src/process_ui_syntax.ts @@ -310,7 +310,7 @@ function getResourceDataNode(node: ts.CallExpression): ts.Node { message: `The resource type ${resourceData[1]} is not supported.`, pos: node.getStart() }); - return; + return node; } const resourceValue: number = resources[resourceData[0]][resourceData[1]][resourceData[2]]; return createResourceParam(resourceValue, resourceType, From d1a84a3236c718230ab2c8f8244af67b79e18fa6 Mon Sep 17 00:00:00 2001 From: jiangbo Date: Fri, 17 Jun 2022 16:57:02 +0800 Subject: [PATCH 09/16] =?UTF-8?q?=E8=A7=A3=E5=86=B3api=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=A3=80=E9=AA=8C=E5=A4=A7=E5=B0=8F=E5=86=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jiangbo Change-Id: If31323fb4a3f8e01b7cd2d49b3918db26adca775 --- compiler/main.js | 9 +++++++++ compiler/src/ets_checker.ts | 5 +++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/compiler/main.js b/compiler/main.js index 367a3b9..4f772b3 100644 --- a/compiler/main.js +++ b/compiler/main.js @@ -44,6 +44,7 @@ const resources = { app: {}, sys: {} }; +const readSysteModule = []; function initProjectConfig(projectConfig) { projectConfig.entryObj = {}; @@ -294,6 +295,13 @@ function filterWorker(workerPath) { if (fs.existsSync(sysResourcePath)) { resources.sys = require(sysResourcePath).sys; } +})(); + +(function initReadSystemModule() { + const modulePathApi = path.resolve('../../api'); + if (fs.existsSync(modulePathApi)) { + readSysteModule.push(...fs.readdirSync(modulePathApi)); + }; })() function readAppResource(resources, filePath) { @@ -365,3 +373,4 @@ exports.loadWorker = loadWorker; exports.abilityConfig = abilityConfig; exports.readWorkerFile = readWorkerFile; exports.loadModuleInfo = loadModuleInfo; +exports.readSysteModule = readSysteModule; diff --git a/compiler/src/ets_checker.ts b/compiler/src/ets_checker.ts index f976be3..9e3ac3a 100644 --- a/compiler/src/ets_checker.ts +++ b/compiler/src/ets_checker.ts @@ -17,7 +17,7 @@ import fs from 'fs'; import path from 'path'; import * as ts from 'typescript'; -import { projectConfig } from '../main'; +import { projectConfig,readSysteModule } from '../main'; import { processSystemApi, preprocessExtend, @@ -142,7 +142,8 @@ function resolveModuleNames(moduleNames: string[], containingFile: string): ts.R } } else if (/^@(system|ohos)/.test(moduleName.trim())) { const modulePath: string = path.resolve(__dirname, '../../../api', moduleName + '.d.ts'); - if (ts.sys.fileExists(modulePath)) { + const modulePathDeveloper: string = moduleName + '.d.ts'; + if (readSysteModule.includes(modulePathDeveloper) && readSysteModule.indexOf(modulePathDeveloper) !== -1) { resolvedModules.push(getResolveModule(modulePath, '.d.ts')); } else { resolvedModules.push(null); From cbbca369d62905c72fd47d95b093d96f4d6e6ed6 Mon Sep 17 00:00:00 2001 From: jiangbo Date: Mon, 20 Jun 2022 11:11:39 +0800 Subject: [PATCH 10/16] =?UTF-8?q?main=E6=96=87=E4=BB=B6=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E5=88=86=E5=8F=B7delete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jiangbo Change-Id: I2b6fb86e7f1e60f98a539faf6f833fbf33b3e291 --- compiler/main.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/compiler/main.js b/compiler/main.js index c4df52a..410078f 100644 --- a/compiler/main.js +++ b/compiler/main.js @@ -298,18 +298,18 @@ function filterWorker(workerPath) { return /\.(ts|js)$/.test(workerPath); } -;(function initSystemResource() { +(function initSystemResource() { const sysResourcePath = path.resolve('./sysResource.js'); if (fs.existsSync(sysResourcePath)) { resources.sys = require(sysResourcePath).sys; } -})(); +})() (function readSystemModules() { const systemModulesPath = path.resolve(__dirname,'../../api'); if (fs.existsSync(systemModulesPath)) { systemModules.push(...fs.readdirSync(systemModulesPath)); - }; + } })() function readAppResource(resources, filePath) { From 9f65e562e01eecbca3c4ee50338db274da39c5b9 Mon Sep 17 00:00:00 2001 From: jiangbo Date: Mon, 20 Jun 2022 11:54:48 +0800 Subject: [PATCH 11/16] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=88=86=E5=8F=B7=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jiangbo Change-Id: I207131b68d8d87b7600d0b26381cb42050bb77ff --- compiler/main.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/compiler/main.js b/compiler/main.js index 410078f..7f6761f 100644 --- a/compiler/main.js +++ b/compiler/main.js @@ -298,19 +298,19 @@ function filterWorker(workerPath) { return /\.(ts|js)$/.test(workerPath); } -(function initSystemResource() { +;(function initSystemResource() { const sysResourcePath = path.resolve('./sysResource.js'); if (fs.existsSync(sysResourcePath)) { resources.sys = require(sysResourcePath).sys; } -})() +})(); -(function readSystemModules() { +;(function readSystemModules() { const systemModulesPath = path.resolve(__dirname,'../../api'); if (fs.existsSync(systemModulesPath)) { systemModules.push(...fs.readdirSync(systemModulesPath)); } -})() +})(); function readAppResource(resources, filePath) { if (fs.existsSync(filePath)) { From 2e41f742964874a530bd6d9cf28b6e08acaedb68 Mon Sep 17 00:00:00 2001 From: jiangbo Date: Mon, 20 Jun 2022 19:38:10 +0800 Subject: [PATCH 12/16] jiangbo91@huawei.com fix system module name case sensitive. Signed-off-by: jiangbo --- compiler/main.js | 9 +++++++++ compiler/src/ets_checker.ts | 7 +++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/compiler/main.js b/compiler/main.js index 9c3b6c5..2b5bb55 100644 --- a/compiler/main.js +++ b/compiler/main.js @@ -44,6 +44,7 @@ const resources = { app: {}, sys: {} }; +const systemModules = []; const abilityPagesFullPath = []; function initProjectConfig(projectConfig) { @@ -304,6 +305,13 @@ function filterWorker(workerPath) { } })() +;(function readSystemModules() { + const systemModulesPath = path.resolve(__dirname,'../../api'); + if (fs.existsSync(systemModulesPath)) { + systemModules.push(...fs.readdirSync(systemModulesPath)); + } +})() + function readAppResource(resources, filePath) { if (fs.existsSync(filePath)) { const appResource = fs.readFileSync(filePath, "utf-8"); @@ -374,3 +382,4 @@ exports.abilityConfig = abilityConfig; exports.readWorkerFile = readWorkerFile; exports.abilityPagesFullPath = abilityPagesFullPath; exports.loadModuleInfo = loadModuleInfo; +exports.systemModules = systemModules; diff --git a/compiler/src/ets_checker.ts b/compiler/src/ets_checker.ts index f976be3..a8ea338 100644 --- a/compiler/src/ets_checker.ts +++ b/compiler/src/ets_checker.ts @@ -17,7 +17,10 @@ import fs from 'fs'; import path from 'path'; import * as ts from 'typescript'; -import { projectConfig } from '../main'; +import { + projectConfig, + systemModules +} from '../main'; import { processSystemApi, preprocessExtend, @@ -142,7 +145,7 @@ function resolveModuleNames(moduleNames: string[], containingFile: string): ts.R } } else if (/^@(system|ohos)/.test(moduleName.trim())) { const modulePath: string = path.resolve(__dirname, '../../../api', moduleName + '.d.ts'); - if (ts.sys.fileExists(modulePath)) { + if (systemModules.includes(moduleName + '.d.ts') && ts.sys.fileExists(modulePath)) { resolvedModules.push(getResolveModule(modulePath, '.d.ts')); } else { resolvedModules.push(null); From 7bd66d9960e8d61ab3d719e4da13ee1eedb049bb Mon Sep 17 00:00:00 2001 From: jiangbo Date: Mon, 20 Jun 2022 19:38:10 +0800 Subject: [PATCH 13/16] jiangbo91@huawei.com fix system module name case sensitive. Signed-off-by: jiangbo --- compiler/main.js | 10 ++++++++++ compiler/src/ets_checker.ts | 7 +++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/compiler/main.js b/compiler/main.js index 367a3b9..6bbb0da 100644 --- a/compiler/main.js +++ b/compiler/main.js @@ -45,6 +45,8 @@ const resources = { sys: {} }; +const systemModules = []; + function initProjectConfig(projectConfig) { projectConfig.entryObj = {}; projectConfig.projectPath = projectConfig.projectPath || process.env.aceModuleRoot || @@ -296,6 +298,13 @@ function filterWorker(workerPath) { } })() +;(function readSystemModules() { + const systemModulesPath = path.resolve(__dirname,'../../api'); + if (fs.existsSync(systemModulesPath)) { + systemModules.push(...fs.readdirSync(systemModulesPath)); + } +})() + function readAppResource(resources, filePath) { if (fs.existsSync(filePath)) { const appResource = fs.readFileSync(filePath, "utf-8"); @@ -365,3 +374,4 @@ exports.loadWorker = loadWorker; exports.abilityConfig = abilityConfig; exports.readWorkerFile = readWorkerFile; exports.loadModuleInfo = loadModuleInfo; +exports.systemModules = systemModules; diff --git a/compiler/src/ets_checker.ts b/compiler/src/ets_checker.ts index f976be3..a8ea338 100644 --- a/compiler/src/ets_checker.ts +++ b/compiler/src/ets_checker.ts @@ -17,7 +17,10 @@ import fs from 'fs'; import path from 'path'; import * as ts from 'typescript'; -import { projectConfig } from '../main'; +import { + projectConfig, + systemModules +} from '../main'; import { processSystemApi, preprocessExtend, @@ -142,7 +145,7 @@ function resolveModuleNames(moduleNames: string[], containingFile: string): ts.R } } else if (/^@(system|ohos)/.test(moduleName.trim())) { const modulePath: string = path.resolve(__dirname, '../../../api', moduleName + '.d.ts'); - if (ts.sys.fileExists(modulePath)) { + if (systemModules.includes(moduleName + '.d.ts') && ts.sys.fileExists(modulePath)) { resolvedModules.push(getResolveModule(modulePath, '.d.ts')); } else { resolvedModules.push(null); From 643cfb8b50b2e212ce2960d77df273c6a3835353 Mon Sep 17 00:00:00 2001 From: jiangbo Date: Tue, 21 Jun 2022 10:18:13 +0800 Subject: [PATCH 14/16] jiangbo91@huawei.com updata api case Rex Signed-off-by: jiangbo --- compiler/src/ets_checker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/src/ets_checker.ts b/compiler/src/ets_checker.ts index 052c791..f457710 100644 --- a/compiler/src/ets_checker.ts +++ b/compiler/src/ets_checker.ts @@ -143,7 +143,7 @@ function resolveModuleNames(moduleNames: string[], containingFile: string): ts.R } else { resolvedModules.push(null); } - } else if (/^@(system|ohos)/.test(moduleName.trim())) { + } else if (/^@(system|ohos)/i.test(moduleName.trim())) { const modulePath: string = path.resolve(__dirname, '../../../api', moduleName + '.d.ts'); if (systemModules.includes(moduleName + '.d.ts') && ts.sys.fileExists(modulePath)) { resolvedModules.push(getResolveModule(modulePath, '.d.ts')); From b914cbdc97d0181d08bd79c8721386511a40708d Mon Sep 17 00:00:00 2001 From: jiangbo Date: Tue, 21 Jun 2022 10:27:26 +0800 Subject: [PATCH 15/16] jiangbo91@huawei.com MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit delete 多余readSystemModules function Signed-off-by: jiangbo --- compiler/main.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/compiler/main.js b/compiler/main.js index c999683..7582cc3 100644 --- a/compiler/main.js +++ b/compiler/main.js @@ -305,13 +305,6 @@ function filterWorker(workerPath) { } })(); -;(function readSystemModules() { - const systemModulesPath = path.resolve(__dirname,'../../api'); - if (fs.existsSync(systemModulesPath)) { - systemModules.push(...fs.readdirSync(systemModulesPath)); - } -})(); - ;(function readSystemModules() { const systemModulesPath = path.resolve(__dirname,'../../api'); if (fs.existsSync(systemModulesPath)) { From d6657086d9d4cbda97a979ec3968cc3e8e3c2945 Mon Sep 17 00:00:00 2001 From: jiangbo Date: Tue, 21 Jun 2022 10:41:04 +0800 Subject: [PATCH 16/16] jiangbo91@huawei.com update api case reg Signed-off-by: jiangbo --- compiler/src/ets_checker.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/compiler/src/ets_checker.ts b/compiler/src/ets_checker.ts index 915de2d..5af515f 100644 --- a/compiler/src/ets_checker.ts +++ b/compiler/src/ets_checker.ts @@ -17,15 +17,9 @@ import fs from 'fs'; import path from 'path'; import * as ts from 'typescript'; -<<<<<<< HEAD import { projectConfig, systemModules -======= -import { - projectConfig, - systemModules ->>>>>>> d712be2971d248e9058470cdcd363d78d1da182b } from '../main'; import { processSystemApi,