@affectively/aeon-pages 1.3.0

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.
Files changed (124) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/README.md +625 -0
  3. package/examples/basic/aeon.config.ts +39 -0
  4. package/examples/basic/components/Cursor.tsx +86 -0
  5. package/examples/basic/components/OfflineIndicator.tsx +103 -0
  6. package/examples/basic/components/PresenceBar.tsx +77 -0
  7. package/examples/basic/package.json +20 -0
  8. package/examples/basic/pages/index.tsx +80 -0
  9. package/package.json +101 -0
  10. package/packages/analytics/README.md +309 -0
  11. package/packages/analytics/build.ts +35 -0
  12. package/packages/analytics/package.json +50 -0
  13. package/packages/analytics/src/click-tracker.ts +368 -0
  14. package/packages/analytics/src/context-bridge.ts +319 -0
  15. package/packages/analytics/src/data-layer.ts +302 -0
  16. package/packages/analytics/src/gtm-loader.ts +239 -0
  17. package/packages/analytics/src/index.ts +230 -0
  18. package/packages/analytics/src/merkle-tree.ts +489 -0
  19. package/packages/analytics/src/provider.tsx +300 -0
  20. package/packages/analytics/src/types.ts +320 -0
  21. package/packages/analytics/src/use-analytics.ts +296 -0
  22. package/packages/analytics/tsconfig.json +19 -0
  23. package/packages/benchmarks/src/benchmark.test.ts +691 -0
  24. package/packages/cli/dist/index.js +61899 -0
  25. package/packages/cli/package.json +43 -0
  26. package/packages/cli/src/commands/build.test.ts +682 -0
  27. package/packages/cli/src/commands/build.ts +890 -0
  28. package/packages/cli/src/commands/dev.ts +473 -0
  29. package/packages/cli/src/commands/init.ts +409 -0
  30. package/packages/cli/src/commands/start.ts +297 -0
  31. package/packages/cli/src/index.ts +105 -0
  32. package/packages/directives/src/use-aeon.ts +272 -0
  33. package/packages/mcp-server/package.json +51 -0
  34. package/packages/mcp-server/src/index.ts +178 -0
  35. package/packages/mcp-server/src/resources.ts +346 -0
  36. package/packages/mcp-server/src/tools/index.ts +36 -0
  37. package/packages/mcp-server/src/tools/navigation.ts +545 -0
  38. package/packages/mcp-server/tsconfig.json +21 -0
  39. package/packages/react/package.json +40 -0
  40. package/packages/react/src/Link.tsx +388 -0
  41. package/packages/react/src/components/InstallPrompt.tsx +286 -0
  42. package/packages/react/src/components/OfflineDiagnostics.tsx +677 -0
  43. package/packages/react/src/components/PushNotifications.tsx +453 -0
  44. package/packages/react/src/hooks/useAeonNavigation.ts +219 -0
  45. package/packages/react/src/hooks/useConflicts.ts +277 -0
  46. package/packages/react/src/hooks/useNetworkState.ts +209 -0
  47. package/packages/react/src/hooks/usePilotNavigation.ts +254 -0
  48. package/packages/react/src/hooks/useServiceWorker.ts +278 -0
  49. package/packages/react/src/hooks.ts +195 -0
  50. package/packages/react/src/index.ts +151 -0
  51. package/packages/react/src/provider.tsx +467 -0
  52. package/packages/react/tsconfig.json +19 -0
  53. package/packages/runtime/README.md +399 -0
  54. package/packages/runtime/build.ts +48 -0
  55. package/packages/runtime/package.json +71 -0
  56. package/packages/runtime/schema.sql +40 -0
  57. package/packages/runtime/src/api-routes.ts +465 -0
  58. package/packages/runtime/src/benchmark.ts +171 -0
  59. package/packages/runtime/src/cache.ts +479 -0
  60. package/packages/runtime/src/durable-object.ts +1341 -0
  61. package/packages/runtime/src/index.ts +360 -0
  62. package/packages/runtime/src/navigation.test.ts +421 -0
  63. package/packages/runtime/src/navigation.ts +422 -0
  64. package/packages/runtime/src/nextjs-adapter.ts +272 -0
  65. package/packages/runtime/src/offline/encrypted-queue.test.ts +607 -0
  66. package/packages/runtime/src/offline/encrypted-queue.ts +478 -0
  67. package/packages/runtime/src/offline/encryption.test.ts +412 -0
  68. package/packages/runtime/src/offline/encryption.ts +397 -0
  69. package/packages/runtime/src/offline/types.ts +465 -0
  70. package/packages/runtime/src/predictor.ts +371 -0
  71. package/packages/runtime/src/registry.ts +351 -0
  72. package/packages/runtime/src/router/context-extractor.ts +661 -0
  73. package/packages/runtime/src/router/esi-control-react.tsx +2053 -0
  74. package/packages/runtime/src/router/esi-control.ts +541 -0
  75. package/packages/runtime/src/router/esi-cyrano.ts +779 -0
  76. package/packages/runtime/src/router/esi-format-react.tsx +1744 -0
  77. package/packages/runtime/src/router/esi-react.tsx +1065 -0
  78. package/packages/runtime/src/router/esi-translate-observer.ts +476 -0
  79. package/packages/runtime/src/router/esi-translate-react.tsx +556 -0
  80. package/packages/runtime/src/router/esi-translate.ts +503 -0
  81. package/packages/runtime/src/router/esi.ts +666 -0
  82. package/packages/runtime/src/router/heuristic-adapter.test.ts +295 -0
  83. package/packages/runtime/src/router/heuristic-adapter.ts +557 -0
  84. package/packages/runtime/src/router/index.ts +298 -0
  85. package/packages/runtime/src/router/merkle-capability.ts +473 -0
  86. package/packages/runtime/src/router/speculation.ts +451 -0
  87. package/packages/runtime/src/router/types.ts +630 -0
  88. package/packages/runtime/src/router.test.ts +470 -0
  89. package/packages/runtime/src/router.ts +302 -0
  90. package/packages/runtime/src/server.ts +481 -0
  91. package/packages/runtime/src/service-worker-push.ts +319 -0
  92. package/packages/runtime/src/service-worker.ts +553 -0
  93. package/packages/runtime/src/skeleton-hydrate.ts +237 -0
  94. package/packages/runtime/src/speculation.test.ts +389 -0
  95. package/packages/runtime/src/speculation.ts +486 -0
  96. package/packages/runtime/src/storage.test.ts +1297 -0
  97. package/packages/runtime/src/storage.ts +1048 -0
  98. package/packages/runtime/src/sync/conflict-resolver.test.ts +528 -0
  99. package/packages/runtime/src/sync/conflict-resolver.ts +565 -0
  100. package/packages/runtime/src/sync/coordinator.test.ts +608 -0
  101. package/packages/runtime/src/sync/coordinator.ts +596 -0
  102. package/packages/runtime/src/tree-compiler.ts +295 -0
  103. package/packages/runtime/src/types.ts +728 -0
  104. package/packages/runtime/src/worker.ts +327 -0
  105. package/packages/runtime/tsconfig.json +20 -0
  106. package/packages/runtime/wasm/aeon_pages_runtime.d.ts +504 -0
  107. package/packages/runtime/wasm/aeon_pages_runtime.js +1657 -0
  108. package/packages/runtime/wasm/aeon_pages_runtime_bg.wasm +0 -0
  109. package/packages/runtime/wasm/aeon_pages_runtime_bg.wasm.d.ts +196 -0
  110. package/packages/runtime/wasm/package.json +21 -0
  111. package/packages/runtime/wrangler.toml +41 -0
  112. package/packages/runtime-wasm/Cargo.lock +436 -0
  113. package/packages/runtime-wasm/Cargo.toml +29 -0
  114. package/packages/runtime-wasm/pkg/aeon_pages_runtime.d.ts +480 -0
  115. package/packages/runtime-wasm/pkg/aeon_pages_runtime.js +1568 -0
  116. package/packages/runtime-wasm/pkg/aeon_pages_runtime_bg.wasm +0 -0
  117. package/packages/runtime-wasm/pkg/aeon_pages_runtime_bg.wasm.d.ts +192 -0
  118. package/packages/runtime-wasm/pkg/package.json +21 -0
  119. package/packages/runtime-wasm/src/hydrate.rs +352 -0
  120. package/packages/runtime-wasm/src/lib.rs +191 -0
  121. package/packages/runtime-wasm/src/render.rs +629 -0
  122. package/packages/runtime-wasm/src/router.rs +298 -0
  123. package/packages/runtime-wasm/src/skeleton.rs +430 -0
  124. package/rfcs/RFC-001-ZERO-DEPENDENCY-RENDERING.md +1446 -0
