@workflow/core 5.0.0-beta.26 → 5.0.0-beta.28

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.
Files changed (52) hide show
  1. package/dist/create-hook.d.ts +2 -2
  2. package/dist/create-hook.js +1 -1
  3. package/dist/events-consumer.d.ts +1 -1
  4. package/dist/events-consumer.d.ts.map +1 -1
  5. package/dist/events-consumer.js +18 -2
  6. package/dist/flushable-stream.d.ts.map +1 -1
  7. package/dist/flushable-stream.js +9 -3
  8. package/dist/runtime/constants.d.ts +14 -0
  9. package/dist/runtime/constants.d.ts.map +1 -1
  10. package/dist/runtime/constants.js +31 -1
  11. package/dist/runtime/get-world-lazy.d.ts +3 -12
  12. package/dist/runtime/get-world-lazy.d.ts.map +1 -1
  13. package/dist/runtime/get-world-lazy.js +17 -27
  14. package/dist/runtime/replay-budget.d.ts.map +1 -1
  15. package/dist/runtime/replay-budget.js +6 -5
  16. package/dist/runtime/start.d.ts.map +1 -1
  17. package/dist/runtime/start.js +8 -10
  18. package/dist/runtime/step-executor.d.ts.map +1 -1
  19. package/dist/runtime/step-executor.js +65 -35
  20. package/dist/runtime/step-handler.d.ts.map +1 -1
  21. package/dist/runtime/step-handler.js +13 -11
  22. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  23. package/dist/runtime/suspension-handler.js +94 -72
  24. package/dist/runtime/wait-continuation.d.ts +2 -2
  25. package/dist/runtime/wait-continuation.d.ts.map +1 -1
  26. package/dist/runtime/wait-continuation.js +19 -6
  27. package/dist/runtime/world-compatibility.d.ts +5 -0
  28. package/dist/runtime/world-compatibility.d.ts.map +1 -0
  29. package/dist/runtime/world-compatibility.js +12 -0
  30. package/dist/runtime/world-init.d.ts +16 -41
  31. package/dist/runtime/world-init.d.ts.map +1 -1
  32. package/dist/runtime/world-init.js +17 -42
  33. package/dist/runtime/world-target.d.ts +11 -0
  34. package/dist/runtime/world-target.d.ts.map +1 -0
  35. package/dist/runtime/world-target.js +15 -0
  36. package/dist/runtime/world.d.ts +21 -9
  37. package/dist/runtime/world.d.ts.map +1 -1
  38. package/dist/runtime/world.js +45 -99
  39. package/dist/runtime.d.ts +2 -1
  40. package/dist/runtime.d.ts.map +1 -1
  41. package/dist/runtime.js +13 -9
  42. package/dist/serialization.d.ts.map +1 -1
  43. package/dist/serialization.js +47 -9
  44. package/dist/version.d.ts +1 -1
  45. package/dist/version.js +2 -2
  46. package/dist/workflow/create-hook.d.ts.map +1 -1
  47. package/dist/workflow/create-hook.js +4 -3
  48. package/dist/workflow/world-init-stub.d.ts +2 -2
  49. package/dist/workflow/world-init-stub.js +3 -3
  50. package/dist/workflow.d.ts.map +1 -1
  51. package/dist/workflow.js +6 -9
  52. package/package.json +11 -6
@@ -6,30 +6,17 @@
6
6
  * # Why this exists
7
7
  *
8
8
  * `getWorldLazy()` in `./get-world-lazy.ts` checks the globalThis cache
9
- * (populated by `world.ts`'s module-load side effect) before falling back
10
- * to a runtime-built dynamic `import('./world.js')`. When a server route
11
- * only consumes a single helper that goes through `getWorldLazy` — most
12
- * commonly `start` from `workflow/api` — webpack/turbopack tree-shake the
13
- * named import `{ getWorld } from './runtime/world.js'` out of
14
- * `runtime.ts`, taking `world.ts`'s module evaluation with it. The
9
+ * populated by `world.ts`'s module-load side effect. When a server route
10
+ * only consumes a helper that goes through `getWorldLazy` for example
11
+ * `start` from `workflow/api`, or `defineHook().resume()` from `workflow`
12
+ * — webpack/turbopack can tree-shake the named import `{ getWorld }` out
13
+ * of `runtime.ts`, taking `world.ts`'s module evaluation with it. The
15
14
  * globalThis registration never fires.
16
15
  *
17
- * `getWorldLazy` then falls through to its dynamic-import fallback, which
18
- * itself fails: webpack inlines `get-world-lazy.js` into the bundled route
19
- * file, so the relative specifier `./world.js` resolves against
20
- * `/var/task/<app>/.next/server/app/<...>/route.js` where no sibling
21
- * `world.js` exists — and Node throws `MODULE_NOT_FOUND`. The symptom is a
22
- * cold-start regression: the very first user request that goes through
23
- * `start()` fails until some other code path (typically the queue-driven
24
- * `/.well-known/workflow/v1/flow` route, which uses `getWorld` directly
25
- * via `workflowEntrypoint`) has loaded `world.ts` and populated the
26
- * cache.
27
- *
28
- * Importing this module for its side effect — exactly once, from the
29
- * host-side `workflow/api` (`packages/workflow/src/api.ts`) — guarantees
30
- * `world.ts` enters the bundle, the global is registered at module load,
31
- * and `getWorldLazy()` short-circuits to the registered function on the
32
- * first call.
16
+ * Importing this module for its side effect from the host-side `workflow`
17
+ * and `workflow/api` entries guarantees `world.ts` enters the bundle, the
18
+ * global is registered at module load, and `getWorldLazy()` short-circuits
19
+ * to the registered function on the first call.
33
20
  *
34
21
  * # Why a separate module instead of importing `./world.js` directly
35
22
  *
@@ -47,29 +34,17 @@
47
34
  * `workflow` condition active, so they pick up the stub and never reach
48
35
  * `world.ts`. Host bundlers (webpack, turbopack, Node.js) use the
49
36
  * `default` (or `node`) condition and pick up this file, loading
50
- * `world.ts` as intended. The split keeps `@workflow/world-vercel`,
51
- * `@workflow/world-local`, `cbor-x`, and other server-only deps out of
52
- * the workflow sandbox bundle.
53
- *
54
- * # Why we keep the `getWorldLazy` dynamic-import fallback
55
- *
56
- * The fallback remains in `./get-world-lazy.ts` as a defense-in-depth for
57
- * environments we haven't accounted for (CJS test runners, scripts that
58
- * import `start` without going through `workflow/api`, future bundlers
59
- * with stricter tree-shaking). With this init module in place, the
60
- * fallback should never fire in normal use — but if it does, the
61
- * dynamic-import branch still resolves correctly when `world.js` is
62
- * physically adjacent on disk (e.g., direct Node.js execution of
63
- * unbundled source).
37
+ * `world.ts` as intended. The split keeps the configured world package
38
+ * and other server-only deps out of the workflow sandbox bundle.
64
39
  *
65
40
  * # Maintenance notes
66
41
  *
67
42
  * If you add another `getWorldLazy()` consumer that's reachable from a
68
- * host route without going through `workflow/api` (e.g., a new helper in
69
- * `workflow/runtime`), make sure that entry also imports this module —
70
- * or that it transitively reaches `world.ts` via a non-tree-shakeable
71
- * path. Adding a regression test in `world-init.test.ts` is preferred to
72
- * relying on careful manual tracing.
43
+ * host route without going through `workflow` or `workflow/api`, make
44
+ * sure that entry also imports this module — or that it transitively
45
+ * reaches `world.ts` via a non-tree-shakeable path. Adding a regression
46
+ * test in `world-init.test.ts` is preferred to relying on careful manual
47
+ * tracing.
73
48
  */
74
49
  import './world.js';
75
50
  //# sourceMappingURL=world-init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"world-init.d.ts","sourceRoot":"","sources":["../../src/runtime/world-init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG;AACH,OAAO,YAAY,CAAC"}
