diff --git a/ui-ngx/generate-types.js b/ui-ngx/generate-types.js new file mode 100644 index 0000000000..a24673cbd5 --- /dev/null +++ b/ui-ngx/generate-types.js @@ -0,0 +1,66 @@ +/* + * Copyright © 2016-2022 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +const child_process = require("child_process"); +const fs = require('fs'); +const path = require('path'); +const typeDir = './target/types'; +const srcDir = typeDir + '/src'; +const moduleMapPath = "src/app/modules/common/modules-map.ts"; + +console.log(`Remove directory: ${typeDir}`); +try { + fs.rmSync(typeDir, {recursive: true, force: true,}); +} catch (err) { + console.error(`Remove directory error: ${err}`); +} + +const cliCommand = `./node_modules/.bin/ngc --p src/tsconfig.app.json --declaration --outDir ${srcDir}`; +console.log(cliCommand); +try { + child_process.execSync(cliCommand); +} catch (err) { + console.error("Build types", err); + process.exit(1); +} + +function fromDir(startPath, filter, callback) { + if (!fs.existsSync(startPath)) { + console.log("not dirs", startPath); + process.exit(1); + } + + const files = fs.readdirSync(startPath); + for (let i = 0; i < files.length; i++) { + const filename = path.join(startPath, files[i]); + const stat = fs.lstatSync(filename); + if (stat.isDirectory()) { + fromDir(filename, filter, callback); + } else if (filter.test(filename)) { + callback(filename) + } + } +} + + +fromDir(srcDir, /(\.js|\.js\.map)$/, function (filename) { + try { + fs.rmSync(filename); + } catch (err) { + console.error(`Remove file error ${filename}: ${err}`); + } +}); +fs.cpSync(moduleMapPath, `${typeDir}/${moduleMapPath}`); diff --git a/ui-ngx/package.json b/ui-ngx/package.json index 7308a86c9e..6c912e1fdf 100644 --- a/ui-ngx/package.json +++ b/ui-ngx/package.json @@ -6,6 +6,7 @@ "start": "node --max_old_space_size=8048 ./node_modules/@angular/cli/bin/ng serve --configuration development --host 0.0.0.0 --open", "build": "ng build", "build:prod": "ng build --configuration production --vendor-chunk", + "build:types": "node generate-types.js", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e",