Files
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

126 lines
3.0 KiB
TypeScript

import { Lexer } from '../lexer';
import {
GraphQLGrammarTokenConstraint,
GraphQLGrammarOfTypeConstraint,
GraphQLGrammarListOfTypeConstraint,
GraphQLGrammarPeekConstraint,
GraphQLGrammarConstraintsSet,
} from './grammar';
interface BaseOnlineParserRule {
kind: string;
name?: string;
depth: number;
step: number;
expanded: boolean;
state: string;
optional?: boolean;
eatNextOnFail?: boolean;
}
interface TokenOnlineParserRule
extends BaseOnlineParserRule,
GraphQLGrammarTokenConstraint {}
interface OfTypeOnlineParserRule
extends BaseOnlineParserRule,
GraphQLGrammarOfTypeConstraint {}
interface ListOfTypeOnlineParserRule
extends BaseOnlineParserRule,
GraphQLGrammarListOfTypeConstraint {}
interface PeekOnlineParserRule
extends BaseOnlineParserRule,
GraphQLGrammarPeekConstraint {
index: number;
matched: boolean;
}
interface ConstraintsSetOnlineParserRule extends BaseOnlineParserRule {
constraintsSet: boolean;
constraints: GraphQLGrammarConstraintsSet;
}
type OnlineParserRule =
| TokenOnlineParserRule
| OfTypeOnlineParserRule
| ListOfTypeOnlineParserRule
| PeekOnlineParserRule
| ConstraintsSetOnlineParserRule;
export interface OnlineParserState {
rules: Array<OnlineParserRule>;
kind: () => string;
step: () => number;
levels: Array<number>;
indentLevel: number | undefined;
name: string | null;
type: string | null;
}
interface Token {
kind: string;
value?: string;
tokenName?: string | undefined;
ruleName?: string | undefined;
}
type OnlineParserConfig = {
tabSize: number;
};
type OnlineParserConfigOption = {
tabSize?: number;
};
export class OnlineParser {
state: OnlineParserState;
_lexer: Lexer;
_config: OnlineParserConfig;
constructor(
source: string,
state?: OnlineParserState,
config?: OnlineParserConfigOption,
);
static startState(): OnlineParserState;
static copyState(state: OnlineParserState): OnlineParserState;
sol(): boolean;
parseToken(): Token;
indentation(): number;
private readonly _parseTokenConstraint;
private readonly _parseListOfTypeConstraint;
private readonly _parseOfTypeConstraint;
private readonly _parsePeekConstraint;
private readonly _parseConstraintsSetRule;
private readonly _matchToken;
private readonly _butNot;
private readonly _transformLexerToken;
private readonly _getNextRule;
private readonly _popMatchedRule;
private readonly _rollbackRule;
private readonly _pushRule;
private readonly _getRuleKind;
private readonly _advanceToken;
private readonly _lookAhead;
}
export const TokenKind: {
NAME: string;
INT: string;
FLOAT: string;
STRING: string;
BLOCK_STRING: string;
COMMENT: string;
PUNCTUATION: string;
EOF: string;
INVALID: string;
};
export const RuleKind: {
TOKEN_CONSTRAINT: string;
OF_TYPE_CONSTRAINT: string;
LIST_OF_TYPE_CONSTRAINT: string;
PEEK_CONSTRAINT: string;
CONSTRAINTS_SET: string;
CONSTRAINTS_SET_ROOT: string;
RULE_NAME: string;
INVALID: string;
};