@phpsandbox/sdk 0.0.2

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 (90) hide show
  1. package/README.md +718 -0
  2. package/dist/auth.d.ts +14 -0
  3. package/dist/auth.d.ts.map +1 -0
  4. package/dist/auth.js +12 -0
  5. package/dist/auth.js.map +1 -0
  6. package/dist/beacon/index.d.ts +169 -0
  7. package/dist/beacon/index.d.ts.map +1 -0
  8. package/dist/beacon/index.js +537 -0
  9. package/dist/beacon/index.js.map +1 -0
  10. package/dist/beacon/navigator.d.ts +141 -0
  11. package/dist/beacon/navigator.d.ts.map +1 -0
  12. package/dist/beacon/navigator.js +246 -0
  13. package/dist/beacon/navigator.js.map +1 -0
  14. package/dist/beacon/types.d.ts +230 -0
  15. package/dist/beacon/types.d.ts.map +1 -0
  16. package/dist/beacon/types.js +2 -0
  17. package/dist/beacon/types.js.map +1 -0
  18. package/dist/browser/phpsandbox-sdk.esm.js +4755 -0
  19. package/dist/browser/phpsandbox-sdk.esm.js.map +7 -0
  20. package/dist/browser/phpsandbox-sdk.esm.min.js +27 -0
  21. package/dist/browser/phpsandbox-sdk.esm.min.js.map +7 -0
  22. package/dist/browser/phpsandbox-sdk.iife.js +4766 -0
  23. package/dist/browser/phpsandbox-sdk.iife.js.map +7 -0
  24. package/dist/browser/phpsandbox-sdk.iife.min.js +27 -0
  25. package/dist/browser/phpsandbox-sdk.iife.min.js.map +7 -0
  26. package/dist/composer.d.ts +45 -0
  27. package/dist/composer.d.ts.map +1 -0
  28. package/dist/composer.js +30 -0
  29. package/dist/composer.js.map +1 -0
  30. package/dist/container.d.ts +66 -0
  31. package/dist/container.d.ts.map +1 -0
  32. package/dist/container.js +56 -0
  33. package/dist/container.js.map +1 -0
  34. package/dist/events/index.d.ts +23 -0
  35. package/dist/events/index.d.ts.map +1 -0
  36. package/dist/events/index.js +46 -0
  37. package/dist/events/index.js.map +1 -0
  38. package/dist/filesystem.d.ts +483 -0
  39. package/dist/filesystem.d.ts.map +1 -0
  40. package/dist/filesystem.js +244 -0
  41. package/dist/filesystem.js.map +1 -0
  42. package/dist/git.d.ts +42 -0
  43. package/dist/git.d.ts.map +1 -0
  44. package/dist/git.js +18 -0
  45. package/dist/git.js.map +1 -0
  46. package/dist/index.d.ts +167 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +265 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/laravel.d.ts +23 -0
  51. package/dist/laravel.d.ts.map +1 -0
  52. package/dist/laravel.js +12 -0
  53. package/dist/laravel.js.map +1 -0
  54. package/dist/log.d.ts +13 -0
  55. package/dist/log.d.ts.map +1 -0
  56. package/dist/log.js +12 -0
  57. package/dist/log.js.map +1 -0
  58. package/dist/lsp.d.ts +57 -0
  59. package/dist/lsp.d.ts.map +1 -0
  60. package/dist/lsp.js +69 -0
  61. package/dist/lsp.js.map +1 -0
  62. package/dist/repl.d.ts +41 -0
  63. package/dist/repl.d.ts.map +1 -0
  64. package/dist/repl.js +27 -0
  65. package/dist/repl.js.map +1 -0
  66. package/dist/shell.d.ts +29 -0
  67. package/dist/shell.d.ts.map +1 -0
  68. package/dist/shell.js +29 -0
  69. package/dist/shell.js.map +1 -0
  70. package/dist/socket/index.d.ts +229 -0
  71. package/dist/socket/index.d.ts.map +1 -0
  72. package/dist/socket/index.js +825 -0
  73. package/dist/socket/index.js.map +1 -0
  74. package/dist/terminal.d.ts +97 -0
  75. package/dist/terminal.d.ts.map +1 -0
  76. package/dist/terminal.js +87 -0
  77. package/dist/terminal.js.map +1 -0
  78. package/dist/types.d.ts +16 -0
  79. package/dist/types.d.ts.map +1 -0
  80. package/dist/types.js +16 -0
  81. package/dist/types.js.map +1 -0
  82. package/dist/utils/disposable.d.ts +7 -0
  83. package/dist/utils/disposable.d.ts.map +1 -0
  84. package/dist/utils/disposable.js +20 -0
  85. package/dist/utils/disposable.js.map +1 -0
  86. package/dist/utils/promise.d.ts +13 -0
  87. package/dist/utils/promise.d.ts.map +1 -0
  88. package/dist/utils/promise.js +21 -0
  89. package/dist/utils/promise.js.map +1 -0
  90. package/package.json +67 -0
