1/* 2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import * as ts from '@koalaui/ets-tsc' 17import * as path from 'path' 18 19export class EntryTracker { 20 // route to its @entry name 21 entries = new Map<string, string>() 22 23 constructor(private sourceRoot: string) { } 24 25 fileNameToRoute(fileName: string): string { 26 return path.relative(this.sourceRoot, fileName) 27 .replace(/\.ets$/, "") 28 .replace(/\\/g, '/') // make sure we get forward slashes 29 } 30 31 sourceFileToRoute(sourceFile: ts.SourceFile): string { 32 return this.fileNameToRoute(sourceFile.fileName) 33 } 34 35 addEntry(name: string, sourceFile: ts.SourceFile) { 36 const route = this.sourceFileToRoute(sourceFile) 37 this.entries.set(route, name) 38 } 39}