@phpsandbox/sdk 0.1.2 → 0.1.4

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.
@@ -103,6 +103,32 @@ var PHPSandbox = (() => {
103
103
  watchRuntimeTelemetry: () => watchRuntimeTelemetry
104
104
  });
105
105
 
106
+ // src/errors/index.ts
107
+ var PromiseTimeoutError = class extends Error {
108
+ constructor(message, time3) {
109
+ super(message);
110
+ this.time = time3;
111
+ }
112
+ };
113
+ var SendTimeoutError = class _SendTimeoutError extends PromiseTimeoutError {
114
+ static fromPromiseTimeoutError(error51) {
115
+ return new _SendTimeoutError(error51.message, error51.time);
116
+ }
117
+ };
118
+ var NotebookUnavailableError = class extends Error {
119
+ constructor(message = "Notebook is no longer available", raw = {}) {
120
+ super(message);
121
+ this.raw = raw;
122
+ this.name = "NotebookUnavailableError";
123
+ }
124
+ };
125
+ var UnsupportedRuntimeTransportError = class extends Error {
126
+ constructor(message) {
127
+ super(message);
128
+ this.name = "UnsupportedRuntimeTransportError";
129
+ }
130
+ };
131
+
106
132
  // src/types.ts
107
133
  var ErrorEvent = class extends Error {
108
134
  constructor(code, message, raw = {}) {
@@ -317,6 +343,77 @@ var PHPSandbox = (() => {
317
343
  }
318
344
  });
319
345
  }
346
+ follow(path, options = {}) {
347
+ if (this.okra.runtimeTransport === "rest") {
348
+ return new ReadableStream({
349
+ start(controller) {
350
+ controller.error(new UnsupportedRuntimeTransportError("Following files requires the realtime transport."));
351
+ }
352
+ });
353
+ }
354
+ const id = nanoid();
355
+ let disposable = null;
356
+ let abort = null;
357
+ let started = false;
358
+ let closed = false;
359
+ const stop = async () => {
360
+ if (closed) {
361
+ return;
362
+ }
363
+ closed = true;
364
+ disposable?.dispose();
365
+ disposable = null;
366
+ if (abort && options.signal) {
367
+ options.signal.removeEventListener("abort", abort);
368
+ }
369
+ abort = null;
370
+ if (started) {
371
+ await this.okra.invoke("fs.cancelFollow", { id }).catch(() => false);
372
+ }
373
+ };
374
+ return new ReadableStream({
375
+ start: (controller) => {
376
+ disposable = this.okra.listen(`fs.follow.${id}`, (event) => {
377
+ if (!closed) {
378
+ controller.enqueue(event.data);
379
+ }
380
+ });
381
+ if (options.signal) {
382
+ abort = () => {
383
+ void stop().finally(() => controller.error(options.signal?.reason ?? new Error("Aborted")));
384
+ };
385
+ if (options.signal.aborted) {
386
+ abort();
387
+ return;
388
+ }
389
+ options.signal.addEventListener("abort", abort, { once: true });
390
+ }
391
+ started = true;
392
+ void this.okra.invoke("fs.follow", { id, path, lines: options.lines ?? 10 }).then(() => {
393
+ if (!closed) {
394
+ closed = true;
395
+ disposable?.dispose();
396
+ if (abort && options.signal) {
397
+ options.signal.removeEventListener("abort", abort);
398
+ }
399
+ abort = null;
400
+ controller.close();
401
+ }
402
+ }).catch((error51) => {
403
+ if (!closed) {
404
+ closed = true;
405
+ disposable?.dispose();
406
+ if (abort && options.signal) {
407
+ options.signal.removeEventListener("abort", abort);
408
+ }
409
+ abort = null;
410
+ controller.error(error51);
411
+ }
412
+ });
413
+ },
414
+ cancel: stop
415
+ });
416
+ }
320
417
  find(query, options = {
321
418
  useIgnoreFiles: false,
322
419
  followSymlinks: false,
@@ -499,32 +596,6 @@ var PHPSandbox = (() => {
499
596
  return output;
500
597
  }
501
598
 
502
- // src/errors/index.ts
503
- var PromiseTimeoutError = class extends Error {
504
- constructor(message, time3) {
505
- super(message);
506
- this.time = time3;
507
- }
508
- };
509
- var SendTimeoutError = class _SendTimeoutError extends PromiseTimeoutError {
510
- static fromPromiseTimeoutError(error51) {
511
- return new _SendTimeoutError(error51.message, error51.time);
512
- }
513
- };
514
- var NotebookUnavailableError = class extends Error {
515
- constructor(message = "Notebook is no longer available", raw = {}) {
516
- super(message);
517
- this.raw = raw;
518
- this.name = "NotebookUnavailableError";
519
- }
520
- };
521
- var UnsupportedRuntimeTransportError = class extends Error {
522
- constructor(message) {
523
- super(message);
524
- this.name = "UnsupportedRuntimeTransportError";
525
- }
526
- };
527
-
528
599
  // src/utils/promise.ts
529
600
  var timeout = (prom, time3) => {
530
601
  let timer;