@phpsandbox/sdk 0.0.49 → 0.0.52

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 (120) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -1
  3. package/dist/auth.d.ts +0 -1
  4. package/dist/auth.js +0 -1
  5. package/dist/beacon/index.d.ts +4 -5
  6. package/dist/beacon/index.js +11 -12
  7. package/dist/beacon/navigator.d.ts +1 -2
  8. package/dist/beacon/navigator.js +0 -1
  9. package/dist/beacon/types.d.ts +12 -13
  10. package/dist/beacon/types.js +0 -1
  11. package/dist/browser/phpsandbox-sdk.esm.js +282 -479
  12. package/dist/browser/phpsandbox-sdk.esm.min.js +2 -3
  13. package/dist/browser/phpsandbox-sdk.iife.js +277 -479
  14. package/dist/browser/phpsandbox-sdk.iife.min.js +2 -3
  15. package/dist/composer.d.ts +2 -3
  16. package/dist/composer.js +0 -1
  17. package/dist/config.d.ts +0 -1
  18. package/dist/config.js +0 -1
  19. package/dist/container.d.ts +0 -1
  20. package/dist/container.js +0 -1
  21. package/dist/errors/index.d.ts +0 -1
  22. package/dist/errors/index.js +0 -1
  23. package/dist/events/index.d.ts +15 -15
  24. package/dist/events/index.js +16 -9
  25. package/dist/filesystem.d.ts +6 -7
  26. package/dist/filesystem.js +36 -14
  27. package/dist/git.d.ts +0 -1
  28. package/dist/git.js +0 -1
  29. package/dist/index.d.ts +4 -3
  30. package/dist/index.js +38 -25
  31. package/dist/laravel.d.ts +1 -2
  32. package/dist/laravel.js +1 -2
  33. package/dist/log.d.ts +3 -4
  34. package/dist/log.js +1 -2
  35. package/dist/lsp.d.ts +10 -11
  36. package/dist/lsp.js +9 -10
  37. package/dist/repl.d.ts +3 -4
  38. package/dist/repl.js +2 -3
  39. package/dist/services.d.ts +0 -1
  40. package/dist/services.js +0 -1
  41. package/dist/shell.d.ts +1 -2
  42. package/dist/shell.js +1 -2
  43. package/dist/socket/index.d.ts +23 -129
  44. package/dist/socket/index.js +60 -350
  45. package/dist/terminal.d.ts +2 -3
  46. package/dist/terminal.js +45 -26
  47. package/dist/types.d.ts +0 -1
  48. package/dist/types.js +0 -1
  49. package/dist/utils/disposable.d.ts +0 -1
  50. package/dist/utils/disposable.js +0 -1
  51. package/dist/utils/promise.d.ts +0 -1
  52. package/dist/utils/promise.js +0 -1
  53. package/dist/utils/retry.d.ts +0 -1
  54. package/dist/utils/retry.js +0 -1
  55. package/dist/utils/websocket.d.ts +0 -1
  56. package/dist/utils/websocket.js +0 -1
  57. package/docs/api-summary.md +136 -0
  58. package/docs/cdn-usage.md +80 -0
  59. package/docs/getting-started.md +152 -0
  60. package/examples/README.md +206 -0
  61. package/examples/basic.ts +24 -0
  62. package/examples/get.ts +21 -0
  63. package/examples/git-merge-smoke.ts +415 -0
  64. package/examples/laravel-load-test.ts +2829 -0
  65. package/examples/notebook-readonly-smoke.ts +823 -0
  66. package/package.json +13 -7
  67. package/dist/auth.d.ts.map +0 -1
  68. package/dist/auth.js.map +0 -1
  69. package/dist/beacon/index.d.ts.map +0 -1
  70. package/dist/beacon/index.js.map +0 -1
  71. package/dist/beacon/navigator.d.ts.map +0 -1
  72. package/dist/beacon/navigator.js.map +0 -1
  73. package/dist/beacon/types.d.ts.map +0 -1
  74. package/dist/beacon/types.js.map +0 -1
  75. package/dist/browser/phpsandbox-sdk.esm.js.map +0 -7
  76. package/dist/browser/phpsandbox-sdk.esm.min.js.map +0 -7
  77. package/dist/browser/phpsandbox-sdk.iife.js.map +0 -7
  78. package/dist/browser/phpsandbox-sdk.iife.min.js.map +0 -7
  79. package/dist/composer.d.ts.map +0 -1
  80. package/dist/composer.js.map +0 -1
  81. package/dist/config.d.ts.map +0 -1
  82. package/dist/config.js.map +0 -1
  83. package/dist/container.d.ts.map +0 -1
  84. package/dist/container.js.map +0 -1
  85. package/dist/errors/index.d.ts.map +0 -1
  86. package/dist/errors/index.js.map +0 -1
  87. package/dist/events/index.d.ts.map +0 -1
  88. package/dist/events/index.js.map +0 -1
  89. package/dist/filesystem.d.ts.map +0 -1
  90. package/dist/filesystem.js.map +0 -1
  91. package/dist/git.d.ts.map +0 -1
  92. package/dist/git.js.map +0 -1
  93. package/dist/index.d.ts.map +0 -1
  94. package/dist/index.js.map +0 -1
  95. package/dist/laravel.d.ts.map +0 -1
  96. package/dist/laravel.js.map +0 -1
  97. package/dist/log.d.ts.map +0 -1
  98. package/dist/log.js.map +0 -1
  99. package/dist/lsp.d.ts.map +0 -1
  100. package/dist/lsp.js.map +0 -1
  101. package/dist/repl.d.ts.map +0 -1
  102. package/dist/repl.js.map +0 -1
  103. package/dist/services.d.ts.map +0 -1
  104. package/dist/services.js.map +0 -1
  105. package/dist/shell.d.ts.map +0 -1
  106. package/dist/shell.js.map +0 -1
  107. package/dist/socket/index.d.ts.map +0 -1
  108. package/dist/socket/index.js.map +0 -1
  109. package/dist/terminal.d.ts.map +0 -1
  110. package/dist/terminal.js.map +0 -1
  111. package/dist/types.d.ts.map +0 -1
  112. package/dist/types.js.map +0 -1
  113. package/dist/utils/disposable.d.ts.map +0 -1
  114. package/dist/utils/disposable.js.map +0 -1
  115. package/dist/utils/promise.d.ts.map +0 -1
  116. package/dist/utils/promise.js.map +0 -1
  117. package/dist/utils/retry.d.ts.map +0 -1
  118. package/dist/utils/retry.js.map +0 -1
  119. package/dist/utils/websocket.d.ts.map +0 -1
  120. package/dist/utils/websocket.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import type { CloseEvent, ErrorEvent as WsErrorEvent } from 'ws';
