@cloudflare/containers 0.0.28 → 0.0.29

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 CHANGED
@@ -19,11 +19,12 @@ npm install @cloudflare/containers
19
19
  ## Basic Example
20
20
 
21
21
  ```typescript
22
- import { Container, getRandom } from '@cloudflare/containers';
22
+ import { Container, getContainer, getRandom } from '@cloudflare/containers';
23
23
 
24
24
  export class MyContainer extends Container {
25
25
  // Configure default port for the container
26
26
  defaultPort = 8080;
27
+ // After 1 minute of no new activity, shutdown the container
27
28
  sleepAfter = '1m';
28
29
  }
29
30
 
@@ -36,16 +37,13 @@ export default {
36
37
 
37
38
  if (pathname.startsWith('/specific/')) {
38
39
  // In this case, each unique pathname will spawn a new container
39
- let id = env.MY_CONTAINER.idFromName(pathname);
40
- let stub = env.MY_CONTAINER.get(id);
41
- return await stub.fetch(request);
40
+ const container = env.MY_CONTAINER.getByName(pathname);
41
+ return await container.fetch(request);
42
42
  }
43
43
 
44
- // (Note: getRandom is a temporary method until built-in autoscaling an
45
- // load balancing are added)
46
-
47
- // If you want to route to one of many containers (in this case 5),
48
- // use the getRandom helper
44
+ // Note: this is a temporary method until built-in autoscaling and load balancing are added.
45
+ // If you want to route to one of many containers (in this case 5), use the getRandom helper.
46
+ // This load balances incoming requests across these container instances.
49
47
  let container = await getRandom(env.MY_CONTAINER, 5);
50
48
  return await container.fetch(request);
51
49
  },
@@ -60,59 +58,97 @@ The `Container` class that extends a container-enbled Durable Object to provide
60
58
 
61
59
  #### Properties
62
60
 
63
- - `defaultPort?`: Optional default port to use when communicating with the container. If not set, you must specify port in `containerFetch` calls, or use `switchPort`.
64
- - `requiredPorts?`: Array of ports that should be checked for availability during container startup. Used by startAndWaitForPorts when no specific ports are provided.
65
- - `sleepAfter`: How long to keep the container alive without activity (format: number for seconds, or string like "5m", "30s", "1h")
66
- - `env`: Environment variables to pass to the container (Record<string, string>)
67
- - `entrypoint?`: Custom entrypoint to override container default (string[])
68
- - `enableInternet`: Whether to enable internet access for the container (boolean, default: true)
69
- - Lifecycle methods: `onStart`, `onStop`, `onError`, `onActivityExpired`
61
+ - `defaultPort?`
70
62
 
71
- #### Constructor Options
63
+ Optional default port to use when communicating with the container. If this is not set, or you want to target a specific port on your container, you can specify the port with `fetch(switchPort(req, 8080))` or `containerFetch(req, 8080)`.
72
64
 
73
- ```typescript
74
- constructor(ctx: any, env: Env, options?: {
75
- defaultPort?: number; // Override default port
76
- sleepAfter?: string | number; // Override sleep timeout
77
- env?: Record<string, string>; // Environment variables to pass to the container
78
- entrypoint?: string[]; // Custom entrypoint to override container default
79
- enableInternet?: boolean; // Whether to enable internet access for the container
80
- })
81
- ```
65
+ - `requiredPorts?`
66
+
67
+ Array of ports that should be checked for availability during container startup. Used by `startAndWaitForPorts` when no specific ports are provided.
68
+
69
+ - `sleepAfter`
70
+
71
+ How long to keep the container alive without activity (format: number for seconds, or string like "5m", "30s", "1h").
72
+
73
+ Defaults to "10m", meaning that after the Container class Durable Object receives no requests for 10 minutes, it will shut down the container.
74
+
75
+ The following properties are used to set defaults when starting the container, but can be overriden on a per-instance basis by passing in values to `startAndWaitForPorts()` or `start()`.
76
+
77
+ - `env?: Record<string, string>`
78
+
79
+ Environment variables to pass to the container when starting up.
80
+
81
+ - `entrypoint?: string[]`
82
+
83
+ Specify an entrypoint to override image default.
84
+
85
+ - `enableInternet: boolean`
86
+
87
+ Whether to enable internet access for the container.
88
+
89
+ Defaults to `true`.
82
90
 
83
91
  #### Methods
84
92
 
85
- ##### Lifecycle Methods
93
+ ##### Lifecycle Hooks
94
+
95
+ These lifecycle methods are automatically called when the container state transitions. Override these methods to use these hooks.
96
+
97
+ See [this example](#http-example-with-lifecycle-hooks).
98
+
99
+ - `onStart()`
86
100
 
87
- All lifecycle methods can be implemented as async if needed.
101
+ Called when container starts successfully.
88
102
 
89
- - `onStart()`: Called when container starts successfully - override to add custom behavior
90
- - `onStop()`: Called when container shuts down - override to add custom behavior
91
- - `onError(error)`: Called when container encounters an error - override to add custom behavior
92
- - `onActivityExpired()`: Called when the activity is expired - override to add custom behavior, like communicating with the container to see if it should be shutdown.
103
+ - called when states transition from `stopped` -> `running`, `running` -> `healthy`
93
104
 
94
- By default, it calls `ctx.container.destroy()`.
95
- If you don't stop the container here, the activity tracker will be renewed, and this lifecycle hook will be called again when the timer re-expires.
105
+ - `onStop()`
106
+
107
+ Called when container shuts down.
108
+
109
+ - `onError(error)`
110
+
111
+ Called when container encounters an error, and by default logs and throws the error.
112
+
113
+ - `onActivityExpired()`
114
+
115
+ Called when the activity is expired. The container will run continue to run for some time after the last activity - this length of time is configured by `sleepAfter`.
116
+ By default, this stops the container with a `SIGTERM`, but you can override this behaviour, as with other lifecycle hooks. However, if you don't stop the container here, the activity tracker will be renewed, and this lifecycle hook will be called again when the timer re-expires.
96
117
 
97
118
  ##### Container Methods
98
119
 
99
- - `fetch(request)`: Default handler to forward HTTP requests to the container. Can be overridden.
100
- - `containerFetch(...)`: Sends an HTTP request to the container. Supports both standard fetch API signatures:
120
+ - `fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>`
121
+
122
+ Forwards HTTP requests to the container.
123
+
124
+ If you want to target a specific port on the container, rather than the default port, you should use `switchPort` like so:
125
+
126
+ ```typescript
127
+ const container = env.MY_CONTAINER.getByName('id');
128
+ await container.fetch(switchPort(request, 8080));
129
+ ```
130
+
131
+ Make sure you provide a port with switchPort or specify a port with the `defaultPort` property.
132
+
133
+ You must use `fetch` rather than `containerFetch` if you want to forward websockets.
134
+
135
+ Note that when you call any of the fetch functions, the activity will be automatically renewed (sleepAfter time starts after last activity), and the container will be started if not already running.
136
+
137
+ - `containerFetch(...)`
138
+
139
+ Note: `containerFetch` does not work with websockets.
140
+
141
+ Sends an HTTP request to the container. Supports both standard fetch API signatures:
101
142
 
102
143
  - `containerFetch(request, port?)`: Traditional signature with Request object
103
144
  - `containerFetch(url, init?, port?)`: Standard fetch-like signature with URL string/object and RequestInit options
104
- Either port parameter or defaultPort must be specified.
105
- When you call any of the fetch functions, the activity will be automatically renewed, and if the container will be started if not already running.
106
- \*\*Do not use 'containerFetch' when trying to send a Request object with a websocket, until [this issue is addressed](https://github.com/cloudflare/workerd/issues/2319).
107
- You can overcome this limitation by doing:
108
- `container.fetch(switchPort(request, port))`
109
145
 
110
146
  - `startAndWaitForPorts(args: StartAndWaitForPortsOptions): Promise<void>`
111
147
 
112
148
  Starts the container and then waits for specified ports to be ready. Prioritises `ports` passed in to the function, then `requiredPorts` if set, then `defaultPort`.
113
149
 
114
150
  ```typescript
