Files
smart-city-digital-twin-mar…/smart-app-city/frontend/node_modules/metro-config/src/defaults/index.js.flow
Eric FELIXINE e30ae8ed09 feat(smart-app): implement complete mobile app MVP
- 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
2026-06-01 18:00:35 -04:00

182 lines
5.0 KiB
Plaintext

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
* @oncall react_native
*/
'use strict';
import type {ConfigT} from '../configTypes.flow';
const {
DEFAULT_METRO_MINIFIER_PATH,
additionalExts,
assetExts,
assetResolutions,
defaultCreateModuleIdFactory,
noopPerfLoggerFactory,
platforms,
sourceExts,
} = require('./defaults');
const exclusionList = require('./exclusionList');
const {FileStore} = require('metro-cache');
const {Terminal} = require('metro-core');
const getMaxWorkers = require('metro/src/lib/getMaxWorkers');
const TerminalReporter = require('metro/src/lib/TerminalReporter');
const os = require('os');
const path = require('path');
const getDefaultValues = (projectRoot: ?string): ConfigT => ({
resolver: {
assetExts,
assetResolutions,
platforms,
sourceExts,
blockList: exclusionList(),
dependencyExtractor: undefined,
disableHierarchicalLookup: false,
unstable_enableSymlinks: true,
emptyModulePath: require.resolve(
'metro-runtime/src/modules/empty-module.js',
),
enableGlobalPackages: false,
extraNodeModules: {},
hasteImplModulePath: undefined,
nodeModulesPaths: [],
resolveRequest: null,
resolverMainFields: ['browser', 'main'],
unstable_conditionNames: ['require', 'import'],
unstable_conditionsByPlatform: {
web: ['browser'],
},
unstable_enablePackageExports: false,
useWatchman: true,
requireCycleIgnorePatterns: [/(^|\/|\\)node_modules($|\/|\\)/],
},
serializer: {
polyfillModuleNames: [],
getRunModuleStatement: (moduleId: number | string) =>
`__r(${JSON.stringify(moduleId)});`,
getPolyfills: () => [],
getModulesRunBeforeMainModule: () => [],
processModuleFilter: module => true,
createModuleIdFactory: defaultCreateModuleIdFactory,
experimentalSerializerHook: () => {},
customSerializer: null,
isThirdPartyModule: module =>
/(?:^|[/\\])node_modules[/\\]/.test(module.path),
},
server: {
enhanceMiddleware: (middleware, _) => middleware,
forwardClientLogs: true,
port: 8081,
rewriteRequestUrl: url => url,
unstable_serverRoot: null,
useGlobalHotkey: true,
verifyConnections: false,
},
symbolicator: {
customizeFrame: () => {},
customizeStack: async (stack, _) => stack,
},
transformer: {
assetPlugins: [],
asyncRequireModulePath: 'metro-runtime/src/modules/asyncRequire',
assetRegistryPath: 'missing-asset-registry-path',
babelTransformerPath: 'metro-babel-transformer',
dynamicDepsInPackages: 'throwAtRuntime',
enableBabelRCLookup: true,
enableBabelRuntime: true,
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
unstable_disableES6Transforms: false,
},
preloadedModules: false,
ramGroups: [],
}),
globalPrefix: '',
hermesParser: false,
minifierConfig: {
mangle: {
toplevel: false,
},
output: {
ascii_only: true,
quote_style: 3,
wrap_iife: true,
},
sourceMap: {
includeSources: false,
},
toplevel: false,
compress: {
// reduce_funcs inlines single-use functions, which cause perf regressions.
reduce_funcs: false,
},
},
minifierPath: DEFAULT_METRO_MINIFIER_PATH,
optimizationSizeLimit: 150 * 1024, // 150 KiB.
transformVariants: {default: {}},
workerPath: 'metro/src/DeltaBundler/Worker',
publicPath: '/assets',
allowOptionalDependencies: false,
unstable_allowRequireContext: false,
unstable_dependencyMapReservedName: null,
unstable_disableModuleWrapping: false,
unstable_disableNormalizePseudoGlobals: false,
unstable_renameRequire: true,
unstable_compactOutput: false,
unstable_workerThreads: false,
},
watcher: {
additionalExts,
healthCheck: {
enabled: false,
filePrefix: '.metro-health-check',
interval: 30000,
timeout: 5000,
},
unstable_workerThreads: false,
watchman: {
deferStates: ['hg.update'],
},
},
cacheStores: [
new FileStore({
root: path.join(os.tmpdir(), 'metro-cache'),
}),
],
cacheVersion: '1.0',
// We assume the default project path is two levels up from
// node_modules/metro/
projectRoot: projectRoot || path.resolve(__dirname, '../../..'),
stickyWorkers: true,
watchFolders: [],
transformerPath: 'metro-transform-worker',
maxWorkers: getMaxWorkers(),
resetCache: false,
reporter: new TerminalReporter(new Terminal(process.stdout)),
unstable_perfLoggerFactory: noopPerfLoggerFactory,
});
async function getDefaultConfig(rootPath: ?string): Promise<ConfigT> {
// We can add more logic here to get a sensible default configuration, for
// now we just return a stub.
return getDefaultValues(rootPath);
}
getDefaultConfig.getDefaultValues = getDefaultValues;
module.exports = getDefaultConfig;