@kbve/droid 0.0.5 → 0.1.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.
Files changed (109) hide show
  1. package/README.md +3 -1
  2. package/comlink.js +1 -7
  3. package/droid.mjs +191 -61
  4. package/index.d.ts +29 -0
  5. package/index.js +9054 -2763
  6. package/lib/gateway/SupabaseGateway.d.ts +38 -0
  7. package/lib/gateway/SupabaseGateway.d.ts.map +1 -0
  8. package/lib/gateway/WorkerCommunication.d.ts +39 -0
  9. package/lib/gateway/WorkerCommunication.d.ts.map +1 -0
  10. package/lib/gateway/WorkerPool.d.ts +55 -0
  11. package/lib/gateway/WorkerPool.d.ts.map +1 -0
  12. package/lib/gateway/capabilities.d.ts +23 -0
  13. package/lib/gateway/capabilities.d.ts.map +1 -0
  14. package/lib/gateway/index.d.ts +9 -0
  15. package/lib/gateway/index.d.ts.map +1 -0
  16. package/lib/gateway/strategies/DirectStrategy.d.ts +52 -0
  17. package/lib/gateway/strategies/DirectStrategy.d.ts.map +1 -0
  18. package/lib/gateway/strategies/SharedWorkerStrategy.d.ts +46 -0
  19. package/lib/gateway/strategies/SharedWorkerStrategy.d.ts.map +1 -0
  20. package/lib/gateway/strategies/WebWorkerStrategy.d.ts +45 -0
  21. package/lib/gateway/strategies/WebWorkerStrategy.d.ts.map +1 -0
  22. package/lib/gateway/types.d.ts +81 -0
  23. package/lib/gateway/types.d.ts.map +1 -0
  24. package/lib/workers/canvas-ui-renderer.d.ts +25 -0
  25. package/lib/workers/canvas-ui-renderer.d.ts.map +1 -0
  26. package/lib/workers/canvas-worker.d.ts +14 -0
  27. package/lib/workers/canvas-worker.d.ts.map +1 -0
  28. package/lib/workers/canvas-worker.js +291 -145
  29. package/lib/workers/data.d.ts +40 -0
  30. package/lib/workers/data.d.ts.map +1 -0
  31. package/lib/workers/db-worker.d.ts +69 -0
  32. package/lib/workers/db-worker.d.ts.map +1 -0
  33. package/lib/workers/db-worker.js +2680 -2147
  34. package/lib/workers/events.d.ts +11 -0
  35. package/lib/workers/events.d.ts.map +1 -0
  36. package/lib/workers/flexbuilder.d.ts +4 -0
  37. package/lib/workers/flexbuilder.d.ts.map +1 -0
  38. package/lib/workers/init.d.ts +11 -0
  39. package/lib/workers/init.d.ts.map +1 -0
  40. package/lib/workers/main.d.ts +107 -0
  41. package/lib/workers/main.d.ts.map +1 -0
  42. package/lib/workers/supabase-db-worker.d.ts +2 -0
  43. package/lib/workers/supabase-db-worker.d.ts.map +1 -0
  44. package/lib/workers/supabase-db-worker.js +9337 -0
  45. package/lib/workers/supabase-shared-worker.d.ts +2 -0
  46. package/lib/workers/supabase-shared-worker.d.ts.map +1 -0
  47. package/lib/workers/supabase-shared-worker.js +12635 -0
  48. package/lib/workers/tools.d.ts +4 -0
  49. package/lib/workers/tools.d.ts.map +1 -0
  50. package/lib/workers/validate.d.ts +15 -0
  51. package/lib/workers/validate.d.ts.map +1 -0
  52. package/lib/workers/ws-worker.d.ts +11 -0
  53. package/lib/workers/ws-worker.d.ts.map +1 -0
  54. package/lib/workers/ws-worker.js +174 -115
  55. package/main.js +4875 -0
  56. package/package.json +17 -6
  57. package/reference.js +688 -228
  58. package/src/index.ts +38 -13
  59. package/src/lib/droid.spec.ts +14 -19
  60. package/src/lib/droid.ts +48 -4
  61. package/src/lib/gateway/SupabaseGateway.ts +183 -0
  62. package/src/lib/gateway/WorkerCommunication.ts +132 -0
  63. package/src/lib/gateway/WorkerPool.ts +304 -0
  64. package/src/lib/gateway/capabilities.ts +80 -0
  65. package/src/lib/gateway/index.ts +15 -0
  66. package/src/lib/gateway/strategies/DirectStrategy.ts +443 -0
  67. package/src/lib/gateway/strategies/SharedWorkerStrategy.ts +278 -0
  68. package/src/lib/gateway/strategies/WebWorkerStrategy.ts +278 -0
  69. package/src/lib/gateway/types.ts +112 -0
  70. package/src/lib/mod/mod-manager.ts +13 -8
  71. package/src/lib/mod/module/bento/mod-bento.worker.ts +1 -1
  72. package/src/lib/mod/module/supabase/mod-supabase.spec.ts +21 -25
  73. package/src/lib/mod/module/supabase/mod-supabase.ts +68 -0
  74. package/src/lib/mod/module/supabase/mod-supabase.worker.ts +1 -56
  75. package/src/lib/state/auth.spec.ts +58 -0
  76. package/src/lib/state/auth.ts +30 -0
  77. package/src/lib/state/index.ts +34 -0
  78. package/src/lib/state/overlay-manager.ts +125 -0
  79. package/src/lib/state/router.ts +24 -0
  80. package/src/lib/state/theme-sync.ts +75 -0
  81. package/src/lib/state/toasts.spec.ts +106 -0
  82. package/src/lib/state/toasts.ts +34 -0
  83. package/src/lib/state/ui.spec.ts +148 -0
  84. package/src/lib/state/ui.ts +45 -0
  85. package/src/lib/state/welcome-toast.ts +76 -0
  86. package/src/lib/types/bento.spec.ts +116 -0
  87. package/src/lib/types/bento.ts +94 -55
  88. package/src/lib/types/event-types.spec.ts +93 -0
  89. package/src/lib/types/event-types.ts +39 -3
  90. package/src/lib/types/modules.ts +12 -5
  91. package/src/lib/types/ui-event-types.ts +66 -0
  92. package/src/lib/workers/canvas-ui-renderer.ts +266 -0
  93. package/src/lib/workers/canvas-worker.ts +94 -9
  94. package/src/lib/workers/data.ts +59 -36
  95. package/src/lib/workers/db-worker.ts +79 -32
  96. package/src/lib/workers/events.spec.ts +208 -0
  97. package/src/lib/workers/events.ts +27 -14
  98. package/src/lib/workers/flexbuilder.ts +2 -2
  99. package/src/lib/workers/init.ts +25 -17
  100. package/src/lib/workers/main.ts +509 -272
  101. package/src/lib/workers/supabase-db-worker.ts +221 -0
  102. package/src/lib/workers/supabase-shared-worker.ts +572 -0
  103. package/src/lib/workers/validate.ts +64 -0
  104. package/src/lib/workers/ws-worker.ts +156 -25
  105. package/src/setup-vitest.ts +4 -2
  106. package/src/types.ts +30 -0
  107. package/src/vite-env.d.ts +1 -0
  108. package/workers/main.js +10 -1089
  109. package/src/types.d.ts +0 -31
