- App.tsx: full navigation (Auth stack + Main tabs with 5 screens) - Auth: LoginScreen, RegisterScreen, ForgotPasswordScreen - HomeScreen: dashboard with IoT metrics, weather widget, alerts, quick actions, sensors - MapScreen: interactive map with layer toggles (6 layers) - MarketplaceScreen: categories (6), products (5), search - ChatScreen: AI chat with quick prompts (4), bot responses - ProfileScreen: user info, stats, menu (9 items), logout - AlertsScreen: alert list with severity, acknowledge - SensorsScreen: sensor list with type filters (6 types), search - ZonesScreen: zone cards with stats - SettingsScreen: language picker (FR/EN/ES/DE), privacy, about - Stores: iotStore (sensors, zones, alerts), notificationStore, uiStore + i18n - Hooks: useSensors, useAlerts, useNotifications, useLocation - Components: Card, Button, LoadingSpinner, ErrorBoundary, Header - Services: iotService, notificationService (with axios API client) - Utils: formatters (temp, AQI, noise, dates), validators (email, password, IBAN) - Theme: colors.ts with full design system (Blue Ocean palette) - Ditto: fixed MongoDB connection, new JWT secrets, official gateway image
112 lines
4.2 KiB
JavaScript
112 lines
4.2 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.getApplicationTargetNameForSchemeAsync = getApplicationTargetNameForSchemeAsync;
|
|
exports.getArchiveBuildConfigurationForSchemeAsync = getArchiveBuildConfigurationForSchemeAsync;
|
|
exports.getRunnableSchemesFromXcodeproj = getRunnableSchemesFromXcodeproj;
|
|
exports.getSchemesFromXcodeproj = getSchemesFromXcodeproj;
|
|
function _Paths() {
|
|
const data = require("./Paths");
|
|
_Paths = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
function _Target() {
|
|
const data = require("./Target");
|
|
_Target = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
function _Xcodeproj() {
|
|
const data = require("./utils/Xcodeproj");
|
|
_Xcodeproj = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
function _XML() {
|
|
const data = require("../utils/XML");
|
|
_XML = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
function getSchemesFromXcodeproj(projectRoot) {
|
|
return (0, _Paths().findSchemeNames)(projectRoot);
|
|
}
|
|
function getRunnableSchemesFromXcodeproj(projectRoot, {
|
|
configuration = 'Debug'
|
|
} = {}) {
|
|
const project = (0, _Xcodeproj().getPbxproj)(projectRoot);
|
|
return (0, _Target().findSignableTargets)(project).map(([, target]) => {
|
|
let osType = 'iOS';
|
|
const type = (0, _Xcodeproj().unquote)(target.productType);
|
|
if (type === _Target().TargetType.WATCH) {
|
|
osType = 'watchOS';
|
|
} else if (
|
|
// (apps) com.apple.product-type.application
|
|
// (app clips) com.apple.product-type.application.on-demand-install-capable
|
|
// NOTE(EvanBacon): This matches against `watchOS` as well so we check for watch first.
|
|
type.startsWith(_Target().TargetType.APPLICATION)) {
|
|
// Attempt to resolve the platform SDK for each target so we can filter devices.
|
|
const xcConfigurationList = project.hash.project.objects.XCConfigurationList[target.buildConfigurationList];
|
|
if (xcConfigurationList) {
|
|
const buildConfiguration = xcConfigurationList.buildConfigurations.find(value => value.comment === configuration) || xcConfigurationList.buildConfigurations[0];
|
|
if (buildConfiguration?.value) {
|
|
const xcBuildConfiguration = project.hash.project.objects.XCBuildConfiguration?.[buildConfiguration.value];
|
|
const buildSdkRoot = xcBuildConfiguration.buildSettings.SDKROOT;
|
|
if (buildSdkRoot === 'appletvos' || 'TVOS_DEPLOYMENT_TARGET' in xcBuildConfiguration.buildSettings) {
|
|
// Is a TV app...
|
|
osType = 'tvOS';
|
|
} else if (buildSdkRoot === 'iphoneos') {
|
|
osType = 'iOS';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return {
|
|
name: (0, _Xcodeproj().unquote)(target.name),
|
|
osType,
|
|
type: (0, _Xcodeproj().unquote)(target.productType)
|
|
};
|
|
});
|
|
}
|
|
async function readSchemeAsync(projectRoot, scheme) {
|
|
const allSchemePaths = (0, _Paths().findSchemePaths)(projectRoot);
|
|
const re = new RegExp(`/${scheme}.xcscheme`, 'i');
|
|
const schemePath = allSchemePaths.find(i => re.exec(i));
|
|
if (schemePath) {
|
|
return await (0, _XML().readXMLAsync)({
|
|
path: schemePath
|
|
});
|
|
} else {
|
|
throw new Error(`scheme '${scheme}' does not exist, make sure it's marked as shared`);
|
|
}
|
|
}
|
|
async function getApplicationTargetNameForSchemeAsync(projectRoot, scheme) {
|
|
const schemeXML = await readSchemeAsync(projectRoot, scheme);
|
|
const buildActionEntry = schemeXML?.Scheme?.BuildAction?.[0]?.BuildActionEntries?.[0]?.BuildActionEntry;
|
|
const targetName = buildActionEntry?.length === 1 ? getBlueprintName(buildActionEntry[0]) : getBlueprintName(buildActionEntry?.find(entry => {
|
|
return entry.BuildableReference?.[0]?.['$']?.BuildableName?.endsWith('.app');
|
|
}));
|
|
if (!targetName) {
|
|
throw new Error(`${scheme}.xcscheme seems to be corrupted`);
|
|
}
|
|
return targetName;
|
|
}
|
|
async function getArchiveBuildConfigurationForSchemeAsync(projectRoot, scheme) {
|
|
const schemeXML = await readSchemeAsync(projectRoot, scheme);
|
|
const buildConfiguration = schemeXML?.Scheme?.ArchiveAction?.[0]?.['$']?.buildConfiguration;
|
|
if (!buildConfiguration) {
|
|
throw new Error(`${scheme}.xcscheme seems to be corrupted`);
|
|
}
|
|
return buildConfiguration;
|
|
}
|
|
function getBlueprintName(entry) {
|
|
return entry?.BuildableReference?.[0]?.['$']?.BlueprintName;
|
|
}
|
|
//# sourceMappingURL=BuildScheme.js.map
|