Files
smart-city-digital-twin-mar…/smart-app-city/frontend/node_modules/@expo/cli/build/bin/cli
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

260 lines
11 KiB
JavaScript
Executable File

#!/usr/bin/env node
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _arg() {
const data = /*#__PURE__*/ _interopRequireDefault(require("arg"));
_arg = function() {
return data;
};
return data;
}
function _chalk() {
const data = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
_chalk = function() {
return data;
};
return data;
}
function _debug() {
const data = /*#__PURE__*/ _interopRequireDefault(require("debug"));
_debug = function() {
return data;
};
return data;
}
function _getenv() {
const data = require("getenv");
_getenv = function() {
return data;
};
return data;
}
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== "function") return null;
var cacheBabelInterop = new WeakMap();
var cacheNodeInterop = new WeakMap();
return (_getRequireWildcardCache = function(nodeInterop) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
})(nodeInterop);
}
function _interopRequireWildcard(obj, nodeInterop) {
if (!nodeInterop && obj && obj.__esModule) {
return obj;
}
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
return {
default: obj
};
}
var cache = _getRequireWildcardCache(nodeInterop);
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for(var key in obj){
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
newObj.default = obj;
if (cache) {
cache.set(obj, newObj);
}
return newObj;
}
// Setup before requiring `debug`.
if ((0, _getenv().boolish)("EXPO_DEBUG", false)) {
_debug().default.enable("expo:*");
} else if (_debug().default.enabled("expo:")) {
process.env.EXPO_DEBUG = "1";
}
const defaultCmd = "start";
const commands = {
// Add a new command here
// NOTE(EvanBacon): Ensure every bundler-related command sets `NODE_ENV` as expected for the command.
run: ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/run/index.js"))).then((i)=>i.expoRun),
"run:ios": ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/run/ios/index.js"))).then((i)=>i.expoRunIos),
"run:android": ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/run/android/index.js"))).then((i)=>i.expoRunAndroid),
start: ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/start/index.js"))).then((i)=>i.expoStart),
prebuild: ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/prebuild/index.js"))).then((i)=>i.expoPrebuild),
config: ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/config/index.js"))).then((i)=>i.expoConfig),
export: ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/export/index.js"))).then((i)=>i.expoExport),
"export:web": ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/export/web/index.js"))).then((i)=>i.expoExportWeb),
"export:embed": ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/export/embed/index.js"))).then((i)=>i.expoExportEmbed),
// Auxiliary commands
install: ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/install/index.js"))).then((i)=>i.expoInstall),
add: ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/install/index.js"))).then((i)=>i.expoInstall),
customize: ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/customize/index.js"))).then((i)=>i.expoCustomize),
lint: ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/lint/index.js"))).then((i)=>i.expoLint),
// Auth
login: ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/login/index.js"))).then((i)=>i.expoLogin),
logout: ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/logout/index.js"))).then((i)=>i.expoLogout),
register: ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/register/index.js"))).then((i)=>i.expoRegister),
whoami: ()=>Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../src/whoami/index.js"))).then((i)=>i.expoWhoami)
};
const args = (0, _arg().default)({
// Types
"--version": Boolean,
"--help": Boolean,
// NOTE(EvanBacon): This is here to silence warnings from processes that
// expect the global expo-cli.
"--non-interactive": Boolean,
// Aliases
"-v": "--version",
"-h": "--help"
}, {
permissive: true
});
if (args["--version"]) {
// Version is added in the build script.
console.log("0.18.31");
process.exit(0);
}
if (args["--non-interactive"]) {
console.warn(_chalk().default.yellow` {bold --non-interactive} is not supported, use {bold $CI=1} instead`);
}
// Check if we are running `npx expo <subcommand>` or `npx expo`
const isSubcommand = Boolean(commands[args._[0]]);
// Handle `--help` flag
if (!isSubcommand && args["--help"]) {
const { login , logout , whoami , register , start , install , add , export: _export , config , customize , prebuild , "run:ios": runIos , "run:android": runAndroid , // NOTE(EvanBacon): Don't document this command as it's a temporary
// workaround until we can use `expo export` for all production bundling.
// https://github.com/expo/expo/pull/21396/files#r1121025873
"export:embed": exportEmbed_unused , // The export:web command is deprecated. Hide it from the help prompt.
"export:web": exportWeb_unused , // Other ignored commands, these are intentially not listed in the `--help` output
run: _run , // NOTE(cedric): Still pending the migration to ESLint's flat config
lint: _lint , // All other commands
...others } = commands;
console.log((0, _chalk().default)`
{bold Usage}
{dim $} npx expo <command>
{bold Commands}
${Object.keys({
start,
export: _export,
...others
}).join(", ")}
${Object.keys({
"run:ios": runIos,
"run:android": runAndroid,
prebuild
}).join(", ")}
${Object.keys({
install,
customize,
config
}).join(", ")}
{dim ${Object.keys({
login,
logout,
whoami,
register
}).join(", ")}}
{bold Options}
--version, -v Version number
--help, -h Usage info
For more info run a command with the {bold --help} flag
{dim $} npx expo start --help
`);
process.exit(0);
}
// NOTE(EvanBacon): Squat some directory names to help with migration,
// users can still use folders named "send" or "eject" by using the fully qualified `npx expo start ./send`.
if (!isSubcommand) {
const migrationMap = {
init: "npx create-expo-app",
eject: "npx expo prebuild",
web: "npx expo start --web",
"start:web": "npx expo start --web",
"build:ios": "eas build -p ios",
"build:android": "eas build -p android",
"client:install:ios": "npx expo start --ios",
"client:install:android": "npx expo start --android",
doctor: "npx expo-doctor",
upgrade: "https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/",
"customize:web": "npx expo customize",
publish: "eas update",
"publish:set": "eas update",
"publish:rollback": "eas update",
"publish:history": "eas update",
"publish:details": "eas update",
"build:web": "npx expo export:web",
"credentials:manager": `eas credentials`,
"fetch:ios:certs": `eas credentials`,
"fetch:android:keystore": `eas credentials`,
"fetch:android:hashes": `eas credentials`,
"fetch:android:upload-cert": `eas credentials`,
"push:android:upload": `eas credentials`,
"push:android:show": `eas credentials`,
"push:android:clear": `eas credentials`,
url: `eas build:list`,
"url:ipa": `eas build:list`,
"url:apk": `eas build:list`,
webhooks: `eas webhook`,
"webhooks:add": `eas webhook:create`,
"webhooks:remove": `eas webhook:delete`,
"webhooks:update": `eas webhook:update`,
"build:status": `eas build:list`,
"upload:android": `eas submit -p android`,
"upload:ios": `eas submit -p ios`
};
// TODO: Log telemetry about invalid command used.
const subcommand = args._[0];
if (subcommand in migrationMap) {
const replacement = migrationMap[subcommand];
console.log();
const instruction = subcommand === "upgrade" ? "follow this guide" : "use";
console.log(_chalk().default.yellow` {gray $} {bold expo ${subcommand}} is not supported in the local CLI, please ${instruction} {bold ${replacement}} instead`);
console.log();
process.exit(1);
}
const deprecated = [
"send",
"client:ios"
];
if (deprecated.includes(subcommand)) {
console.log();
console.log(_chalk().default.yellow` {gray $} {bold expo ${subcommand}} is deprecated`);
console.log();
process.exit(1);
}
}
const command = isSubcommand ? args._[0] : defaultCmd;
const commandArgs = isSubcommand ? args._.slice(1) : args._;
// Push the help flag to the subcommand args.
if (args["--help"]) {
commandArgs.push("--help");
}
// Install exit hooks
process.on("SIGINT", ()=>process.exit(0));
process.on("SIGTERM", ()=>process.exit(0));
commands[command]().then((exec)=>{
exec(commandArgs);
if (!(0, _getenv().boolish)("EXPO_NO_TELEMETRY", false)) {
// NOTE(EvanBacon): Track some basic telemetry events indicating the command
// that was run. This can be disabled with the $EXPO_NO_TELEMETRY environment variable.
// We do this to determine how well deprecations are going before removing a command.
const { logEventAsync } = require("../src/utils/telemetry");
logEventAsync("action", {
action: `expo ${command}`
});
}
});
//# sourceMappingURL=cli.map