memorio 2.9.1 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/examples/basic.ts CHANGED
@@ -16,23 +16,23 @@ import 'memorio'
16
16
  // PLATFORM DETECTION
17
17
  // ============================================
18
18
 
19
- console.log('=== Platform Detection ===')
20
- console.log('Memorio version:', memorio.version)
19
+ console.debug('=== Platform Detection ===')
20
+ console.debug('Memorio version:', memorio.version)
21
21
 
22
22
  // Check platform
23
23
  if (memorio.isBrowser()) {
24
- console.log('Platform: Browser')
24
+ console.debug('Platform: Browser')
25
25
  } else if (memorio.isNode()) {
26
- console.log('Platform: Node.js')
26
+ console.debug('Platform: Node.js')
27
27
  } else if (memorio.isDeno()) {
28
- console.log('Platform: Deno')
28
+ console.debug('Platform: Deno')
29
29
  } else if (memorio.isEdge()) {
30
- console.log('Platform: Edge Worker')
30
+ console.debug('Platform: Edge Worker')
31
31
  }
32
32
 
33
33
  // Get capabilities
34
34
  const caps = memorio.getCapabilities()
35
- console.log('Capabilities:', {
35
+ console.debug('Capabilities:', {
36
36
  platform: caps.platform,
37
37
  hasLocalStorage: caps.hasLocalStorage,
38
38
  hasSessionStorage: caps.hasSessionStorage,
@@ -43,7 +43,7 @@ console.log('Capabilities:', {
43
43
  // STATE - In-memory reactive state
44
44
  // ============================================
45
45
 
46
- console.log('\n=== State Management ===')
46
+ console.debug('\n=== State Management ===')
47
47
 
48
48
  // Set some state values
49
49
  state.name = 'Mario'
@@ -55,21 +55,21 @@ state.profile = {
55
55
  }
56
56
 
57
57
  // Get state values
58
- console.log('Name:', state.name)
59
- console.log('Age:', state.age)
60
- console.log('Profile:', state.profile)
58
+ console.debug('Name:', state.name)
59
+ console.debug('Age:', state.age)
60
+ console.debug('Profile:', state.profile)
61
61
 
62
62
  // List all states
63
- console.log('All states:', state.list)
63
+ console.debug('All states:', state.list)
64
64
 
65
65
  // ============================================
66
66
  // STORE - Persistent localStorage
67
67
  // ============================================
68
68
 
69
- console.log('\n=== Store (Persistent Storage) ===')
69
+ console.debug('\n=== Store (Persistent Storage) ===')
70
70
 
71
71
  // Check persistence
72
- console.log('Is persistent:', store.isPersistent) // true in browser, false in Node.js/Deno
72
+ console.debug('Is persistent:', store.isPersistent) // true in browser, false in Node.js/Deno
73
73
 
74
74
  // Save to localStorage
75
75
  store.set('username', 'mario')
@@ -77,28 +77,28 @@ store.set('preferences', { theme: 'dark', language: 'en' })
77
77
  store.set('lastLogin', Date.now())
78
78
 
79
79
  // Read from localStorage
80
- console.log('Username:', store.get('username'))
81
- console.log('Preferences:', store.get('preferences'))
80
+ console.debug('Username:', store.get('username'))
81
+ console.debug('Preferences:', store.get('preferences'))
82
82
 
83
83
  // Get storage size
84
- console.log('Storage size:', store.size(), 'bytes')
84
+ console.debug('Storage size:', store.size(), 'bytes')
85
85
 
86
86
  // ============================================
87
87
  // SESSION - Temporary session storage
88
88
  // ============================================
89
89
 
90
- console.log('\n=== Session (Temporary Storage) ===')
90
+ console.debug('\n=== Session (Temporary Storage) ===')
91
91
 
92
92
  // Check persistence
93
- console.log('Is persistent:', session.isPersistent) // true in browser, false in Node.js/Deno
93
+ console.debug('Is persistent:', session.isPersistent) // true in browser, false in Node.js/Deno
94
94
 
95
95
  // Save session data (cleared when tab closes)
96
96
  session.set('token', 'abc123xyz')
97
97
  session.set('userId', 42)
98
98
 
99
99
  // Read session data
100
- console.log('Token:', session.get('token'))
101
- console.log('User ID:', session.get('userId'))
100
+ console.debug('Token:', session.get('token'))
101
+ console.debug('User ID:', session.get('userId'))
102
102
 
103
103
  // ============================================
104
104
  // CLEANUP
@@ -112,4 +112,4 @@ session.remove('token')
112
112
  store.removeAll()
113
113
  session.removeAll()
114
114
 
115
- console.log('\nExample complete!')
115
+ console.debug('\nExample complete!')
@@ -350,8 +350,8 @@ Session ID: ${memorio.getCapabilities().sessionId.substring(0, 8)}...
350
350
  `.trim()
351
351
 
352
352
  // Log welcome
353
- console.log('🧠 Memorio loaded!')
354
- console.log('Platform:', memorio.getCapabilities().platform)
353
+ console.debug('🧠 Memorio loaded!')
354
+ console.debug('Platform:', memorio.getCapabilities().platform)
355
355
  </script>
356
356
  </body>
357
357
 
package/examples/cache.ts CHANGED
@@ -19,13 +19,13 @@ cache.set('score', 1500)
19
19
  cache.set('player', { name: 'Mario', level: 5 })
20
20
 
21
21
  // Get values
22
- console.log('Username:', cache.get('username'))
23
- console.log('Score:', cache.get('score'))
24
- console.log('Player:', cache.get('player'))
22
+ console.debug('Username:', cache.get('username'))
23
+ console.debug('Score:', cache.get('score'))
24
+ console.debug('Player:', cache.get('player'))
25
25
 
26
26
  // Direct property access
27
27
  cache.tempData = 'Hello'
28
- console.log('Temp data:', cache.tempData)
28
+ console.debug('Temp data:', cache.tempData)
29
29
 
30
30
  // ============================================
31
31
  // CACHE WITH OBJECTS
@@ -40,8 +40,8 @@ cache.set('gameState', {
40
40
  })
41
41
 
42
42
  const gameState = cache.get('gameState')
43
- console.log('Game level:', gameState?.level)
44
- console.log('Inventory:', gameState?.inventory)
43
+ console.debug('Game level:', gameState?.level)
44
+ console.debug('Inventory:', gameState?.inventory)
45
45
 
46
46
  // ============================================
47
47
  // CACHE SIZE
@@ -52,7 +52,7 @@ for (let i = 0; i < 10; i++) {
52
52
  cache.set(`item_${i}`, { id: i, data: `item-${i}` })
53
53
  }
54
54
 
55
- console.log('Cache keys:', Object.keys(cache))
55
+ console.debug('Cache keys:', Object.keys(cache))
56
56
 
57
57
  // ============================================
58
58
  // CLEANUP
@@ -67,6 +67,6 @@ cache.removeAll()
67
67
  // Or use clearAll alias
68
68
  // cache.clearAll()
69
69
 
70
- console.log('Cache after clear:', cache.get('score'))
70
+ console.debug('Cache after clear:', cache.get('score'))
71
71
 
72
- console.log('Cache example complete!')
72
+ console.debug('Cache example complete!')
package/examples/idb.ts CHANGED
@@ -14,7 +14,7 @@ import 'memorio'
14
14
  // ============================================
15
15
 
16
16
  if (!idb.db.support()) {
17
- console.log('IndexedDB not supported')
17
+ console.debug('IndexedDB not supported')
18
18
  process.exit(0)
19
19
  }
20
20
 
@@ -68,10 +68,10 @@ idb.data.set('myApp', 'products', {
68
68
  // ============================================
69
69
 
70
70
  const user1 = idb.data.get('myApp', 'users', 1)
71
- console.log('User 1:', user1)
71
+ console.debug('User 1:', user1)
72
72
 
73
73
  const product1 = idb.data.get('myApp', 'products', 1)
74
- console.log('Product 1:', product1)
74
+ console.debug('Product 1:', product1)
75
75
 
76
76
  // ============================================
77
77
  // DATABASE INFO
@@ -79,19 +79,19 @@ console.log('Product 1:', product1)
79
79
 
80
80
  // List all databases
81
81
  const databases = idb.db.list()
82
- console.log('Databases:', databases)
82
+ console.debug('Databases:', databases)
83
83
 
84
84
  // Check if database exists
85
85
  const exists = idb.db.exist('myApp')
86
- console.log('myApp exists:', exists)
86
+ console.debug('myApp exists:', exists)
87
87
 
88
88
  // Get database version
89
89
  const version = idb.db.version('myApp')
90
- console.log('myApp version:', version)
90
+ console.debug('myApp version:', version)
91
91
 
92
92
  // Get database size
93
93
  const size = idb.db.size('myApp')
94
- console.log('myApp size:', size, 'bytes')
94
+ console.debug('myApp size:', size, 'bytes')
95
95
 
96
96
  // ============================================
97
97
  // DELETE DATA
@@ -106,4 +106,4 @@ idb.data.delete('myApp', 'users', 1)
106
106
  // Delete entire database
107
107
  // idb.db.delete('myApp');
108
108
 
109
- console.log('IDB example complete!')
109
+ console.debug('IDB example complete!')
@@ -13,14 +13,14 @@ import 'memorio'
13
13
  // 1. BASIC USAGE
14
14
  // ============================================
15
15
 
16
- console.log('=== 1. Basic Node.js Usage ===')
16
+ console.debug('=== 1. Basic Node.js Usage ===')
17
17
 
18
18
  // Check platform
19
- console.log('Platform:', memorio.isNode() ? 'Node.js ✅' : 'Other')
19
+ console.debug('Platform:', memorio.isNode() ? 'Node.js ✅' : 'Other')
20
20
 
21
21
  // Check persistence (false in Node.js - uses memory fallback)
22
- console.log('Store persistent:', store.isPersistent) // false
23
- console.log('Session persistent:', session.isPersistent) // false
22
+ console.debug('Store persistent:', store.isPersistent) // false
23
+ console.debug('Session persistent:', session.isPersistent) // false
24
24
 
25
25
  // State works exactly like in browser
26
26
  state.appName = 'My Server App'
@@ -30,21 +30,21 @@ state.config = {
30
30
  env: 'production'
31
31
  }
32
32
 
33
- console.log('App name:', state.appName)
34
- console.log('Config:', state.config)
33
+ console.debug('App name:', state.appName)
34
+ console.debug('Config:', state.config)
35
35
 
36
36
  // ============================================
37
37
  // 2. CACHE (In-Memory - Perfect for Server)
38
38
  // ============================================
39
39
 
40
- console.log('\n=== 2. Cache (In-Memory) ===')
40
+ console.debug('\n=== 2. Cache (In-Memory) ===')
41
41
 
42
42
  // Cache is perfect for temporary server data
43
43
  cache.set('apiResponse', { data: 'cached value' })
44
44
  cache.set('userCount', 42)
45
45
 
46
- console.log('Cached API response:', cache.get('apiResponse'))
47
- console.log('User count:', cache.get('userCount'))
46
+ console.debug('Cached API response:', cache.get('apiResponse'))
47
+ console.debug('User count:', cache.get('userCount'))
48
48
 
49
49
  // Clear cache when needed
50
50
  cache.remove('apiResponse')
@@ -54,14 +54,14 @@ cache.remove('apiResponse')
54
54
  // 3. STORE & SESSION (Memory Fallback in Node.js)
55
55
  // ============================================
56
56
 
57
- console.log('\n=== 3. Store & Session (Memory Fallback) ===')
57
+ console.debug('\n=== 3. Store & Session (Memory Fallback) ===')
58
58
 
59
59
  // Store and session work but don't persist (no localStorage in Node.js)
60
60
  store.set('serverConfig', { debug: true })
61
61
  session.set('requestData', { path: '/api/users' })
62
62
 
63
- console.log('Server config:', store.get('serverConfig'))
64
- console.log('Request data:', session.get('requestData'))
63
+ console.debug('Server config:', store.get('serverConfig'))
64
+ console.debug('Request data:', session.get('requestData'))
65
65
 
66
66
  // ⚠️ Data is lost on process restart!
67
67
  // For persistence in Node.js, use a database
@@ -70,7 +70,7 @@ console.log('Request data:', session.get('requestData'))
70
70
  // 4. CONTEXT ISOLATION (Multi-Tenant)
71
71
  // ============================================
72
72
 
73
- console.log('\n=== 4. Context Isolation (Multi-Tenant) ===')
73
+ console.debug('\n=== 4. Context Isolation (Multi-Tenant) ===')
74
74
 
75
75
  // Create isolated contexts for different tenants/requests
76
76
  const userAContext = memorio.createContext('tenant-A')
@@ -86,19 +86,19 @@ userBContext.state.secret = 'Bob secret data'
86
86
  userBContext.cache.set('temp', 'B temp data')
87
87
 
88
88
  // Verify isolation
89
- console.log('User A name:', userAContext.state.user.name) // Alice
90
- console.log('User B name:', userBContext.state.user.name) // Bob
89
+ console.debug('User A name:', userAContext.state.user.name) // Alice
90
+ console.debug('User B name:', userBContext.state.user.name) // Bob
91
91
 
92
92
  // Global state is separate
93
- console.log('Global state:', state.appName) // 'My Server App'
94
- console.log('User A global secret:', userAContext.state.secret) // 'Alice secret data'
95
- console.log('User B global secret:', userBContext.state.secret) // 'Bob secret data'
93
+ console.debug('Global state:', state.appName) // 'My Server App'
94
+ console.debug('User A global secret:', userAContext.state.secret) // 'Alice secret data'
95
+ console.debug('User B global secret:', userBContext.state.secret) // 'Bob secret data'
96
96
 
97
97
  // ============================================
98
98
  // 5. EXPRESS.JS MIDDLEWARE EXAMPLE
99
99
  // ============================================
100
100
 
101
- console.log('\n=== 5. Express.js Middleware Example ===')
101
+ console.debug('\n=== 5. Express.js Middleware Example ===')
102
102
 
103
103
  /*
104
104
  // In a real Express app:
@@ -146,13 +146,13 @@ app.get('/api/user', (req, res) => {
146
146
  app.listen(3000)
147
147
  */
148
148
 
149
- console.log('See code comments for Express.js integration')
149
+ console.debug('See code comments for Express.js integration')
150
150
 
151
151
  // ============================================
152
152
  // 6. WEBSOCKET EXAMPLE
153
153
  // ============================================
154
154
 
155
- console.log('\n=== 6. WebSocket Example ===')
155
+ console.debug('\n=== 6. WebSocket Example ===')
156
156
 
157
157
  /*
158
158
  // For WebSocket connections:
@@ -185,13 +185,13 @@ function handleConnection(ws, userId) {
185
185
  }
186
186
  */
187
187
 
188
- console.log('See code comments for WebSocket integration')
188
+ console.debug('See code comments for WebSocket integration')
189
189
 
190
190
  // ============================================
191
191
  // 7. JOB QUEUE / WORKER EXAMPLE
192
192
  // ============================================
193
193
 
194
- console.log('\n=== 7. Job Queue Example ===')
194
+ console.debug('\n=== 7. Job Queue Example ===')
195
195
 
196
196
  /*
197
197
  // For background jobs:
@@ -230,13 +230,13 @@ async function processJob(jobId, jobData) {
230
230
  }
231
231
  */
232
232
 
233
- console.log('See code comments for Job Queue integration')
233
+ console.debug('See code comments for Job Queue integration')
234
234
 
235
235
  // ============================================
236
236
  // 8. CLI APPLICATION EXAMPLE
237
237
  // ============================================
238
238
 
239
- console.log('\n=== 8. CLI Application ===')
239
+ console.debug('\n=== 8. CLI Application ===')
240
240
 
241
241
  // Memorio works great in CLI apps too
242
242
  state.command = 'build'
@@ -245,43 +245,43 @@ state.options = {
245
245
  sourceMap: false
246
246
  }
247
247
 
248
- console.log('Command:', state.command)
249
- console.log('Options:', state.options)
248
+ console.debug('Command:', state.command)
249
+ console.debug('Options:', state.options)
250
250
 
251
251
  // ============================================
252
252
  // 9. PLATFORM DETECTION
253
253
  // ============================================
254
254
 
255
- console.log('\n=== 9. Platform Detection ===')
255
+ console.debug('\n=== 9. Platform Detection ===')
256
256
 
257
257
  const caps = memorio.getCapabilities()
258
- console.log('Platform:', caps.platform)
259
- console.log('localStorage:', caps.hasLocalStorage ? '✅' : '❌')
260
- console.log('sessionStorage:', caps.hasSessionStorage ? '✅' : '❌')
261
- console.log('IndexedDB:', caps.hasIndexedDB ? '✅' : '❌')
262
- console.log('Session ID:', caps.sessionId.substring(0, 8) + '...')
258
+ console.debug('Platform:', caps.platform)
259
+ console.debug('localStorage:', caps.hasLocalStorage ? '✅' : '❌')
260
+ console.debug('sessionStorage:', caps.hasSessionStorage ? '✅' : '❌')
261
+ console.debug('IndexedDB:', caps.hasIndexedDB ? '✅' : '❌')
262
+ console.debug('Session ID:', caps.sessionId.substring(0, 8) + '...')
263
263
 
264
264
  // ============================================
265
265
  // 10. CLEANUP
266
266
  // ============================================
267
267
 
268
- console.log('\n=== 10. Cleanup ===')
268
+ console.debug('\n=== 10. Cleanup ===')
269
269
 
270
270
  // List all contexts
271
- console.log('Active contexts:', memorio.listContexts())
271
+ console.debug('Active contexts:', memorio.listContexts())
272
272
 
273
273
  // Clean up when done
274
274
  memorio.deleteContext('tenant-A')
275
275
  memorio.deleteContext('tenant-B')
276
276
 
277
- console.log('After cleanup:', memorio.listContexts())
277
+ console.debug('After cleanup:', memorio.listContexts())
278
278
 
279
279
  // ============================================
280
280
  // SUMMARY
281
281
  // ============================================
282
282
 
283
- console.log('\n=== Summary ===')
284
- console.log(`
283
+ console.debug('\n=== Summary ===')
284
+ console.debug(`
285
285
  MEMORIO NODE.JS USAGE:
286
286
 
287
287
  ✅ WORKS:
@@ -305,4 +305,4 @@ MEMORIO NODE.JS USAGE:
305
305
  5. Check isPersistent before relying on persistence
306
306
  `)
307
307
 
308
- console.log('\nNode.js example complete!')
308
+ console.debug('\nNode.js example complete!')
@@ -15,7 +15,7 @@ import 'memorio'
15
15
 
16
16
  // Watch a single value
17
17
  observer('state.counter', (newValue, oldValue) => {
18
- console.log(`Counter: ${oldValue} → ${newValue}`)
18
+ console.debug(`Counter: ${oldValue} → ${newValue}`)
19
19
  })
20
20
 
21
21
  state.counter = 0
@@ -28,7 +28,7 @@ state.counter = 2
28
28
 
29
29
  // Watch entire objects
30
30
  observer('state.user', (newUser, oldUser) => {
31
- console.log(`User changed: ${oldUser?.name} → ${newUser?.name}`)
31
+ console.debug(`User changed: ${oldUser?.name} → ${newUser?.name}`)
32
32
  })
33
33
 
34
34
  state.user = { name: 'Mario', level: 1 }
@@ -40,11 +40,11 @@ state.user = { name: 'Luigi', level: 2 }
40
40
 
41
41
  // Multiple observers on same path
42
42
  observer('state.notifications', (count) => {
43
- console.log(`New notification count: ${count}`)
43
+ console.debug(`New notification count: ${count}`)
44
44
  })
45
45
 
46
46
  // List all observers
47
- console.log('Active observers:', observer.list)
47
+ console.debug('Active observers:', observer.list)
48
48
 
49
49
  // ============================================
50
50
  // CLEANUP
@@ -57,4 +57,4 @@ observer.remove('state.counter')
57
57
  // observer.remove('state.counter')
58
58
  // observer.remove('state.notifications')
59
59
 
60
- console.log('Observer example complete!')
60
+ console.debug('Observer example complete!')
@@ -15,43 +15,43 @@ import 'memorio'
15
15
  // PLATFORM DETECTION
16
16
  // ============================================
17
17
 
18
- console.log('=== Platform Detection ===')
19
- console.log('Memorio version:', memorio.version)
18
+ console.debug('=== Platform Detection ===')
19
+ console.debug('Memorio version:', memorio.version)
20
20
 
21
21
  // Check which platform we're on
22
22
  if (memorio.isBrowser()) {
23
- console.log('Running in: Browser')
24
- console.log('store.isPersistent:', store.isPersistent) // true
25
- console.log('session.isPersistent:', session.isPersistent) // true
23
+ console.debug('Running in: Browser')
24
+ console.debug('store.isPersistent:', store.isPersistent) // true
25
+ console.debug('session.isPersistent:', session.isPersistent) // true
26
26
  } else if (memorio.isNode()) {
27
- console.log('Running in: Node.js')
28
- console.log('store.isPersistent:', store.isPersistent) // false (memory fallback)
29
- console.log('session.isPersistent:', session.isPersistent) // false (memory fallback)
27
+ console.debug('Running in: Node.js')
28
+ console.debug('store.isPersistent:', store.isPersistent) // false (memory fallback)
29
+ console.debug('session.isPersistent:', session.isPersistent) // false (memory fallback)
30
30
  } else if (memorio.isDeno()) {
31
- console.log('Running in: Deno')
32
- console.log('store.isPersistent:', store.isPersistent) // false (memory fallback)
33
- console.log('session.isPersistent:', session.isPersistent) // false (memory fallback)
31
+ console.debug('Running in: Deno')
32
+ console.debug('store.isPersistent:', store.isPersistent) // false (memory fallback)
33
+ console.debug('session.isPersistent:', session.isPersistent) // false (memory fallback)
34
34
  } else if (memorio.isEdge()) {
35
- console.log('Running in: Edge Worker')
36
- console.log('store.isPersistent:', store.isPersistent) // true
37
- console.log('session.isPersistent:', session.isPersistent) // true
35
+ console.debug('Running in: Edge Worker')
36
+ console.debug('store.isPersistent:', store.isPersistent) // true
37
+ console.debug('session.isPersistent:', session.isPersistent) // true
38
38
  }
39
39
 
40
40
  // Get detailed capabilities
41
41
  const caps = memorio.getCapabilities()
42
- console.log('\nCapabilities:')
43
- console.log(' Platform:', caps.platform)
44
- console.log(' localStorage:', caps.hasLocalStorage ? '✅' : '❌')
45
- console.log(' sessionStorage:', caps.hasSessionStorage ? '✅' : '❌')
46
- console.log(' IndexedDB:', caps.hasIndexedDB ? '✅' : '❌')
47
- console.log(' Session ID:', caps.sessionId)
42
+ console.debug('\nCapabilities:')
43
+ console.debug(' Platform:', caps.platform)
44
+ console.debug(' localStorage:', caps.hasLocalStorage ? '✅' : '❌')
45
+ console.debug(' sessionStorage:', caps.hasSessionStorage ? '✅' : '❌')
46
+ console.debug(' IndexedDB:', caps.hasIndexedDB ? '✅' : '❌')
47
+ console.debug(' Session ID:', caps.sessionId)
48
48
 
49
49
  // ============================================
50
50
  // CONTEXT ISOLATION (Server-Side)
51
51
  // ============================================
52
52
 
53
- console.log('\n=== Context Isolation ===')
54
- console.log('Use memorio.createContext() for multi-tenant server applications')
53
+ console.debug('\n=== Context Isolation ===')
54
+ console.debug('Use memorio.createContext() for multi-tenant server applications')
55
55
 
56
56
  // Example: Simulating different users/requests
57
57
  // In a real app, you'd create a context per HTTP request
@@ -69,33 +69,33 @@ userBContext.store.set('preferences', { theme: 'light' })
69
69
  userBContext.session.set('token', 'user-B-token')
70
70
 
71
71
  // Verify isolation - each context has its own data
72
- console.log('\nUser A context:')
73
- console.log(' state.name:', userAContext.state.name) // 'Mario'
74
- console.log(' store.preferences:', userAContext.store.get('preferences')) // { theme: 'dark' }
75
- console.log(' session.token:', userAContext.session.get('token')) // 'user-A-token'
72
+ console.debug('\nUser A context:')
73
+ console.debug(' state.name:', userAContext.state.name) // 'Mario'
74
+ console.debug(' store.preferences:', userAContext.store.get('preferences')) // { theme: 'dark' }
75
+ console.debug(' session.token:', userAContext.session.get('token')) // 'user-A-token'
76
76
 
77
- console.log('\nUser B context:')
78
- console.log(' state.name:', userBContext.state.name) // 'Luigi'
79
- console.log(' store.preferences:', userBContext.store.get('preferences')) // { theme: 'light' }
80
- console.log(' session.token:', userBContext.session.get('token')) // 'user-B-token'
77
+ console.debug('\nUser B context:')
78
+ console.debug(' state.name:', userBContext.state.name) // 'Luigi'
79
+ console.debug(' store.preferences:', userBContext.store.get('preferences')) // { theme: 'light' }
80
+ console.debug(' session.token:', userBContext.session.get('token')) // 'user-B-token'
81
81
 
82
82
  // Global state is separate from contexts
83
- console.log('\nGlobal state (not affected by contexts):')
84
- console.log(' state.name:', state.name) // undefined
83
+ console.debug('\nGlobal state (not affected by contexts):')
84
+ console.debug(' state.name:', state.name) // undefined
85
85
 
86
86
  // List all contexts
87
- console.log('\nActive contexts:', memorio.listContexts()) // ['user-A', 'user-B']
87
+ console.debug('\nActive contexts:', memorio.listContexts()) // ['user-A', 'user-B']
88
88
 
89
89
  // Cleanup - delete a context when done
90
90
  memorio.deleteContext('user-A')
91
- console.log('After deleting user-A:', memorio.listContexts()) // ['user-B']
91
+ console.debug('After deleting user-A:', memorio.listContexts()) // ['user-B']
92
92
 
93
93
  // ============================================
94
94
  // USE CASE: EXPRESS/FASTIFY MIDDLEWARE EXAMPLE
95
95
  // ============================================
96
96
 
97
- console.log('\n=== Server Use Case ===')
98
- console.log(`
97
+ console.debug('\n=== Server Use Case ===')
98
+ console.debug(`
99
99
  // Example: Express middleware for request isolation
100
100
  app.use((req, res, next) => {
101
101
  // Create isolated context per request
@@ -112,4 +112,4 @@ app.get('/user', (req, res) => {
112
112
  })
113
113
  `)
114
114
 
115
- console.log('\nPlatform & Context example complete!')
115
+ console.debug('\nPlatform & Context example complete!')
@@ -281,7 +281,7 @@ function App() {
281
281
  // Check for returning user
282
282
  const lastUser = store.get('lastUser')
283
283
  if (lastUser) {
284
- console.log('Welcome back,', lastUser)
284
+ console.debug('Welcome back,', lastUser)
285
285
  }
286
286
  }, [])
287
287
 
@@ -334,12 +334,12 @@ MEMORIO REACT USAGE GUIDE:
334
334
 
335
335
  4. REACT TO CHANGES:
336
336
  useObserver(() => {
337
- console.log('State changed!')
337
+ console.debug('State changed!')
338
338
  }, [state.user])
339
339
 
340
340
  5. AUTO-DISCOVERY (watch all):
341
341
  useObserver(() => {
342
- console.log(state.user, state.theme)
342
+ console.debug(state.user, state.theme)
343
343
  })
344
344
 
345
345
  6. PERSIST DATA: