@phpsandbox/sdk 0.0.63 → 0.0.65

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.
package/dist/git.d.ts CHANGED
@@ -111,6 +111,7 @@ export type GitDiffInput = GitRemoteSource & {
111
111
  token?: string;
112
112
  ref?: string;
113
113
  base?: string;
114
+ patch?: boolean;
114
115
  };
115
116
  export interface GitDiffPreview {
116
117
  status: 'ready' | 'unrelated';
package/dist/index.d.ts CHANGED
@@ -213,6 +213,9 @@ export interface NotebookPreviewDataEnabled {
213
213
  expires_at: string;
214
214
  }
215
215
  export type NotebookPreviewData = NotebookPreviewDataDisabled | NotebookPreviewDataEnabled;
216
+ export type NotebookPreviewDataWithUrl = NotebookPreviewDataDisabled | (NotebookPreviewDataEnabled & {
217
+ url: string;
218
+ });
216
219
  export interface SetNotebookPreviewInput {
217
220
  password: string;
218
221
  }
@@ -220,16 +223,22 @@ export interface NotebookPreviewSessionData {
220
223
  preview_session_id: string;
221
224
  token: string;
222
225
  expires_at: string;
226
+ url: string;
227
+ }
228
+ export interface CreateNotebookPreviewSessionInput {
229
+ url: string;
223
230
  }
224
231
  export interface CreateNotebookPreviewHandoffInput {
225
232
  preview_session_id: string;
226
233
  expires_in_seconds?: number;
234
+ url: string;
227
235
  }
228
236
  export interface NotebookPreviewHandoffData {
229
237
  handoff_id: string;
230
238
  preview_session_id: string;
231
239
  token: string;
232
240
  expires_at: string;
241
+ url: string;
233
242
  }
234
243
  export interface NotebookMailRecipientData {
235
244
  name?: string;
@@ -344,9 +353,10 @@ export declare class NotebookPreviewApi {
344
353
  private readonly client;
345
354
  constructor(client: Client);
346
355
  get(id: string): Promise<NotebookPreviewData>;
356
+ get(id: string, url: string): Promise<NotebookPreviewDataWithUrl>;
347
357
  setPassword(id: string, input: SetNotebookPreviewInput): Promise<NotebookPreviewData>;
348
358
  disable(id: string): Promise<void>;
349
- createSession(id: string): Promise<NotebookPreviewSessionData>;
359
+ createSession(id: string, input: CreateNotebookPreviewSessionInput): Promise<NotebookPreviewSessionData>;
350
360
  createHandoff(id: string, input: CreateNotebookPreviewHandoffInput): Promise<NotebookPreviewHandoffData>;
351
361
  }
352
362
  export declare class NotebookMailApi {
@@ -441,9 +451,10 @@ export declare class NotebookPreview {
441
451
  private readonly notebookId;
442
452
  constructor(client: Client, notebookId: string);
443
453
  get(): Promise<NotebookPreviewData>;
454
+ get(url: string): Promise<NotebookPreviewDataWithUrl>;
444
455
  setPassword(input: SetNotebookPreviewInput): Promise<NotebookPreviewData>;
445
456
  disable(): Promise<void>;
446
- createSession(): Promise<NotebookPreviewSessionData>;
457
+ createSession(input: CreateNotebookPreviewSessionInput): Promise<NotebookPreviewSessionData>;
447
458
  createHandoff(input: CreateNotebookPreviewHandoffInput): Promise<NotebookPreviewHandoffData>;
448
459
  }
449
460
  export declare class NotebookMail {
package/dist/index.js CHANGED
@@ -275,8 +275,9 @@ export class NotebookPreviewApi {
275
275
  constructor(client) {
276
276
  this.client = client;
277
277
  }
278
- async get(id) {
279
- const response = await this.client.get(`/notebook/${id}/preview`);
278
+ async get(id, url) {
279
+ const query = url === undefined ? '' : `?${new URLSearchParams({ url }).toString()}`;
280
+ const response = await this.client.get(`/notebook/${id}/preview${query}`);
280
281
  return response.data;
281
282
  }
282
283
  async setPassword(id, input) {
@@ -286,8 +287,8 @@ export class NotebookPreviewApi {
286
287
  async disable(id) {
287
288
  await this.client.delete(`/notebook/${id}/preview`);
288
289
  }
289
- async createSession(id) {
290
- const response = await this.client.post(`/notebook/${id}/preview/session`);
290
+ async createSession(id, input) {
291
+ const response = await this.client.post(`/notebook/${id}/preview/session`, input);
291
292
  return response.data;
292
293
  }
293
294
  async createHandoff(id, input) {
@@ -577,8 +578,8 @@ export class NotebookPreview {
577
578
  this.client = client;
578
579
  this.notebookId = notebookId;
579
580
  }
580
- get() {
581
- return this.client.notebook.preview.get(this.notebookId);
581
+ get(url) {
582
+ return this.client.notebook.preview.get(this.notebookId, url);
582
583
  }
583
584
  setPassword(input) {
584
585
  return this.client.notebook.preview.setPassword(this.notebookId, input);
@@ -586,8 +587,8 @@ export class NotebookPreview {
586
587
  disable() {
587
588
  return this.client.notebook.preview.disable(this.notebookId);
588
589
  }
589
- createSession() {
590
- return this.client.notebook.preview.createSession(this.notebookId);
590
+ createSession(input) {
591
+ return this.client.notebook.preview.createSession(this.notebookId, input);
591
592
  }
592
593
  createHandoff(input) {
593
594
  return this.client.notebook.preview.createHandoff(this.notebookId, input);
@@ -1,4 +1,5 @@
1
1
  import { Client } from '../src/index.js';
2
+ import { deploymentTargetProviderLabel } from './deployment-provider-label.js';
2
3
 
3
4
  const token = process.env.PHPSANDBOX_TOKEN;
4
5
  if (!token) {
@@ -18,7 +19,7 @@ const notebook = await client.notebook.get(notebookId);
18
19
  try {
19
20
  const deployment = await notebook.deployment();
20
21
  if (deployment && deployment.data.targetProvider !== 'okraCloudflareContainer') {
21
- throw new Error(`Notebook is already published to ${deployment.data.targetProvider}. Delete that deployment before changing providers.`);
22
+ throw new Error(`Notebook is already published to ${deploymentTargetProviderLabel(deployment.data.targetProvider)}. Delete that deployment before changing providers.`);
22
23
  }
23
24
 
24
25
  const run = deployment
@@ -1,4 +1,5 @@
1
1
  import { Client, type LaravelCloudRegion } from '../src/index.js';
2
+ import { deploymentTargetProviderLabel } from './deployment-provider-label.js';
2
3
 
3
4
  const token = process.env.PHPSANDBOX_TOKEN;
4
5
  if (!token) {
@@ -26,7 +27,7 @@ const notebook = await client.notebook.get(notebookId);
26
27
  try {
27
28
  const deployment = await notebook.deployment();
28
29
  if (deployment && deployment.data.targetProvider !== 'okraLaravelCloud') {
29
- throw new Error(`Notebook is already published to ${deployment.data.targetProvider}. Delete that deployment before changing providers.`);
30
+ throw new Error(`Notebook is already published to ${deploymentTargetProviderLabel(deployment.data.targetProvider)}. Delete that deployment before changing providers.`);
30
31
  }
31
32
 
32
33
  const run = deployment ? await deployment.publish() : await publishFirstLaravelCloudDeployment();
@@ -4,6 +4,7 @@ import { tmpdir } from 'node:os';
4
4
  import { join } from 'node:path';
5
5
  import { fileURLToPath } from 'node:url';
6
6
  import { Client, type ServerInstance } from '../src/index.js';
7
+ import { deploymentTargetProviderLabel } from './deployment-provider-label.js';
7
8
 
8
9
  const token = process.env.PHPSANDBOX_TOKEN;
9
10
  if (!token) {
@@ -30,7 +31,7 @@ let agent: ChildProcessWithoutNullStreams | null = null;
30
31
  try {
31
32
  const deployment = await notebook.deployment();
32
33
  if (deployment && deployment.data.targetProvider !== 'okraSshAgent') {
33
- throw new Error(`Notebook is already published to ${deployment.data.targetProvider}. Delete that deployment before changing providers.`);
34
+ throw new Error(`Notebook is already published to ${deploymentTargetProviderLabel(deployment.data.targetProvider)}. Delete that deployment before changing providers.`);
34
35
  }
35
36
 
36
37
  const run = deployment
@@ -0,0 +1,11 @@
1
+ import type { DeploymentTargetProvider } from '../src/index.js';
2
+
3
+ const deploymentTargetProviderLabels: Record<DeploymentTargetProvider, string> = {
4
+ okraCloudflareContainer: 'Cloudflare Containers',
5
+ okraSshAgent: 'SSH Agent',
6
+ okraLaravelCloud: 'Laravel Cloud',
7
+ };
8
+
9
+ export function deploymentTargetProviderLabel(provider: DeploymentTargetProvider): string {
10
+ return deploymentTargetProviderLabels[provider] ?? provider;
11
+ }
@@ -2028,7 +2028,7 @@ async function requestPreviewWithSession(
2028
2028
  ): Promise<{ status: number; body: string }> {
2029
2029
  let session: NotebookPreviewSessionData;
2030
2030
  try {
2031
- session = await notebook.preview.createSession();
2031
+ session = await notebook.preview.createSession({ url });
2032
2032
  } catch (error) {
2033
2033
  if (formatError(error).includes('Preview access must be enabled')) {
2034
2034
  return requestPreview(options, url);
@@ -2037,7 +2037,7 @@ async function requestPreviewWithSession(
2037
2037
  throw error;
2038
2038
  }
2039
2039
 
2040
- const bootstrapUrl = previewUrlWithSessionToken(url, session.token);
2040
+ const bootstrapUrl = session.url;
2041
2041
  const bootstrap = await requestPreview(options, bootstrapUrl, { maxRedirects: 0 });
2042
2042
  const cookie = firstSetCookie(bootstrap.headers);
2043
2043
 
@@ -2064,12 +2064,6 @@ async function requestPreviewWithSession(
2064
2064
  };
2065
2065
  }
2066
2066
 
2067
- function previewUrlWithSessionToken(url: string, token: string): string {
2068
- const next = new URL(url);
2069
- next.searchParams.set('__helfer_preview_session', token);
2070
- return next.toString();
2071
- }
2072
-
2073
2067
  function firstSetCookie(headers: Record<string, unknown>): string | undefined {
2074
2068
  const raw = headers['set-cookie'];
2075
2069
  const value = Array.isArray(raw) ? raw[0] : raw;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phpsandbox/sdk",
3
- "version": "0.0.63",
3
+ "version": "0.0.65",
4
4
  "description": "A comprehensive TypeScript SDK for interacting with cloud-based PHP development environments",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",