87 lines
No EOL
4 KiB
JavaScript
87 lines
No EOL
4 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.MobileProject = void 0;
|
|
const utils_fs_1 = require("@ionic/utils-fs");
|
|
const path_1 = require("path");
|
|
const project_1 = require("./android/project");
|
|
const capacitor_1 = require("./frameworks/capacitor");
|
|
const cordova_1 = require("./frameworks/cordova");
|
|
const flutter_1 = require("./frameworks/flutter");
|
|
const dotnet_maui_1 = require("./frameworks/dotnet-maui");
|
|
const react_native_1 = require("./frameworks/react-native");
|
|
const project_2 = require("./ios/project");
|
|
const vfs_1 = require("./vfs");
|
|
const native_ios_1 = require("./frameworks/native-ios");
|
|
const native_android_1 = require("./frameworks/native-android");
|
|
const nativescript_1 = require("./frameworks/nativescript");
|
|
const logger_1 = require("./logger");
|
|
class MobileProject {
|
|
constructor(projectRoot, config = {}) {
|
|
var _a, _b;
|
|
this.projectRoot = projectRoot;
|
|
this.config = config;
|
|
this.framework = null;
|
|
this.ios = null;
|
|
this.android = null;
|
|
this.vfs = new vfs_1.VFS();
|
|
this.config.projectRoot = projectRoot;
|
|
if (typeof config.enableAndroid === 'undefined') {
|
|
config.enableAndroid = true;
|
|
}
|
|
if (typeof config.enableIos === 'undefined') {
|
|
config.enableIos = true;
|
|
}
|
|
if (this.config.ios) {
|
|
this.config.ios.path = (0, path_1.join)(this.projectRoot, (_a = this.config.ios.path) !== null && _a !== void 0 ? _a : '');
|
|
}
|
|
if (this.config.android) {
|
|
this.config.android.path = (0, path_1.join)(this.projectRoot, (_b = this.config.android.path) !== null && _b !== void 0 ? _b : '');
|
|
}
|
|
}
|
|
async detectFramework() {
|
|
var _a;
|
|
const frameworks = [
|
|
flutter_1.FlutterFramework,
|
|
react_native_1.ReactNativeFramework,
|
|
capacitor_1.CapacitorFramework,
|
|
cordova_1.CordovaFramework,
|
|
dotnet_maui_1.DotNetMauiFramework,
|
|
nativescript_1.NativeScriptFramework,
|
|
native_ios_1.NativeIosFramework,
|
|
native_android_1.NativeAndroidFramework,
|
|
];
|
|
const results = await Promise.all(frameworks.map(f => f.getFramework(this)));
|
|
return (_a = results.filter(f => f).find(f => !!f)) !== null && _a !== void 0 ? _a : null;
|
|
}
|
|
async load() {
|
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
if (((_a = this.config) === null || _a === void 0 ? void 0 : _a.enableAndroid) &&
|
|
((_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.android) === null || _c === void 0 ? void 0 : _c.path) &&
|
|
(await (0, utils_fs_1.pathExists)((_d = this.config.android) === null || _d === void 0 ? void 0 : _d.path))) {
|
|
this.android = new project_1.AndroidProject(this);
|
|
await ((_e = this.android) === null || _e === void 0 ? void 0 : _e.load());
|
|
}
|
|
if (((_f = this.config) === null || _f === void 0 ? void 0 : _f.enableIos) &&
|
|
((_h = (_g = this.config) === null || _g === void 0 ? void 0 : _g.ios) === null || _h === void 0 ? void 0 : _h.path) &&
|
|
(await (0, utils_fs_1.pathExists)((_j = this.config.ios) === null || _j === void 0 ? void 0 : _j.path))) {
|
|
this.ios = new project_2.IosProject(this);
|
|
await ((_k = this.ios) === null || _k === void 0 ? void 0 : _k.load());
|
|
}
|
|
this.framework = await this.detectFramework();
|
|
}
|
|
commit() {
|
|
return this.vfs.commitAll(this);
|
|
}
|
|
async copyFile(src, dest) {
|
|
const destPath = (0, path_1.join)(this.projectRoot, dest);
|
|
logger_1.Logger.v(`project`, `copyFile`, `copying ${src} to ${destPath}`);
|
|
if (/^(https?:\/\/)/.test(src)) {
|
|
const res = await fetch(src);
|
|
return (0, utils_fs_1.writeFile)(destPath, Buffer.from(await res.arrayBuffer()));
|
|
}
|
|
const srcPath = (0, path_1.join)(this.projectRoot, src);
|
|
return (0, utils_fs_1.copy)(srcPath, destPath);
|
|
}
|
|
}
|
|
exports.MobileProject = MobileProject;
|
|
//# sourceMappingURL=project.js.map
|