@phpsandbox/sdk 0.0.51 → 0.0.53

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 +7 -6
  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 +313 -481
  12. package/dist/browser/phpsandbox-sdk.esm.min.js +2 -3
  13. package/dist/browser/phpsandbox-sdk.iife.js +308 -481
  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 +20 -9
  28. package/dist/git.js +31 -3
  29. package/dist/index.d.ts +3 -2
  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 +399 -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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) PHPSandbox
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -8,7 +8,7 @@ TypeScript SDK for working with PHPSandbox notebooks: create environments, edit
8
8
  npm install @phpsandbox/sdk
9
9
  ```
10
10
 
11
- Node.js `>=18` is required.
11
+ Node.js `>=18` is required. This package is ESM-only; use `import` rather than `require()`.
12
12
 
13
13
  ## Quick Start
14
14
 
@@ -220,16 +220,15 @@ await notebook.git.revert({ path: 'README.md' });
220
220
  await notebook.git.revert({ path: 'staged-file.php', staged: true });
221
221
 
222
222
  const fork = await notebook.fork();
223
- const forkCredentials = await fork.git.credentials();
224
223
  const preview = await notebook.git.diff({
225
- url: forkCredentials.url,
226
- token: forkCredentials.token,
224
+ notebookId: fork.data.id,
225
+ token: process.env.PHPSANDBOX_TOKEN,
227
226
  });
228
227
 
229
228
  if (preview.status === 'ready') {
230
229
  const result = await notebook.git.merge({
231
- url: forkCredentials.url,
232
- token: forkCredentials.token,
230
+ notebookId: fork.data.id,
231
+ token: process.env.PHPSANDBOX_TOKEN,
233
232
  expectedBaseRef: preview.baseRef,
234
233
  author: 'PHPSandbox <hi@phpsandbox.io>',
235
234
  message: 'Merge fork into base',
@@ -241,6 +240,8 @@ if (preview.status === 'ready') {
241
240
  }
242
241
  ```
243
242
 
243
+ Use `notebookId` when diffing or merging from another PHPSandbox notebook. Use `url` for external Git remotes. `notebookId`, `url`, and `target` are mutually exclusive.
244
+
244
245
  Fork diff requires the base and fork to share Git history. If they do not, `diff()` returns `status: 'unrelated'`.
245
246
 
246
247
  ### Mail
package/dist/auth.d.ts CHANGED
@@ -11,4 +11,3 @@ export default class Auth {
11
11
  logout(): Promise<void>;
12
12
  login(newConnectionData: string): Promise<boolean>;
13
13
  }
14
- //# sourceMappingURL=auth.d.ts.map
package/dist/auth.js CHANGED
@@ -9,4 +9,3 @@ export default class Auth {
9
9
  return this.okra.invoke('auth.login', { newConnectionData });
10
10
  }
11
11
  }
12
- //# sourceMappingURL=auth.js.map
@@ -70,7 +70,7 @@ export declare class Beacon implements BeaconActions {
70
70
  /**
71
71
  * Event emitter methods (both private and public for navigator access)
72
72
  */
73
- emit(event: string, payload: any): void;
73
+ emit(event: string, payload: unknown): void;
74
74
  /**
75
75
  * Start the beacon initialization process
76
76
  */
@@ -90,7 +90,7 @@ export declare class Beacon implements BeaconActions {
90
90
  /**
91
91
  * Listen for beacon events (one-time)
92
92
  */
93
- once<K extends keyof BeaconEvents>(event: K, handler: (payload: BeaconEvents[K]) => void): void;
93
+ once<K extends keyof BeaconEvents>(event: K, handler: (payload: BeaconEvents[K]) => void): Disposable;
94
94
  /**
95
95
  * Ping the beacon to check if it's responsive
96
96
  */
@@ -120,7 +120,7 @@ export declare class Beacon implements BeaconActions {
120
120
  */
121
121
  executeCode(code: string): Promise<{
122
122
  success: boolean;
123
- result?: any;
123
+ result?: unknown;
124
124
  error?: string;
125
125
  }>;
126
126
  /**
@@ -128,7 +128,7 @@ export declare class Beacon implements BeaconActions {
128
128
  */
129
129
  inspectElement(selector: string): Promise<{
130
130
  success: boolean;
131
- element?: any;
131
+ element?: unknown;
132
132
  error?: string;
133
133
  }>;
134
134
  /**
@@ -170,4 +170,3 @@ export declare function createBeacon(iframe: HTMLIFrameElement, options?: Beacon
170
170
  * Check if the current environment supports the Beacon SDK
171
171
  */
172
172
  export declare function isBeaconSupported(): boolean;
173
- //# sourceMappingURL=index.d.ts.map
@@ -221,11 +221,11 @@ export class Beacon {
221
221
  });
222
222
  });
