@spawnco/sdk-types 0.0.49 → 0.0.50

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/index.d.mts CHANGED
@@ -236,6 +236,30 @@ interface SpawnServerSDK__V1<TConfig = any> {
236
236
  * List all document names for this variant.
237
237
  */
238
238
  list(): Promise<string[]>;
239
+ /**
240
+ * Acquire a distributed lock on a key. Blocks until lock is acquired or timeout.
241
+ * Always use try/finally to ensure unlock() is called.
242
+ *
243
+ * @example
244
+ * await sdk.documents.lock("leaderboard");
245
+ * try {
246
+ * const data = await sdk.documents.get("leaderboard");
247
+ * // ... mutate data ...
248
+ * await sdk.documents.set("leaderboard", data);
249
+ * } finally {
250
+ * await sdk.documents.unlock("leaderboard");
251
+ * }
252
+ */
253
+ lock(key: string, options?: {
254
+ /** Auto-expire if worker crashes (default: 30000ms) */
255
+ ttlMs?: number;
256
+ /** Max time to wait for lock (default: 10000ms) */
257
+ waitMs?: number;
258
+ }): Promise<void>;
259
+ /**
260
+ * Release a distributed lock. Must be called after lock() in a finally block.
261
+ */
262
+ unlock(key: string): Promise<void>;
239
263
  };
240
264
  config: {
241
265
  get(): Promise<TConfig>;
package/dist/index.d.ts CHANGED
@@ -236,6 +236,30 @@ interface SpawnServerSDK__V1<TConfig = any> {
236
236
  * List all document names for this variant.
237
237
  */
238
238
  list(): Promise<string[]>;
239
+ /**
240
+ * Acquire a distributed lock on a key. Blocks until lock is acquired or timeout.
241
+ * Always use try/finally to ensure unlock() is called.
242
+ *
243
+ * @example
244
+ * await sdk.documents.lock("leaderboard");
245
+ * try {
246
+ * const data = await sdk.documents.get("leaderboard");
247
+ * // ... mutate data ...
248
+ * await sdk.documents.set("leaderboard", data);
249
+ * } finally {
250
+ * await sdk.documents.unlock("leaderboard");
251
+ * }
252
+ */
253
+ lock(key: string, options?: {
254
+ /** Auto-expire if worker crashes (default: 30000ms) */
255
+ ttlMs?: number;
256
+ /** Max time to wait for lock (default: 10000ms) */
257
+ waitMs?: number;
258
+ }): Promise<void>;
259
+ /**
260
+ * Release a distributed lock. Must be called after lock() in a finally block.
261
+ */
262
+ unlock(key: string): Promise<void>;
239
263
  };
240
264
  config: {
241
265
  get(): Promise<TConfig>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spawnco/sdk-types",
3
- "version": "0.0.49",
3
+ "version": "0.0.50",
4
4
  "description": "TypeScript type definitions for Spawn SDK",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
package/src/v1.ts CHANGED
@@ -260,6 +260,35 @@ export interface SpawnServerSDK__V1<TConfig = any> {
260
260
  * List all document names for this variant.
261
261
  */
262
262
  list(): Promise<string[]>;
263
+
264
+ /**
265
+ * Acquire a distributed lock on a key. Blocks until lock is acquired or timeout.
266
+ * Always use try/finally to ensure unlock() is called.
267
+ *
268
+ * @example
269
+ * await sdk.documents.lock("leaderboard");
270
+ * try {
271
+ * const data = await sdk.documents.get("leaderboard");
272
+ * // ... mutate data ...
273
+ * await sdk.documents.set("leaderboard", data);
274
+ * } finally {
275
+ * await sdk.documents.unlock("leaderboard");
276
+ * }
277
+ */
278
+ lock(
279
+ key: string,
280
+ options?: {
281
+ /** Auto-expire if worker crashes (default: 30000ms) */
282
+ ttlMs?: number;
283
+ /** Max time to wait for lock (default: 10000ms) */
284
+ waitMs?: number;
285
+ }
286
+ ): Promise<void>;
287
+
288
+ /**
289
+ * Release a distributed lock. Must be called after lock() in a finally block.
290
+ */
291
+ unlock(key: string): Promise<void>;
263
292
  };
264
293
 
265
294
  config: {