1
+ import type { CloseEvent as ReconnectingWebSocketCloseEvent, ErrorEvent as ReconnectingWebSocketErrorEvent } from 'reconnecting-websocket';
2
2
  import { EventDispatcher } from '../events/index.js';
3
3
  import { NotebookUnavailableError } from '../errors/index.js';
4
4
  interface WsOptions {
@@ -8,7 +8,7 @@ interface WsOptions {
8
8
  connectionTimeout?: number;
9
9
  connectWaitTimeout?: number;
10
10
  maxRetries?: number;
11
- webSocket?: any;
11
+ webSocket?: unknown;
12
12
  }
13
13
  export interface CallOption {
14
14
  responseEvent?: string;
@@ -18,6 +18,9 @@ export interface CallOption {
18
18
  abortSignal?: AbortSignal;
19
19
  }
20
20
  export type WebSocketStatus = 'OPEN' | 'CONNECTING' | 'CLOSED';
21
+ type WebSocketCloseLikeEvent = ReconnectingWebSocketCloseEvent;
22
+ type WebSocketErrorLikeEvent = ReconnectingWebSocketErrorEvent & Partial<Pick<WebSocketCloseLikeEvent, 'code' | 'reason' | 'wasClean'>>;
23
+ type WebSocketLikeEvent = WebSocketCloseLikeEvent | WebSocketErrorLikeEvent;
21
24
  export declare enum SocketEvent {
22
25
  BootError = "Events.BootError",
23
26
  Response = "response",
@@ -38,42 +41,6 @@ export declare class InvalidMessageError extends Error {
38
41
  export declare class InvalidConfigurationError extends Error {
39
42
  constructor(message: string);
40
43
  }
41
- export interface ConnectionStats {
42
- connectTime: number;
43
- reconnectCount: number;
44
- lastPingTime: number;
45
- lastPongTime: number;
46
- avgResponseTime: number;
47
- totalMessages: number;
48
- totalErrors: number;
49
- connectionStartTime: number;
50
- connectionDuration: number;
51
- uptime: number;
52
- messagesPerSecond: string;
53
- errorRate: string;
54
- timeSinceLastPing: number;
55
- timeSinceLastPong: number;
56
- }
57
- export interface MessageQueueInfo {
58
- length: number;
59
- maxSize: number;
60
- oldestMessageAge: number;
61
- }
62
- export interface TransportConfig {
63
- pingInterval: number;
64
- queueTimeout: number;
65
- url: string;
66
- }
67
- export interface ConnectionMetrics {
68
- status: string | undefined;
69
- clientId: string;
70
- isConnected: boolean;
71
- isConnecting: boolean;
72
- connectionStats: ConnectionStats;
73
- messageQueue: MessageQueueInfo;
74
- config: TransportConfig;
75
- }
76
- export type HealthStatus = 'healthy' | 'degraded' | 'unhealthy';
77
44
  export interface TransportEvents {
78
45
  'transport.boot_error': {
79
46
  error: NotebookUnavailableError;
@@ -81,14 +48,13 @@ export interface TransportEvents {
81
48
  };
82
49
  'transport.error': {
83
50
  type: string;
84
- error: any;
51
+ error: unknown;
85
52
  rawMessage?: unknown;
86
53
  timestamp: number;
87
54
  };
88
55
  'transport.closed': {
89
56
  code?: number;
90
57
  reason?: string;
91
- metrics: ConnectionMetrics;
92
58
  timestamp: number;
93
59
  };
94
60
  }
@@ -106,10 +72,6 @@ export declare class Transport {
106
72
  private readonly url;
107
73
  private readonly CONNECT_WAIT_TIMEOUT;
108
74
  private pingIntervalStarted;
109
- private connectionStats;
110
- private messageQueue;
111
- private readonly MAX_QUEUE_SIZE;
112
- private readonly QUEUE_TIMEOUT;
113
75
  private incomingMessageChain;
114
76
  constructor(url: string, eventEmitter: EventDispatcher, options?: WsOptions);
115
77
  /**
@@ -127,24 +89,29 @@ export declare class Transport {
127
89
  id(): string;
128
90
  private registerWatchers;
129
91
  private processIncomingMessage;
92
+ private toArrayBuffer;
130
93
  private handleRawMessage;
131
94
  private handleMessage;
132
- listen(event: string, listener: (data: any) => void, _context?: any): import("../types.js").Disposable;
133
- onDidBootError(listener: (error: NotebookUnavailableError) => void): void;
134
- removeListener(event: string, listener?: (data: any) => void): void;
135
- listenOnce(event: string, listener: (data: any) => void, context?: any): void;
136
- emit(event: string, ...data: any): void;
95
+ listen(event: string, listener: (data: unknown) => void, _context?: unknown): import("../types.js").Disposable;
96
+ onDidBootError(listener: (error: NotebookUnavailableError) => void): {
97
+ dispose: () => void;
98
+ };
99
+ removeListener(event: string, listener?: (data: unknown) => void): void;
100
+ listenOnce(event: string, listener: (data: unknown) => void, context?: unknown): {
101
+ dispose: () => void;
102
+ };
103
+ emit(event: string, ...data: unknown[]): void;
137
104
  get isConnected(): boolean;
138
105
  get isConnecting(): boolean;
139
106
  get isDisconnected(): boolean;
140
107
  get isClosed(): boolean;
141
108
  getTerminalError(): Error | null;
142
109
  get status(): string | undefined;
143
- call(action: string, data?: object | string, options?: CallOption): Promise<any>;
110
+ call(action: string, data?: object | string, options?: CallOption): Promise<unknown>;
144
111
  send(action: string, data?: object | string): boolean;
145
112
  private pack;
146
113
  private sendWithRetry;
147
- invoke(action: string, data?: object | string, options?: CallOption): Promise<any>;
114
+ invoke(action: string, data?: object | string, options?: CallOption): Promise<unknown>;
148
115
  /**
149
116
  * Reconnect the websocket without disposing listeners.
150
117
  * Uses the underlying ReconnectingWebSocket's reconnect mechanism.
@@ -154,84 +121,11 @@ export declare class Transport {
154
121
  disconnect(): void;
155
122
  terminate(error: Error, code?: number, reason?: string): void;
156
123
  close(code?: number, reason?: string): void;
157
- onDidConnect(listener: () => void): void;
158
- onDidClose(listener: (e: CloseEvent | WsErrorEvent) => void): void;
159
- /**
160
- * Setup connection health monitoring
161
- */
162
- private setupConnectionHealthMonitoring;
163
- /**
164
- * Handle different WebSocket close codes appropriately
165
- */
166
- private handleConnectionClose;
167
- /**
168
- * Process queued messages when connection is restored
169
- */
170
- private processMessageQueue;
171
- /**
172
- * Clear old queued messages to prevent memory leaks
173
- */
174
- private clearOldQueuedMessages;
175
- /**
176
- * Calculate exponential backoff delay
177
- */
178
- private getBackoffDelay;
179
- /**
180
- * Get comprehensive connection metrics
181
- */
182
- getConnectionMetrics(): {
183
- status: string;
184
- clientId: string;
185
- isConnected: boolean;
186
- isConnecting: boolean;
187
- connectionStats: {
188
- connectionDuration: number;
189
- uptime: number;
190
- messagesPerSecond: string;
191
- errorRate: string;
192
- timeSinceLastPing: number;
193
- timeSinceLastPong: number;
194
- connectTime: number;
195
- reconnectCount: number;
196
- lastPingTime: number;
197
- lastPongTime: number;
198
- avgResponseTime: number;
199
- totalMessages: number;
200
- totalErrors: number;
201
- connectionStartTime: number;
202
- };
203
- messageQueue: {
204
- length: number;
205
- maxSize: number;
206
- oldestMessageAge: number;
207
- };
208
- config: {
209
- pingInterval: number;
210
- queueTimeout: number;
211
- url: string;
212
- };
124
+ onDidConnect(listener: () => void): {
125
+ dispose: () => void;
126
+ };
127
+ onDidClose(listener: (e: WebSocketLikeEvent) => void): {
128
+ dispose: () => void;
213
129
  };
214
- /**
215
- * Get connection health status
216
- */
217
- getHealthStatus(): 'healthy' | 'degraded' | 'unhealthy';
218
- /**
219
- * Reset connection statistics
220
- */
221
- resetStats(): void;
222
- /**
223
- * Run connection diagnostics
224
- */
225
- runDiagnostics(): Promise<{
226
- status: HealthStatus;
227
- metrics: ConnectionMetrics;
228
- issues: string[];
229
- recommendations: string[];
230
- }>;
231
- /**
232
- * Periodic maintenance - clean up old data, run health checks
233
- */
234
- private startPeriodicMaintenance;
235
130
  }
236
131
  export {};
237
- //# sourceMappingURL=index.d.ts.map