1
+ {"version":3,"file":"world-init.d.ts","sourceRoot":"","sources":["../../src/runtime/world-init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,OAAO,YAAY,CAAC"}
@@ -6,30 +6,17 @@
6
6
  * # Why this exists
7
7
  *
8
8
  * `getWorldLazy()` in `./get-world-lazy.ts` checks the globalThis cache
9
- * (populated by `world.ts`'s module-load side effect) before falling back
10
- * to a runtime-built dynamic `import('./world.js')`. When a server route
11
- * only consumes a single helper that goes through `getWorldLazy` — most
12
- * commonly `start` from `workflow/api` — webpack/turbopack tree-shake the
13
- * named import `{ getWorld } from './runtime/world.js'` out of
14
- * `runtime.ts`, taking `world.ts`'s module evaluation with it. The
9
+ * populated by `world.ts`'s module-load side effect. When a server route
10
+ * only consumes a helper that goes through `getWorldLazy` for example
11
+ * `start` from `workflow/api`, or `defineHook().resume()` from `workflow`
12
+ * — webpack/turbopack can tree-shake the named import `{ getWorld }` out
13
+ * of `runtime.ts`, taking `world.ts`'s module evaluation with it. The
15
14
  * globalThis registration never fires.
16
15
  *
17
- * `getWorldLazy` then falls through to its dynamic-import fallback, which
18
- * itself fails: webpack inlines `get-world-lazy.js` into the bundled route
19
- * file, so the relative specifier `./world.js` resolves against
20
- * `/var/task/<app>/.next/server/app/<...>/route.js` where no sibling
21
- * `world.js` exists — and Node throws `MODULE_NOT_FOUND`. The symptom is a
22
- * cold-start regression: the very first user request that goes through
23
- * `start()` fails until some other code path (typically the queue-driven
24
- * `/.well-known/workflow/v1/flow` route, which uses `getWorld` directly
25
- * via `workflowEntrypoint`) has loaded `world.ts` and populated the
26
- * cache.
27
- *
28
- * Importing this module for its side effect — exactly once, from the
29
- * host-side `workflow/api` (`packages/workflow/src/api.ts`) — guarantees
30
- * `world.ts` enters the bundle, the global is registered at module load,
31
- * and `getWorldLazy()` short-circuits to the registered function on the
32
- * first call.
16
+ * Importing this module for its side effect from the host-side `workflow`
17
+ * and `workflow/api` entries guarantees `world.ts` enters the bundle, the
18
+ * global is registered at module load, and `getWorldLazy()` short-circuits
19
+ * to the registered function on the first call.
33
20
  *
34
21
  * # Why a separate module instead of importing `./world.js` directly
35
22
  *
@@ -47,29 +34,17 @@
47
34
  * `workflow` condition active, so they pick up the stub and never reach
48
35
  * `world.ts`. Host bundlers (webpack, turbopack, Node.js) use the
49
36
  * `default` (or `node`) condition and pick up this file, loading
50
- * `world.ts` as intended. The split keeps `@workflow/world-vercel`,
51
- * `@workflow/world-local`, `cbor-x`, and other server-only deps out of
52
- * the workflow sandbox bundle.
53
- *
54
- * # Why we keep the `getWorldLazy` dynamic-import fallback
55
- *
56
- * The fallback remains in `./get-world-lazy.ts` as a defense-in-depth for
57
- * environments we haven't accounted for (CJS test runners, scripts that
58
- * import `start` without going through `workflow/api`, future bundlers
59
- * with stricter tree-shaking). With this init module in place, the
60
- * fallback should never fire in normal use — but if it does, the
61
- * dynamic-import branch still resolves correctly when `world.js` is
62
- * physically adjacent on disk (e.g., direct Node.js execution of
63
- * unbundled source).
37
+ * `world.ts` as intended. The split keeps the configured world package
38
+ * and other server-only deps out of the workflow sandbox bundle.
64
39
  *
65
40
  * # Maintenance notes
66
41
  *
67
42
  * If you add another `getWorldLazy()` consumer that's reachable from a
68
- * host route without going through `workflow/api` (e.g., a new helper in
69
- * `workflow/runtime`), make sure that entry also imports this module —
70
- * or that it transitively reaches `world.ts` via a non-tree-shakeable
71
- * path. Adding a regression test in `world-init.test.ts` is preferred to
72
- * relying on careful manual tracing.
43
+ * host route without going through `workflow` or `workflow/api`, make
44
+ * sure that entry also imports this module — or that it transitively
45
+ * reaches `world.ts` via a non-tree-shakeable path. Adding a regression
46
+ * test in `world-init.test.ts` is preferred to relying on careful manual
47
+ * tracing.
73
48
  */
74
49
  import './world.js';
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGQtaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lL3dvcmxkLWluaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdFRztBQUNILE9BQU8sWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXJ2ZXItb25seSBzaWRlLWVmZmVjdCBtb2R1bGUgdGhhdCBlbnN1cmVzIGB3b3JsZC50c2AgaXMgbG9hZGVkIHNvIGl0c1xuICogbW9kdWxlLWxvYWQgc2lkZSBlZmZlY3Qg4oCUIGBnbG9iYWxUaGlzW0dldFdvcmxkRm5LZXldID8/PSBnZXRXb3JsZGAg4oCUXG4gKiBmaXJlcyBpbiBob3N0IGJ1bmRsZXMuXG4gKlxuICogIyBXaHkgdGhpcyBleGlzdHNcbiAqXG4gKiBgZ2V0V29ybGRMYXp5KClgIGluIGAuL2dldC13b3JsZC1sYXp5LnRzYCBjaGVja3MgdGhlIGdsb2JhbFRoaXMgY2FjaGVcbiAqIChwb3B1bGF0ZWQgYnkgYHdvcmxkLnRzYCdzIG1vZHVsZS1sb2FkIHNpZGUgZWZmZWN0KSBiZWZvcmUgZmFsbGluZyBiYWNrXG4gKiB0byBhIHJ1bnRpbWUtYnVpbHQgZHluYW1pYyBgaW1wb3J0KCcuL3dvcmxkLmpzJylgLiBXaGVuIGEgc2VydmVyIHJvdXRlXG4gKiBvbmx5IGNvbnN1bWVzIGEgc2luZ2xlIGhlbHBlciB0aGF0IGdvZXMgdGhyb3VnaCBgZ2V0V29ybGRMYXp5YCDigJQgbW9zdFxuICogY29tbW9ubHkgYHN0YXJ0YCBmcm9tIGB3b3JrZmxvdy9hcGlgIOKAlCB3ZWJwYWNrL3R1cmJvcGFjayB0cmVlLXNoYWtlIHRoZVxuICogbmFtZWQgaW1wb3J0IGB7IGdldFdvcmxkIH0gZnJvbSAnLi9ydW50aW1lL3dvcmxkLmpzJ2Agb3V0IG9mXG4gKiBgcnVudGltZS50c2AsIHRha2luZyBgd29ybGQudHNgJ3MgbW9kdWxlIGV2YWx1YXRpb24gd2l0aCBpdC4gVGhlXG4gKiBnbG9iYWxUaGlzIHJlZ2lzdHJhdGlvbiBuZXZlciBmaXJlcy5cbiAqXG4gKiBgZ2V0V29ybGRMYXp5YCB0aGVuIGZhbGxzIHRocm91Z2ggdG8gaXRzIGR5bmFtaWMtaW1wb3J0IGZhbGxiYWNrLCB3aGljaFxuICogaXRzZWxmIGZhaWxzOiB3ZWJwYWNrIGlubGluZXMgYGdldC13b3JsZC1sYXp5LmpzYCBpbnRvIHRoZSBidW5kbGVkIHJvdXRlXG4gKiBmaWxlLCBzbyB0aGUgcmVsYXRpdmUgc3BlY2lmaWVyIGAuL3dvcmxkLmpzYCByZXNvbHZlcyBhZ2FpbnN0XG4gKiBgL3Zhci90YXNrLzxhcHA+Ly5uZXh0L3NlcnZlci9hcHAvPC4uLj4vcm91dGUuanNgIOKAlCB3aGVyZSBubyBzaWJsaW5nXG4gKiBgd29ybGQuanNgIGV4aXN0cyDigJQgYW5kIE5vZGUgdGhyb3dzIGBNT0RVTEVfTk9UX0ZPVU5EYC4gVGhlIHN5bXB0b20gaXMgYVxuICogY29sZC1zdGFydCByZWdyZXNzaW9uOiB0aGUgdmVyeSBmaXJzdCB1c2VyIHJlcXVlc3QgdGhhdCBnb2VzIHRocm91Z2hcbiAqIGBzdGFydCgpYCBmYWlscyB1bnRpbCBzb21lIG90aGVyIGNvZGUgcGF0aCAodHlwaWNhbGx5IHRoZSBxdWV1ZS1kcml2ZW5cbiAqIGAvLndlbGwta25vd24vd29ya2Zsb3cvdjEvZmxvd2Agcm91dGUsIHdoaWNoIHVzZXMgYGdldFdvcmxkYCBkaXJlY3RseVxuICogdmlhIGB3b3JrZmxvd0VudHJ5cG9pbnRgKSBoYXMgbG9hZGVkIGB3b3JsZC50c2AgYW5kIHBvcHVsYXRlZCB0aGVcbiAqIGNhY2hlLlxuICpcbiAqIEltcG9ydGluZyB0aGlzIG1vZHVsZSBmb3IgaXRzIHNpZGUgZWZmZWN0IOKAlCBleGFjdGx5IG9uY2UsIGZyb20gdGhlXG4gKiBob3N0LXNpZGUgYHdvcmtmbG93L2FwaWAgKGBwYWNrYWdlcy93b3JrZmxvdy9zcmMvYXBpLnRzYCkg4oCUIGd1YXJhbnRlZXNcbiAqIGB3b3JsZC50c2AgZW50ZXJzIHRoZSBidW5kbGUsIHRoZSBnbG9iYWwgaXMgcmVnaXN0ZXJlZCBhdCBtb2R1bGUgbG9hZCxcbiAqIGFuZCBgZ2V0V29ybGRMYXp5KClgIHNob3J0LWNpcmN1aXRzIHRvIHRoZSByZWdpc3RlcmVkIGZ1bmN0aW9uIG9uIHRoZVxuICogZmlyc3QgY2FsbC5cbiAqXG4gKiAjIFdoeSBhIHNlcGFyYXRlIG1vZHVsZSBpbnN0ZWFkIG9mIGltcG9ydGluZyBgLi93b3JsZC5qc2AgZGlyZWN0bHlcbiAqXG4gKiBgd29ybGQudHNgIGlzIGludGVybmFsIHRvIGBAd29ya2Zsb3cvY29yZWAgYW5kIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNcbiAqIGV4cG9ydHMgc3VyZmFjZS4gQWRkaW5nIGEgZGVkaWNhdGVkIHB1YmxpYyBpbml0IGVudHJ5ICh0aGlzIGZpbGUpXG4gKiBrZWVwcyB0aGUgc2lkZS1lZmZlY3QgaW50ZW50IG9idmlvdXMgdG8gYW55b25lIHJlYWRpbmdcbiAqIGBwYWNrYWdlcy93b3JrZmxvdy9zcmMvYXBpLnRzYCwgYW5kIGxldHMgdGhlIGB3b3JrZmxvd2AgZXhwb3J0XG4gKiBjb25kaXRpb24gcm91dGUgdG8gYSBzdHViIGZvciBWTS9zdGVwIGJ1bmRsZXMgKHNlZSBiZWxvdykuXG4gKlxuICogIyBXaHkgdGhpcyBkb2Vzbid0IGJyZWFrIFZNL3N0ZXAgYnVuZGxlc1xuICpcbiAqIFRoZSBgQHdvcmtmbG93L2NvcmUvcnVudGltZS93b3JsZC1pbml0YCBleHBvcnQgcmVzb2x2ZXMgdmlhIHRoZVxuICogYHdvcmtmbG93YCBjb25kaXRpb24gdG8gYC4vZGlzdC93b3JrZmxvdy93b3JsZC1pbml0LXN0dWIuanNgLCBhbiBlbXB0eVxuICogbW9kdWxlLiBFc2J1aWxkIHJ1bnMgdGhlIHdvcmtmbG93IFZNIGFuZCBzdGVwIGJ1bmRsZXJzIHdpdGggdGhlXG4gKiBgd29ya2Zsb3dgIGNvbmRpdGlvbiBhY3RpdmUsIHNvIHRoZXkgcGljayB1cCB0aGUgc3R1YiBhbmQgbmV2ZXIgcmVhY2hcbiAqIGB3b3JsZC50c2AuIEhvc3QgYnVuZGxlcnMgKHdlYnBhY2ssIHR1cmJvcGFjaywgTm9kZS5qcykgdXNlIHRoZVxuICogYGRlZmF1bHRgIChvciBgbm9kZWApIGNvbmRpdGlvbiBhbmQgcGljayB1cCB0aGlzIGZpbGUsIGxvYWRpbmdcbiAqIGB3b3JsZC50c2AgYXMgaW50ZW5kZWQuIFRoZSBzcGxpdCBrZWVwcyBgQHdvcmtmbG93L3dvcmxkLXZlcmNlbGAsXG4gKiBgQHdvcmtmbG93L3dvcmxkLWxvY2FsYCwgYGNib3IteGAsIGFuZCBvdGhlciBzZXJ2ZXItb25seSBkZXBzIG91dCBvZlxuICogdGhlIHdvcmtmbG93IHNhbmRib3ggYnVuZGxlLlxuICpcbiAqICMgV2h5IHdlIGtlZXAgdGhlIGBnZXRXb3JsZExhenlgIGR5bmFtaWMtaW1wb3J0IGZhbGxiYWNrXG4gKlxuICogVGhlIGZhbGxiYWNrIHJlbWFpbnMgaW4gYC4vZ2V0LXdvcmxkLWxhenkudHNgIGFzIGEgZGVmZW5zZS1pbi1kZXB0aCBmb3JcbiAqIGVudmlyb25tZW50cyB3ZSBoYXZlbid0IGFjY291bnRlZCBmb3IgKENKUyB0ZXN0IHJ1bm5lcnMsIHNjcmlwdHMgdGhhdFxuICogaW1wb3J0IGBzdGFydGAgd2l0aG91dCBnb2luZyB0aHJvdWdoIGB3b3JrZmxvdy9hcGlgLCBmdXR1cmUgYnVuZGxlcnNcbiAqIHdpdGggc3RyaWN0ZXIgdHJlZS1zaGFraW5nKS4gV2l0aCB0aGlzIGluaXQgbW9kdWxlIGluIHBsYWNlLCB0aGVcbiAqIGZhbGxiYWNrIHNob3VsZCBuZXZlciBmaXJlIGluIG5vcm1hbCB1c2Ug4oCUIGJ1dCBpZiBpdCBkb2VzLCB0aGVcbiAqIGR5bmFtaWMtaW1wb3J0IGJyYW5jaCBzdGlsbCByZXNvbHZlcyBjb3JyZWN0bHkgd2hlbiBgd29ybGQuanNgIGlzXG4gKiBwaHlzaWNhbGx5IGFkamFjZW50IG9uIGRpc2sgKGUuZy4sIGRpcmVjdCBOb2RlLmpzIGV4ZWN1dGlvbiBvZlxuICogdW5idW5kbGVkIHNvdXJjZSkuXG4gKlxuICogIyBNYWludGVuYW5jZSBub3Rlc1xuICpcbiAqIElmIHlvdSBhZGQgYW5vdGhlciBgZ2V0V29ybGRMYXp5KClgIGNvbnN1bWVyIHRoYXQncyByZWFjaGFibGUgZnJvbSBhXG4gKiBob3N0IHJvdXRlIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCBgd29ya2Zsb3cvYXBpYCAoZS5nLiwgYSBuZXcgaGVscGVyIGluXG4gKiBgd29ya2Zsb3cvcnVudGltZWApLCBtYWtlIHN1cmUgdGhhdCBlbnRyeSBhbHNvIGltcG9ydHMgdGhpcyBtb2R1bGUg4oCUXG4gKiBvciB0aGF0IGl0IHRyYW5zaXRpdmVseSByZWFjaGVzIGB3b3JsZC50c2AgdmlhIGEgbm9uLXRyZWUtc2hha2VhYmxlXG4gKiBwYXRoLiBBZGRpbmcgYSByZWdyZXNzaW9uIHRlc3QgaW4gYHdvcmxkLWluaXQudGVzdC50c2AgaXMgcHJlZmVycmVkIHRvXG4gKiByZWx5aW5nIG9uIGNhcmVmdWwgbWFudWFsIHRyYWNpbmcuXG4gKi9cbmltcG9ydCAnLi93b3JsZC5qcyc7XG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGQtaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lL3dvcmxkLWluaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0NHO0FBQ0gsT0FBTyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlcnZlci1vbmx5IHNpZGUtZWZmZWN0IG1vZHVsZSB0aGF0IGVuc3VyZXMgYHdvcmxkLnRzYCBpcyBsb2FkZWQgc28gaXRzXG4gKiBtb2R1bGUtbG9hZCBzaWRlIGVmZmVjdCDigJQgYGdsb2JhbFRoaXNbR2V0V29ybGRGbktleV0gPz89IGdldFdvcmxkYCDigJRcbiAqIGZpcmVzIGluIGhvc3QgYnVuZGxlcy5cbiAqXG4gKiAjIFdoeSB0aGlzIGV4aXN0c1xuICpcbiAqIGBnZXRXb3JsZExhenkoKWAgaW4gYC4vZ2V0LXdvcmxkLWxhenkudHNgIGNoZWNrcyB0aGUgZ2xvYmFsVGhpcyBjYWNoZVxuICogcG9wdWxhdGVkIGJ5IGB3b3JsZC50c2AncyBtb2R1bGUtbG9hZCBzaWRlIGVmZmVjdC4gV2hlbiBhIHNlcnZlciByb3V0ZVxuICogb25seSBjb25zdW1lcyBhIGhlbHBlciB0aGF0IGdvZXMgdGhyb3VnaCBgZ2V0V29ybGRMYXp5YCDigJQgZm9yIGV4YW1wbGVcbiAqIGBzdGFydGAgZnJvbSBgd29ya2Zsb3cvYXBpYCwgb3IgYGRlZmluZUhvb2soKS5yZXN1bWUoKWAgZnJvbSBgd29ya2Zsb3dgXG4gKiDigJQgd2VicGFjay90dXJib3BhY2sgY2FuIHRyZWUtc2hha2UgdGhlIG5hbWVkIGltcG9ydCBgeyBnZXRXb3JsZCB9YCBvdXRcbiAqIG9mIGBydW50aW1lLnRzYCwgdGFraW5nIGB3b3JsZC50c2AncyBtb2R1bGUgZXZhbHVhdGlvbiB3aXRoIGl0LiBUaGVcbiAqIGdsb2JhbFRoaXMgcmVnaXN0cmF0aW9uIG5ldmVyIGZpcmVzLlxuICpcbiAqIEltcG9ydGluZyB0aGlzIG1vZHVsZSBmb3IgaXRzIHNpZGUgZWZmZWN0IGZyb20gdGhlIGhvc3Qtc2lkZSBgd29ya2Zsb3dgXG4gKiBhbmQgYHdvcmtmbG93L2FwaWAgZW50cmllcyBndWFyYW50ZWVzIGB3b3JsZC50c2AgZW50ZXJzIHRoZSBidW5kbGUsIHRoZVxuICogZ2xvYmFsIGlzIHJlZ2lzdGVyZWQgYXQgbW9kdWxlIGxvYWQsIGFuZCBgZ2V0V29ybGRMYXp5KClgIHNob3J0LWNpcmN1aXRzXG4gKiB0byB0aGUgcmVnaXN0ZXJlZCBmdW5jdGlvbiBvbiB0aGUgZmlyc3QgY2FsbC5cbiAqXG4gKiAjIFdoeSBhIHNlcGFyYXRlIG1vZHVsZSBpbnN0ZWFkIG9mIGltcG9ydGluZyBgLi93b3JsZC5qc2AgZGlyZWN0bHlcbiAqXG4gKiBgd29ybGQudHNgIGlzIGludGVybmFsIHRvIGBAd29ya2Zsb3cvY29yZWAgYW5kIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNcbiAqIGV4cG9ydHMgc3VyZmFjZS4gQWRkaW5nIGEgZGVkaWNhdGVkIHB1YmxpYyBpbml0IGVudHJ5ICh0aGlzIGZpbGUpXG4gKiBrZWVwcyB0aGUgc2lkZS1lZmZlY3QgaW50ZW50IG9idmlvdXMgdG8gYW55b25lIHJlYWRpbmdcbiAqIGBwYWNrYWdlcy93b3JrZmxvdy9zcmMvYXBpLnRzYCwgYW5kIGxldHMgdGhlIGB3b3JrZmxvd2AgZXhwb3J0XG4gKiBjb25kaXRpb24gcm91dGUgdG8gYSBzdHViIGZvciBWTS9zdGVwIGJ1bmRsZXMgKHNlZSBiZWxvdykuXG4gKlxuICogIyBXaHkgdGhpcyBkb2Vzbid0IGJyZWFrIFZNL3N0ZXAgYnVuZGxlc1xuICpcbiAqIFRoZSBgQHdvcmtmbG93L2NvcmUvcnVudGltZS93b3JsZC1pbml0YCBleHBvcnQgcmVzb2x2ZXMgdmlhIHRoZVxuICogYHdvcmtmbG93YCBjb25kaXRpb24gdG8gYC4vZGlzdC93b3JrZmxvdy93b3JsZC1pbml0LXN0dWIuanNgLCBhbiBlbXB0eVxuICogbW9kdWxlLiBFc2J1aWxkIHJ1bnMgdGhlIHdvcmtmbG93IFZNIGFuZCBzdGVwIGJ1bmRsZXJzIHdpdGggdGhlXG4gKiBgd29ya2Zsb3dgIGNvbmRpdGlvbiBhY3RpdmUsIHNvIHRoZXkgcGljayB1cCB0aGUgc3R1YiBhbmQgbmV2ZXIgcmVhY2hcbiAqIGB3b3JsZC50c2AuIEhvc3QgYnVuZGxlcnMgKHdlYnBhY2ssIHR1cmJvcGFjaywgTm9kZS5qcykgdXNlIHRoZVxuICogYGRlZmF1bHRgIChvciBgbm9kZWApIGNvbmRpdGlvbiBhbmQgcGljayB1cCB0aGlzIGZpbGUsIGxvYWRpbmdcbiAqIGB3b3JsZC50c2AgYXMgaW50ZW5kZWQuIFRoZSBzcGxpdCBrZWVwcyB0aGUgY29uZmlndXJlZCB3b3JsZCBwYWNrYWdlXG4gKiBhbmQgb3RoZXIgc2VydmVyLW9ubHkgZGVwcyBvdXQgb2YgdGhlIHdvcmtmbG93IHNhbmRib3ggYnVuZGxlLlxuICpcbiAqICMgTWFpbnRlbmFuY2Ugbm90ZXNcbiAqXG4gKiBJZiB5b3UgYWRkIGFub3RoZXIgYGdldFdvcmxkTGF6eSgpYCBjb25zdW1lciB0aGF0J3MgcmVhY2hhYmxlIGZyb20gYVxuICogaG9zdCByb3V0ZSB3aXRob3V0IGdvaW5nIHRocm91Z2ggYHdvcmtmbG93YCBvciBgd29ya2Zsb3cvYXBpYCwgbWFrZVxuICogc3VyZSB0aGF0IGVudHJ5IGFsc28gaW1wb3J0cyB0aGlzIG1vZHVsZSDigJQgb3IgdGhhdCBpdCB0cmFuc2l0aXZlbHlcbiAqIHJlYWNoZXMgYHdvcmxkLnRzYCB2aWEgYSBub24tdHJlZS1zaGFrZWFibGUgcGF0aC4gQWRkaW5nIGEgcmVncmVzc2lvblxuICogdGVzdCBpbiBgd29ybGQtaW5pdC50ZXN0LnRzYCBpcyBwcmVmZXJyZWQgdG8gcmVseWluZyBvbiBjYXJlZnVsIG1hbnVhbFxuICogdHJhY2luZy5cbiAqL1xuaW1wb3J0ICcuL3dvcmxkLmpzJztcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import type { World } from '@workflow/world';
2
+ /**
3
+ * Unaliased target stub.
4
+ *
5
+ * Framework integrations alias this module to the configured world package at
6
+ * build time, including the default local world. Reaching this file means that
7
+ * static injection did not happen, so fail loudly instead of importing a
8
+ * fallback world that bundlers could retain alongside the configured one.
9
+ */
10
+ export declare function createWorld(): World | Promise<World>;
11
+ //# sourceMappingURL=world-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world-target.d.ts","sourceRoot":"","sources":["../../src/runtime/world-target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAQ7C;;;;;;;GAOG;AACH,wBAAgB,WAAW,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAEpD"}
@@ -0,0 +1,15 @@
1
+ function throwMissingStaticInjection() {
2
+ throw new Error('Workflow target world was not statically injected. Configure a Workflow builder/framework plugin so @workflow/core/runtime/world-target is aliased to the selected world package.');
3
+ }
4
+ /**
5
+ * Unaliased target stub.
6
+ *
7
+ * Framework integrations alias this module to the configured world package at
8
+ * build time, including the default local world. Reaching this file means that
9
+ * static injection did not happen, so fail loudly instead of importing a
10
+ * fallback world that bundlers could retain alongside the configured one.
11
+ */
12
+ export function createWorld() {
13
+ throwMissingStaticInjection();
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGQtdGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bnRpbWUvd29ybGQtdGFyZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLFNBQVMsMkJBQTJCO0lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQ2IsbUxBQW1MLENBQ3BMLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxXQUFXO0lBQ3pCLDJCQUEyQixFQUFFLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgV29ybGQgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuXG5mdW5jdGlvbiB0aHJvd01pc3NpbmdTdGF0aWNJbmplY3Rpb24oKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ1dvcmtmbG93IHRhcmdldCB3b3JsZCB3YXMgbm90IHN0YXRpY2FsbHkgaW5qZWN0ZWQuIENvbmZpZ3VyZSBhIFdvcmtmbG93IGJ1aWxkZXIvZnJhbWV3b3JrIHBsdWdpbiBzbyBAd29ya2Zsb3cvY29yZS9ydW50aW1lL3dvcmxkLXRhcmdldCBpcyBhbGlhc2VkIHRvIHRoZSBzZWxlY3RlZCB3b3JsZCBwYWNrYWdlLidcbiAgKTtcbn1cblxuLyoqXG4gKiBVbmFsaWFzZWQgdGFyZ2V0IHN0dWIuXG4gKlxuICogRnJhbWV3b3JrIGludGVncmF0aW9ucyBhbGlhcyB0aGlzIG1vZHVsZSB0byB0aGUgY29uZmlndXJlZCB3b3JsZCBwYWNrYWdlIGF0XG4gKiBidWlsZCB0aW1lLCBpbmNsdWRpbmcgdGhlIGRlZmF1bHQgbG9jYWwgd29ybGQuIFJlYWNoaW5nIHRoaXMgZmlsZSBtZWFucyB0aGF0XG4gKiBzdGF0aWMgaW5qZWN0aW9uIGRpZCBub3QgaGFwcGVuLCBzbyBmYWlsIGxvdWRseSBpbnN0ZWFkIG9mIGltcG9ydGluZyBhXG4gKiBmYWxsYmFjayB3b3JsZCB0aGF0IGJ1bmRsZXJzIGNvdWxkIHJldGFpbiBhbG9uZ3NpZGUgdGhlIGNvbmZpZ3VyZWQgb25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV29ybGQoKTogV29ybGQgfCBQcm9taXNlPFdvcmxkPiB7XG4gIHRocm93TWlzc2luZ1N0YXRpY0luamVjdGlvbigpO1xufVxuIl19
@@ -1,15 +1,27 @@
1
1
  import type { World } from '@workflow/world';
2
+ export type WorldFactoryModule = {
3
+ createWorld?: () => World | Promise<World>;
4
+ /** @deprecated World packages should export `createWorld()` instead. */
5
+ createLocalWorld?: () => World | Promise<World>;
6
+ /** @deprecated World packages should export `createWorld()` instead. */
7
+ createVercelWorld?: () => World | Promise<World>;
8
+ default?: (() => World | Promise<World>) | World;
9
+ };
2
10
  /**
3
- * Create a new world instance based on environment variables.
4
- * WORKFLOW_TARGET_WORLD is used to determine the target world.
11
+ * Create a World instance from a world factory module. Shared by
12
+ * `createWorld()` (for the statically injected target world module) and
13
+ * tooling that loads a world module dynamically (e.g. the Nitro dev
14
+ * handler and `@workflow/world-testing`). Legacy world-specific factory
15
+ * names are still accepted for compatibility, but world packages should
16
+ * export `createWorld()`.
17
+ */
18
+ export declare function createWorldFromModule(mod: WorldFactoryModule): World | Promise<World>;
19
+ /**
20
+ * Create a new world instance from the statically imported target world module.
5
21
  *
6
- * Note: WORKFLOW_VERCEL_* env vars (PROJECT, TEAM, AUTH_TOKEN, etc.) are
7
- * intentionally NOT read here. Those are for CLI/observability tooling only
8
- * and should not affect runtime behavior. The Vercel runtime provides
9
- * authentication via OIDC tokens and project context via system env vars
10
- * (VERCEL_DEPLOYMENT_ID, VERCEL_PROJECT_ID). Tooling that needs these env
11
- * vars should call createVercelWorld() directly with an explicit config and
12
- * use setWorld() to inject the instance.
22
+ * Framework integrations alias `@workflow/core/runtime/world-target` to the
23
+ * concrete world package at build time, so bundlers see a static import path
24
+ * instead of tracing a runtime-built require/import expression.
13
25
  */
14
26
  export declare const createWorld: () => Promise<World>;
15
27
  export type WorldHandlers = Pick<World, 'createQueueHandler' | 'specVersion'>;
@@ -1 +1 @@
1
- {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../src/runtime/world.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AA4D7C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,KAAK,CAqDjD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,oBAAoB,GAAG,aAAa,CAAC,CAAC;AAE9E;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,aAAa,CAkB9D,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAa,OAAO,CAAC,KAAK,CAc9C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,KAAK,GAAG,SAAS,KAAG,IAKnD,CAAC"}
1
+ {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../src/runtime/world.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAiB7C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3C,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;CAClD,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,kBAAkB,GACtB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAoBxB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,KAAK,CAkBjD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,oBAAoB,GAAG,aAAa,CAAC,CAAC;AAE9E;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,aAAa,CAoB9D,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAa,OAAO,CAAC,KAAK,CAgB9C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,KAAK,GAAG,SAAS,KAAG,IAKnD,CAAC"}
@@ -1,112 +1,57 @@
1
- import { createRequire } from 'node:module';
2
- import { pathToFileURL } from 'node:url';
3
- import { isVercelWorldTarget, resolveWorkflowTargetWorld, } from '@workflow/utils';
4
- import { createLocalWorld } from '@workflow/world-local';
5
- import { createVercelWorld } from '@workflow/world-vercel';
6
- function getRuntimeRequire() {
7
- // Resolve from the app root (process.cwd()) so custom world packages
8
- // like @workflow/world-postgres can be found even though they're not
9
- // dependencies of @workflow/core. Using import.meta.url would resolve
10
- // from core's location, missing app-level packages.
11
- try {
12
- return createRequire(pathToFileURL(process.cwd() + '/package.json').href);
13
- }
14
- catch {
15
- return createRequire(import.meta.url);
16
- }
17
- }
1
+ import * as targetWorldModule from '@workflow/core/runtime/world-target';
2
+ import { assertWorldSupportsRuntimeProtocol } from './world-compatibility.js';
18
3
  const WorldCache = Symbol.for('@workflow/world//cache');
19
4
  const StubbedWorldCache = Symbol.for('@workflow/world//stubbedCache');
20
5
  const WorldCachePromise = Symbol.for('@workflow/world//cachePromise');
21
6
  const StubbedWorldCachePromise = Symbol.for('@workflow/world//stubbedCachePromise');
22
7
  const globalSymbols = globalThis;
23
- // Dynamic import for custom world modules. Uses a standard import()
24
- // wrapped in a try/catch with require() fallback for CJS test runners.
25
- // Note: the previous `new Function('specifier', 'return import(specifier)')`
26
- // pattern was replaced because Turbopack (Next.js) treats unresolvable
27
- // dynamic imports from `new Function` as fatal build errors in the V2
28
- // combined flow route context.
29
- function resolveModulePath(specifier) {
30
- // Already a file:// URL
31
- if (specifier.startsWith('file://')) {
32
- return specifier;
8
+ /**
9
+ * Create a World instance from a world factory module. Shared by
10
+ * `createWorld()` (for the statically injected target world module) and
11
+ * tooling that loads a world module dynamically (e.g. the Nitro dev
12
+ * handler and `@workflow/world-testing`). Legacy world-specific factory
13
+ * names are still accepted for compatibility, but world packages should
14
+ * export `createWorld()`.
15
+ */
16
+ export function createWorldFromModule(mod) {
17
+ if (typeof mod.createWorld === 'function') {
18
+ return mod.createWorld();
33
19
  }
34
- // Absolute path - convert to file:// URL
35
- if (specifier.startsWith('/')) {
36
- return pathToFileURL(specifier).href;
20
+ if (typeof mod.createLocalWorld === 'function') {
21
+ return mod.createLocalWorld();
37
22
  }
38
- // Relative path - resolve relative to cwd and convert to file:// URL
39
- if (specifier.startsWith('./') || specifier.startsWith('../')) {
40
- return pathToFileURL(
41
- /* turbopackIgnore: true */ process.cwd() + '/' + specifier).href;
23
+ if (typeof mod.createVercelWorld === 'function') {
24
+ return mod.createVercelWorld();
42
25
  }
43
- // Package specifier - use require.resolve to find the package
44
- try {
45
- return pathToFileURL(getRuntimeRequire().resolve(specifier)).href;
26
+ if (typeof mod.default === 'function') {
27
+ return mod.default();
46
28
  }
47
- catch {
48
- return specifier;
29
+ if (mod.default && typeof mod.default === 'object') {
30
+ return mod.default;
49
31
  }
32
+ throw new Error('Invalid target world module: must export createWorld(), a default factory, or a default World instance.');
50
33
  }
51
34
  /**
52
- * Create a new world instance based on environment variables.
53
- * WORKFLOW_TARGET_WORLD is used to determine the target world.
35
+ * Create a new world instance from the statically imported target world module.
54
36
  *
55
- * Note: WORKFLOW_VERCEL_* env vars (PROJECT, TEAM, AUTH_TOKEN, etc.) are
56
- * intentionally NOT read here. Those are for CLI/observability tooling only
57
- * and should not affect runtime behavior. The Vercel runtime provides
58
- * authentication via OIDC tokens and project context via system env vars
59
- * (VERCEL_DEPLOYMENT_ID, VERCEL_PROJECT_ID). Tooling that needs these env
60
- * vars should call createVercelWorld() directly with an explicit config and
61
- * use setWorld() to inject the instance.
37
+ * Framework integrations alias `@workflow/core/runtime/world-target` to the
38
+ * concrete world package at build time, so bundlers see a static import path
39
+ * instead of tracing a runtime-built require/import expression.
62
40
  */
63
41
  export const createWorld = async () => {
64
- const targetWorld = resolveWorkflowTargetWorld();
65
- if (isVercelWorldTarget(targetWorld)) {
66
- // Warn if WORKFLOW_VERCEL_* env vars are set inside a Vercel serverless
67
- // function (VERCEL=1) — they have no effect at runtime and likely indicate
68
- // a misconfiguration (user manually added them as Vercel project env vars,
69
- // which is not needed). We gate on VERCEL=1 so the warning does not fire
70
- // when the CLI or web observability app sets these env vars intentionally.
71
- const staleEnvVars = [
72
- 'WORKFLOW_VERCEL_PROJECT',
73
- 'WORKFLOW_VERCEL_TEAM',
74
- 'WORKFLOW_VERCEL_AUTH_TOKEN',
75
- 'WORKFLOW_VERCEL_ENV',
76
- ].filter((key) => process.env[key]);
77
- if (staleEnvVars.length > 0 && process.env.VERCEL === '1') {
78
- console.warn(`[workflow] Warning: ${staleEnvVars.join(', ')} env var(s) ` +
79
- 'are set but have no effect at runtime. These are only used by the Workflow CLI. ' +
80
- 'Remove them from your Vercel project environment variables.');
81
- }
82
- return createVercelWorld();
83
- }
84
- if (targetWorld === 'local') {
85
- return createLocalWorld({
86
- dataDir: process.env.WORKFLOW_LOCAL_DATA_DIR,
87
- });
88
- }
89
- // Try require() first for custom worlds — this avoids Turbopack tracing
90
- // a dynamic import() that it can't statically resolve. Fall back to
91
- // dynamic import() for ESM-only packages.
92
- let mod;
93
- try {
94
- mod = getRuntimeRequire()(targetWorld);
95
- }
96
- catch {
97
- const resolvedPath = resolveModulePath(targetWorld);
98
- mod = await import(/* webpackIgnore: true */ resolvedPath);
99
- }
100
- if (typeof mod === 'function') {
101
- return mod();
102
- }
103
- else if (typeof mod.default === 'function') {
104
- return mod.default();
105
- }
106
- else if (typeof mod.createWorld === 'function') {
107
- return mod.createWorld();
108
- }
109
- throw new Error(`Invalid target world module: ${targetWorld}, must export a default function or createWorld function that returns a World instance.`);
42
+ const world = await createWorldFromModule(targetWorldModule);
43
+ const staleEnvVars = [
44
+ 'WORKFLOW_VERCEL_PROJECT',
45
+ 'WORKFLOW_VERCEL_TEAM',
46
+ 'WORKFLOW_VERCEL_AUTH_TOKEN',
47
+ 'WORKFLOW_VERCEL_ENV',
48
+ ].filter((key) => process.env[key]);
49
+ if (staleEnvVars.length > 0 && process.env.VERCEL === '1') {
50
+ console.warn(`[workflow] Warning: ${staleEnvVars.join(', ')} env var(s) ` +
51
+ 'are set but have no effect at runtime. These are only used by the Workflow CLI. ' +
52
+ 'Remove them from your Vercel project environment variables.');
53
+ }
54
+ return world;
110
55
  };
111
56
  /**
112
57
  * Some functions from the world are needed at build time, but we do NOT want
@@ -119,6 +64,7 @@ export const createWorld = async () => {
119
64
  */
120
65
  export const getWorldHandlers = async () => {
121
66
  if (globalSymbols[StubbedWorldCache]) {
67
+ assertWorldSupportsRuntimeProtocol(globalSymbols[StubbedWorldCache]);
122
68
  return globalSymbols[StubbedWorldCache];
123
69
  }
124
70
  // Store the promise immediately to prevent race conditions with concurrent calls.
@@ -130,6 +76,7 @@ export const getWorldHandlers = async () => {
130
76
  });
131
77
  }
132
78
  const _world = await globalSymbols[StubbedWorldCachePromise];
79
+ assertWorldSupportsRuntimeProtocol(_world);
133
80
  globalSymbols[StubbedWorldCache] = _world;
134
81
  return {
135
82
  createQueueHandler: _world.createQueueHandler,
@@ -138,6 +85,7 @@ export const getWorldHandlers = async () => {
138
85
  };
139
86
  export const getWorld = async () => {
140
87
  if (globalSymbols[WorldCache]) {
88
+ assertWorldSupportsRuntimeProtocol(globalSymbols[WorldCache]);
141
89
  return globalSymbols[WorldCache];
142
90
  }
143
91
  // Store the promise immediately to prevent race conditions with concurrent calls.
@@ -149,6 +97,7 @@ export const getWorld = async () => {
149
97
  });
150
98
  }
151
99
  globalSymbols[WorldCache] = await globalSymbols[WorldCachePromise];
100
+ assertWorldSupportsRuntimeProtocol(globalSymbols[WorldCache]);
152
101
  return globalSymbols[WorldCache];
153
102
  };
154
103
  /**
@@ -162,10 +111,7 @@ export const setWorld = (world) => {
162
111
  globalSymbols[StubbedWorldCachePromise] = undefined;
163
112
  };
164
113
  // Register getWorld on globalThis so getWorldLazy can call it directly when
165
- // world.ts is statically present in the bundle. This avoids the relative
166
- // dynamic import('./world.js') fallback in get-world-lazy.ts, which fails
167
- // after Next.js inlines get-world-lazy.js into a route bundle (no sibling
168
- // world.js exists at the bundled location).
114
+ // world.ts is statically present in the bundle.
169
115
  //
170
116
  // For server routes that only consume `start` (or another helper that goes
171
117
  // through getWorldLazy without statically using getWorld), webpack/turbopack
@@ -180,4 +126,4 @@ export const setWorld = (world) => {
180
126
  const GetWorldFnKey = Symbol.for('@workflow/world//getWorldFn');
181
127
  globalThis[GetWorldFnKey] ??=
182
128
  getWorld;
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS93b3JsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQiwwQkFBMEIsR0FDM0IsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxTQUFTLGlCQUFpQjtJQUN4QixxRUFBcUU7SUFDckUscUVBQXFFO0lBQ3JFLHNFQUFzRTtJQUN0RSxvREFBb0Q7SUFDcEQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUN4RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztBQUN0RSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztBQUN0RSxNQUFNLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQ3pDLHNDQUFzQyxDQUN2QyxDQUFDO0FBRUYsTUFBTSxhQUFhLEdBS2YsVUFBVSxDQUFDO0FBRWYsb0VBQW9FO0FBQ3BF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LENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUMvRCxVQUF5RCxDQUFDLGFBQWEsQ0FBQztJQUN2RSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSAnbm9kZTptb2R1bGUnO1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB7XG4gIGlzVmVyY2VsV29ybGRUYXJnZXQsXG4gIHJlc29sdmVXb3JrZmxvd1RhcmdldFdvcmxkLFxufSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBXb3JsZCB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBjcmVhdGVMb2NhbFdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkLWxvY2FsJztcbmltcG9ydCB7IGNyZWF0ZVZlcmNlbFdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkLXZlcmNlbCc7XG5cbmZ1bmN0aW9uIGdldFJ1bnRpbWVSZXF1aXJlKCkge1xuICAvLyBSZXNvbHZlIGZyb20gdGhlIGFwcCByb290IChwcm9jZXNzLmN3ZCgpKSBzbyBjdXN0b20gd29ybGQgcGFja2FnZXNcbiAgLy8gbGlrZSBAd29ya2Zsb3cvd29ybGQtcG9zdGdyZXMgY2FuIGJlIGZvdW5kIGV2ZW4gdGhvdWdoIHRoZXkncmUgbm90XG4gIC8vIGRlcGVuZGVuY2llcyBvZiBAd29ya2Zsb3cvY29yZS4gVXNpbmcgaW1wb3J0Lm1ldGEudXJsIHdvdWxkIHJlc29sdmVcbiAgLy8gZnJvbSBjb3JlJ3MgbG9jYXRpb24sIG1pc3NpbmcgYXBwLWxldmVsIHBhY2thZ2VzLlxuICB0cnkge1xuICAgIHJldHVybiBjcmVhdGVSZXF1aXJlKHBhdGhUb0ZpbGVVUkwocHJvY2Vzcy5jd2QoKSArICcvcGFja2FnZS5qc29uJykuaHJlZik7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG4gIH1cbn1cblxuY29uc3QgV29ybGRDYWNoZSA9IFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy93b3JsZC8vY2FjaGUnKTtcbmNvbnN0IFN0dWJiZWRXb3JsZENhY2hlID0gU3ltYm9sLmZvcignQHdvcmtmbG93L3dvcmxkLy9zdHViYmVkQ2FjaGUnKTtcbmNvbnN0IFdvcmxkQ2FjaGVQcm9taXNlID0gU3ltYm9sLmZvcignQHdvcmtmbG93L3dvcmxkLy9jYWNoZVByb21pc2UnKTtcbmNvbnN0IFN0dWJiZWRXb3JsZENhY2hlUHJvbWlzZSA9IFN5bWJvbC5mb3IoXG4gICdAd29ya2Zsb3cvd29ybGQvL3N0dWJiZWRDYWNoZVByb21pc2UnXG4pO1xuXG5jb25zdCBnbG9iYWxTeW1ib2xzOiB0eXBlb2YgZ2xvYmFsVGhpcyAmIHtcbiAgW1dvcmxkQ2FjaGVdPzogV29ybGQ7XG4gIFtTdHViYmVkV29ybGRDYWNoZV0/OiBXb3JsZDtcbiAgW1dvcmxkQ2FjaGVQcm9taXNlXT86IFByb21pc2U8V29ybGQ+O1xuICBbU3R1YmJlZFdvcmxkQ2FjaGVQcm9taXNlXT86IFByb21pc2U8V29ybGQ+O1xufSA9IGdsb2JhbFRoaXM7XG5cbi8vIER5bmFtaWMgaW1wb3J0IGZvciBjdXN0b20gd29ybGQgbW9kdWxlcy4gVXNlcyBhIHN0YW5kYXJkIGltcG9ydCgpXG4vLyB3cmFwcGVkIGluIGEgdHJ5L2NhdGNoIHdpdGggcmVxdWlyZSgpIGZhbGxiYWNrIGZvciBDSlMgdGVzdCBydW5uZXJzLlxuLy8gTm90ZTogdGhlIHByZXZpb3VzIGBuZXcgRnVuY3Rpb24oJ3NwZWNpZmllcicsICdyZXR1cm4gaW1wb3J0KHNwZWNpZmllciknKWBcbi8vIHBhdHRlcm4gd2FzIHJlcGxhY2VkIGJlY2F1c2UgVHVyYm9wYWNrIChOZXh0LmpzKSB0cmVhdHMgdW5yZXNvbHZhYmxlXG4vLyBkeW5hbWljIGltcG9ydHMgZnJvbSBgbmV3IEZ1bmN0aW9uYCBhcyBmYXRhbCBidWlsZCBlcnJvcnMgaW4gdGhlIFYyXG4vLyBjb21iaW5lZCBmbG93IHJvdXRlIGNvbnRleHQuXG5cbmZ1bmN0aW9uIHJlc29sdmVNb2R1bGVQYXRoKHNwZWNpZmllcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gQWxyZWFkeSBhIGZpbGU6Ly8gVVJMXG4gIGlmIChzcGVjaWZpZXIuc3RhcnRzV2l0aCgnZmlsZTovLycpKSB7XG4gICAgcmV0dXJuIHNwZWNpZmllcjtcbiAgfVxuICAvLyBBYnNvbHV0ZSBwYXRoIC0gY29udmVydCB0byBmaWxlOi8vIFVSTFxuICBpZiAoc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgIHJldHVybiBwYXRoVG9GaWxlVVJMKHNwZWNpZmllcikuaHJlZjtcbiAgfVxuICAvLyBSZWxhdGl2ZSBwYXRoIC0gcmVzb2x2ZSByZWxhdGl2ZSB0byBjd2QgYW5kIGNvbnZlcnQgdG8gZmlsZTovLyBVUkxcbiAgaWYgKHNwZWNpZmllci5zdGFydHNXaXRoKCcuLycpIHx8IHNwZWNpZmllci5zdGFydHNXaXRoKCcuLi8nKSkge1xuICAgIHJldHVybiBwYXRoVG9GaWxlVVJMKFxuICAgICAgLyogdHVyYm9wYWNrSWdub3JlOiB0cnVlICovIHByb2Nlc3MuY3dkKCkgKyAnLycgKyBzcGVjaWZpZXJcbiAgICApLmhyZWY7XG4gIH1cbiAgLy8gUGFja2FnZSBzcGVjaWZpZXIgLSB1c2UgcmVxdWlyZS5yZXNvbHZlIHRvIGZpbmQgdGhlIHBhY2thZ2VcbiAgdHJ5IHtcbiAgICByZXR1cm4gcGF0aFRvRmlsZVVSTChnZXRSdW50aW1lUmVxdWlyZSgpLnJlc29sdmUoc3BlY2lmaWVyKSkuaHJlZjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHNwZWNpZmllcjtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyB3b3JsZCBpbnN0YW5jZSBiYXNlZCBvbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKiBXT1JLRkxPV19UQVJHRVRfV09STEQgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHRhcmdldCB3b3JsZC5cbiAqXG4gKiBOb3RlOiBXT1JLRkxPV19WRVJDRUxfKiBlbnYgdmFycyAoUFJPSkVDVCwgVEVBTSwgQVVUSF9UT0tFTiwgZXRjLikgYXJlXG4gKiBpbnRlbnRpb25hbGx5IE5PVCByZWFkIGhlcmUuIFRob3NlIGFyZSBmb3IgQ0xJL29ic2VydmFiaWxpdHkgdG9vbGluZyBvbmx5XG4gKiBhbmQgc2hvdWxkIG5vdCBhZmZlY3QgcnVudGltZSBiZWhhdmlvci4gVGhlIFZlcmNlbCBydW50aW1lIHByb3ZpZGVzXG4gKiBhdXRoZW50aWNhdGlvbiB2aWEgT0lEQyB0b2tlbnMgYW5kIHByb2plY3QgY29udGV4dCB2aWEgc3lzdGVtIGVudiB2YXJzXG4gKiAoVkVSQ0VMX0RFUExPWU1FTlRfSUQsIFZFUkNFTF9QUk9KRUNUX0lEKS4gVG9vbGluZyB0aGF0IG5lZWRzIHRoZXNlIGVudlxuICogdmFycyBzaG91bGQgY2FsbCBjcmVhdGVWZXJjZWxXb3JsZCgpIGRpcmVjdGx5IHdpdGggYW4gZXhwbGljaXQgY29uZmlnIGFuZFxuICogdXNlIHNldFdvcmxkKCkgdG8gaW5qZWN0IHRoZSBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVdvcmxkID0gYXN5bmMgKCk6IFByb21pc2U8V29ybGQ+ID0+IHtcbiAgY29uc3QgdGFyZ2V0V29ybGQgPSByZXNvbHZlV29ya2Zsb3dUYXJnZXRXb3JsZCgpO1xuXG4gIGlmIChpc1ZlcmNlbFdvcmxkVGFyZ2V0KHRhcmdldFdvcmxkKSkge1xuICAgIC8vIFdhcm4gaWYgV09SS0ZMT1dfVkVSQ0VMXyogZW52IHZhcnMgYXJlIHNldCBpbnNpZGUgYSBWZXJjZWwgc2VydmVybGVzc1xuICAgIC8vIGZ1bmN0aW9uIChWRVJDRUw9MSkg4oCUIHRoZXkgaGF2ZSBubyBlZmZlY3QgYXQgcnVudGltZSBhbmQgbGlrZWx5IGluZGljYXRlXG4gICAgLy8gYSBtaXNjb25maWd1cmF0aW9uICh1c2VyIG1hbnVhbGx5IGFkZGVkIHRoZW0gYXMgVmVyY2VsIHByb2plY3QgZW52IHZhcnMsXG4gICAgLy8gd2hpY2ggaXMgbm90IG5lZWRlZCkuIFdlIGdhdGUgb24gVkVSQ0VMPTEgc28gdGhlIHdhcm5pbmcgZG9lcyBub3QgZmlyZVxuICAgIC8vIHdoZW4gdGhlIENMSSBvciB3ZWIgb2JzZXJ2YWJpbGl0eSBhcHAgc2V0cyB0aGVzZSBlbnYgdmFycyBpbnRlbnRpb25hbGx5LlxuICAgIGNvbnN0IHN0YWxlRW52VmFycyA9IFtcbiAgICAgICdXT1JLRkxPV19WRVJDRUxfUFJPSkVDVCcsXG4gICAgICAnV09SS0ZMT1dfVkVSQ0VMX1RFQU0nLFxuICAgICAgJ1dPUktGTE9XX1ZFUkNFTF9BVVRIX1RPS0VOJyxcbiAgICAgICdXT1JLRkxPV19WRVJDRUxfRU5WJyxcbiAgICBdLmZpbHRlcigoa2V5KSA9PiBwcm9jZXNzLmVudltrZXldKTtcbiAgICBpZiAoc3RhbGVFbnZWYXJzLmxlbmd0aCA+IDAgJiYgcHJvY2Vzcy5lbnYuVkVSQ0VMID09PSAnMScpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFt3b3JrZmxvd10gV2FybmluZzogJHtzdGFsZUVudlZhcnMuam9pbignLCAnKX0gZW52IHZhcihzKSBgICtcbiAgICAgICAgICAnYXJlIHNldCBidXQgaGF2ZSBubyBlZmZlY3QgYXQgcnVudGltZS4gVGhlc2UgYXJlIG9ubHkgdXNlZCBieSB0aGUgV29ya2Zsb3cgQ0xJLiAnICtcbiAgICAgICAgICAnUmVtb3ZlIHRoZW0gZnJvbSB5b3VyIFZlcmNlbCBwcm9qZWN0IGVudmlyb25tZW50IHZhcmlhYmxlcy4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVWZXJjZWxXb3JsZCgpO1xuICB9XG5cbiAgaWYgKHRhcmdldFdvcmxkID09PSAnbG9jYWwnKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUxvY2FsV29ybGQoe1xuICAgICAgZGF0YURpcjogcHJvY2Vzcy5lbnYuV09SS0ZMT1dfTE9DQUxfREFUQV9ESVIsXG4gICAgfSk7XG4gIH1cblxuICAvLyBUcnkgcmVxdWlyZSgpIGZpcnN0IGZvciBjdXN0b20gd29ybGRzIOKAlCB0aGlzIGF2b2lkcyBUdXJib3BhY2sgdHJhY2luZ1xuICAvLyBhIGR5bmFtaWMgaW1wb3J0KCkgdGhhdCBpdCBjYW4ndCBzdGF0aWNhbGx5IHJlc29sdmUuIEZhbGwgYmFjayB0b1xuICAvLyBkeW5hbWljIGltcG9ydCgpIGZvciBFU00tb25seSBwYWNrYWdlcy5cbiAgbGV0IG1vZDogYW55O1xuICB0cnkge1xuICAgIG1vZCA9IGdldFJ1bnRpbWVSZXF1aXJlKCkodGFyZ2V0V29ybGQpO1xuICB9IGNhdGNoIHtcbiAgICBjb25zdCByZXNvbHZlZFBhdGggPSByZXNvbHZlTW9kdWxlUGF0aCh0YXJnZXRXb3JsZCk7XG4gICAgbW9kID0gYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tJZ25vcmU6IHRydWUgKi8gcmVzb2x2ZWRQYXRoKTtcbiAgfVxuICBpZiAodHlwZW9mIG1vZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBtb2QoKSBhcyBXb3JsZDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgbW9kLmRlZmF1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbW9kLmRlZmF1bHQoKSBhcyBXb3JsZDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgbW9kLmNyZWF0ZVdvcmxkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1vZC5jcmVhdGVXb3JsZCgpIGFzIFdvcmxkO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBJbnZhbGlkIHRhcmdldCB3b3JsZCBtb2R1bGU6ICR7dGFyZ2V0V29ybGR9LCBtdXN0IGV4cG9ydCBhIGRlZmF1bHQgZnVuY3Rpb24gb3IgY3JlYXRlV29ybGQgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgV29ybGQgaW5zdGFuY2UuYFxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgV29ybGRIYW5kbGVycyA9IFBpY2s8V29ybGQsICdjcmVhdGVRdWV1ZUhhbmRsZXInIHwgJ3NwZWNWZXJzaW9uJz47XG5cbi8qKlxuICogU29tZSBmdW5jdGlvbnMgZnJvbSB0aGUgd29ybGQgYXJlIG5lZWRlZCBhdCBidWlsZCB0aW1lLCBidXQgd2UgZG8gTk9UIHdhbnRcbiAqIHRvIGNhY2hlIHRoZSB3b3JsZCBpbiB0aG9zZSBpbnN0YW5jZXMgZm9yIGdlbmVyYWwgdXNlLCBzaW5jZSB3ZSBkb24ndCBoYXZlXG4gKiB0aGUgY29ycmVjdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2V0IHlldC4gVGhpcyBpcyBhIHNhZmUgZnVuY3Rpb24gdG9cbiAqIGNhbGwgYXQgYnVpbGQgdGltZSwgdGhhdCBvbmx5IGdpdmVzIGFjY2VzcyB0byBub24tZW52aXJvbm1lbnQtYm91bmQgd29ybGRcbiAqIGZ1bmN0aW9ucy4gVGhlIG9ubHkgYmluZGluZyB2YWx1ZSBzaG91bGQgYmUgdGhlIHRhcmdldCB3b3JsZC5cbiAqIE9uY2Ugd2UgbWlncmF0ZSB0byBhIGZpbGUtYmFzZWQgY29uZmlndXJhdGlvbiAod29ya2Zsb3cuY29uZmlnLnRzKSwgd2Ugc2hvdWxkXG4gKiBiZSBhYmxlIHRvIHJlLWNvbWJpbmUgZ2V0V29ybGQgYW5kIGdldFdvcmxkSGFuZGxlcnMgaW50byBvbmUgc2luZ2xldG9uLlxuICovXG5leHBvcnQgY29uc3QgZ2V0V29ybGRIYW5kbGVycyA9IGFzeW5jICgpOiBQcm9taXNlPFdvcmxkSGFuZGxlcnM+ID0+IHtcbiAgaWYgKGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVdKSB7XG4gICAgcmV0dXJuIGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVdO1xuICB9XG4gIC8vIFN0b3JlIHRoZSBwcm9taXNlIGltbWVkaWF0ZWx5IHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIHdpdGggY29uY3VycmVudCBjYWxscy5cbiAgLy8gQ2xlYXIgb24gcmVqZWN0aW9uIHNvIHN1YnNlcXVlbnQgY2FsbHMgY2FuIHJldHJ5IGluc3RlYWQgb2YgY2FjaGluZyB0aGUgZmFpbHVyZS5cbiAgaWYgKCFnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV0pIHtcbiAgICBnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV0gPSBjcmVhdGVXb3JsZCgpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVQcm9taXNlXSA9IHVuZGVmaW5lZDtcbiAgICAgIHRocm93IGVycjtcbiAgICB9KTtcbiAgfVxuICBjb25zdCBfd29ybGQgPSBhd2FpdCBnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV07XG4gIGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVdID0gX3dvcmxkO1xuICByZXR1cm4ge1xuICAgIGNyZWF0ZVF1ZXVlSGFuZGxlcjogX3dvcmxkLmNyZWF0ZVF1ZXVlSGFuZGxlcixcbiAgICBzcGVjVmVyc2lvbjogX3dvcmxkLnNwZWNWZXJzaW9uLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFdvcmxkID0gYXN5bmMgKCk6IFByb21pc2U8V29ybGQ+ID0+IHtcbiAgaWYgKGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZV0pIHtcbiAgICByZXR1cm4gZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlXTtcbiAgfVxuICAvLyBTdG9yZSB0aGUgcHJvbWlzZSBpbW1lZGlhdGVseSB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyB3aXRoIGNvbmN1cnJlbnQgY2FsbHMuXG4gIC8vIENsZWFyIG9uIHJlamVjdGlvbiBzbyBzdWJzZXF1ZW50IGNhbGxzIGNhbiByZXRyeSBpbnN0ZWFkIG9mIGNhY2hpbmcgdGhlIGZhaWx1cmUuXG4gIGlmICghZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlUHJvbWlzZV0pIHtcbiAgICBnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVQcm9taXNlXSA9IGNyZWF0ZVdvcmxkKCkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlUHJvbWlzZV0gPSB1bmRlZmluZWQ7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSk7XG4gIH1cbiAgZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlXSA9IGF3YWl0IGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZVByb21pc2VdO1xuICByZXR1cm4gZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlXTtcbn07XG5cbi8qKlxuICogUmVzZXQgdGhlIGNhY2hlZCB3b3JsZCBpbnN0YW5jZS4gVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdoZW4gZW52aXJvbm1lbnRcbiAqIHZhcmlhYmxlcyBjaGFuZ2UgYW5kIHlvdSBuZWVkIHRvIHJlaW5pdGlhbGl6ZSB0aGUgd29ybGQgd2l0aCBuZXcgY29uZmlnLlxuICovXG5leHBvcnQgY29uc3Qgc2V0V29ybGQgPSAod29ybGQ6IFdvcmxkIHwgdW5kZWZpbmVkKTogdm9pZCA9PiB7XG4gIGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZV0gPSB3b3JsZDtcbiAgZ2xvYmFsU3ltYm9sc1tTdHViYmVkV29ybGRDYWNoZV0gPSB3b3JsZDtcbiAgZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlUHJvbWlzZV0gPSB1bmRlZmluZWQ7XG4gIGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVQcm9taXNlXSA9IHVuZGVmaW5lZDtcbn07XG5cbi8vIFJlZ2lzdGVyIGdldFdvcmxkIG9uIGdsb2JhbFRoaXMgc28gZ2V0V29ybGRMYXp5IGNhbiBjYWxsIGl0IGRpcmVjdGx5IHdoZW5cbi8vIHdvcmxkLnRzIGlzIHN0YXRpY2FsbHkgcHJlc2VudCBpbiB0aGUgYnVuZGxlLiBUaGlzIGF2b2lkcyB0aGUgcmVsYXRpdmVcbi8vIGR5bmFtaWMgaW1wb3J0KCcuL3dvcmxkLmpzJykgZmFsbGJhY2sgaW4gZ2V0LXdvcmxkLWxhenkudHMsIHdoaWNoIGZhaWxzXG4vLyBhZnRlciBOZXh0LmpzIGlubGluZXMgZ2V0LXdvcmxkLWxhenkuanMgaW50byBhIHJvdXRlIGJ1bmRsZSAobm8gc2libGluZ1xuLy8gd29ybGQuanMgZXhpc3RzIGF0IHRoZSBidW5kbGVkIGxvY2F0aW9uKS5cbi8vXG4vLyBGb3Igc2VydmVyIHJvdXRlcyB0aGF0IG9ubHkgY29uc3VtZSBgc3RhcnRgIChvciBhbm90aGVyIGhlbHBlciB0aGF0IGdvZXNcbi8vIHRocm91Z2ggZ2V0V29ybGRMYXp5IHdpdGhvdXQgc3RhdGljYWxseSB1c2luZyBnZXRXb3JsZCksIHdlYnBhY2svdHVyYm9wYWNrXG4vLyB3b3VsZCBvdGhlcndpc2UgdHJlZS1zaGFrZSB3b3JsZC50cyBvdXQgb2YgdGhlIGJ1bmRsZSBlbnRpcmVseS4gVGhlXG4vLyBob3N0LW9ubHkgYC4vd29ybGQtaW5pdC50c2AgbW9kdWxlIGltcG9ydHMgd29ybGQudHMgZm9yIGl0cyBzaWRlIGVmZmVjdFxuLy8gYW5kIGlzIGl0c2VsZiBpbXBvcnRlZCBieSBgcGFja2FnZXMvd29ya2Zsb3cvc3JjL2FwaS50c2Agc28gdGhpc1xuLy8gcmVnaXN0cmF0aW9uIHJ1bnMgaW4gZXZlcnkgc2VydmVyIGJ1bmRsZSB0aGF0IHRvdWNoZXMgYHdvcmtmbG93L2FwaWAuXG4vL1xuLy8gU3RlcC9WTSBidW5kbGVzIG5ldmVyIHJlYWNoIHRoaXMgYnJhbmNoOiB0aGV5IGRvbid0IHN0YXRpY2FsbHkgaW1wb3J0XG4vLyB3b3JsZC50cywgYW5kIGB3b3JsZC1pbml0YCByZXNvbHZlcyB0byBhbiBlbXB0eSBzdHViIHZpYSB0aGUgYHdvcmtmbG93YFxuLy8gZXhwb3J0IGNvbmRpdGlvbi5cbmNvbnN0IEdldFdvcmxkRm5LZXkgPSBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvd29ybGQvL2dldFdvcmxkRm4nKTtcbihnbG9iYWxUaGlzIGFzIHsgW0dldFdvcmxkRm5LZXldPzogKCkgPT4gUHJvbWlzZTxXb3JsZD4gfSlbR2V0V29ybGRGbktleV0gPz89XG4gIGdldFdvcmxkO1xuIl19
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS93b3JsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssaUJBQWlCLE1BQU0scUNBQXFDLENBQUM7QUFFekUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ3hELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQ3RFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQ3RFLE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FDekMsc0NBQXNDLENBQ3ZDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FLZixVQUFVLENBQUM7QUFXZjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxHQUF1QjtJQUV2QixJQUFJLE9BQU8sR0FBRyxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMxQyxPQUFPLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxPQUFPLEdBQUcsQ0FBQyxnQkFBZ0IsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMvQyxPQUFPLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFJLE9BQU8sR0FBRyxDQUFDLGlCQUFpQixLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ2hELE9BQU8sR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNELElBQUksT0FBTyxHQUFHLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFD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Q0QsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbkUsa0NBQWtDLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBd0IsRUFBUSxFQUFFO0lBQ3pELGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbEMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3pDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM3QyxhQUFhLENBQUMsd0JBQXdCLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDdEQsQ0FBQyxDQUFDO0FBRUYsNEVBQTRFO0FBQzVFLGdEQUFnRDtBQUNoRCxFQUFFO0FBQ0YsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSxzRUFBc0U7QUFDdEUsMEVBQTBFO0FBQzFFLG1FQUFtRTtBQUNuRSx3RUFBd0U7QUFDeEUsRUFBRTtBQUNGLHdFQUF3RTtBQUN4RSwwRUFBMEU7QUFDMUUsb0JBQW9CO0FBQ3BCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUMvRCxVQUF5RCxDQUFDLGFBQWEsQ0FBQztJQUN2RSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0YXJnZXRXb3JsZE1vZHVsZSBmcm9tICdAd29ya2Zsb3cvY29yZS9ydW50aW1lL3dvcmxkLXRhcmdldCc7XG5pbXBvcnQgdHlwZSB7IFdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IGFzc2VydFdvcmxkU3VwcG9ydHNSdW50aW1lUHJvdG9jb2wgfSBmcm9tICcuL3dvcmxkLWNvbXBhdGliaWxpdHkuanMnO1xuXG5jb25zdCBXb3JsZENhY2hlID0gU3ltYm9sLmZvcignQHdvcmtmbG93L3dvcmxkLy9jYWNoZScpO1xuY29uc3QgU3R1YmJlZFdvcmxkQ2FjaGUgPSBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvd29ybGQvL3N0dWJiZWRDYWNoZScpO1xuY29uc3QgV29ybGRDYWNoZVByb21pc2UgPSBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvd29ybGQvL2NhY2hlUHJvbWlzZScpO1xuY29uc3QgU3R1YmJlZFdvcmxkQ2FjaGVQcm9taXNlID0gU3ltYm9sLmZvcihcbiAgJ0B3b3JrZmxvdy93b3JsZC8vc3R1YmJlZENhY2hlUHJvbWlzZSdcbik7XG5cbmNvbnN0IGdsb2JhbFN5bWJvbHM6IHR5cGVvZiBnbG9iYWxUaGlzICYge1xuICBbV29ybGRDYWNoZV0/OiBXb3JsZDtcbiAgW1N0dWJiZWRXb3JsZENhY2hlXT86IFdvcmxkO1xuICBbV29ybGRDYWNoZVByb21pc2VdPzogUHJvbWlzZTxXb3JsZD47XG4gIFtTdHViYmVkV29ybGRDYWNoZVByb21pc2VdPzogUHJvbWlzZTxXb3JsZD47XG59ID0gZ2xvYmFsVGhpcztcblxuZXhwb3J0IHR5cGUgV29ybGRGYWN0b3J5TW9kdWxlID0ge1xuICBjcmVhdGVXb3JsZD86ICgpID0+IFdvcmxkIHwgUHJvbWlzZTxXb3JsZD47XG4gIC8qKiBAZGVwcmVjYXRlZCBXb3JsZCBwYWNrYWdlcyBzaG91bGQgZXhwb3J0IGBjcmVhdGVXb3JsZCgpYCBpbnN0ZWFkLiAqL1xuICBjcmVhdGVMb2NhbFdvcmxkPzogKCkgPT4gV29ybGQgfCBQcm9taXNlPFdvcmxkPjtcbiAgLyoqIEBkZXByZWNhdGVkIFdvcmxkIHBhY2thZ2VzIHNob3VsZCBleHBvcnQgYGNyZWF0ZVdvcmxkKClgIGluc3RlYWQuICovXG4gIGNyZWF0ZVZlcmNlbFdvcmxkPzogKCkgPT4gV29ybGQgfCBQcm9taXNlPFdvcmxkPjtcbiAgZGVmYXVsdD86ICgoKSA9PiBXb3JsZCB8IFByb21pc2U8V29ybGQ+KSB8IFdvcmxkO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBXb3JsZCBpbnN0YW5jZSBmcm9tIGEgd29ybGQgZmFjdG9yeSBtb2R1bGUuIFNoYXJlZCBieVxuICogYGNyZWF0ZVdvcmxkKClgIChmb3IgdGhlIHN0YXRpY2FsbHkgaW5qZWN0ZWQgdGFyZ2V0IHdvcmxkIG1vZHVsZSkgYW5kXG4gKiB0b29saW5nIHRoYXQgbG9hZHMgYSB3b3JsZCBtb2R1bGUgZHluYW1pY2FsbHkgKGUuZy4gdGhlIE5pdHJvIGRldlxuICogaGFuZGxlciBhbmQgYEB3b3JrZmxvdy93b3JsZC10ZXN0aW5nYCkuIExlZ2FjeSB3b3JsZC1zcGVjaWZpYyBmYWN0b3J5XG4gKiBuYW1lcyBhcmUgc3RpbGwgYWNjZXB0ZWQgZm9yIGNvbXBhdGliaWxpdHksIGJ1dCB3b3JsZCBwYWNrYWdlcyBzaG91bGRcbiAqIGV4cG9ydCBgY3JlYXRlV29ybGQoKWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXb3JsZEZyb21Nb2R1bGUoXG4gIG1vZDogV29ybGRGYWN0b3J5TW9kdWxlXG4pOiBXb3JsZCB8IFByb21pc2U8V29ybGQ+IHtcbiAgaWYgKHR5cGVvZiBtb2QuY3JlYXRlV29ybGQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbW9kLmNyZWF0ZVdvcmxkKCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2QuY3JlYXRlTG9jYWxXb3JsZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBtb2QuY3JlYXRlTG9jYWxXb3JsZCgpO1xuICB9XG4gIGlmICh0eXBlb2YgbW9kLmNyZWF0ZVZlcmNlbFdvcmxkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1vZC5jcmVhdGVWZXJjZWxXb3JsZCgpO1xuICB9XG4gIGlmICh0eXBlb2YgbW9kLmRlZmF1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbW9kLmRlZmF1bHQoKTtcbiAgfVxuICBpZiAobW9kLmRlZmF1bHQgJiYgdHlwZW9mIG1vZC5kZWZhdWx0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBtb2QuZGVmYXVsdCBhcyBXb3JsZDtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAnSW52YWxpZCB0YXJnZXQgd29ybGQgbW9kdWxlOiBtdXN0IGV4cG9ydCBjcmVhdGVXb3JsZCgpLCBhIGRlZmF1bHQgZmFjdG9yeSwgb3IgYSBkZWZhdWx0IFdvcmxkIGluc3RhbmNlLidcbiAgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgd29ybGQgaW5zdGFuY2UgZnJvbSB0aGUgc3RhdGljYWxseSBpbXBvcnRlZCB0YXJnZXQgd29ybGQgbW9kdWxlLlxuICpcbiAqIEZyYW1ld29yayBpbnRlZ3JhdGlvbnMgYWxpYXMgYEB3b3JrZmxvdy9jb3JlL3J1bnRpbWUvd29ybGQtdGFyZ2V0YCB0byB0aGVcbiAqIGNvbmNyZXRlIHdvcmxkIHBhY2thZ2UgYXQgYnVpbGQgdGltZSwgc28gYnVuZGxlcnMgc2VlIGEgc3RhdGljIGltcG9ydCBwYXRoXG4gKiBpbnN0ZWFkIG9mIHRyYWNpbmcgYSBydW50aW1lLWJ1aWx0IHJlcXVpcmUvaW1wb3J0IGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVXb3JsZCA9IGFzeW5jICgpOiBQcm9taXNlPFdvcmxkPiA9PiB7XG4gIGNvbnN0IHdvcmxkID0gYXdhaXQgY3JlYXRlV29ybGRGcm9tTW9kdWxlKHRhcmdldFdvcmxkTW9kdWxlKTtcblxuICBjb25zdCBzdGFsZUVudlZhcnMgPSBbXG4gICAgJ1dPUktGTE9XX1ZFUkNFTF9QUk9KRUNUJyxcbiAgICAnV09SS0ZMT1dfVkVSQ0VMX1RFQU0nLFxuICAgICdXT1JLRkxPV19WRVJDRUxfQVVUSF9UT0tFTicsXG4gICAgJ1dPUktGTE9XX1ZFUkNFTF9FTlYnLFxuICBdLmZpbHRlcigoa2V5KSA9PiBwcm9jZXNzLmVudltrZXldKTtcbiAgaWYgKHN0YWxlRW52VmFycy5sZW5ndGggPiAwICYmIHByb2Nlc3MuZW52LlZFUkNFTCA9PT0gJzEnKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYFt3b3JrZmxvd10gV2FybmluZzogJHtzdGFsZUVudlZhcnMuam9pbignLCAnKX0gZW52IHZhcihzKSBgICtcbiAgICAgICAgJ2FyZSBzZXQgYnV0IGhhdmUgbm8gZWZmZWN0IGF0IHJ1bnRpbWUuIFRoZXNlIGFyZSBvbmx5IHVzZWQgYnkgdGhlIFdvcmtmbG93IENMSS4gJyArXG4gICAgICAgICdSZW1vdmUgdGhlbSBmcm9tIHlvdXIgVmVyY2VsIHByb2plY3QgZW52aXJvbm1lbnQgdmFyaWFibGVzLidcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHdvcmxkO1xufTtcblxuZXhwb3J0IHR5cGUgV29ybGRIYW5kbGVycyA9IFBpY2s8V29ybGQsICdjcmVhdGVRdWV1ZUhhbmRsZXInIHwgJ3NwZWNWZXJzaW9uJz47XG5cbi8qKlxuICogU29tZSBmdW5jdGlvbnMgZnJvbSB0aGUgd29ybGQgYXJlIG5lZWRlZCBhdCBidWlsZCB0aW1lLCBidXQgd2UgZG8gTk9UIHdhbnRcbiAqIHRvIGNhY2hlIHRoZSB3b3JsZCBpbiB0aG9zZSBpbnN0YW5jZXMgZm9yIGdlbmVyYWwgdXNlLCBzaW5jZSB3ZSBkb24ndCBoYXZlXG4gKiB0aGUgY29ycmVjdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2V0IHlldC4gVGhpcyBpcyBhIHNhZmUgZnVuY3Rpb24gdG9cbiAqIGNhbGwgYXQgYnVpbGQgdGltZSwgdGhhdCBvbmx5IGdpdmVzIGFjY2VzcyB0byBub24tZW52aXJvbm1lbnQtYm91bmQgd29ybGRcbiAqIGZ1bmN0aW9ucy4gVGhlIG9ubHkgYmluZGluZyB2YWx1ZSBzaG91bGQgYmUgdGhlIHRhcmdldCB3b3JsZC5cbiAqIE9uY2Ugd2UgbWlncmF0ZSB0byBhIGZpbGUtYmFzZWQgY29uZmlndXJhdGlvbiAod29ya2Zsb3cuY29uZmlnLnRzKSwgd2Ugc2hvdWxkXG4gKiBiZSBhYmxlIHRvIHJlLWNvbWJpbmUgZ2V0V29ybGQgYW5kIGdldFdvcmxkSGFuZGxlcnMgaW50byBvbmUgc2luZ2xldG9uLlxuICovXG5leHBvcnQgY29uc3QgZ2V0V29ybGRIYW5kbGVycyA9IGFzeW5jICgpOiBQcm9taXNlPFdvcmxkSGFuZGxlcnM+ID0+IHtcbiAgaWYgKGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVdKSB7XG4gICAgYXNzZXJ0V29ybGRTdXBwb3J0c1J1bnRpbWVQcm90b2NvbChnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlXSk7XG4gICAgcmV0dXJuIGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVdO1xuICB9XG4gIC8vIFN0b3JlIHRoZSBwcm9taXNlIGltbWVkaWF0ZWx5IHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIHdpdGggY29uY3VycmVudCBjYWxscy5cbiAgLy8gQ2xlYXIgb24gcmVqZWN0aW9uIHNvIHN1YnNlcXVlbnQgY2FsbHMgY2FuIHJldHJ5IGluc3RlYWQgb2YgY2FjaGluZyB0aGUgZmFpbHVyZS5cbiAgaWYgKCFnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV0pIHtcbiAgICBnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV0gPSBjcmVhdGVXb3JsZCgpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVQcm9taXNlXSA9IHVuZGVmaW5lZDtcbiAgICAgIHRocm93IGVycjtcbiAgICB9KTtcbiAgfVxuICBjb25zdCBfd29ybGQgPSBhd2FpdCBnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV07XG4gIGFzc2VydFdvcmxkU3VwcG9ydHNSdW50aW1lUHJvdG9jb2woX3dvcmxkKTtcbiAgZ2xvYmFsU3ltYm9sc1tTdHViYmVkV29ybGRDYWNoZV0gPSBfd29ybGQ7XG4gIHJldHVybiB7XG4gICAgY3JlYXRlUXVldWVIYW5kbGVyOiBfd29ybGQuY3JlYXRlUXVldWVIYW5kbGVyLFxuICAgIHNwZWNWZXJzaW9uOiBfd29ybGQuc3BlY1ZlcnNpb24sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0V29ybGQgPSBhc3luYyAoKTogUHJvbWlzZTxXb3JsZD4gPT4ge1xuICBpZiAoZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlXSkge1xuICAgIGFzc2VydFdvcmxkU3VwcG9ydHNSdW50aW1lUHJvdG9jb2woZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlXSk7XG4gICAgcmV0dXJuIGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZV07XG4gIH1cbiAgLy8gU3RvcmUgdGhlIHByb21pc2UgaW1tZWRpYXRlbHkgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgd2l0aCBjb25jdXJyZW50IGNhbGxzLlxuICAvLyBDbGVhciBvbiByZWplY3Rpb24gc28gc3Vic2VxdWVudCBjYWxscyBjYW4gcmV0cnkgaW5zdGVhZCBvZiBjYWNoaW5nIHRoZSBmYWlsdXJlLlxuICBpZiAoIWdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZVByb21pc2VdKSB7XG4gICAgZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlUHJvbWlzZV0gPSBjcmVhdGVXb3JsZCgpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZVByb21pc2VdID0gdW5kZWZpbmVkO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0pO1xuICB9XG4gIGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZV0gPSBhd2FpdCBnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVQcm9taXNlXTtcbiAgYXNzZXJ0V29ybGRTdXBwb3J0c1J1bnRpbWVQcm90b2NvbChnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVdKTtcbiAgcmV0dXJuIGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZV07XG59O1xuXG4vKipcbiAqIFJlc2V0IHRoZSBjYWNoZWQgd29ybGQgaW5zdGFuY2UuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIGVudmlyb25tZW50XG4gKiB2YXJpYWJsZXMgY2hhbmdlIGFuZCB5b3UgbmVlZCB0byByZWluaXRpYWxpemUgdGhlIHdvcmxkIHdpdGggbmV3IGNvbmZpZy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFdvcmxkID0gKHdvcmxkOiBXb3JsZCB8IHVuZGVmaW5lZCk6IHZvaWQgPT4ge1xuICBnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVdID0gd29ybGQ7XG4gIGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVdID0gd29ybGQ7XG4gIGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZVByb21pc2VdID0gdW5kZWZpbmVkO1xuICBnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV0gPSB1bmRlZmluZWQ7XG59O1xuXG4vLyBSZWdpc3RlciBnZXRXb3JsZCBvbiBnbG9iYWxUaGlzIHNvIGdldFdvcmxkTGF6eSBjYW4gY2FsbCBpdCBkaXJlY3RseSB3aGVuXG4vLyB3b3JsZC50cyBpcyBzdGF0aWNhbGx5IHByZXNlbnQgaW4gdGhlIGJ1bmRsZS5cbi8vXG4vLyBGb3Igc2VydmVyIHJvdXRlcyB0aGF0IG9ubHkgY29uc3VtZSBgc3RhcnRgIChvciBhbm90aGVyIGhlbHBlciB0aGF0IGdvZXNcbi8vIHRocm91Z2ggZ2V0V29ybGRMYXp5IHdpdGhvdXQgc3RhdGljYWxseSB1c2luZyBnZXRXb3JsZCksIHdlYnBhY2svdHVyYm9wYWNrXG4vLyB3b3VsZCBvdGhlcndpc2UgdHJlZS1zaGFrZSB3b3JsZC50cyBvdXQgb2YgdGhlIGJ1bmRsZSBlbnRpcmVseS4gVGhlXG4vLyBob3N0LW9ubHkgYC4vd29ybGQtaW5pdC50c2AgbW9kdWxlIGltcG9ydHMgd29ybGQudHMgZm9yIGl0cyBzaWRlIGVmZmVjdFxuLy8gYW5kIGlzIGl0c2VsZiBpbXBvcnRlZCBieSBgcGFja2FnZXMvd29ya2Zsb3cvc3JjL2FwaS50c2Agc28gdGhpc1xuLy8gcmVnaXN0cmF0aW9uIHJ1bnMgaW4gZXZlcnkgc2VydmVyIGJ1bmRsZSB0aGF0IHRvdWNoZXMgYHdvcmtmbG93L2FwaWAuXG4vL1xuLy8gU3RlcC9WTSBidW5kbGVzIG5ldmVyIHJlYWNoIHRoaXMgYnJhbmNoOiB0aGV5IGRvbid0IHN0YXRpY2FsbHkgaW1wb3J0XG4vLyB3b3JsZC50cywgYW5kIGB3b3JsZC1pbml0YCByZXNvbHZlcyB0byBhbiBlbXB0eSBzdHViIHZpYSB0aGUgYHdvcmtmbG93YFxuLy8gZXhwb3J0IGNvbmRpdGlvbi5cbmNvbnN0IEdldFdvcmxkRm5LZXkgPSBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvd29ybGQvL2dldFdvcmxkRm4nKTtcbihnbG9iYWxUaGlzIGFzIHsgW0dldFdvcmxkRm5LZXldPzogKCkgPT4gUHJvbWlzZTxXb3JsZD4gfSlbR2V0V29ybGRGbktleV0gPz89XG4gIGdldFdvcmxkO1xuIl19
package/dist/runtime.d.ts CHANGED
@@ -6,7 +6,7 @@ export { getHookByToken, resumeHook, resumeWebhook, } from './runtime/resume-hoo
6
6
  export { getRun, Run, type WorkflowReadableStream, type WorkflowReadableStreamOptions, } from './runtime/run.js';
7
7
  export { cancelRun, listStreams, type ReadStreamOptions, type RecreateRunOptions, readStream, recreateRunFromExisting, reenqueueRun, type StopSleepOptions, type StopSleepResult, wakeUpRun, } from './runtime/runs.js';
8
8
  export { type StartOptions, type StartOptionsBase, type StartOptionsWithDeploymentId, type StartOptionsWithoutDeploymentId, start, } from './runtime/start.js';
9
- export { createWorld, getWorld, getWorldHandlers, setWorld, } from './runtime/world.js';
9
+ export { createWorld, createWorldFromModule, getWorld, getWorldHandlers, setWorld, type WorldFactoryModule, } from './runtime/world.js';
10
10
  /**
11
11
  * Creates a single route which handles workflow execution requests,
12
12
  * executing steps inline when possible to reduce function invocations
@@ -21,5 +21,6 @@ export { createWorld, getWorld, getWorldHandlers, setWorld, } from './runtime/wo
21
21
  export declare function workflowEntrypoint(workflowCode: string, options?: {
22
22
  namespace?: string;
23
23
  routeModuleBodyStartedAt?: number;
24
+ basePath?: string;
24
25
  }): (req: Request) => Promise<Response>;
25
26
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,KAAK,KAAK,EAMV,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AAyDzB,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,MAAM,EACN,GAAG,EACH,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,GACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,UAAU,EACV,uBAAuB,EACvB,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,GACN,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAwJ5B;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAAE,GAClE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA4xDrC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,KAAK,EAMV,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AAyDzB,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,MAAM,EACN,GAAG,EACH,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,GACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,UAAU,EACV,uBAAuB,EACvB,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,GACN,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAwJ5B;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA8xDrC"}