@@ -0,0 +1,360 @@
1
+ /**
2
+ * @affectively/aeon-pages-runtime
3
+ *
4
+ * Lightweight runtime for Aeon Pages - the CMS IS the website.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { createAeonServer } from '@affectively/aeon-pages-runtime/server';
9
+ *
10
+ * const server = await createAeonServer({
11
+ * config: {
12
+ * pagesDir: './pages',
13
+ * runtime: 'bun',
14
+ * aeon: {
15
+ * sync: { mode: 'distributed' },
16
+ * presence: { enabled: true },
17
+ * },
18
+ * },
19
+ * });
20
+ *
21
+ * console.log(`Aeon Pages running on port ${server.port}`);
22
+ * ```
23
+ */
24
+
25
+ // Core exports
26
+ export { createAeonServer } from './server';
27
+ export { AeonRouter } from './router.js';
28
+ export { AeonRouteRegistry } from './registry';
29
+
30
+ // Navigation engine (cutting-edge navigation)
31
+ export { AeonNavigationEngine, getNavigator, setNavigator } from './navigation';
32
+ export type {
33
+ NavigationOptions,
34
+ PrefetchOptions,
35
+ NavigationState,
36
+ PresenceInfo as RoutePresenceInfo,
37
+ } from './navigation';
38
+
39
+ // Navigation cache (total preload strategy)
40
+ export {
41
+ NavigationCache,
42
+ getNavigationCache,
43
+ setNavigationCache,
44
+ // Skeleton cache for zero-CLS rendering
45
+ SkeletonCache,
46
+ getSkeletonCache,
47
+ setSkeletonCache,
48
+ getWithSkeleton,
49
+ } from './cache';
50
+ export type {
51
+ CachedSession,
52
+ CacheStats,
53
+ NavigationCacheOptions,
54
+ // Skeleton cache types
55
+ CachedSkeleton,
56
+ SkeletonCacheOptions,
57
+ SkeletonWithContent,
58
+ } from './cache';
59
+
60
+ // Skeleton hydration - client-side swap
61
+ export {
62
+ initSkeleton,
63
+ swapToContent,
64
+ isSkeletonVisible,
65
+ generateSkeletonInitScript,
66
+ generateSkeletonPageStructure,
67
+ generateAsyncSwapScript,
68
+ } from './skeleton-hydrate';
69
+ export type { SkeletonSwapOptions } from './skeleton-hydrate';
70
+
71
+ // Navigation predictor (ML-based)
72
+ export { NavigationPredictor, getPredictor, setPredictor } from './predictor';
73
+ export type {
74
+ PredictedRoute,
75
+ NavigationRecord,
76
+ CommunityPattern,
77
+ PredictorConfig,
78
+ } from './predictor';
79
+
80
+ // Speculative pre-rendering (zero-latency navigation)
81
+ export {
82
+ SpeculativeRenderer,
83
+ getSpeculativeRenderer,
84
+ setSpeculativeRenderer,
85
+ initSpeculativeRendering,
86
+ } from './speculation';
87
+ export type { PreRenderedPage, SpeculativeRendererConfig } from './speculation';
88
+
89
+ // Storage adapters
90
+ export {
91
+ createStorageAdapter,
92
+ FileStorageAdapter,
93
+ D1StorageAdapter,
94
+ DurableObjectStorageAdapter,
95
+ HybridStorageAdapter,
96
+ DashStorageAdapter,
97
+ } from './storage';
98
+ export type { StorageAdapter } from './storage';
99
+
100
+ // Cloudflare Durable Object classes (for deployment)
101
+ export { AeonPageSession, AeonRoutesRegistry } from './durable-object';
102
+
103
+ // API Routes - server-side request handling
104
+ export {
105
+ ApiRouter,
106
+ createApiRouter,
107
+ // Response helpers
108
+ json,
109
+ redirect,
110
+ error,
111
+ notFound,
112
+ badRequest,
113
+ unauthorized,
114
+ forbidden,
115
+ // Middleware
116
+ composeMiddleware,
117
+ cors,
118
+ requireAuth,
119
+ rateLimit,
120
+ } from './api-routes';
121
+ export type { Middleware } from './api-routes';
122
+
123
+ // Worker factory
124
+ export { createAeonWorker } from './worker';
125
+ export type { AeonWorkerOptions } from './worker';
126
+
127
+ // Next.js adapter - run Next.js API routes on Cloudflare Workers
128
+ export {
129
+ adaptRequest,
130
+ adaptHandler,
131
+ adaptRouteModule,
132
+ NextResponse,
133
+ } from './nextjs-adapter';
134
+ export type {
135
+ NextRequest,
136
+ NextRouteHandler,
137
+ NextRouteModule,
138
+ } from './nextjs-adapter';
139
+
140
+ // ============================================================================
141
+ // Offline Luxury Features
142
+ // ============================================================================
143
+
144
+ // Offline types
145
+ export type {
146
+ OperationType,
147
+ OperationPriority,
148
+ OperationStatus,
149
+ OfflineOperation,
150
+ EncryptedQueueConfig,
151
+ QueueStats,
152
+ EncryptedPayload,
153
+ EncryptionKeyMaterial,
154
+ SyncBatch,
155
+ SyncResult,
156
+ ConflictDetectionResult,
157
+ ResolutionStrategy,
158
+ StoredConflict,
159
+ NetworkState,
160
+ BandwidthProfile,
161
+ NetworkStateEvent,
162
+ SyncCoordinatorConfig,
163
+ SyncProgressEvent,
164
+ OfflineQueueEvents,
165
+ SyncCoordinatorEvents,
166
+ } from './offline/types';
167
+
168
+ // Encryption service
169
+ export {
170
+ OfflineOperationEncryption,
171
+ getOperationEncryption,
172
+ resetOperationEncryption,
173
+ generateOperationId,
174
+ estimateEncryptedSize,
175
+ } from './offline/encryption';
176
+
177
+ // Encrypted offline queue
178
+ export {
179
+ EncryptedOfflineQueue,
180
+ getOfflineQueue,
181
+ createOfflineQueue,
182
+ resetOfflineQueue,
183
+ } from './offline/encrypted-queue';
184
+
185
+ // Conflict resolver
186
+ export {
187
+ ConflictResolver,
188
+ getConflictResolver,
189
+ createConflictResolver,
190
+ resetConflictResolver,
191
+ type ConflictResolverConfig,
192
+ type ConflictStats as ConflictResolverStats,
193
+ } from './sync/conflict-resolver';
194
+
195
+ // Sync coordinator
196
+ export {
197
+ SyncCoordinator,
198
+ getSyncCoordinator,
199
+ createSyncCoordinator,
200
+ resetSyncCoordinator,
201
+ type SyncStats,
202
+ } from './sync/coordinator';
203
+
204
+ // Service worker push handler
205
+ export {
206
+ handlePush,
207
+ handleNotificationClick,
208
+ handleNotificationClose,
209
+ handleSync,
210
+ handleMessage,
211
+ registerPushHandlers,
212
+ registerSyncHandlers,
213
+ registerMessageHandlers,
214
+ urlBase64ToUint8Array,
215
+ serializePushSubscription,
216
+ type PushNotificationData,
217
+ type PushHandlerConfig,
218
+ type ServiceWorkerMessage,
219
+ } from './service-worker-push';
220
+
221
+ // Type exports
222
+ export type {
223
+ // Config types
224
+ AeonConfig,
225
+ AeonOptions,
226
+ SyncOptions,
227
+ VersioningOptions,
228
+ PresenceOptions,
229
+ OfflineOptions,
230
+ PushOptions,
231
+ InstallOptions,
232
+ SkeletonOptions,
233
+ ComponentOptions,
234
+ OutputOptions,
235
+ // Route types
236
+ RouteDefinition,
237
+ RouteMatch,
238
+ RouteMetadata,
239
+ RouteOperation,
240
+ // Component types
241
+ SerializedComponent,
242
+ PageSession,
243
+ PresenceInfo,
244
+ PresenceUser,
245
+ // UCAN Capability types
246
+ AeonCapability,
247
+ AeonCapabilityAction,
248
+ AeonNodeCapability,
249
+ AeonNodeCapabilityAction,
250
+ AeonCapabilityActionType,
251
+ AeonAnyCapability,
252
+ AeonResourceType,
253
+ ParsedResource,
254
+ MerkleAccessRequest,
255
+ // Skeleton types
256
+ SkeletonShape,
257
+ SkeletonSource,
258
+ SkeletonDimensions,
259
+ SkeletonMetadata,
260
+ SkeletonHint,
261
+ // API Route types
262
+ HttpMethod,
263
+ AeonEnv,
264
+ AeonContext,
265
+ ExecutionContext,
266
+ ApiRouteHandler,
267
+ ApiRouteModule,
268
+ ApiRoute,
269
+ ApiRouteMatch,
270
+ ApiRouteSegment,
271
+ ServerRouteModule,
272
+ ServerLoaderResult,
273
+ ServerActionResult,
274
+ // Cloudflare binding types
275
+ D1Database,
276
+ D1PreparedStatement,
277
+ D1Result,
278
+ D1ExecResult,
279
+ KVNamespace,
280
+ DurableObjectNamespace,
281
+ DurableObjectId,
282
+ DurableObjectStub,
283
+ Ai,
284
+ } from './types';
285
+
286
+ // Personalized Router (hyperpersonalized routing)
287
+ export {
288
+ DEFAULT_ROUTER_CONFIG,
289
+ DEFAULT_ESI_CONFIG,
290
+ HeuristicAdapter,
291
+ EdgeWorkersESIProcessor,
292
+ extractUserContext,
293
+ createContextMiddleware,
294
+ setContextCookies,
295
+ addSpeculationHeaders,
296
+ esiInfer,
297
+ esiEmbed,
298
+ esiEmotion,
299
+ esiVision,
300
+ esiWithContext,
301
+ // Merkle-Based UCAN Capability Verification
302
+ parseResource,
303
+ formatResource,
304
+ capabilityGrantsAccess,
305
+ createNodeCapabilityVerifier,
306
+ createNodeReadCapability,
307
+ createNodeWriteCapability,
308
+ createTreeCapability,
309
+ createPathCapability,
310
+ createWildcardNodeCapability,
311
+ checkNodeAccess,
312
+ filterAccessibleNodes,
313
+ getMostSpecificCapability,
314
+ } from './router/index';
315
+ export type {
316
+ // User context
317
+ EmotionState,
318
+ Viewport,
319
+ ConnectionType,
320
+ UserTier,
321
+ UserContext,
322
+ // Route decision
323
+ ThemeMode,
324
+ LayoutDensity,
325
+ LayoutType,
326
+ SkeletonHints,
327
+ RouteDecision,
328
+ // Component tree
329
+ ComponentNode,
330
+ ComponentTree,
331
+ ComponentTreeSchema,
332
+ // Router adapter
333
+ RouterAdapter,
334
+ // Adapter config
335
+ HeuristicAdapterConfig,
336
+ TierFeatures,
337
+ SignalProcessor,
338
+ ContextExtractorOptions,
339
+ // Configuration
340
+ AIRouterConfig,
341
+ SpeculationConfig,
342
+ PersonalizationConfig,
343
+ RouterConfig,
344
+ RouterConfigWithESI,
345
+ // ESI
346
+ ESIModel,
347
+ ESIContentType,
348
+ ESIParams,
349
+ ESIContent,
350
+ ESIDirective,
351
+ ESIResult,
352
+ ESIProcessor,
353
+ ESIConfig,
354
+ // Merkle Capability Verification
355
+ NodeCapabilityVerifier,
356
+ NodeVerifierOptions,
357
+ } from './router/index';
358
+
359
+ // Version
360
+ export const VERSION = '1.0.0';