- 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
147 lines
5.2 KiB
JavaScript
147 lines
5.2 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.getAsyncRoutes = exports.getInlineEnvVarsEnabled = exports.getExpoRouterAbsoluteAppRoot = exports.getIsServer = exports.getReactCompiler = exports.getBaseUrl = exports.getIsNodeModule = exports.getIsProd = exports.getIsFastRefreshEnabled = exports.getIsDev = exports.getIsReactServer = exports.getPossibleProjectRoot = exports.getPlatform = exports.getBundler = exports.hasModule = void 0;
|
|
const path_1 = __importDefault(require("path"));
|
|
function hasModule(name) {
|
|
try {
|
|
return !!require.resolve(name);
|
|
}
|
|
catch (error) {
|
|
if (error.code === 'MODULE_NOT_FOUND' && error.message.includes(name)) {
|
|
return false;
|
|
}
|
|
throw error;
|
|
}
|
|
}
|
|
exports.hasModule = hasModule;
|
|
/** Determine which bundler is being used. */
|
|
function getBundler(caller) {
|
|
assertExpoBabelCaller(caller);
|
|
if (!caller)
|
|
return null;
|
|
if (caller.bundler)
|
|
return caller.bundler;
|
|
if (
|
|
// Known tools that use `webpack`-mode via `babel-loader`: `@expo/webpack-config`, Next.js <10
|
|
caller.name === 'babel-loader' ||
|
|
// NextJS 11 uses this custom caller name.
|
|
caller.name === 'next-babel-turbo-loader') {
|
|
return 'webpack';
|
|
}
|
|
// Assume anything else is Metro.
|
|
return 'metro';
|
|
}
|
|
exports.getBundler = getBundler;
|
|
function getPlatform(caller) {
|
|
assertExpoBabelCaller(caller);
|
|
if (!caller)
|
|
return null;
|
|
if (caller.platform)
|
|
return caller.platform;
|
|
const bundler = getBundler(caller);
|
|
if (bundler === 'webpack') {
|
|
return 'web';
|
|
}
|
|
// unknown
|
|
return caller.platform;
|
|
}
|
|
exports.getPlatform = getPlatform;
|
|
function getPossibleProjectRoot(caller) {
|
|
assertExpoBabelCaller(caller);
|
|
if (!caller)
|
|
return null;
|
|
if (caller.projectRoot)
|
|
return caller.projectRoot;
|
|
// unknown
|
|
return process.env.EXPO_PROJECT_ROOT;
|
|
}
|
|
exports.getPossibleProjectRoot = getPossibleProjectRoot;
|
|
/** If bundling for a react-server target. */
|
|
function getIsReactServer(caller) {
|
|
assertExpoBabelCaller(caller);
|
|
return caller?.isReactServer ?? false;
|
|
}
|
|
exports.getIsReactServer = getIsReactServer;
|
|
function assertExpoBabelCaller(caller) { }
|
|
function getIsDev(caller) {
|
|
assertExpoBabelCaller(caller);
|
|
if (caller?.isDev != null)
|
|
return caller.isDev;
|
|
// https://babeljs.io/docs/options#envname
|
|
return process.env.BABEL_ENV === 'development' || process.env.NODE_ENV === 'development';
|
|
}
|
|
exports.getIsDev = getIsDev;
|
|
function getIsFastRefreshEnabled(caller) {
|
|
assertExpoBabelCaller(caller);
|
|
if (!caller)
|
|
return false;
|
|
return caller.isHMREnabled && !caller.isServer && !caller.isNodeModule && getIsDev(caller);
|
|
}
|
|
exports.getIsFastRefreshEnabled = getIsFastRefreshEnabled;
|
|
function getIsProd(caller) {
|
|
assertExpoBabelCaller(caller);
|
|
if (caller?.isDev != null)
|
|
return caller.isDev === false;
|
|
// https://babeljs.io/docs/options#envname
|
|
return process.env.BABEL_ENV === 'production' || process.env.NODE_ENV === 'production';
|
|
}
|
|
exports.getIsProd = getIsProd;
|
|
function getIsNodeModule(caller) {
|
|
return caller?.isNodeModule ?? false;
|
|
}
|
|
exports.getIsNodeModule = getIsNodeModule;
|
|
function getBaseUrl(caller) {
|
|
assertExpoBabelCaller(caller);
|
|
return caller?.baseUrl ?? '';
|
|
}
|
|
exports.getBaseUrl = getBaseUrl;
|
|
function getReactCompiler(caller) {
|
|
assertExpoBabelCaller(caller);
|
|
return caller?.supportsReactCompiler ?? false;
|
|
}
|
|
exports.getReactCompiler = getReactCompiler;
|
|
function getIsServer(caller) {
|
|
assertExpoBabelCaller(caller);
|
|
return caller?.isServer ?? false;
|
|
}
|
|
exports.getIsServer = getIsServer;
|
|
function getExpoRouterAbsoluteAppRoot(caller) {
|
|
assertExpoBabelCaller(caller);
|
|
const rootModuleId = caller?.routerRoot ?? './app';
|
|
if (path_1.default.isAbsolute(rootModuleId)) {
|
|
return rootModuleId;
|
|
}
|
|
const projectRoot = getPossibleProjectRoot(caller) || '/';
|
|
return path_1.default.join(projectRoot, rootModuleId);
|
|
}
|
|
exports.getExpoRouterAbsoluteAppRoot = getExpoRouterAbsoluteAppRoot;
|
|
function getInlineEnvVarsEnabled(caller) {
|
|
assertExpoBabelCaller(caller);
|
|
const isWebpack = getBundler(caller) === 'webpack';
|
|
const isDev = getIsDev(caller);
|
|
const isServer = getIsServer(caller);
|
|
const isNodeModule = getIsNodeModule(caller);
|
|
const preserveEnvVars = caller?.preserveEnvVars;
|
|
// Development env vars are added in the serializer to avoid caching issues in development.
|
|
// Servers have env vars left as-is to read from the environment.
|
|
return !isNodeModule && !isWebpack && !isDev && !isServer && !preserveEnvVars;
|
|
}
|
|
exports.getInlineEnvVarsEnabled = getInlineEnvVarsEnabled;
|
|
function getAsyncRoutes(caller) {
|
|
assertExpoBabelCaller(caller);
|
|
const isServer = getIsServer(caller);
|
|
if (isServer) {
|
|
return false;
|
|
}
|
|
const isProd = getIsProd(caller);
|
|
const platform = getPlatform(caller);
|
|
if (platform !== 'web' && isProd) {
|
|
return false;
|
|
}
|
|
return caller?.asyncRoutes ?? false;
|
|
}
|
|
exports.getAsyncRoutes = getAsyncRoutes;
|