223
223
  }, {
224
- retries: this.options.retry?.retries || 3,
225
- minTimeout: this.options.retry?.minTimeout || 1000,
226
- maxTimeout: this.options.retry?.maxTimeout || 5000,
227
- factor: this.options.retry?.factor || 2,
228
- randomize: this.options.retry?.randomize || true,
224
+ retries: this.options.retry?.retries ?? 3,
225
+ minTimeout: this.options.retry?.minTimeout ?? 1000,
226
+ maxTimeout: this.options.retry?.maxTimeout ?? 5000,
227
+ factor: this.options.retry?.factor ?? 2,
228
+ randomize: this.options.retry?.randomize ?? true,
229
229
  onRetry: (error, attempt) => {
230
230
  if (this.options.debug) {
231
231
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -297,11 +297,11 @@ export class Beacon {
297
297
  }
298
298
  });
299
299
  }, {
300
- retries: this.options.retry?.retries || 3,
301
- minTimeout: this.options.retry?.minTimeout || 1000,
302
- maxTimeout: this.options.retry?.maxTimeout || 5000,
303
- factor: this.options.retry?.factor || 2,
304
- randomize: this.options.retry?.randomize || true,
300
+ retries: this.options.retry?.retries ?? 3,
301
+ minTimeout: this.options.retry?.minTimeout ?? 1000,
302
+ maxTimeout: this.options.retry?.maxTimeout ?? 5000,
303
+ factor: this.options.retry?.factor ?? 2,
304
+ randomize: this.options.retry?.randomize ?? true,
305
305
  onRetry: (error, attempt) => {
306
306
  if (this.options.debug) {
307
307
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -361,7 +361,7 @@ export class Beacon {
361
361
  * Listen for beacon events (one-time)
362
362
  */
363
363
  once(event, handler) {
364
- this.eventEmitter.once(event, handler);
364
+ return this.eventEmitter.once(event, handler);
365
365
  }
366
366
  /**
367
367
  * Ping the beacon to check if it's responsive
@@ -542,4 +542,3 @@ export function isBeaconSupported() {
542
542
  return false;
543
543
  }
544
544
  }
545
- //# sourceMappingURL=index.js.map
@@ -132,10 +132,9 @@ export declare class Navigator implements NavigatorActions {
132
132
  /**
133
133
  * Get the current history state (always null since we don't store state)
134
134
  */
135
- getHistoryState(): Promise<any>;
135
+ getHistoryState(): Promise<unknown>;
136
136
  /**
137
137
  * Get comprehensive history information
138
138
  */
139
139
  getHistoryInfo(): Promise<HistoryInfoResponse>;
140
140
  }
141
- //# sourceMappingURL=navigator.d.ts.map
@@ -243,4 +243,3 @@ export class Navigator {
243
243
  this.onceEvent(event, handler);
244
244
  }
245
245
  }
246
- //# sourceMappingURL=navigator.js.map
@@ -1,4 +1,4 @@
1
- export interface BeaconMessage<T = any> {
1
+ export interface BeaconMessage<T = unknown> {
2
2
  type: string;
3
3
  payload: T;
4
4
  timestamp: number;
@@ -19,7 +19,7 @@ export interface UrlChangeEvent {
19
19
  }
20
20
  export interface ConsoleEvent {
21
21
  level: 'log' | 'warn' | 'error' | 'info' | 'debug';
22
- args: any[];
22
+ args: unknown[];
23
23
  timestamp: number;
24
24
  stack?: string;
25
25
  }
@@ -41,8 +41,8 @@ export interface DebugInfo {
41
41
  };
42
42
  timestamp: number;
43
43
  performance?: {
44
- navigation: any;
45
- timing: any;
44
+ navigation: unknown;
45
+ timing: unknown;
46
46
  };
47
47
  console?: ConsoleEvent[];
48
48
  errors?: BeaconErrorEvent[];
@@ -162,7 +162,7 @@ export interface DOMInfo {
162
162
  }>;
163
163
  }
164
164
  export interface PerformanceInfo {
165
- navigationTiming: any;
165
+ navigationTiming: unknown;
166
166
  loadEventEnd: number;
167
167
  domContentLoaded: number;
168
168
  firstPaint?: number;
@@ -200,12 +200,12 @@ export interface BeaconActions {
200
200
  clearErrors: () => Promise<void>;
201
201
  executeCode: (code: string) => Promise<{
202
202
  success: boolean;
203
- result?: any;
203
+ result?: unknown;
204
204
  error?: string;
205
205
  }>;
206
206
  inspectElement: (selector: string) => Promise<{
207
207
  success: boolean;
208
- element?: any;
208
+ element?: unknown;
209
209
  error?: string;
210
210
  }>;
211
211
  captureScreenshot: (request?: ScreenshotRequest) => Promise<ScreenshotResult>;
@@ -228,12 +228,12 @@ export interface BeaconEvents {
228
228
  errorEvents: BeaconErrorEvent[];
229
229
  codeExecutionResult: {
230
230
  success: boolean;
231
- result?: any;
231
+ result?: unknown;
232
232
  error?: string;
233
233
  };
234
234
  elementInspectionResult: {
235
235
  success: boolean;
236
- element?: any;
236
+ element?: unknown;
237
237
  error?: string;
238
238
  };
239
239
  screenshotResult: ScreenshotResult;
@@ -252,13 +252,13 @@ export interface BeaconEvents {
252
252
  success: boolean;
253
253
  error?: string;
254
254
  action?: string;
255
- state?: any;
255
+ state?: unknown;
256
256
  title?: string;
257
257
  url?: string;
258
258
  };
259
259
  historyChange: {
260
260
  url: string;
261
- state: any;
261
+ state: unknown;
262
262
  direction: 'back' | 'forward' | 'push' | 'replace' | 'reload';
263
263
  timestamp: number;
264
264
  };
@@ -271,7 +271,7 @@ export interface BeaconEvents {
271
271
  };
272
272
  historyInfo: {
273
273
  length: number;
274
- state: any;
274
+ state: unknown;
275
275
  url: string;
276
276
  canGoBack: boolean;
277
277
  canGoForward: boolean;
@@ -289,4 +289,3 @@ export interface BeaconOptions {
289
289
  randomize?: boolean;
290
290
  };
291
291
  }
292
- //# sourceMappingURL=types.d.ts.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=types.js.map