- 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
memory-cache 
A simple in-memory cache for node.js
Installation
npm install memory-cache --save
Usage
var cache = require('memory-cache');
// now just use the cache
cache.put('foo', 'bar');
console.log(cache.get('foo'));
// that wasn't too interesting, here's the good part
cache.put('houdini', 'disappear', 100, function(key, value) {
console.log(key + ' did ' + value);
}); // Time in ms
console.log('Houdini will now ' + cache.get('houdini'));
setTimeout(function() {
console.log('Houdini is ' + cache.get('houdini'));
}, 200);
// create new cache instance
var newCache = new cache.Cache();
newCache.put('foo', 'newbaz');
setTimeout(function() {
console.log('foo in old cache is ' + cache.get('foo'));
console.log('foo in new cache is ' + newCache.get('foo'));
}, 200);
which should print
bar
Houdini will now disappear
houdini did disappear
Houdini is null
foo in old cache is baz
foo in new cache is newbaz
API
put = function(key, value, time, timeoutCallback)
- Simply stores a value
- If time isn't passed in, it is stored forever
- Will actually remove the value in the specified time in ms (via
setTimeout) - timeoutCallback is optional function fired after entry has expired with key and value passed (
function(key, value) {}) - Returns the cached value
get = function(key)
- Retrieves a value for a given key
- If value isn't cached, returns
null
del = function(key)
- Deletes a key, returns a boolean specifying whether or not the key was deleted
clear = function()
- Deletes all keys
size = function()
- Returns the current number of entries in the cache
memsize = function()
- Returns the number of entries taking up space in the cache
- Will usually
== size()unless asetTimeoutremoval went wrong
debug = function(bool)
- Turns on or off debugging
hits = function()
- Returns the number of cache hits (only monitored in debug mode)
misses = function()
- Returns the number of cache misses (only monitored in debug mode)
keys = function()
- Returns all the cache keys
exportJson = function()
- Returns a JSON string representing all the cache data
- Any timeoutCallbacks will be ignored
importJson = function(json: string, options: { skipDuplicates: boolean })
- Merges all the data from a previous call to
exportinto the cache - Any existing entries before an
importwill remain in the cache - Any duplicate keys will be overwritten, unless
skipDuplicatesistrue - Any entries that would have expired since being exported will expire upon being imported (but their callbacks will not be invoked)
- Available
options:skipDuplicates: Iftrue, any duplicate keys will be ignored when importing them. Defaults tofalse.
- Returns the new size of the cache
Cache = function()
- Cache constructor
- note that
require('cache')would return the default instance of Cache - while
require('cache').Cacheis the actual class
Note on Patches/Pull Requests
- Fork the project.
- Make your feature addition or bug fix.
- Send me a pull request.