@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/README.md +1 -0
- package/dist/browser/phpsandbox-sdk.esm.js +9 -8
- package/dist/browser/phpsandbox-sdk.esm.min.js +7 -7
- package/dist/browser/phpsandbox-sdk.iife.js +9 -8
- package/dist/browser/phpsandbox-sdk.iife.min.js +7 -7
- package/dist/git.d.ts +1 -0
- package/dist/index.d.ts +13 -2
- package/dist/index.js +9 -8
- package/examples/deploy-cloudflare-container.ts +2 -1
- package/examples/deploy-laravel-cloud.ts +2 -1
- package/examples/deploy-ssh-agent.ts +2 -1
- package/examples/deployment-provider-label.ts +11 -0
- package/examples/laravel-load-test.ts +2 -8
- package/package.json +1 -1
package/dist/git.d.ts
CHANGED
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
|
|
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 =
|
|
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