- 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
3.8 KiB
JavaScript
112 lines
3.8 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.requireAndResolveExpoModuleConfig = exports.ExpoModuleConfig = void 0;
|
|
function arrayize(value) {
|
|
if (Array.isArray(value)) {
|
|
return value;
|
|
}
|
|
return value != null ? [value] : [];
|
|
}
|
|
/**
|
|
* A class that wraps the raw config (`expo-module.json` or `unimodule.json`).
|
|
*/
|
|
class ExpoModuleConfig {
|
|
rawConfig;
|
|
constructor(rawConfig) {
|
|
this.rawConfig = rawConfig;
|
|
}
|
|
/**
|
|
* Whether the module supports given platform.
|
|
*/
|
|
supportsPlatform(platform) {
|
|
const supportedPlatforms = this.rawConfig.platforms ?? [];
|
|
if (platform === 'apple') {
|
|
// Apple platform is supported when any of iOS, macOS and tvOS is supported.
|
|
return supportedPlatforms.some((supportedPlatform) => {
|
|
return ['apple', 'ios', 'macos', 'tvos'].includes(supportedPlatform);
|
|
});
|
|
}
|
|
return supportedPlatforms.includes(platform);
|
|
}
|
|
/**
|
|
* Returns the generic config for all Apple platforms with a fallback to the legacy iOS config.
|
|
*/
|
|
getAppleConfig() {
|
|
return this.rawConfig.apple ?? this.rawConfig.ios ?? null;
|
|
}
|
|
/**
|
|
* Returns a list of names of Swift native modules classes to put to the generated modules provider file.
|
|
*/
|
|
appleModules() {
|
|
const appleConfig = this.getAppleConfig();
|
|
// `modulesClassNames` is a legacy name for the same config.
|
|
return appleConfig?.modules ?? appleConfig?.modulesClassNames ?? [];
|
|
}
|
|
/**
|
|
* Returns a list of names of Swift classes that receives AppDelegate life-cycle events.
|
|
*/
|
|
appleAppDelegateSubscribers() {
|
|
return this.getAppleConfig()?.appDelegateSubscribers ?? [];
|
|
}
|
|
/**
|
|
* Returns a list of names of Swift classes that implement `ExpoReactDelegateHandler`.
|
|
*/
|
|
appleReactDelegateHandlers() {
|
|
return this.getAppleConfig()?.reactDelegateHandlers ?? [];
|
|
}
|
|
/**
|
|
* Returns podspec paths defined by the module author.
|
|
*/
|
|
applePodspecPaths() {
|
|
return arrayize(this.getAppleConfig()?.podspecPath);
|
|
}
|
|
/**
|
|
* Returns the product module names, if defined by the module author.
|
|
*/
|
|
appleSwiftModuleNames() {
|
|
return arrayize(this.getAppleConfig()?.swiftModuleName);
|
|
}
|
|
/**
|
|
* Returns whether this module will be added only to the debug configuration
|
|
*/
|
|
appleDebugOnly() {
|
|
return this.getAppleConfig()?.debugOnly ?? false;
|
|
}
|
|
/**
|
|
* Returns a list of names of Kotlin native modules classes to put to the generated package provider file.
|
|
*/
|
|
androidModules() {
|
|
const androidConfig = this.rawConfig.android;
|
|
// `modulesClassNames` is a legacy name for the same config.
|
|
return androidConfig?.modules ?? androidConfig?.modulesClassNames ?? [];
|
|
}
|
|
/**
|
|
* Returns build.gradle file paths defined by the module author.
|
|
*/
|
|
androidGradlePaths() {
|
|
return arrayize(this.rawConfig.android?.gradlePath ?? []);
|
|
}
|
|
/**
|
|
* Returns gradle plugins descriptors defined by the module author.
|
|
*/
|
|
androidGradlePlugins() {
|
|
return arrayize(this.rawConfig.android?.gradlePlugins ?? []);
|
|
}
|
|
/**
|
|
* Returns serializable raw config.
|
|
*/
|
|
toJSON() {
|
|
return this.rawConfig;
|
|
}
|
|
}
|
|
exports.ExpoModuleConfig = ExpoModuleConfig;
|
|
/**
|
|
* Reads the config at given path and returns the config wrapped by `ExpoModuleConfig` class.
|
|
*/
|
|
function requireAndResolveExpoModuleConfig(path) {
|
|
// TODO: Validate the raw config against a schema.
|
|
// TODO: Support for `*.js` files, not only static `*.json`.
|
|
return new ExpoModuleConfig(require(path));
|
|
}
|
|
exports.requireAndResolveExpoModuleConfig = requireAndResolveExpoModuleConfig;
|
|
//# sourceMappingURL=ExpoModuleConfig.js.map
|