@phpsandbox/sdk 0.1.20 → 0.2.1

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.
@@ -0,0 +1,425 @@
1
+ import type { LaravelCloudSetupState, LaravelCloudProviderData, LaravelCloudProviderInput } from './providers/laravel-cloud.js';
2
+ export type * from './providers/laravel-cloud.js';
3
+ import type { PublicationBuildStatus, PublicationJurisdiction, PublicationProtectionMode, PublicationRegion, PublicationReleaseStatus, PublicationSize, PublicationStatus } from '../schemas/publications.js';
4
+ export interface PublicationDestroyOptions {
5
+ deleteResources?: boolean;
6
+ }
7
+ export interface PublicationPlacement {
8
+ regions?: PublicationRegion[];
9
+ jurisdiction?: PublicationJurisdiction;
10
+ }
11
+ export interface PublicationProtectionData {
12
+ mode: PublicationProtectionMode;
13
+ enabled: boolean;
14
+ supported?: boolean;
15
+ token?: string;
16
+ expiresAt?: string;
17
+ url?: string;
18
+ }
19
+ export type PublicationProtectionInput = {
20
+ mode: 'none';
21
+ password?: never;
22
+ } | {
23
+ mode: 'password';
24
+ password: string;
25
+ };
26
+ export interface CloudflareContainersProviderOptions {
27
+ resources?: Partial<Record<PublicationResourceKind, PublicationResourceSelection>>;
28
+ accountId: string;
29
+ size?: PublicationSize;
30
+ sleepAfter?: string;
31
+ placement?: PublicationPlacement;
32
+ instances?: number;
33
+ }
34
+ export interface SshServerProviderOptions {
35
+ serverId: string;
36
+ resources?: Partial<Record<PublicationResourceKind, PublicationResourceSelection>>;
37
+ }
38
+ export type PublicationResourceKind = 'database' | 'cache' | 'storage' | 'worker' | 'scheduler';
39
+ export interface PublicationRequirement {
40
+ kind: PublicationResourceKind;
41
+ required?: boolean;
42
+ recommended?: boolean;
43
+ engine?: string;
44
+ reason?: string;
45
+ }
46
+ export interface PublicationReadiness {
47
+ repository: string | null;
48
+ branch: string | null;
49
+ revision?: string | null;
50
+ sourceProvider: string | null;
51
+ requirements: PublicationRequirement[];
52
+ productionVariables: string[];
53
+ missingVariables: string[];
54
+ warnings: string[];
55
+ }
56
+ export type PublicationResourceMode = 'none' | 'create' | 'reuse' | 'external' | 'enable';
57
+ export interface PublicationResourceSelection {
58
+ mode: PublicationResourceMode;
59
+ id?: string;
60
+ type?: string;
61
+ version?: string;
62
+ size?: string;
63
+ config?: Record<string, string | number | boolean | null>;
64
+ }
65
+ export type PublicationPlanProviderInput<TName extends PublicationProviderName = PublicationProviderName> = {
66
+ [Name in TName]: {
67
+ name: Name;
68
+ } & Partial<PublicationProviderInputs[Name]>;
69
+ }[TName];
70
+ export interface PublicationPlanInput<TName extends PublicationProviderName = PublicationProviderName> {
71
+ slug?: string;
72
+ provider: PublicationPlanProviderInput<TName>;
73
+ requirements?: PublicationRequirement[];
74
+ resources?: Partial<Record<PublicationResourceKind, PublicationResourceSelection>>;
75
+ }
76
+ export type PlannedPublishInput = PublishInput & Pick<PublicationPlanInput, 'requirements' | 'resources'>;
77
+ export interface PublicationAccessCapabilities {
78
+ routing: 'platform' | 'provider';
79
+ protection: boolean;
80
+ feedback: boolean;
81
+ }
82
+ export interface PublicationCapabilities {
83
+ source: 'git' | 'workspace';
84
+ sourceProviders?: string[];
85
+ buildModes?: Array<PublicationComponentBuild['mode']>;
86
+ componentKinds?: PublicationComponentKind[];
87
+ resourceCleanup?: boolean;
88
+ resources: Record<PublicationResourceKind, PublicationResourceMode[]>;
89
+ access: {
90
+ managed: PublicationAccessCapabilities;
91
+ custom: PublicationAccessCapabilities;
92
+ };
93
+ }
94
+ export interface PublicationCatalogConfigField {
95
+ name: string;
96
+ type: string;
97
+ required: boolean;
98
+ label?: string;
99
+ nullable?: boolean;
100
+ description?: string;
101
+ min?: number;
102
+ max?: number;
103
+ enum?: Array<string | number>;
104
+ example?: string | number;
105
+ }
106
+ export interface PublicationCatalogResourceType {
107
+ kind: PublicationResourceKind;
108
+ type: string;
109
+ label: string;
110
+ versions: string[];
111
+ regions: string[];
112
+ sizes: {
113
+ id: string;
114
+ label: string;
115
+ }[];
116
+ configFields: PublicationCatalogConfigField[];
117
+ }
118
+ export interface PublicationResourceCatalog {
119
+ provider: PublicationProviderName;
120
+ scope: string | null;
121
+ capabilities: PublicationCapabilities;
122
+ regions: {
123
+ id: string;
124
+ label: string;
125
+ flag?: string;
126
+ }[];
127
+ resourceTypes: PublicationCatalogResourceType[];
128
+ resources: {
129
+ id: string;
130
+ name: string;
131
+ kind: PublicationResourceKind;
132
+ type: string | null;
133
+ version: string | null;
134
+ region: string | null;
135
+ status: string;
136
+ }[];
137
+ pricingUrl: string | null;
138
+ }
139
+ export interface PublicationPlan<TName extends PublicationProviderName = PublicationProviderName> {
140
+ provider: TName;
141
+ capabilities: PublicationCapabilities;
142
+ readiness: PublicationReadiness;
143
+ source: {
144
+ type: 'git' | 'workspace';
145
+ repository: string | null;
146
+ branch: string | null;
147
+ commitAndPush: boolean;
148
+ providerAccess: 'verified' | 'confirmed' | 'confirmation_required' | 'not_required';
149
+ };
150
+ resources: Array<{
151
+ kind: PublicationResourceKind;
152
+ mode: PublicationResourceMode | 'unconfigured';
153
+ engine: string | null;
154
+ required: boolean;
155
+ recommended: boolean;
156
+ supported: boolean;
157
+ selection: PublicationResourceSelection | boolean | null;
158
+ }>;
159
+ blockers: Array<{
160
+ code: string;
161
+ message: string;
162
+ }>;
163
+ ready: boolean;
164
+ input: PublicationPlanInput<TName>;
165
+ cost: {
166
+ status: 'unknown';
167
+ message: string;
168
+ };
169
+ }
170
+ export type PublicationComponentKind = 'frontend' | 'http-service' | 'static-site' | 'worker' | 'scheduler';
171
+ export type PublicationDockerfile = {
172
+ source: 'generated';
173
+ content: string;
174
+ digest?: string;
175
+ } | {
176
+ source: 'project';
177
+ path: string;
178
+ digest?: string;
179
+ };
180
+ export type PublicationComponentBuild = {
181
+ mode: 'provider-native';
182
+ workingDirectory?: string;
183
+ context?: string;
184
+ installCommand?: string;
185
+ buildCommand?: string;
186
+ deployCommand?: string;
187
+ outputDirectory?: string;
188
+ } | {
189
+ mode: 'dockerfile';
190
+ workingDirectory?: string;
191
+ context?: string;
192
+ dockerfile: PublicationDockerfile;
193
+ target?: string;
194
+ arguments?: Record<string, string>;
195
+ secrets?: string[];
196
+ } | {
197
+ mode: 'image';
198
+ reference: string;
199
+ };
200
+ export interface PublicationComponentRuntime {
201
+ kind?: 'http' | 'static' | 'process';
202
+ command?: string[];
203
+ port?: number;
204
+ healthCheck?: {
205
+ path: string;
206
+ };
207
+ }
208
+ export type PublicationComponentPlacement<TName extends PublicationProviderName = PublicationProviderName> = {
209
+ [Name in TName]: {
210
+ provider: Name;
211
+ } & Partial<PublicationProviderInputs[Name]>;
212
+ }[TName];
213
+ export interface PublicationApplicationComponentInput<TName extends PublicationProviderName = PublicationProviderName> {
214
+ id: string;
215
+ kind: PublicationComponentKind;
216
+ root: string;
217
+ build: PublicationComponentBuild;
218
+ sourceDependencies?: string[];
219
+ runtime?: PublicationComponentRuntime;
220
+ resources?: string[];
221
+ placement: PublicationComponentPlacement<TName>;
222
+ }
223
+ export interface PublicationApplicationResourceInput {
224
+ id: string;
225
+ kind: PublicationResourceKind;
226
+ mode: PublicationResourceMode;
227
+ engine?: string;
228
+ provider?: PublicationProviderName;
229
+ selection?: Omit<PublicationResourceSelection, 'mode'>;
230
+ }
231
+ export interface PublicationApplicationRouteInput {
232
+ hostname: string;
233
+ component: string;
234
+ }
235
+ export interface PublicationPlanAssumption {
236
+ id: string;
237
+ statement: string;
238
+ basis?: string;
239
+ confidence?: 'low' | 'medium' | 'high';
240
+ requiresConfirmation?: boolean;
241
+ }
242
+ export interface PublicationApplicationPlanInput {
243
+ schemaVersion: 1;
244
+ slug?: string;
245
+ source?: {
246
+ repository?: string;
247
+ revision?: string;
248
+ root?: string;
249
+ };
250
+ components: PublicationApplicationComponentInput[];
251
+ resources?: PublicationApplicationResourceInput[];
252
+ routes?: PublicationApplicationRouteInput[];
253
+ assumptions?: PublicationPlanAssumption[];
254
+ }
255
+ export interface PublicationApplicationComponentPlan extends PublicationApplicationComponentInput {
256
+ sourceDependencies: string[];
257
+ resources: string[];
258
+ providerPlan: PublicationPlan;
259
+ }
260
+ export interface PublicationApplicationPlan {
261
+ schemaVersion: 1;
262
+ source: {
263
+ repository: string | null;
264
+ revision: string | null;
265
+ root: string;
266
+ };
267
+ components: PublicationApplicationComponentPlan[];
268
+ resources: PublicationApplicationResourceInput[];
269
+ routes: PublicationApplicationRouteInput[];
270
+ assumptions: PublicationPlanAssumption[];
271
+ blockers: Array<{
272
+ code: string;
273
+ message: string;
274
+ component?: string;
275
+ resource?: string;
276
+ }>;
277
+ ready: boolean;
278
+ input: PublicationApplicationPlanInput;
279
+ }
280
+ export interface PublicationApplicationComponentData {
281
+ componentId: string;
282
+ publication: PublicationData;
283
+ }
284
+ export interface PublicationApplicationData {
285
+ id: string;
286
+ status: 'publishing' | 'healthy' | 'failed' | 'deleted';
287
+ components: PublicationApplicationComponentData[];
288
+ }
289
+ export interface PublicationDnsInstructions {
290
+ stage: 'ownership' | 'traffic' | 'connected';
291
+ records: PublicationDnsRecord[];
292
+ trafficRecords: PublicationDnsRecord[];
293
+ }
294
+ export interface PublicationProviderInputs {
295
+ 'cloudflare-containers': CloudflareContainersProviderOptions;
296
+ 'ssh-server': SshServerProviderOptions;
297
+ 'laravel-cloud': LaravelCloudProviderInput;
298
+ }
299
+ export interface PublicationProviderData {
300
+ 'cloudflare-containers': CloudflareContainersProviderOptions;
301
+ 'ssh-server': SshServerProviderOptions;
302
+ 'laravel-cloud': LaravelCloudProviderData;
303
+ }
304
+ export type PublicationProviderName = Extract<keyof PublicationProviderInputs, string>;
305
+ export type PublicationProviderInput<TName extends PublicationProviderName = PublicationProviderName> = {
306
+ [Name in TName]: {
307
+ name: Name;
308
+ } & PublicationProviderInputs[Name];
309
+ }[TName];
310
+ export type PublicationProvider<TName extends PublicationProviderName = PublicationProviderName> = {
311
+ [Name in TName]: {
312
+ name: Name;
313
+ } & PublicationProviderData[Name];
314
+ }[TName];
315
+ export interface PublishInput<TName extends PublicationProviderName = PublicationProviderName> {
316
+ slug: string;
317
+ provider: PublicationProviderInput<TName>;
318
+ protection?: PublicationProtectionInput;
319
+ metadata?: Record<string, unknown>;
320
+ }
321
+ export interface PublicationBuildData<TProvider extends PublicationProviderName = PublicationProviderName> {
322
+ id: string;
323
+ status: PublicationBuildStatus;
324
+ strategy: string;
325
+ provider: PublicationProvider<TProvider>;
326
+ errorMessage: string | null;
327
+ startedAt: string | null;
328
+ finishedAt: string | null;
329
+ }
330
+ export interface PublicationReleaseData {
331
+ id: string;
332
+ status: PublicationReleaseStatus;
333
+ manifest: Record<string, unknown>;
334
+ }
335
+ export interface PublicationData<TProvider extends PublicationProviderName = PublicationProviderName> {
336
+ capabilities?: PublicationCapabilities;
337
+ id: string;
338
+ slug: string;
339
+ url: string;
340
+ status: PublicationStatus;
341
+ strategy: string;
342
+ provider: PublicationProvider<TProvider>;
343
+ protection: PublicationProtectionData;
344
+ eventStreamUrl: string | null;
345
+ originUrl: string | null;
346
+ domains?: PublicationDomainData[];
347
+ setupState?: LaravelCloudSetupState | null;
348
+ currentRelease?: PublicationReleaseData | null;
349
+ latestBuild?: PublicationBuildData<TProvider> | null;
350
+ deployedAt: string | null;
351
+ createdAt: string | null;
352
+ updatedAt: string | null;
353
+ }
354
+ export interface UpdatePublicationProtectionInput {
355
+ mode: PublicationProtectionMode;
356
+ password?: string;
357
+ }
358
+ export interface PublicationProtectionSessionData {
359
+ previewSessionId: string;
360
+ token: string;
361
+ expiresAt: string;
362
+ url: string;
363
+ }
364
+ export interface PublicationDnsRecord {
365
+ type: string;
366
+ name: string;
367
+ value: string;
368
+ purpose?: 'ownership' | 'certificate' | 'traffic';
369
+ }
370
+ export interface PublicationDomainData {
371
+ id: string;
372
+ publicationId: string | null;
373
+ hostname: string;
374
+ status: string;
375
+ provider: string;
376
+ providerHostnameId: string | null;
377
+ dns: {
378
+ type: string | null;
379
+ name: string | null;
380
+ value: string | null;
381
+ };
382
+ ssl: {
383
+ status: string | null;
384
+ };
385
+ dnsInstructions: PublicationDnsInstructions;
386
+ validationErrors: unknown[];
387
+ validationRecords: unknown[];
388
+ metadata: Record<string, unknown>;
389
+ verifiedAt: string | null;
390
+ createdAt: string | null;
391
+ updatedAt: string | null;
392
+ }
393
+ export interface PublicationManagedResource {
394
+ id: string;
395
+ parentId: string | null;
396
+ provider: PublicationProviderName;
397
+ scope: string;
398
+ providerId: string;
399
+ kind: 'database' | 'cache' | 'storage';
400
+ name: string;
401
+ type: string | null;
402
+ version: string | null;
403
+ managed: boolean;
404
+ status: 'pending' | 'provisioning' | 'available' | 'unknown' | 'retained' | 'deleting' | 'delete_failed' | 'deleted';
405
+ observation?: {
406
+ status: 'present' | 'missing' | 'unreachable' | 'unauthorized' | 'unsupported';
407
+ message: string;
408
+ checkedAt: string;
409
+ } | null;
410
+ attachments: PublicationResourceAttachment[];
411
+ attachmentCount: number;
412
+ createdAt: string;
413
+ }
414
+ export interface PublicationResourceListOptions {
415
+ provider?: PublicationProviderName;
416
+ kind?: PublicationManagedResource['kind'];
417
+ type?: string;
418
+ scope?: string;
419
+ page?: number;
420
+ }
421
+ export interface PublicationResourceAttachment {
422
+ notebookId: string | null;
423
+ publicationId: string | null;
424
+ detachedAt: string | null;
425
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -7,7 +7,7 @@ export declare class RestRuntimeInvoker {
7
7
  private ticket;
8
8
  private refreshPromise;
9
9
  private readonly notebookId;
10
- constructor(data: NotebookData, fetch: typeof globalThis.fetch, refresh?: () => Promise<string>);
10
+ constructor(data: NotebookData, fetch: typeof globalThis.fetch, refresh?: (() => Promise<string>) | undefined);
11
11
  private configure;
12
12
  ready(): Promise<NotebookInitSuccessResult>;
13
13
  supports(action: string): action is RestRuntimeAction;