115
- export interface StartAndWaitForPortsOptions {
151
+ interface StartAndWaitForPortsOptions {
116
152
  startOptions?: {
117
153
  /** Environment variables to pass to the container */
118
154
  envVars?: Record<string, string>;
@@ -136,17 +172,96 @@ If you don't stop the container here, the activity tracker will be renewed, and
136
172
  }
137
173
  ```
138
174
 
139
- - `start()`: Starts the container if it's not running and sets up monitoring, without waiting for any ports to be ready.
140
- - `stop(signal = SIGTERM)`: Sends the specified signal to the container.
141
- - `destroy()`: Forcefully destroys the container.
142
- - `getState()`: Get the current container state.
143
- - `renewActivityTimeout()`: Manually renews the container activity timeout (extends container lifetime).
144
- - `stopDueToInactivity()`: Called automatically when the container times out due to inactivity.
145
- - `alarm()`: Default alarm handler. It's in charge of renewing the container activity and keeping the durable object alive. You can override `alarm()`, but because its functionality is currently vital to managing the container lifecycle, we recommend calling `schedule` to schedule tasks instead.
175
+ - `start(startOptions?: ContainerStartConfigOptions, waitOptions?: WaitOptions)`
176
+
177
+ Starts the container, without waiting for any ports to be ready.
178
+
179
+ You might want to use this instead of `startAndWaitForPorts` if you want to:
180
+
181
+ - Start a container without blocking until a port is available
182
+ - Initialize a container that doesn't expose ports
183
+ - Perform custom port availability checks separately
184
+
185
+ Options:
186
+
187
+ ```typescript
188
+ interface ContainerStartConfigOptions {
189
+ /** Environment variables to pass to the container */
190
+ envVars?: Record<string, string>;
191
+ /** Custom entrypoint to override container default */
192
+ entrypoint?: string[];
193
+ /** Whether to enable internet access for the container */
194
+ enableInternet?: boolean;
195
+ }
196
+
197
+ interface WaitOptions {
198
+ /** The port number to check for readiness */
199
+ portToCheck: number;
200
+ /** Optional AbortSignal, use this to abort waiting for ports */
201
+ signal?: AbortSignal;
202
+ /** Number of attempts to wait for port to be ready */
203
+ retries?: number;
204
+ /** Time to wait in between polling port for readiness, in milliseconds */
205
+ waitInterval?: number;
206
+ }
207
+ ```
208
+
209
+ - `stop(signal = SIGTERM): Promise<void>`
210
+
211
+ Sends the specified signal to the container. Triggers `onStop`.
212
+
213
+ - `destroy(): Promise<void>`
214
+
215
+ Forcefully destroys the container (sends `SIGKILL`). Triggers `onStop`.
216
+
217
+ - `getState(): Promise<State>`
218
+
219
+ Get the current container state.
220
+
221
+ ```typescript
222
+ type State = {
223
+ lastChange: number;
224
+ } & (
225
+ | {
226
+ // 'running' means that the container is trying to start and is transitioning to a healthy status.
227
+ // onStop might be triggered if there is an exit code, and it will transition to 'stopped'.
228
+ status: 'running' | 'stopping' | 'stopped' | 'healthy';
229
+ }
230
+ | {
231
+ status: 'stopped_with_code';
232
+ exitCode?: number;
233
+ }
234
+ );
235
+ ```
236
+
237
+ - `renewActivityTimeout()`
238
+
239
+ Manually renews the container activity timeout (extends container lifetime).
240
+
241
+ - `schedule<T = string>(when: Date | number, callback: string, payload?: T): Promise<Schedule<T>>`
242
+
243
+ Options:
244
+
245
+ - `when`: When to execute the task (Date object or number of seconds delay)
246
+ - `callback`: Name of the function to call as a string
247
+ - `payload`: Data to pass to the callback
248
+
249
+ Instead of using the default alarm handler, use `schedule()` instead. The default alarm handler is in charge of renewing the container activity and keeping the durable object alive. You can override `alarm()`, but because its functionality is currently vital to managing the container lifecycle, we recommend calling `schedule` to schedule tasks instead.
146
250
 
147
251
  ### Utility Functions
148
252
 
149
- - `getRandom(binding, instances?)`: Load balances requests across multiple container instances
253
+ - `getRandom(binding, instances?: number)`
254
+
255
+ Get a random container instances across N instances. This is useful for load balancing.
256
+ Returns a stub for the container.
257
+ See [example](#using-load-balancing).
258
+
259
+ - `getContainer(binding, name?: string)`
260
+ Helper to get a particular container instance stub.
261
+
262
+ e.g. `const container = getContainer(env.CONTAINER, "unique-id")`
263
+
264
+ If no name is provided, "cf-singleton-container" is used.
150
265
 
151
266
  ## Examples
152
267
 
@@ -196,13 +311,6 @@ export class MyContainer extends Container {
196
311
  console.log('Container activity timeout extended');
197
312
  }
198
313
 
199
- // Handle incoming requests
200
- async fetch(request: Request): Promise<Response> {
201
- // Default implementation forwards requests to the container
202
- // This will automatically renew the activity timeout
203
- return await this.containerFetch(request);
204
- }
205
-
206
314
  // Additional methods can be implemented as needed
207
315
  }
208
316
  ```
@@ -211,18 +319,16 @@ export class MyContainer extends Container {
211
319
 
212
320
  The Container class automatically supports proxying WebSocket connections to your container. WebSocket connections are bi-directionally proxied, with messages forwarded in both directions. The Container also automatically renews the activity timeout when WebSocket messages are sent or received.
213
321
 
214
- You can call the `containerFetch` method directly to establish WebSocket connections:
215
-
216
322
  ```typescript
217
323
  // Connect to a WebSocket on port 9000
218
- const response = await container.containerFetch(request, 9000);
324
+ const response = await container.fetch(switchPort(request, 9000));
219
325
  ```
220
326
 
221
- By default `fetch` also will do this by calling `containerFetch`.
327
+ Note websockets are not supported with `containerFetch`.
222
328
 
223
329
  ### Container Configuration Example
224
330
 
225
- You can configure how the container starts by setting the instance properties for environment variables, entrypoint, and network access:
331
+ You can configure defaults for how the container starts by setting the instance properties for environment variables, entrypoint, and network access:
226
332
 
227
333
  ```typescript
228
334
  import { Container } from '@cloudflare/containers';
@@ -252,6 +358,8 @@ export class ConfiguredContainer extends Container {
252
358
  }
253
359
  ```
254
360
 
361
+ You can also set these on a per-instance basis with `start` or `startAnbdWaitForPorts`
362
+
255
363
  ### Multiple Ports and Custom Routing
256
364
 
257
365
  You can create a container that doesn't use a default port and instead routes traffic to different ports based on request path or other factors:
@@ -414,13 +522,3 @@ export default {
414
522
  },
415
523
  };
416
524
  ```
417
-
418
- ### Using getContainer
419
-
420
- This package includes a `getContainer` helper which returns a container instance
421
- stub.
422
-
423
- The first argument is the Container's Durable Object namespace. The second argument is
424
- optional and is a "name" for the Durable Object. This will be used to generate an ID,
425
- then return a specific Container instance (Durable Object instance). If no second argument
426
- is given, the name "cf-singleton-container" is used.
@@ -1,4 +1,4 @@
1
- import type { ContainerOptions, ContainerStartOptions, ContainerStartConfigOptions, Schedule, StopParams, State, CancellationOptions, StartAndWaitForPortsOptions } from '../types';
1
+ import type { ContainerOptions, ContainerStartOptions, ContainerStartConfigOptions, Schedule, StopParams, State, WaitOptions, CancellationOptions, StartAndWaitForPortsOptions } from '../types';
2
2
  import { DurableObject } from 'cloudflare:workers';
3
3
  export type Signal = 'SIGKILL' | 'SIGINT' | 'SIGTERM';
4
4
  export type SignalInteger = number;
@@ -16,81 +16,59 @@ export declare class Container<Env = unknown> extends DurableObject<Env> {
16
16
  */
17
17
  getState(): Promise<State>;
18
18
  /**
19
- * Start the container if it's not running and set up monitoring
19
+ * Start the container if it's not running and set up monitoring and lifecycle hooks,
20
+ * without waiting for ports to be ready.
20
21
  *
21
- * This method handles the core container startup process without waiting for ports to be ready.
22
- * It will automatically retry if the container fails to start, up to maxTries attempts.
22
+ * It will automatically retry if the container fails to start, using the specified waitOptions
23
23
  *
24
- * It's useful when you need to:
25
- * - Start a container without blocking until a port is available
26
- * - Initialize a container that doesn't expose ports
27
- * - Perform custom port availability checks separately
28
- *
29
- * The method applies the container configuration from your instance properties by default, but allows
30
- * overriding these values for this specific startup:
31
- * - Environment variables (defaults to this.envVars)
32
- * - Custom entrypoint commands (defaults to this.entrypoint)
33
- * - Internet access settings (defaults to this.enableInternet)
34
- *
35
- * It also sets up monitoring to track container lifecycle events and automatically
36
- * calls the onStop handler when the container terminates.
37
24
  *
38
25
  * @example
39
- * // Basic usage in a custom Container implementation
40
- * async customInitialize() {
41
- * // Start the container without waiting for a port
42
- * await this.start();
43
- *
44
- * // Perform additional initialization steps
45
- * // that don't require port access
46
- * }
47
- *
48
- * @example
49
- * // Start with custom configuration
50
26
  * await this.start({
51
27
  * envVars: { DEBUG: 'true', NODE_ENV: 'development' },
52
28
  * entrypoint: ['npm', 'run', 'dev'],
53
29
  * enableInternet: false
54
30
  * });
55
31
  *
56
- * @param options - Optional configuration to override instance defaults
57
- * @param waitOptions - Optional wait configuration with abort signal for cancellation
32
+ * @param startOptions - Override `envVars`, `entrypoint` and `enableInternet` on a per-instance basis
33
+ * @param waitOptions - Optional wait configuration with abort signal for cancellation. Default ~8s timeout.
58
34
  * @returns A promise that resolves when the container start command has been issued
59
35
  * @throws Error if no container context is available or if all start attempts fail
60
36
  */
61
- start(options?: ContainerStartConfigOptions, waitOptions?: {
62
- signal?: AbortSignal;
63
- }): Promise<void>;
37
+ start(startOptions?: ContainerStartConfigOptions, waitOptions?: WaitOptions): Promise<void>;
64
38
  /**
65
- * Start the container and wait for ports to be available
39
+ * Start the container and wait for ports to be available.
66
40
  *
67
- * This method builds on start() by adding port availability verification:
68
- * 1. Calls start() to ensure the container is running
69
- * 2. If no ports are specified and requiredPorts is not set, it uses defaultPort (if set)
70
- * 3. If no ports can be determined, it calls onStart and renewActivityTimeout immediately
71
- * 4. For each specified port, it polls until the port is available or maxTries is reached
72
- * 5. When all ports are available, it triggers onStart and renewActivityTimeout
73
- *
74
- * The method prioritizes port sources in this order:
75
- * 1. Ports specified directly in the method call
76
- * 2. requiredPorts class property (if set)
77
- * 3. defaultPort (if neither of the above is specified)
41
+ * For each specified port, it polls until the port is available or `cancellationOptions.portReadyTimeoutMS` is reached.
78
42
  *
79
43
  * @param ports - The ports to wait for (if undefined, uses requiredPorts or defaultPort)
80
- * @param cancellationOptions
81
- * @param startOptions Override configuration on a per instance for env vars, entrypoint command and internet access
82
- * @throws Error if port checks fail after maxTries attempts
44
+ * @param cancellationOptions - Options to configure timeouts, polling intereva, and abort signal
45
+ * @param startOptions Override configuration on a per-instance basis for env vars, entrypoint command and internet access
46
+ * @returns A promise that resolves when the container has been started and the ports are listening
47
+ * @throws Error if port checks fail after the specified timeout or if the container fails to start.
83
48
  */
84
49
  startAndWaitForPorts(args: StartAndWaitForPortsOptions): Promise<void>;
85
50
  startAndWaitForPorts(ports?: number | number[], cancellationOptions?: CancellationOptions, startOptions?: ContainerStartConfigOptions): Promise<void>;
86
51
  startAndWaitForPorts(portsOrArgs?: number | number[] | StartAndWaitForPortsOptions, cancellationOptions?: CancellationOptions, startOptions?: ContainerStartConfigOptions): Promise<void>;
87
52
  /**
88
- * Shuts down the container.
53
+ *
54
+ * Waits for a specified port to be ready
55
+ *
56
+ * Returns the number of tries used to get the port, or throws if it couldn't get the port within the specified retry limits.
57
+ *
58
+ * @param waitOptions -
59
+ * - `portToCheck`: The port number to check
60
+ * - `abort`: Optional AbortSignal to cancel waiting
61
+ * - `retries`: Number of retries before giving up (default: TRIES_TO_GET_PORTS)
62
+ * - `waitInterval`: Interval between retries in milliseconds (default: INSTANCE_POLL_INTERVAL_MS)
63
+ */
64
+ waitForPort(waitOptions: WaitOptions): Promise<number>;
65
+ /**
66
+ * Send a signal to the container.
89
67
  * @param signal - The signal to send to the container (default: 15 for SIGTERM)
90
68
  */
91
69
  stop(signal?: Signal | SignalInteger): Promise<void>;
92
70
  /**
93
- * Destroys the container. It will trigger onError instead of onStop.
71
+ * Destroys the container with a SIGKILL. Triggers onStop.
94
72
  */
95
73
  destroy(): Promise<void>;
96
74
  /**
@@ -106,7 +84,7 @@ export declare class Container<Env = unknown> extends DurableObject<Env> {
106
84
  onStop(_: StopParams): void | Promise<void>;
107
85
  /**
108
86
  * Lifecycle method called when the container is running, and the activity timeout
109
- * expiration has been reached.
87
+ * expiration (set by `sleepAfter`) has been reached.
110
88
  *
111
89
  * If you want to shutdown the container, you should call this.stop() here
112
90
  *
@@ -127,7 +105,10 @@ export declare class Container<Env = unknown> extends DurableObject<Env> {
127
105
  */
128
106
  renewActivityTimeout(): void;
129
107
  /**
130
- * Schedule a task to be executed in the future
108
+ * Schedule a task to be executed in the future.
109
+ *
110
+ * We strongly recommend using this instead of the `alarm` handler.
111
+ *
131
112
  * @template T Type of the payload data
132
113
  * @param when When to execute the task (Date object or number of seconds delay)
133
114
  * @param callback Name of the method to call
@@ -137,26 +118,26 @@ export declare class Container<Env = unknown> extends DurableObject<Env> {
137
118
  schedule<T = string>(when: Date | number, callback: string, payload?: T): Promise<Schedule<T>>;
138
119
  /**
139
120
  * Send a request to the container (HTTP or WebSocket) using standard fetch API signature
140
- * Based on containers-starter-go implementation
141
121
  *
142
- * This method handles HTTP requests to the container. WebSocket requests done outside the DO*
143
- * won't work until https://github.com/cloudflare/workerd/issues/2319 is addressed. Until then, please use `switchPort` + `fetch()`.
122
+ * This method handles HTTP requests to the container.
123
+ *
124
+ * WebSocket requests done outside the DO won't work until https://github.com/cloudflare/workerd/issues/2319 is addressed.
125
+ * Until then, please use `switchPort` + `fetch()`.
144
126
  *
145
127
  * Method supports multiple signatures to match standard fetch API:
146
128
  * - containerFetch(request: Request, port?: number)
147
129
  * - containerFetch(url: string | URL, init?: RequestInit, port?: number)
148
130
  *
149
- * @param requestOrUrl The request object or URL string/object to send to the container
150
- * @param portOrInit Port number or fetch RequestInit options
151
- * @param portParam Optional port number when using URL+init signature
152
- * @returns A Response from the container, or WebSocket connection
131
+ * Starts the container if not already running, and waits for the target port to be ready.
132
+ *
133
+ * @returns A Response from the container
153
134
  */
154
135
  containerFetch(requestOrUrl: Request | string | URL, portOrInit?: number | RequestInit, portParam?: number): Promise<Response>;
155
136
  /**
156
- * Handle fetch requests to the Container
157
- * Default implementation forwards all HTTP and WebSocket requests to the container
158
- * Override this in your subclass to specify a port or implement custom request handling
159
137
  *
138
+ * Fetch handler on the Container class.
139
+ * By default this forwards all requests to the container by calling `containerFetch`.
140
+ * Use `switchPort` to specify which port on the container to target, or this will use `defaultPort`.
160
141
  * @param request The request to handle
161
142
  */
162
143
  fetch(request: Request): Promise<Response>;
@@ -171,7 +152,19 @@ export declare class Container<Env = unknown> extends DurableObject<Env> {
171
152
  */
172
153
  private sql;
173
154
  private requestAndPortFromContainerFetchArgs;
155
+ /**
156
+ *
157
+ * The method prioritizes port sources in this order:
158
+ * 1. Ports specified directly in the method call
159
+ * 2. `requiredPorts` class property (if set)
160
+ * 3. `defaultPort` (if neither of the above is specified)
161
+ * 4. Falls back to port 33 if none of the above are set
162
+ */
174
163
  private getPortsToCheck;
164
+ /**
165
+ * Tries to start a container if it's not already running
166
+ * Returns the number of tries used
167
+ */
175
168
  private startContainerIfNotRunning;
176
169
  private setupMonitorCallbacks;
177
170
  deleteSchedules(name: string): void;
@@ -20,20 +20,14 @@ const INSTANCE_POLL_INTERVAL_MS = 300; // Default interval for polling container
20
20
  // Timeout for getting container instance and launching a VM
21
21
  // Time to find an instance, attach a DO, call start, but NOT
22
22
  // the time for the app the actually start
23
- const TIMEOUT_TO_GET_CONTAINER_SECONDS = 8;
23
+ const TIMEOUT_TO_GET_CONTAINER_MS = 8_000;
24
24
  // Timeout for getting a container instance and launching
25
25
  // the actual application and have it listen for specific ports
26
26
  // One day might be configurable by the end user in Container class attribute
27
- const TIMEOUT_TO_GET_PORTS = 20;
28
- // Number of tries based on polling interval
29
- const TRIES_TO_GET_CONTAINER = Math.ceil((TIMEOUT_TO_GET_CONTAINER_SECONDS * 1000) / INSTANCE_POLL_INTERVAL_MS);
30
- const TRIES_TO_GET_PORTS = Math.ceil((TIMEOUT_TO_GET_PORTS * 1000) / INSTANCE_POLL_INTERVAL_MS);
27
+ const TIMEOUT_TO_GET_PORTS_MS = 20_000;
31
28
  // If user has specified no ports and we need to check one
32
29
  // to see if the container is up at all.
33
30
  const FALLBACK_PORT_TO_CHECK = 33;
34
- // Since the timing isn't working, hard coding a max attempts seems
35
- // to be the only viable solution for now
36
- const TEMPORARY_HARDCODED_ATTEMPT_MAX = 6;
37
31
  const signalToNumbers = {
38
32
  SIGINT: 2,
39
33
  SIGTERM: 15,
@@ -222,56 +216,35 @@ export class Container extends DurableObject {
222
216
  // CONTAINER STARTING
223
217
  // ==========================
224
218
  /**
225
- * Start the container if it's not running and set up monitoring
219
+ * Start the container if it's not running and set up monitoring and lifecycle hooks,
220
+ * without waiting for ports to be ready.
226
221
  *
227
- * This method handles the core container startup process without waiting for ports to be ready.
228
- * It will automatically retry if the container fails to start, up to maxTries attempts.
222
+ * It will automatically retry if the container fails to start, using the specified waitOptions
229
223
  *
230
- * It's useful when you need to:
231
- * - Start a container without blocking until a port is available
232
- * - Initialize a container that doesn't expose ports
233
- * - Perform custom port availability checks separately
234
- *
235
- * The method applies the container configuration from your instance properties by default, but allows
236
- * overriding these values for this specific startup:
237
- * - Environment variables (defaults to this.envVars)
238
- * - Custom entrypoint commands (defaults to this.entrypoint)
239
- * - Internet access settings (defaults to this.enableInternet)
240
- *
241
- * It also sets up monitoring to track container lifecycle events and automatically
242
- * calls the onStop handler when the container terminates.
243
- *
244
- * @example
245
- * // Basic usage in a custom Container implementation
246
- * async customInitialize() {
247
- * // Start the container without waiting for a port
248
- * await this.start();
249
- *
250
- * // Perform additional initialization steps
251
- * // that don't require port access
252
- * }
253
224
  *
254
225
  * @example
255
- * // Start with custom configuration
256
226
  * await this.start({
257
227
  * envVars: { DEBUG: 'true', NODE_ENV: 'development' },
258
228
  * entrypoint: ['npm', 'run', 'dev'],
259
229
  * enableInternet: false
260
230
  * });
261
231
  *
262
- * @param options - Optional configuration to override instance defaults
263
- * @param waitOptions - Optional wait configuration with abort signal for cancellation
232
+ * @param startOptions - Override `envVars`, `entrypoint` and `enableInternet` on a per-instance basis
233
+ * @param waitOptions - Optional wait configuration with abort signal for cancellation. Default ~8s timeout.
264
234
  * @returns A promise that resolves when the container start command has been issued
265
235
  * @throws Error if no container context is available or if all start attempts fail
266
236
  */
267
- async start(options, waitOptions) {
268
- const portToCheck = this.defaultPort ?? (this.requiredPorts ? this.requiredPorts[0] : FALLBACK_PORT_TO_CHECK);
237
+ async start(startOptions, waitOptions) {
238
+ const portToCheck = waitOptions?.portToCheck ??
239
+ this.defaultPort ??
240
+ (this.requiredPorts ? this.requiredPorts[0] : FALLBACK_PORT_TO_CHECK);
241
+ const pollInterval = waitOptions?.waitInterval ?? INSTANCE_POLL_INTERVAL_MS;
269
242
  await this.startContainerIfNotRunning({
270
- abort: waitOptions?.signal,
271
- waitInterval: INSTANCE_POLL_INTERVAL_MS,
272
- retries: TRIES_TO_GET_CONTAINER,
243
+ signal: waitOptions?.signal,
244
+ waitInterval: pollInterval,
245
+ retries: waitOptions?.retries ?? Math.ceil(TIMEOUT_TO_GET_CONTAINER_MS / pollInterval),
273
246
  portToCheck,
274
- }, options);
247
+ }, startOptions);
275
248
  this.setupMonitorCallbacks();
276
249
  // TODO: We should consider an onHealthy callback
277
250
  await this.ctx.blockConcurrencyWhile(async () => {
@@ -296,85 +269,31 @@ export class Container extends DurableObject {
296
269
  }
297
270
  // Determine which ports to check
298
271
  const portsToCheck = await this.getPortsToCheck(ports);
299
- const state = await this.state.getState();
300
- // if the container is already healthy and running, assume ports are ready
301
- if (state.status === 'healthy' && this.container.running) {
302
- if (this.container.running && !this.monitor) {
303
- // This is needed to setup the monitoring
304
- // Start the container if it's not running
305
- this.monitor = this.container.monitor();
306
- this.setupMonitorCallbacks();
307
- }
308
- return;
309
- }
310
272
  // trigger all onStop that we didn't do yet
311
273
  await this.syncPendingStoppedEvents();
312
274
  // Prepare to start the container
313
275
  resolvedCancellationOptions ??= {};
314
- let containerGetRetries = resolvedCancellationOptions.instanceGetTimeoutMS
315
- ? Math.ceil(resolvedCancellationOptions.instanceGetTimeoutMS / INSTANCE_POLL_INTERVAL_MS)
316
- : TRIES_TO_GET_CONTAINER;
276
+ const containerGetTimeout = resolvedCancellationOptions.instanceGetTimeoutMS ?? TIMEOUT_TO_GET_CONTAINER_MS;
277
+ const pollInterval = resolvedCancellationOptions.waitInterval ?? INSTANCE_POLL_INTERVAL_MS;
278
+ let containerGetRetries = Math.ceil(containerGetTimeout / pollInterval);
317
279
  const waitOptions = {
318
- abort: resolvedCancellationOptions.abort,
280
+ signal: resolvedCancellationOptions.abort,
319
281
  retries: containerGetRetries,
320
- waitInterval: resolvedCancellationOptions.waitInterval ?? INSTANCE_POLL_INTERVAL_MS,
282
+ waitInterval: pollInterval,
321
283
  portToCheck: portsToCheck[0],
322
284
  };
323
- const abortedSignal = new Promise(res => {
324
- waitOptions.abort?.addEventListener('abort', () => {
325
- res(true);
326
- });
327
- });
328
285
  // Start the container if it's not running
329
286
  const triesUsed = await this.startContainerIfNotRunning(waitOptions, resolvedStartOptions);
330
287
  // Check each port
331
- let totalPortReadyTries = resolvedCancellationOptions.portReadyTimeoutMS
332
- ? Math.ceil(resolvedCancellationOptions.portReadyTimeoutMS / INSTANCE_POLL_INTERVAL_MS)
333
- : TRIES_TO_GET_PORTS;
334
- const triesLeft = totalPortReadyTries - triesUsed;
288
+ const totalPortReadyTries = Math.ceil(resolvedCancellationOptions.portReadyTimeoutMS ?? TIMEOUT_TO_GET_PORTS_MS / pollInterval);
289
+ let triesLeft = totalPortReadyTries - triesUsed;
335
290
  for (const port of portsToCheck) {
336
- const tcpPort = this.container.getTcpPort(port);
337
- let portReady = false;
338
- // Try to connect to the port multiple times
339
- for (let i = 0; i < triesLeft && !portReady; i++) {
340
- try {
341
- const combinedSignal = addTimeoutSignal(waitOptions.abort, PING_TIMEOUT_MS);
342
- await tcpPort.fetch('http://ping', { signal: combinedSignal });
343
- // Successfully connected to this port
344
- portReady = true;
345
- console.log(`Port ${port} is ready`);
346
- }
347
- catch (e) {
348
- // Check for specific error messages that indicate we should keep retrying
349
- const errorMessage = e instanceof Error ? e.message : String(e);
350
- console.debug(`Error checking ${port}: ${errorMessage}`);
351
- // If not running, it means the container crashed
352
- if (!this.container.running) {
353
- try {
354
- await this.onError(new Error(`Container crashed while checking for ports, did you setup the entrypoint correctly?`));
355
- }
356
- catch { }
357
- throw e;
358
- }
359
- // If we're on the last attempt and the port is still not ready, fail
360
- if (i === triesLeft - 1) {
361
- try {
362
- // TODO: Remove attempts, the end user doesn't care about this
363
- await this.onError(`Failed to verify port ${port} is available after ${waitOptions.retries} attempts, last error: ${errorMessage}`);
364
- }
365
- catch { }
366
- throw e;
367
- }
368
- // Wait a bit before trying again
369
- await Promise.any([
370
- new Promise(resolve => setTimeout(resolve, waitOptions.waitInterval)),
371
- abortedSignal,
372
- ]);
373
- if (waitOptions.abort?.aborted) {
374
- throw new Error('Container request timed out.');
375
- }
376
- }
377
- }
291
+ triesLeft = await this.waitForPort({
292
+ signal: resolvedCancellationOptions.abort,
293
+ waitInterval: pollInterval,
294
+ retries: triesLeft,
295
+ portToCheck: port,
296
+ });
378
297
  }
379
298
  this.setupMonitorCallbacks();
380
299
  await this.ctx.blockConcurrencyWhile(async () => {
@@ -383,18 +302,82 @@ export class Container extends DurableObject {
383
302
  await this.onStart();
384
303
  });
385
304
  }
305
+ /**
306
+ *
307
+ * Waits for a specified port to be ready
308
+ *
309
+ * Returns the number of tries used to get the port, or throws if it couldn't get the port within the specified retry limits.
310
+ *
311
+ * @param waitOptions -
312
+ * - `portToCheck`: The port number to check
313
+ * - `abort`: Optional AbortSignal to cancel waiting
314
+ * - `retries`: Number of retries before giving up (default: TRIES_TO_GET_PORTS)
315
+ * - `waitInterval`: Interval between retries in milliseconds (default: INSTANCE_POLL_INTERVAL_MS)
316
+ */
317
+ async waitForPort(waitOptions) {
318
+ const port = waitOptions.portToCheck;
319
+ const tcpPort = this.container.getTcpPort(port);
320
+ const abortedSignal = new Promise(res => {
321
+ waitOptions.signal?.addEventListener('abort', () => {
322
+ res(true);
323
+ });
324
+ });
325
+ const pollInterval = waitOptions.waitInterval ?? INSTANCE_POLL_INTERVAL_MS;
326
+ let tries = waitOptions.retries ?? Math.ceil(TIMEOUT_TO_GET_PORTS_MS / pollInterval);
327
+ // Try to connect to the port multiple times
328
+ for (let i = 0; i < tries; i++) {
329
+ try {
330
+ const combinedSignal = addTimeoutSignal(waitOptions.signal, PING_TIMEOUT_MS);
331
+ await tcpPort.fetch('http://ping', { signal: combinedSignal });
332
+ // Successfully connected to this port
333
+ console.log(`Port ${port} is ready`);
334
+ break;
335
+ }
336
+ catch (e) {
337
+ // Check for specific error messages that indicate we should keep retrying
338
+ const errorMessage = e instanceof Error ? e.message : String(e);
339
+ console.debug(`Error checking ${port}: ${errorMessage}`);
340
+ // If not running, it means the container crashed
341
+ if (!this.container.running) {
342
+ try {
343
+ await this.onError(new Error(`Container crashed while checking for ports, did you start the container and setup the entrypoint correctly?`));
344
+ }
345
+ catch { }
346
+ throw e;
347
+ }
348
+ // If we're on the last attempt and the port is still not ready, fail
349
+ if (i === tries - 1) {
350
+ try {
351
+ await this.onError(`Failed to verify port ${port} is available after ${(i + 1) * pollInterval}ms, last error: ${errorMessage}`);
352
+ }
353
+ catch { }
354
+ throw e;
355
+ }
356
+ // Wait a bit before trying again
357
+ await Promise.any([
358
+ new Promise(resolve => setTimeout(resolve, waitOptions.waitInterval)),
359
+ abortedSignal,
360
+ ]);
361
+ if (waitOptions.signal?.aborted) {
362
+ throw new Error('Container request aborted.');
363
+ }
364
+ }
365
+ }
366
+ return tries;
367
+ }
386
368
  // =======================
387
369
  // LIFECYCLE HOOKS
388
370
  // =======================
389
371
  /**
390
- * Shuts down the container.
372
+ * Send a signal to the container.
391
373
  * @param signal - The signal to send to the container (default: 15 for SIGTERM)
392
374
  */
393
375
  async stop(signal = 'SIGTERM') {
394
376
  this.container.signal(typeof signal === 'string' ? signalToNumbers[signal] : signal);
377
+ // await this.syncPendingStoppedEvents();
395
378
  }
396
379
  /**
397
- * Destroys the container. It will trigger onError instead of onStop.
380
+ * Destroys the container with a SIGKILL. Triggers onStop.
398
381
  */
399
382
  async destroy() {
400
383
  await this.container.destroy();
@@ -416,7 +399,7 @@ export class Container extends DurableObject {
416
399
  }
417
400
  /**
418
401
  * Lifecycle method called when the container is running, and the activity timeout
419
- * expiration has been reached.
402
+ * expiration (set by `sleepAfter`) has been reached.
420
403
  *
421
404
  * If you want to shutdown the container, you should call this.stop() here
422
405
  *
@@ -451,7 +434,10 @@ export class Container extends DurableObject {
451
434
  // SCHEDULING
452
435
  // ==================
453
436
  /**
454
- * Schedule a task to be executed in the future
437
+ * Schedule a task to be executed in the future.
438
+ *
439
+ * We strongly recommend using this instead of the `alarm` handler.
440
+ *
455
441
  * @template T Type of the payload data
456
442
  * @param when When to execute the task (Date object or number of seconds delay)
457
443
  * @param callback Name of the method to call
@@ -509,19 +495,19 @@ export class Container extends DurableObject {
509
495
  // ============
510
496
  /**
511
497
  * Send a request to the container (HTTP or WebSocket) using standard fetch API signature
512
- * Based on containers-starter-go implementation
513
498
  *
514
- * This method handles HTTP requests to the container. WebSocket requests done outside the DO*
515
- * won't work until https://github.com/cloudflare/workerd/issues/2319 is addressed. Until then, please use `switchPort` + `fetch()`.
499
+ * This method handles HTTP requests to the container.
500
+ *
501
+ * WebSocket requests done outside the DO won't work until https://github.com/cloudflare/workerd/issues/2319 is addressed.
502
+ * Until then, please use `switchPort` + `fetch()`.
516
503
  *
517
504
  * Method supports multiple signatures to match standard fetch API:
518
505
  * - containerFetch(request: Request, port?: number)
519
506
  * - containerFetch(url: string | URL, init?: RequestInit, port?: number)
520
507
  *
521
- * @param requestOrUrl The request object or URL string/object to send to the container
522
- * @param portOrInit Port number or fetch RequestInit options
523
- * @param portParam Optional port number when using URL+init signature
524
- * @returns A Response from the container, or WebSocket connection
508
+ * Starts the container if not already running, and waits for the target port to be ready.
509
+ *
510
+ * @returns A Response from the container
525
511
  */
526
512
  async containerFetch(requestOrUrl, portOrInit, portParam) {
527
513
  // Parse the arguments based on their types to handle different method signatures
@@ -562,10 +548,10 @@ export class Container extends DurableObject {
562
548
  }
563
549
  }
564
550
  /**
565
- * Handle fetch requests to the Container
566
- * Default implementation forwards all HTTP and WebSocket requests to the container
567
- * Override this in your subclass to specify a port or implement custom request handling
568
551
  *
552
+ * Fetch handler on the Container class.
553
+ * By default this forwards all requests to the container by calling `containerFetch`.
554
+ * Use `switchPort` to specify which port on the container to target, or this will use `defaultPort`.
569
555
  * @param request The request to handle
570
556
  */
571
557
  async fetch(request) {
@@ -635,13 +621,21 @@ export class Container extends DurableObject {
635
621
  // Create a Request object
636
622
  request = new Request(url, init);
637
623
  }
624
+ port ??= this.defaultPort;
638
625
  // Require a port to be specified, either as a parameter or as a defaultPort property
639
- if (port === undefined && this.defaultPort === undefined) {
626
+ if (port === undefined) {
640
627
  throw new Error('No port specified for container fetch. Set defaultPort or specify a port parameter.');
641
628
  }
642
- port = port ?? this.defaultPort;
643
629
  return { request, port };
644
630
  }
631
+ /**
632
+ *
633
+ * The method prioritizes port sources in this order:
634
+ * 1. Ports specified directly in the method call
635
+ * 2. `requiredPorts` class property (if set)
636
+ * 3. `defaultPort` (if neither of the above is specified)
637
+ * 4. Falls back to port 33 if none of the above are set
638
+ */
645
639
  async getPortsToCheck(overridePorts) {
646
640
  let portsToCheck = [];
647
641
  if (overridePorts !== undefined) {
@@ -661,8 +655,10 @@ export class Container extends DurableObject {
661
655
  // ===========================================
662
656
  // CONTAINER INTERACTION & MONITORING
663
657
  // ===========================================
664
- // Tries to start a container if it's not running
665
- // Reutns the number of tries used
658
+ /**
659
+ * Tries to start a container if it's not already running
660
+ * Returns the number of tries used
661
+ */
666
662
  async startContainerIfNotRunning(waitOptions, options) {
667
663
  // Start the container if it's not running
668
664
  if (this.container.running) {
@@ -672,12 +668,14 @@ export class Container extends DurableObject {
672
668
  return 0;
673
669
  }
674
670
  const abortedSignal = new Promise(res => {
675
- waitOptions.abort?.addEventListener('abort', () => {
671
+ waitOptions.signal?.addEventListener('abort', () => {
676
672
  res(true);
677
673
  });
678
674
  });
675
+ const pollInterval = waitOptions.waitInterval ?? INSTANCE_POLL_INTERVAL_MS;
676
+ const totalTries = waitOptions.retries ?? Math.ceil(TIMEOUT_TO_GET_CONTAINER_MS / pollInterval);
679
677
  await this.state.setRunning();
680
- for (let tries = 0; tries < waitOptions.retries; tries++) {
678
+ for (let tries = 0; tries < totalTries; tries++) {
681
679
  // Use provided options or fall back to instance properties
682
680
  const envVars = options?.envVars ?? this.envVars;
683
681
  const entrypoint = options?.entrypoint ?? this.entrypoint;
@@ -694,7 +692,7 @@ export class Container extends DurableObject {
694
692
  const handleError = async () => {
695
693
  const err = await this.monitor?.catch(err => err);
696
694
  if (typeof err === 'number') {
697
- const toThrow = new Error(`Error starting container, early exit code 0 before we could check for healthiness, did it crash early?`);
695
+ const toThrow = new Error(`Container exited before we could determine the container health, exit code: ${err}`);
698
696
  try {
699
697
  await this.onError(toThrow);
700
698
  }
@@ -709,11 +707,11 @@ export class Container extends DurableObject {
709
707
  throw err;
710
708
  }
711
709
  };
710
+ if (tries > 0 && !this.container.running) {
711
+ await handleError();
712
+ }
713
+ await this.scheduleNextAlarm();
712
714
  if (!this.container.running) {
713
- if (tries > 0) {
714
- await handleError();
715
- }
716
- await this.scheduleNextAlarm();
717
715
  this.container.start(startConfig);
718
716
  this.monitor = this.container.monitor();
719
717
  }
@@ -724,7 +722,7 @@ export class Container extends DurableObject {
724
722
  // TODO: Make this the port I'm trying to get!
725
723
  const port = this.container.getTcpPort(waitOptions.portToCheck);
726
724
  try {
727
- const combinedSignal = addTimeoutSignal(waitOptions.abort, PING_TIMEOUT_MS);
725
+ const combinedSignal = addTimeoutSignal(waitOptions.signal, PING_TIMEOUT_MS);
728
726
  await port.fetch('http://containerstarthealthcheck', { signal: combinedSignal });
729
727
  return tries;
730
728
  }
@@ -740,12 +738,11 @@ export class Container extends DurableObject {
740
738
  new Promise(res => setTimeout(res, waitOptions.waitInterval)),
741
739
  abortedSignal,
742
740
  ]);
743
- if (waitOptions.abort?.aborted) {
741
+ if (waitOptions.signal?.aborted) {
744
742
  throw new Error('Aborted waiting for container to start as we received a cancellation signal');
745
743
  }
746
- // TODO: Don't hardcode to 3, use the max attempts
747
744
  // TODO: Make this error specific to this, but then catch it above w something else
748
- if (TEMPORARY_HARDCODED_ATTEMPT_MAX === tries) {
745
+ if (totalTries === tries + 1) {
749
746
  if (error instanceof Error && error.message.includes('Network connection lost')) {
750
747
  // We have to abort here, the reasoning is that we might've found
751
748
  // ourselves in an internal error where the Worker is stuck with a failed connection to the
@@ -760,7 +757,7 @@ export class Container extends DurableObject {
760
757
  continue;
761
758
  }
762
759
  }
763
- throw new Error(`Container did not start after ${waitOptions.retries * waitOptions.waitInterval}ms`);
760
+ throw new Error(`Container did not start after ${totalTries * pollInterval}ms`);
764
761
  }
765
762
  setupMonitorCallbacks() {
766
763
  if (this.monitorSetup) {
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/lib/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/lib/container.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Container } from './container';
2
2
  /**
3
- * Get a random container instances across N instances
3
+ * Get a random container instances across N instances. This is useful for load balancing.
4
4
  * @param binding The Container's Durable Object binding
5
5
  * @param instances Number of instances to load balance across
6
6
  * @returns A promise resolving to a container stub ready to handle requests
@@ -13,13 +13,13 @@ export declare function getRandom<T extends Container>(binding: DurableObjectNam
13
13
  * @returns A promise resolving to a container stub ready to handle requests
14
14
  */
15
15
  export declare function loadBalance<T extends Container>(binding: DurableObjectNamespace<T>, instances?: number): Promise<DurableObjectStub<T>>;
16
+ export declare const singletonContainerId = "cf-singleton-container";
16
17
  /**
17
18
  * Get a container stub
18
19
  * @param binding The Container's Durable Object binding
19
20
  * @param name The name of the instance to get, uses 'cf-singleton-container' by default
20
21
  * @returns A container stub ready to handle requests
21
22
  */
22
- export declare const singletonContainerId = "cf-singleton-container";
23
23
  export declare function getContainer<T extends Container>(binding: DurableObjectNamespace<T>, name?: string): DurableObjectStub<T>;
24
24
  /**
25
25
  * Return a request with the port target set correctly
package/dist/lib/utils.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Get a random container instances across N instances
2
+ * Get a random container instances across N instances. This is useful for load balancing.
3
3
  * @param binding The Container's Durable Object binding
4
4
  * @param instances Number of instances to load balance across
5
5
  * @returns A promise resolving to a container stub ready to handle requests
@@ -23,15 +23,15 @@ export async function loadBalance(binding, instances = 3) {
23
23
  console.warn('loadBalance is deprecated, please use getRandom instead. This will be removed in a future version.');
24
24
  return getRandom(binding, instances);
25
25
  }
26
+ export const singletonContainerId = 'cf-singleton-container';
26
27
  /**
27
28
  * Get a container stub
28
29
  * @param binding The Container's Durable Object binding
29
30
  * @param name The name of the instance to get, uses 'cf-singleton-container' by default
30
31
  * @returns A container stub ready to handle requests
31
32
  */
32
- export const singletonContainerId = 'cf-singleton-container';
33
- export function getContainer(binding, name) {
34
- const objectId = binding.idFromName(name ?? singletonContainerId);
33
+ export function getContainer(binding, name = singletonContainerId) {
34
+ const objectId = binding.idFromName(name);
35
35
  return binding.get(objectId);
36
36
  }
37
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAkC,EAClC,YAAoB,CAAC;IAErB,qDAAqD;IACrD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE5D,gDAAgD;IAChD,wEAAwE;IACxE,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAEtD,4CAA4C;IAC5C,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAkC,EAClC,YAAoB,CAAC;IAErB,OAAO,CAAC,IAAI,CACV,oGAAoG,CACrG,CAAC;IACF,OAAO,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAC7D,MAAM,UAAU,YAAY,CAC1B,OAAkC,EAClC,IAAa;IAEb,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,oBAAoB,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,IAAY;IACvD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzD,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAkC,EAClC,YAAoB,CAAC;IAErB,qDAAqD;IACrD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE5D,gDAAgD;IAChD,wEAAwE;IACxE,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAEtD,4CAA4C;IAC5C,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAkC,EAClC,YAAoB,CAAC;IAErB,OAAO,CAAC,IAAI,CACV,oGAAoG,CACrG,CAAC;IACF,OAAO,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAC7D;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAkC,EAClC,IAAI,GAAG,oBAAoB;IAE3B,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,IAAY;IACvD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzD,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC"}
@@ -50,17 +50,29 @@ export interface StartAndWaitForPortsOptions {
50
50
  ports?: number | number[];
51
51
  cancellationOptions?: CancellationOptions;
52
52
  }
53
+ /** cancellationOptions for startAndWaitForPorts() */
53
54
  export interface CancellationOptions {
55
+ /** abort signal, use to abort startAndWaitForPorts manually. */
54
56
  abort?: AbortSignal;
57
+ /** max time to get container instance and start it (application inside may not be ready), in milliseconds */
55
58
  instanceGetTimeoutMS?: number;
59
+ /** max time to wait for application to be listening at all specified ports, in milliseconds. */
56
60
  portReadyTimeoutMS?: number;
61
+ /** time to wait between polling, in milliseconds */
57
62
  waitInterval?: number;
58
63
  }
64
+ /**
65
+ * Options for waitForPort()
66
+ */
59
67
  export interface WaitOptions {
60
- abort?: AbortSignal;
61
- retries: number;
62
- waitInterval: number;
68
+ /** The port number to check for readiness */
63
69
  portToCheck: number;
70
+ /** Optional AbortSignal, use this to abort waiting for ports */
71
+ signal?: AbortSignal;
72
+ /** Number of attempts to wait for port to be ready */
73
+ retries?: number;
74
+ /** Time to wait in between polling port for readiness, in milliseconds */
75
+ waitInterval?: number;
64
76
  }
65
77
  /**
66
78
  * Represents a scheduled task within a Container
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudflare/containers",
3
- "version": "0.0.28",
3
+ "version": "0.0.29",
4
4
  "description": "Helper class for container-enabled Durable Objects",
5
5
  "repository": {
6
6
  "type": "git",
@@ -11,8 +11,7 @@
11
11
  "typecheck": "tsc --noEmit",
12
12
  "lint": "eslint src --ext .ts,.tsx --config .eslintrc.js",
13
13
  "format": "prettier --write \"src/**/*.ts\"",
14
- "test": "jest",
15
- "test:watch": "jest --watch"
14
+ "test": "set -e; for fixture in examples/*/; do if [ -d \"$fixture/test\" ] && [ -f \"$fixture/package.json\" ]; then cd \"$fixture\"; npm install; npm run test; cd - > /dev/null; fi; done"
16
15
  },
17
16
  "exports": {
18
17
  ".": {
@@ -44,7 +43,8 @@
44
43
  "prettier": "^3.5.3",
45
44
  "ts-jest": "^29.3.2",
46
45
  "tsup": "^8.0.2",
47
- "typescript": "latest"
46
+ "typescript": "latest",
47
+ "vitest": "^1.0.0"
48
48
  },
49
49
  "publishConfig": {
50
50
  "access": "public"