@@ -0,0 +1,229 @@
1
+ import type { CloseEvent, ErrorEvent as WsErrorEvent } from 'ws';
2
+ import { EventDispatcher } from '../events/index.js';
3
+ interface WsOptions {
4
+ debug?: boolean;
5
+ startClosed?: boolean;
6
+ pingInterval?: number;
7
+ connectionTimeout?: number;
8
+ maxRetries?: number;
9
+ }
10
+ export interface CallOption {
11
+ responseEvent?: string;
12
+ timeout?: number;
13
+ retries?: number | false;
14
+ buffer?: boolean;
15
+ abortSignal?: AbortSignal;
16
+ }
17
+ export type WebSocketStatus = 'OPEN' | 'CONNECTING' | 'CLOSED';
18
+ export declare enum SocketEvent {
19
+ BootError = "Events.BootError",
20
+ Response = "response",
21
+ Error = "error",
22
+ ClientId = "App.Actions.GetClientId"
23
+ }
24
+ export declare class ConnectionTimeoutError extends Error {
25
+ constructor(message?: string);
26
+ }
27
+ export declare class ConnectionFailedError extends Error {
28
+ readonly originalError?: Event;
29
+ constructor(message: string, originalError?: Event);
30
+ }
31
+ export declare class InvalidMessageError extends Error {
32
+ readonly data?: unknown;
33
+ constructor(message: string, data?: unknown);
34
+ }
35
+ export declare class InvalidConfigurationError extends Error {
36
+ constructor(message: string);
37
+ }
38
+ export interface ConnectionStats {
39
+ connectTime: number;
40
+ reconnectCount: number;
41
+ lastPingTime: number;
42
+ lastPongTime: number;
43
+ avgResponseTime: number;
44
+ totalMessages: number;
45
+ totalErrors: number;
46
+ connectionStartTime: number;
47
+ connectionDuration: number;
48
+ uptime: number;
49
+ messagesPerSecond: string;
50
+ errorRate: string;
51
+ timeSinceLastPing: number;
52
+ timeSinceLastPong: number;
53
+ }
54
+ export interface MessageQueueInfo {
55
+ length: number;
56
+ maxSize: number;
57
+ oldestMessageAge: number;
58
+ }
59
+ export interface RateLimiterInfo {
60
+ currentRequests: number;
61
+ maxRequests: number;
62
+ windowMs: number;
63
+ isLimited: boolean;
64
+ }
65
+ export interface TransportConfig {
66
+ pingInterval: number;
67
+ queueTimeout: number;
68
+ url: string;
69
+ }
70
+ export interface ConnectionMetrics {
71
+ status: string | undefined;
72
+ clientId: string;
73
+ isConnected: boolean;
74
+ isConnecting: boolean;
75
+ connectionStats: ConnectionStats;
76
+ messageQueue: MessageQueueInfo;
77
+ rateLimiter: RateLimiterInfo;
78
+ config: TransportConfig;
79
+ }
80
+ export type HealthStatus = 'healthy' | 'degraded' | 'unhealthy';
81
+ export interface TransportEvents {
82
+ 'transport.error': {
83
+ type: string;
84
+ error: any;
85
+ rawMessage?: unknown;
86
+ timestamp: number;
87
+ };
88
+ 'transport.closed': {
89
+ code?: number;
90
+ reason?: string;
91
+ metrics: ConnectionMetrics;
92
+ timestamp: number;
93
+ };
94
+ }
95
+ export declare class Transport {
96
+ #private;
97
+ private readonly eventEmitter;
98
+ private readonly options;
99
+ private readonly PING_INTERVAL;
100
+ private clientId;
101
+ private closed;
102
+ private readonly rws;
103
+ private disposables;
104
+ private connectPromise;
105
+ private readonly url;
106
+ private connectionStats;
107
+ private messageQueue;
108
+ private readonly MAX_QUEUE_SIZE;
109
+ private readonly QUEUE_TIMEOUT;
110
+ private rateLimiter;
111
+ constructor(url: string, eventEmitter: EventDispatcher, options?: WsOptions);
112
+ /**
113
+ * Validate configuration options
114
+ */
115
+ private validateConfiguration;
116
+ /**
117
+ * Internal logging utility for debugging
118
+ */
119
+ private log;
120
+ id(): string;
121
+ private registerWatchers;
122
+ private handleRawMessage;
123
+ private handleMessage;
124
+ listen(event: string, listener: (data: any) => void, _context?: any): import("../types.js").Disposable;
125
+ removeListener(event: string, listener?: (data: any) => void): void;
126
+ listenOnce(event: string, listener: (data: any) => void, context?: any): void;
127
+ emit(event: string, ...data: any): void;
128
+ get isConnected(): boolean;
129
+ get isConnecting(): boolean;
130
+ get isDisconnected(): boolean;
131
+ get isClosed(): boolean;
132
+ get status(): string | undefined;
133
+ call(action: string, data?: object | string, options?: CallOption): Promise<any>;
134
+ private pack;
135
+ private sendWithRetry;
136
+ invoke(action: string, data?: object | string, options?: CallOption): Promise<any>;
137
+ disconnect(): void;
138
+ close(code?: number, reason?: string): void;
139
+ onDidConnect(listener: () => void): void;
140
+ onDidClose(listener: (e: CloseEvent | WsErrorEvent) => void): void;
141
+ /**
142
+ * Setup connection health monitoring
143
+ */
144
+ private setupConnectionHealthMonitoring;
145
+ /**
146
+ * Handle different WebSocket close codes appropriately
147
+ */
148
+ private handleConnectionClose;
149
+ /**
150
+ * Process queued messages when connection is restored
151
+ */
152
+ private processMessageQueue;
153
+ /**
154
+ * Clear old queued messages to prevent memory leaks
155
+ */
156
+ private clearOldQueuedMessages;
157
+ /**
158
+ * Rate limiting check
159
+ */
160
+ private isRateLimited;
161
+ /**
162
+ * Calculate exponential backoff delay
163
+ */
164
+ private getBackoffDelay;
165
+ /**
166
+ * Get comprehensive connection metrics
167
+ */
168
+ getConnectionMetrics(): {
169
+ status: string;
170
+ clientId: string;
171
+ isConnected: boolean;
172
+ isConnecting: boolean;
173
+ connectionStats: {
174
+ connectionDuration: number;
175
+ uptime: number;
176
+ messagesPerSecond: string;
177
+ errorRate: string;
178
+ timeSinceLastPing: number;
179
+ timeSinceLastPong: number;
180
+ connectTime: number;
181
+ reconnectCount: number;
182
+ lastPingTime: number;
183
+ lastPongTime: number;
184
+ avgResponseTime: number;
185
+ totalMessages: number;
186
+ totalErrors: number;
187
+ connectionStartTime: number;
188
+ };
189
+ messageQueue: {
190
+ length: number;
191
+ maxSize: number;
192
+ oldestMessageAge: number;
193
+ };
194
+ rateLimiter: {
195
+ currentRequests: number;
196
+ maxRequests: number;
197
+ windowMs: number;
198
+ isLimited: boolean;
199
+ };
200
+ config: {
201
+ pingInterval: number;
202
+ queueTimeout: number;
203
+ url: string;
204
+ };
205
+ };
206
+ /**
207
+ * Get connection health status
208
+ */
209
+ getHealthStatus(): 'healthy' | 'degraded' | 'unhealthy';
210
+ /**
211
+ * Reset connection statistics
212
+ */
213
+ resetStats(): void;
214
+ /**
215
+ * Run connection diagnostics
216
+ */
217
+ runDiagnostics(): Promise<{
218
+ status: HealthStatus;
219
+ metrics: ConnectionMetrics;
220
+ issues: string[];
221
+ recommendations: string[];
222
+ }>;
223
+ /**
224
+ * Periodic maintenance - clean up old data, run health checks
225
+ */
226
+ private startPeriodicMaintenance;
227
+ }
228
+ export {};
229
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/socket/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,IAAI,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAKrD,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE/D,oBAAY,WAAW;IACrB,SAAS,qBAAqB;IAC9B,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,QAAQ,4BAA4B;CACrC;AAGD,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,GAAE,MAAuC;CAI7D;AAED,qBAAa,qBAAsB,SAAQ,KAAK;aAG5B,aAAa,CAAC,EAAE,KAAK;gBADrC,OAAO,EAAE,MAAM,EACC,aAAa,CAAC,EAAE,KAAK;CAKxC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;aAG1B,IAAI,CAAC,EAAE,OAAO;gBAD9B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,OAAO;CAKjC;AAGD,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAGD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,WAAW,EAAE,eAAe,CAAC;IAC7B,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;AAGhE,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,GAAG,CAAC;QACX,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,kBAAkB,EAAE;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,iBAAiB,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,SAAS;;IAkDlB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAlD1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC,OAAO,CAAC,QAAQ,CAAc;IAE9B,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAwB;IAE5C,OAAO,CAAC,WAAW,CAA0C;IAE7D,OAAO,CAAC,cAAc,CAA8B;IAEpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAG1B,OAAO,CAAC,eAAe,CASrB;IAGF,OAAO,CAAC,YAAY,CAOZ;IAER,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAO;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAGvC,OAAO,CAAC,WAAW,CAIjB;gBAGA,GAAG,EAAE,MAAM,EACM,YAAY,EAAE,eAAe,EAC7B,OAAO,GAAE,SAAc;IAqC1C;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,GAAG;IAkHJ,EAAE,IAAI,MAAM;YAIL,gBAAgB;YAmBhB,gBAAgB;YAyFhB,aAAa;IAWpB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG;IAInE,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAInE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAI7E,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI;IAI9C,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED,IAAW,YAAY,IAAI,OAAO,CAEjC;IAED,IAAW,cAAc,IAAI,OAAO,CAEnC;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,IAAW,MAAM,IAAI,MAAM,GAAG,SAAS,CAOtC;IAEY,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,MAAW,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAsHrG,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,aAAa;IAqDd,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,MAAW,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAQ1F,UAAU,IAAI,IAAI;IASlB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAkD3C,YAAY,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IASxC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,GAAG,YAAY,KAAK,IAAI,GAAG,IAAI;IASzE;;OAEG;IACH,OAAO,CAAC,+BAA+B;IA6BvC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACI,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyC3B;;OAEG;IACI,eAAe,IAAI,SAAS,GAAG,UAAU,GAAG,WAAW;IAqB9D;;OAEG;IACI,UAAU,IAAI,IAAI;IAezB;;OAEG;IACU,cAAc,IAAI,OAAO,CAAC;QACrC,MAAM,EAAE,YAAY,CAAC;QACrB,OAAO,EAAE,iBAAiB,CAAC;QAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IAmDF;;OAEG;IACH,OAAO,CAAC,wBAAwB;CAmCjC"}