@@ -0,0 +1,38 @@
1
+ import { ISupabaseStrategy, SelectOptions, SessionResponse, WebSocketStatus, StrategyType, GatewayConfig } from './types';
2
+ /**
3
+ * SupabaseGateway: Unified interface for all Supabase operations
4
+ *
5
+ * Automatically selects the best strategy based on browser capabilities:
6
+ * 1. SharedWorker + DB Worker Pool (desktop: Chrome, Firefox, Edge)
7
+ * 2. WebSocket Worker + DB Worker Pool (Android, Safari)
8
+ * 3. Direct/Main thread (fallback)
9
+ *
10
+ * All strategies implement the same interface, so application code is unchanged.
11
+ */
12
+ export declare class SupabaseGateway implements ISupabaseStrategy {
13
+ private strategy;
14
+ private strategyType;
15
+ constructor(config?: GatewayConfig);
16
+ getStrategyType(): StrategyType;
17
+ getStrategyDescription(): string;
18
+ init(url: string, anonKey: string, options?: Record<string, unknown>): Promise<SessionResponse>;
19
+ on(event: string, callback: (payload: unknown) => void): () => void;
20
+ getSession(): Promise<SessionResponse>;
21
+ signInWithPassword(email: string, password: string): Promise<SessionResponse>;
22
+ signOut(): Promise<void>;
23
+ select(table: string, opts?: SelectOptions): Promise<unknown[]>;
24
+ insert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown[]>;
25
+ update(table: string, data: Record<string, unknown>, match: Record<string, unknown>): Promise<unknown[]>;
26
+ upsert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown[]>;
27
+ delete(table: string, match: Record<string, unknown>): Promise<unknown[]>;
28
+ rpc(fn: string, args?: Record<string, unknown>): Promise<unknown>;
29
+ subscribePostgres(key: string, params: Record<string, unknown>, callback: (payload: unknown) => void): () => void;
30
+ connectWebSocket(wsUrl?: string): Promise<WebSocketStatus>;
31
+ disconnectWebSocket(): Promise<void>;
32
+ sendWebSocketMessage(data: unknown): Promise<void>;
33
+ getWebSocketStatus(): Promise<WebSocketStatus>;
34
+ onWebSocketMessage(callback: (message: unknown) => void): () => void;
35
+ onWebSocketStatus(callback: (status: WebSocketStatus) => void): () => void;
36
+ terminate(): void;
37
+ }
38
+ //# sourceMappingURL=SupabaseGateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupabaseGateway.d.ts","sourceRoot":"","sources":["../../../../../../packages/npm/droid/src/lib/gateway/SupabaseGateway.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,MAAM,SAAS,CAAC;AAejB;;;;;;;;;GASG;AACH,qBAAa,eAAgB,YAAW,iBAAiB;IACxD,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,YAAY,CAAe;gBAEvB,MAAM,GAAE,aAAkB;IAsCtC,eAAe,IAAI,YAAY;IAI/B,sBAAsB,IAAI,MAAM;IAMhC,IAAI,CACH,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,eAAe,CAAC;IAI3B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAInE,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC;IAItC,kBAAkB,CACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC;IAI3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI/D,MAAM,CACL,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACvD,OAAO,CAAC,OAAO,EAAE,CAAC;IAIrB,MAAM,CACL,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,EAAE,CAAC;IAIrB,MAAM,CACL,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACvD,OAAO,CAAC,OAAO,EAAE,CAAC;IAIrB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIzE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjE,iBAAiB,CAChB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAClC,MAAM,IAAI;IAIb,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAI1D,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC;IAI9C,kBAAkB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAIpE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;IAI1E,SAAS;CAGT"}
@@ -0,0 +1,39 @@
1
+ import { BroadcastEvent } from './types';
2
+ /**
3
+ * WorkerCommunication: Unified communication layer for workers
4
+ *
5
+ * Features:
6
+ * - BroadcastChannel for real-time events
7
+ * - Works in SharedWorker, WebWorker, and main thread
8
+ *
9
+ * Note: This layer does NOT open IndexedDB. The SharedWorker is the single
10
+ * writer to the auth database (sb-auth-v2). All other contexts receive
11
+ * auth state via BroadcastChannel or postMessage.
12
+ */
13
+ export declare class WorkerCommunication {
14
+ private bc;
15
+ private listeners;
16
+ private channelName;
17
+ constructor(channelName?: string);
18
+ private initBroadcastChannel;
19
+ /**
20
+ * Broadcast an event to all workers and tabs
21
+ */
22
+ broadcast(event: BroadcastEvent): void;
23
+ private handleBroadcast;
24
+ /**
25
+ * Subscribe to events (local and broadcast)
26
+ */
27
+ on(event: string, callback: (payload: unknown) => void): () => void;
28
+ private emit;
29
+ /**
30
+ * Check if BroadcastChannel is available
31
+ */
32
+ hasBroadcastChannel(): boolean;
33
+ /**
34
+ * Close connections
35
+ */
36
+ close(): void;
37
+ }
38
+ export declare function getWorkerCommunication(channelName?: string): WorkerCommunication;
39
+ //# sourceMappingURL=WorkerCommunication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerCommunication.d.ts","sourceRoot":"","sources":["../../../../../../packages/npm/droid/src/lib/gateway/WorkerCommunication.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,EAAE,CAAiC;IAC3C,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,SAAoB;IAK3C,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,cAAc;IAU/B,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAiBnE,OAAO,CAAC,IAAI;IAgBZ;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;IACH,KAAK;CAOL;AAOD,wBAAgB,sBAAsB,CACrC,WAAW,CAAC,EAAE,MAAM,GAClB,mBAAmB,CAKrB"}
@@ -0,0 +1,55 @@
1
+ export interface WorkerPoolConfig {
2
+ size: number;
3
+ workerUrl: string | URL;
4
+ }
5
+ /**
6
+ * WorkerPool: Manages a pool of workers with round-robin load balancing
7
+ *
8
+ * Features:
9
+ * - Fixed-size pool (default: 3 workers)
10
+ * - Round-robin routing for database operations
11
+ * - Request/response tracking with UUIDs
12
+ * - Automatic error handling with exponential backoff retries
13
+ */
14
+ export declare class WorkerPool {
15
+ private workers;
16
+ private poolSize;
17
+ private roundRobinIndex;
18
+ private pending;
19
+ private workerUrl;
20
+ private workerRetryCount;
21
+ private workerRetryTimers;
22
+ private readonly MAX_RETRY_ATTEMPTS;
23
+ private readonly BASE_RETRY_DELAY_MS;
24
+ private readonly MAX_RETRY_DELAY_MS;
25
+ private readonly REQUEST_TIMEOUT_MS;
26
+ constructor(config: WorkerPoolConfig);
27
+ /**
28
+ * Initialize the worker pool
29
+ */
30
+ init(): Promise<void>;
31
+ private getNextWorker;
32
+ private sendToWorker;
33
+ /**
34
+ * Send message to next available worker (round-robin)
35
+ */
36
+ send<T>(type: string, payload?: unknown): Promise<T>;
37
+ private handleMessage;
38
+ private handleError;
39
+ private scheduleWorkerRecreation;
40
+ private recreateWorker;
41
+ /**
42
+ * Terminate all workers
43
+ */
44
+ terminate(): void;
45
+ /**
46
+ * Get pool statistics
47
+ */
48
+ getStats(): {
49
+ size: number;
50
+ activeWorkers: number;
51
+ pendingRequests: number;
52
+ nextWorker: number;
53
+ };
54
+ }
55
+ //# sourceMappingURL=WorkerPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerPool.d.ts","sourceRoot":"","sources":["../../../../../../packages/npm/droid/src/lib/gateway/WorkerPool.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAU;IACtB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,OAAO,CAOX;IACJ,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,iBAAiB,CAGrB;IAEJ,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAK;IACxC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;gBAEhC,MAAM,EAAE,gBAAgB;IAKpC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC3B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,YAAY;IA2CpB;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAQpD,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,wBAAwB;YAkClB,cAAc;IAoC5B;;OAEG;IACH,SAAS;IAsBT;;OAEG;IACH,QAAQ;;;;;;CAQR"}
@@ -0,0 +1,23 @@
1
+ import { BrowserCapabilities, StrategyType } from './types';
2
+ /**
3
+ * Detect browser capabilities for worker and communication support
4
+ */
5
+ export declare function detectCapabilities(): BrowserCapabilities;
6
+ /**
7
+ * Select the best strategy based on browser capabilities
8
+ *
9
+ * Priority:
10
+ * 1. SharedWorker + Worker Pool (desktop Chrome, Firefox, Edge)
11
+ * 2. WebWorker Pool only (Android, Safari, or no SharedWorker)
12
+ * 3. Direct/Main thread (emergency fallback)
13
+ */
14
+ export declare function selectStrategy(capabilities?: BrowserCapabilities): StrategyType;
15
+ /**
16
+ * Log detected capabilities for debugging
17
+ */
18
+ export declare function logCapabilities(capabilities: BrowserCapabilities): void;
19
+ /**
20
+ * Get a human-readable description of the selected strategy
21
+ */
22
+ export declare function getStrategyDescription(strategy: StrategyType): string;
23
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../../../../packages/npm/droid/src/lib/gateway/capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEjE;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,mBAAmB,CAqBxD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,YAAY,CAAC,EAAE,mBAAmB,GAAG,YAAY,CAe/E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,mBAAmB,QAOhE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CASrE"}
@@ -0,0 +1,9 @@
1
+ export { SupabaseGateway } from './SupabaseGateway';
2
+ export { WorkerPool } from './WorkerPool';
3
+ export { getWorkerCommunication, WorkerCommunication } from './WorkerCommunication';
4
+ export { detectCapabilities, selectStrategy, logCapabilities, getStrategyDescription } from './capabilities';
5
+ export * from './types';
6
+ export { SharedWorkerStrategy } from './strategies/SharedWorkerStrategy';
7
+ export { WebWorkerStrategy } from './strategies/WebWorkerStrategy';
8
+ export { DirectStrategy } from './strategies/DirectStrategy';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/npm/droid/src/lib/gateway/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { ISupabaseStrategy, SelectOptions, SessionResponse, WebSocketStatus } from '../types';
2
+ /**
3
+ * DirectStrategy: Everything runs in main thread
4
+ *
5
+ * Architecture:
6
+ * - No workers, all operations on main thread
7
+ * - Uses Supabase client directly
8
+ * - Implements same interface as worker strategies
9
+ *
10
+ * Best for: Browsers without Worker/BroadcastChannel support, or emergency fallback
11
+ *
12
+ * Note: Requires `@supabase/supabase-js` to be available at runtime.
13
+ * This strategy dynamically imports it to avoid bundling Supabase in the main droid build.
14
+ */
15
+ export declare class DirectStrategy implements ISupabaseStrategy {
16
+ private client;
17
+ private ws;
18
+ private wsReconnectTimer;
19
+ private wsReconnectAttempts;
20
+ private wsHeartbeatTimer;
21
+ private wsLastPongTime;
22
+ private subscriptions;
23
+ private listeners;
24
+ private readonly WS_MAX_RECONNECT_ATTEMPTS;
25
+ private readonly WS_RECONNECT_DELAY_MS;
26
+ private readonly WS_HEARTBEAT_INTERVAL_MS;
27
+ private readonly WS_HEARTBEAT_TIMEOUT_MS;
28
+ init(url: string, anonKey: string, options?: Record<string, unknown>): Promise<SessionResponse>;
29
+ on(event: string, callback: (payload: unknown) => void): () => void;
30
+ private emit;
31
+ getSession(): Promise<SessionResponse>;
32
+ signInWithPassword(email: string, password: string): Promise<SessionResponse>;
33
+ signOut(): Promise<void>;
34
+ select(table: string, opts?: SelectOptions): Promise<unknown[]>;
35
+ insert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown[]>;
36
+ update(table: string, data: Record<string, unknown>, match: Record<string, unknown>): Promise<unknown[]>;
37
+ upsert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown[]>;
38
+ delete(table: string, match: Record<string, unknown>): Promise<unknown[]>;
39
+ rpc(fn: string, args?: Record<string, unknown>): Promise<unknown>;
40
+ subscribePostgres(key: string, params: Record<string, unknown>, callback: (payload: unknown) => void): () => void;
41
+ connectWebSocket(wsUrl?: string): Promise<WebSocketStatus>;
42
+ disconnectWebSocket(): Promise<void>;
43
+ sendWebSocketMessage(data: unknown): Promise<void>;
44
+ getWebSocketStatus(): Promise<WebSocketStatus>;
45
+ onWebSocketMessage(callback: (message: unknown) => void): () => void;
46
+ onWebSocketStatus(callback: (status: WebSocketStatus) => void): () => void;
47
+ private getDefaultWebSocketUrl;
48
+ private startHeartbeat;
49
+ private stopHeartbeat;
50
+ terminate(): void;
51
+ }
52
+ //# sourceMappingURL=DirectStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectStrategy.d.ts","sourceRoot":"","sources":["../../../../../../../packages/npm/droid/src/lib/gateway/strategies/DirectStrategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { ISupabaseStrategy, SelectOptions, SessionResponse, WebSocketStatus } from '../types';
2
+ /**
3
+ * SharedWorkerStrategy: Uses SharedWorker for WebSocket + DB Worker Pool
4
+ *
5
+ * Architecture:
6
+ * - SharedWorker handles WebSocket, auth, and realtime (cross-tab sharing)
7
+ * - Worker pool (3 workers) handles database operations (parallel execution)
8
+ * - BroadcastChannel connects SharedWorker to worker pool
9
+ *
10
+ * Best for: Desktop Chrome, Firefox, Edge
11
+ */
12
+ export declare class SharedWorkerStrategy implements ISupabaseStrategy {
13
+ private worker?;
14
+ private port?;
15
+ private workerPool?;
16
+ private pending;
17
+ private listeners;
18
+ private comm;
19
+ private sharedWorkerUrl;
20
+ private dbWorkerUrl;
21
+ private poolSize;
22
+ constructor(sharedWorkerUrl: string | URL, dbWorkerUrl: string | URL, poolSize?: number);
23
+ init(url: string, anonKey: string, options?: Record<string, unknown>): Promise<SessionResponse>;
24
+ private onMessage;
25
+ private send;
26
+ on(event: string, callback: (payload: unknown) => void): () => void;
27
+ private emit;
28
+ getSession(): Promise<SessionResponse>;
29
+ signInWithPassword(email: string, password: string): Promise<SessionResponse>;
30
+ signOut(): Promise<void>;
31
+ select(table: string, opts?: SelectOptions): Promise<unknown[]>;
32
+ insert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown[]>;
33
+ update(table: string, data: Record<string, unknown>, match: Record<string, unknown>): Promise<unknown[]>;
34
+ upsert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown[]>;
35
+ delete(table: string, match: Record<string, unknown>): Promise<unknown[]>;
36
+ rpc(fn: string, args?: Record<string, unknown>): Promise<unknown>;
37
+ subscribePostgres(key: string, params: Record<string, unknown>, callback: (payload: unknown) => void): () => void;
38
+ connectWebSocket(wsUrl?: string): Promise<WebSocketStatus>;
39
+ disconnectWebSocket(): Promise<void>;
40
+ sendWebSocketMessage(data: unknown): Promise<void>;
41
+ getWebSocketStatus(): Promise<WebSocketStatus>;
42
+ onWebSocketMessage(callback: (message: unknown) => void): () => void;
43
+ onWebSocketStatus(callback: (status: WebSocketStatus) => void): () => void;
44
+ terminate(): void;
45
+ }
46
+ //# sourceMappingURL=SharedWorkerStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedWorkerStrategy.d.ts","sourceRoot":"","sources":["../../../../../../../packages/npm/droid/src/lib/gateway/strategies/SharedWorkerStrategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { ISupabaseStrategy, SelectOptions, SessionResponse, WebSocketStatus } from '../types';
2
+ /**
3
+ * WebWorkerStrategy: Uses dedicated WebSocket worker + DB Worker Pool
4
+ *
5
+ * Architecture:
6
+ * - Dedicated WebSocket worker handles WebSocket, auth, and realtime (no cross-tab)
7
+ * - Worker pool (3 workers) handles database operations (parallel execution)
8
+ * - BroadcastChannel connects WebSocket worker to worker pool
9
+ *
10
+ * Best for: Android, Safari, browsers without SharedWorker
11
+ */
12
+ export declare class WebWorkerStrategy implements ISupabaseStrategy {
13
+ private wsWorker?;
14
+ private workerPool?;
15
+ private pending;
16
+ private listeners;
17
+ private comm;
18
+ private wsWorkerUrl;
19
+ private dbWorkerUrl;
20
+ private poolSize;
21
+ constructor(wsWorkerUrl: string | URL, dbWorkerUrl: string | URL, poolSize?: number);
22
+ init(url: string, anonKey: string, options?: Record<string, unknown>): Promise<SessionResponse>;
23
+ private onMessage;
24
+ private send;
25
+ on(event: string, callback: (payload: unknown) => void): () => void;
26
+ private emit;
27
+ getSession(): Promise<SessionResponse>;
28
+ signInWithPassword(email: string, password: string): Promise<SessionResponse>;
29
+ signOut(): Promise<void>;
30
+ select(table: string, opts?: SelectOptions): Promise<unknown[]>;
31
+ insert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown[]>;
32
+ update(table: string, data: Record<string, unknown>, match: Record<string, unknown>): Promise<unknown[]>;
33
+ upsert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown[]>;
34
+ delete(table: string, match: Record<string, unknown>): Promise<unknown[]>;
35
+ rpc(fn: string, args?: Record<string, unknown>): Promise<unknown>;
36
+ subscribePostgres(key: string, params: Record<string, unknown>, callback: (payload: unknown) => void): () => void;
37
+ connectWebSocket(wsUrl?: string): Promise<WebSocketStatus>;
38
+ disconnectWebSocket(): Promise<void>;
39
+ sendWebSocketMessage(data: unknown): Promise<void>;
40
+ getWebSocketStatus(): Promise<WebSocketStatus>;
41
+ onWebSocketMessage(callback: (message: unknown) => void): () => void;
42
+ onWebSocketStatus(callback: (status: WebSocketStatus) => void): () => void;
43
+ terminate(): void;
44
+ }
45
+ //# sourceMappingURL=WebWorkerStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebWorkerStrategy.d.ts","sourceRoot":"","sources":["../../../../../../../packages/npm/droid/src/lib/gateway/strategies/WebWorkerStrategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ export interface SupabaseConfig {
2
+ url: string;
3
+ anonKey: string;
4
+ options?: Record<string, unknown>;
5
+ }
6
+ export interface Session {
7
+ access_token: string;
8
+ refresh_token: string;
9
+ user: Record<string, unknown>;
10
+ expires_at?: number;
11
+ }
12
+ export interface SessionResponse {
13
+ session: Session | null;
14
+ user?: Record<string, unknown>;
15
+ }
16
+ export interface WebSocketStatus {
17
+ status: 'connected' | 'disconnected' | 'connecting' | 'error';
18
+ readyState: number | null;
19
+ error?: string;
20
+ }
21
+ export interface ISupabaseStrategy {
22
+ init(url: string, anonKey: string, options?: Record<string, unknown>): Promise<SessionResponse>;
23
+ on(event: string, callback: (payload: unknown) => void): () => void;
24
+ getSession(): Promise<SessionResponse>;
25
+ signInWithPassword(email: string, password: string): Promise<SessionResponse>;
26
+ signOut(): Promise<void>;
27
+ select(table: string, opts?: SelectOptions): Promise<unknown[]>;
28
+ insert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown[]>;
29
+ update(table: string, data: Record<string, unknown>, match: Record<string, unknown>): Promise<unknown[]>;
30
+ upsert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown[]>;
31
+ delete(table: string, match: Record<string, unknown>): Promise<unknown[]>;
32
+ rpc(fn: string, args?: Record<string, unknown>): Promise<unknown>;
33
+ subscribePostgres(key: string, params: Record<string, unknown>, callback: (payload: unknown) => void): () => void;
34
+ connectWebSocket(wsUrl?: string): Promise<WebSocketStatus>;
35
+ disconnectWebSocket(): Promise<void>;
36
+ sendWebSocketMessage(data: unknown): Promise<void>;
37
+ getWebSocketStatus(): Promise<WebSocketStatus>;
38
+ onWebSocketMessage(callback: (message: unknown) => void): () => void;
39
+ onWebSocketStatus(callback: (status: WebSocketStatus) => void): () => void;
40
+ terminate(): void;
41
+ }
42
+ export interface SelectOptions {
43
+ columns?: string;
44
+ match?: Record<string, unknown>;
45
+ limit?: number;
46
+ }
47
+ export interface WorkerMessage {
48
+ id: string;
49
+ type: string;
50
+ payload?: unknown;
51
+ }
52
+ export interface WorkerResponse {
53
+ id: string;
54
+ ok: boolean;
55
+ data?: unknown;
56
+ error?: string;
57
+ }
58
+ export interface BroadcastEvent {
59
+ type: 'auth' | 'ws.message' | 'ws.status' | 'realtime' | 'ready';
60
+ data?: unknown;
61
+ key?: string;
62
+ payload?: unknown;
63
+ }
64
+ export type StrategyType = 'shared-worker' | 'web-worker' | 'direct';
65
+ export interface BrowserCapabilities {
66
+ hasSharedWorker: boolean;
67
+ hasWorker: boolean;
68
+ hasBroadcastChannel: boolean;
69
+ isAndroid: boolean;
70
+ isSafari: boolean;
71
+ }
72
+ export interface GatewayConfig {
73
+ workerUrls?: {
74
+ sharedWorker?: string | URL;
75
+ dbWorker?: string | URL;
76
+ webSocketWorker?: string | URL;
77
+ };
78
+ forceStrategy?: StrategyType;
79
+ poolSize?: number;
80
+ }
81
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../packages/npm/droid/src/lib/gateway/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { ToastPayload, TooltipPayload, ModalPayload } from '../types/ui-event-types';
2
+ export declare class CanvasUIRenderer {
3
+ private ctx;
4
+ private canvas;
5
+ private toasts;
6
+ private tooltip;
7
+ private modal;
8
+ private theme;
9
+ private animFrame;
10
+ private dbGet;
11
+ bind(canvas: OffscreenCanvas, dbGet: (key: string) => Promise<string | null>): Promise<void>;
12
+ refreshTheme(): Promise<void>;
13
+ addToast(payload: ToastPayload): void;
14
+ removeToast(id: string): void;
15
+ showTooltip(payload: TooltipPayload | null): void;
16
+ showModal(payload: ModalPayload | null): void;
17
+ private recalcPositions;
18
+ private startLoop;
19
+ private render;
20
+ private drawToast;
21
+ private drawModal;
22
+ private roundRect;
23
+ unbind(): void;
24
+ }
25
+ //# sourceMappingURL=canvas-ui-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-ui-renderer.d.ts","sourceRoot":"","sources":["../../../../../../packages/npm/droid/src/lib/workers/canvas-ui-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,MAAM,yBAAyB,CAAC;AAiCjC,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,GAAG,CAAkD;IAC7D,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,KAAK,CAYX;IACF,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,KAAK,CAA0D;IAEjE,IAAI,CACT,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC;IAQV,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBnC,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAWrC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAM7B,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI;IAIjD,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI;IAI7C,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,MAAM;IAiCd,OAAO,CAAC,SAAS;IAoCjB,OAAO,CAAC,SAAS;IAoCjB,OAAO,CAAC,SAAS;IAqBjB,MAAM,IAAI,IAAI;CAWd"}
@@ -0,0 +1,14 @@
1
+ import { ToastPayload, TooltipPayload, ModalPayload } from '../types/ui-event-types';
2
+ export interface CanvasWorkerAPI {
3
+ bindCanvas(panelId: string, canvas: OffscreenCanvas, mode?: CanvasDrawMode): Promise<void>;
4
+ unbindCanvas(panelId: string): Promise<void>;
5
+ bindUICanvas(canvas: OffscreenCanvas, dbGet: (key: string) => Promise<string | null>): Promise<void>;
6
+ unbindUICanvas(): void;
7
+ addCanvasToast(payload: ToastPayload): void;
8
+ removeCanvasToast(id: string): void;
9
+ showCanvasTooltip(payload: TooltipPayload | null): void;
10
+ showCanvasModal(payload: ModalPayload | null): void;
11
+ refreshUITheme(): Promise<void>;
12
+ }
13
+ export type CanvasDrawMode = 'static' | 'animated' | 'dynamic';
14
+ //# sourceMappingURL=canvas-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-worker.d.ts","sourceRoot":"","sources":["../../../../../../packages/npm/droid/src/lib/workers/canvas-worker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,eAAe;IAC/B,UAAU,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,EACvB,IAAI,CAAC,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,YAAY,CACX,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,IAAI,IAAI,CAAC;IACvB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5C,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC;IACxD,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC;IACpD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAUD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC"}