@workflow/core 5.0.0-beta.27 → 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.
- package/dist/create-hook.d.ts +2 -2
- package/dist/create-hook.js +1 -1
- package/dist/runtime/get-world-lazy.d.ts +3 -12
- package/dist/runtime/get-world-lazy.d.ts.map +1 -1
- package/dist/runtime/get-world-lazy.js +7 -24
- package/dist/runtime/step-executor.d.ts.map +1 -1
- package/dist/runtime/step-executor.js +65 -35
- package/dist/runtime/step-handler.d.ts.map +1 -1
- package/dist/runtime/step-handler.js +8 -7
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +94 -72
- package/dist/runtime/wait-continuation.d.ts +2 -2
- package/dist/runtime/wait-continuation.js +3 -3
- package/dist/runtime/world-init.d.ts +16 -41
- package/dist/runtime/world-init.d.ts.map +1 -1
- package/dist/runtime/world-init.js +17 -42
- package/dist/runtime/world-target.d.ts +11 -0
- package/dist/runtime/world-target.d.ts.map +1 -0
- package/dist/runtime/world-target.js +15 -0
- package/dist/runtime/world.d.ts +21 -9
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +40 -122
- package/dist/runtime.d.ts +2 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +4 -2
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +24 -3
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -2
- package/dist/workflow/create-hook.d.ts.map +1 -1
- package/dist/workflow/create-hook.js +4 -3
- package/dist/workflow/world-init-stub.d.ts +2 -2
- package/dist/workflow/world-init-stub.js +3 -3
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +6 -9
- 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
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
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
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
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
|
|
51
|
-
*
|
|
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
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
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,
|
|
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
|
package/dist/runtime/world.d.ts
CHANGED
|
@@ -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
|
|
4
|
-
*
|
|
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
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
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":"
|
|
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"}
|
package/dist/runtime/world.js
CHANGED
|
@@ -1,136 +1,57 @@
|
|
|
1
|
-
import
|
|
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';
|
|
1
|
+
import * as targetWorldModule from '@workflow/core/runtime/world-target';
|
|
6
2
|
import { assertWorldSupportsRuntimeProtocol } from './world-compatibility.js';
|
|
7
|
-
function getRuntimeRequire() {
|
|
8
|
-
// Resolve from the app root (process.cwd()) so custom world packages
|
|
9
|
-
// like @workflow/world-postgres can be found even though they're not
|
|
10
|
-
// dependencies of @workflow/core. Using import.meta.url would resolve
|
|
11
|
-
// from core's location, missing app-level packages.
|
|
12
|
-
try {
|
|
13
|
-
return createRequire(
|
|
14
|
-
/* webpackIgnore: true */
|
|
15
|
-
/* turbopackIgnore: true */
|
|
16
|
-
pathToFileURL(process.cwd() + '/package.json').href);
|
|
17
|
-
}
|
|
18
|
-
catch {
|
|
19
|
-
return createRequire(
|
|
20
|
-
/* webpackIgnore: true */
|
|
21
|
-
/* turbopackIgnore: true */
|
|
22
|
-
import.meta.url);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
3
|
const WorldCache = Symbol.for('@workflow/world//cache');
|
|
26
4
|
const StubbedWorldCache = Symbol.for('@workflow/world//stubbedCache');
|
|
27
5
|
const WorldCachePromise = Symbol.for('@workflow/world//cachePromise');
|
|
28
6
|
const StubbedWorldCachePromise = Symbol.for('@workflow/world//stubbedCachePromise');
|
|
29
7
|
const globalSymbols = globalThis;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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();
|
|
40
19
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return pathToFileURL(
|
|
44
|
-
/* webpackIgnore: true */
|
|
45
|
-
/* turbopackIgnore: true */
|
|
46
|
-
specifier).href;
|
|
20
|
+
if (typeof mod.createLocalWorld === 'function') {
|
|
21
|
+
return mod.createLocalWorld();
|
|
47
22
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return pathToFileURL(
|
|
51
|
-
/* webpackIgnore: true */
|
|
52
|
-
/* turbopackIgnore: true */
|
|
53
|
-
process.cwd() + '/' + specifier).href;
|
|
23
|
+
if (typeof mod.createVercelWorld === 'function') {
|
|
24
|
+
return mod.createVercelWorld();
|
|
54
25
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
return pathToFileURL(
|
|
58
|
-
/* webpackIgnore: true */
|
|
59
|
-
/* turbopackIgnore: true */
|
|
60
|
-
getRuntimeRequire().resolve(
|
|
61
|
-
/* webpackIgnore: true */
|
|
62
|
-
/* turbopackIgnore: true */
|
|
63
|
-
specifier)).href;
|
|
26
|
+
if (typeof mod.default === 'function') {
|
|
27
|
+
return mod.default();
|
|
64
28
|
}
|
|
65
|
-
|
|
66
|
-
return
|
|
29
|
+
if (mod.default && typeof mod.default === 'object') {
|
|
30
|
+
return mod.default;
|
|
67
31
|
}
|
|
32
|
+
throw new Error('Invalid target world module: must export createWorld(), a default factory, or a default World instance.');
|
|
68
33
|
}
|
|
69
34
|
/**
|
|
70
|
-
* Create a new world instance
|
|
71
|
-
* WORKFLOW_TARGET_WORLD is used to determine the target world.
|
|
35
|
+
* Create a new world instance from the statically imported target world module.
|
|
72
36
|
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* authentication via OIDC tokens and project context via system env vars
|
|
77
|
-
* (VERCEL_DEPLOYMENT_ID, VERCEL_PROJECT_ID). Tooling that needs these env
|
|
78
|
-
* vars should call createVercelWorld() directly with an explicit config and
|
|
79
|
-
* 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.
|
|
80
40
|
*/
|
|
81
41
|
export const createWorld = async () => {
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
'
|
|
92
|
-
'
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if (staleEnvVars.length > 0 && process.env.VERCEL === '1') {
|
|
96
|
-
console.warn(`[workflow] Warning: ${staleEnvVars.join(', ')} env var(s) ` +
|
|
97
|
-
'are set but have no effect at runtime. These are only used by the Workflow CLI. ' +
|
|
98
|
-
'Remove them from your Vercel project environment variables.');
|
|
99
|
-
}
|
|
100
|
-
return createVercelWorld();
|
|
101
|
-
}
|
|
102
|
-
if (targetWorld === 'local') {
|
|
103
|
-
return createLocalWorld({
|
|
104
|
-
dataDir: process.env.WORKFLOW_LOCAL_DATA_DIR,
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
// Try require() first for custom worlds — this avoids Turbopack tracing
|
|
108
|
-
// a dynamic import() that it can't statically resolve. Fall back to
|
|
109
|
-
// dynamic import() for ESM-only packages.
|
|
110
|
-
let mod;
|
|
111
|
-
try {
|
|
112
|
-
mod = getRuntimeRequire()(
|
|
113
|
-
/* webpackIgnore: true */
|
|
114
|
-
/* turbopackIgnore: true */
|
|
115
|
-
targetWorld);
|
|
116
|
-
}
|
|
117
|
-
catch {
|
|
118
|
-
const resolvedPath = resolveModulePath(targetWorld);
|
|
119
|
-
mod = await import(
|
|
120
|
-
/* webpackIgnore: true */
|
|
121
|
-
/* turbopackIgnore: true */
|
|
122
|
-
resolvedPath);
|
|
123
|
-
}
|
|
124
|
-
if (typeof mod === 'function') {
|
|
125
|
-
return mod();
|
|
126
|
-
}
|
|
127
|
-
else if (typeof mod.default === 'function') {
|
|
128
|
-
return mod.default();
|
|
129
|
-
}
|
|
130
|
-
else if (typeof mod.createWorld === 'function') {
|
|
131
|
-
return mod.createWorld();
|
|
132
|
-
}
|
|
133
|
-
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;
|
|
134
55
|
};
|
|
135
56
|
/**
|
|
136
57
|
* Some functions from the world are needed at build time, but we do NOT want
|
|
@@ -190,10 +111,7 @@ export const setWorld = (world) => {
|
|
|
190
111
|
globalSymbols[StubbedWorldCachePromise] = undefined;
|
|
191
112
|
};
|
|
192
113
|
// Register getWorld on globalThis so getWorldLazy can call it directly when
|
|
193
|
-
// world.ts is statically present in the bundle.
|
|
194
|
-
// dynamic import('./world.js') fallback in get-world-lazy.ts, which fails
|
|
195
|
-
// after Next.js inlines get-world-lazy.js into a route bundle (no sibling
|
|
196
|
-
// world.js exists at the bundled location).
|
|
114
|
+
// world.ts is statically present in the bundle.
|
|
197
115
|
//
|
|
198
116
|
// For server routes that only consume `start` (or another helper that goes
|
|
199
117
|
// through getWorldLazy without statically using getWorld), webpack/turbopack
|
|
@@ -208,4 +126,4 @@ export const setWorld = (world) => {
|
|
|
208
126
|
const GetWorldFnKey = Symbol.for('@workflow/world//getWorldFn');
|
|
209
127
|
globalThis[GetWorldFnKey] ??=
|
|
210
128
|
getWorld;
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS93b3JsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQiwwQkFBMEIsR0FDM0IsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5RSxTQUFTLGlCQUFpQjtJQUN4QixxRUFBcUU7SUFDckUscUVBQXFFO0lBQ3JFLHNFQUFzRTtJQUN0RSxvREFBb0Q7SUFDcEQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxhQUFhO1FBQ2xCLHlCQUF5QjtRQUN6QiwyQkFBMkI7UUFDM0IsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQ3BELENBQUM7SUFDSixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxhQUFhO1FBQ2xCLHlCQUF5QjtRQUN6QiwyQkFBMkI7UUFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2hCLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUN4RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztBQUN0RSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztBQUN0RSxNQUFN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Q0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbEMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3pDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM3QyxhQUFhLENBQUMsd0JBQXdCLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDdEQsQ0FBQyxDQUFDO0FBRUYsNEVBQTRFO0FBQzVFLHlFQUF5RTtBQUN6RSwwRUFBMEU7QUFDMUUsMEVBQTBFO0FBQzFFLDRDQUE0QztBQUM1QyxFQUFFO0FBQ0YsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSxzRUFBc0U7QUFDdEUsMEVBQTBFO0FBQzFFLG1FQUFtRTtBQUNuRSx3RUFBd0U7QUFDeEUsRUFBRTtBQUNGLHdFQUF3RTtBQUN4RSwwRUFBMEU7QUFDMUUsb0JBQW9CO0FBQ3BCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUMvRCxVQUF5RCxDQUFDLGFBQWEsQ0FBQztJQUN2RSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSAnbm9kZTptb2R1bGUnO1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB7XG4gIGlzVmVyY2VsV29ybGRUYXJnZXQsXG4gIHJlc29sdmVXb3JrZmxvd1RhcmdldFdvcmxkLFxufSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBXb3JsZCB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBjcmVhdGVMb2NhbFdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkLWxvY2FsJztcbmltcG9ydCB7IGNyZWF0ZVZlcmNlbFdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkLXZlcmNlbCc7XG5pbXBvcnQgeyBhc3NlcnRXb3JsZFN1cHBvcnRzUnVudGltZVByb3RvY29sIH0gZnJvbSAnLi93b3JsZC1jb21wYXRpYmlsaXR5LmpzJztcblxuZnVuY3Rpb24gZ2V0UnVudGltZVJlcXVpcmUoKSB7XG4gIC8vIFJlc29sdmUgZnJvbSB0aGUgYXBwIHJvb3QgKHByb2Nlc3MuY3dkKCkpIHNvIGN1c3RvbSB3b3JsZCBwYWNrYWdlc1xuICAvLyBsaWtlIEB3b3JrZmxvdy93b3JsZC1wb3N0Z3JlcyBjYW4gYmUgZm91bmQgZXZlbiB0aG91Z2ggdGhleSdyZSBub3RcbiAgLy8gZGVwZW5kZW5jaWVzIG9mIEB3b3JrZmxvdy9jb3JlLiBVc2luZyBpbXBvcnQubWV0YS51cmwgd291bGQgcmVzb2x2ZVxuICAvLyBmcm9tIGNvcmUncyBsb2NhdGlvbiwgbWlzc2luZyBhcHAtbGV2ZWwgcGFja2FnZXMuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGNyZWF0ZVJlcXVpcmUoXG4gICAgICAvKiB3ZWJwYWNrSWdub3JlOiB0cnVlICovXG4gICAgICAvKiB0dXJib3BhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgIHBhdGhUb0ZpbGVVUkwocHJvY2Vzcy5jd2QoKSArICcvcGFja2FnZS5qc29uJykuaHJlZlxuICAgICk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBjcmVhdGVSZXF1aXJlKFxuICAgICAgLyogd2VicGFja0lnbm9yZTogdHJ1ZSAqL1xuICAgICAgLyogdHVyYm9wYWNrSWdub3JlOiB0cnVlICovXG4gICAgICBpbXBvcnQubWV0YS51cmxcbiAgICApO1xuICB9XG59XG5cbmNvbnN0IFdvcmxkQ2FjaGUgPSBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvd29ybGQvL2NhY2hlJyk7XG5jb25zdCBTdHViYmVkV29ybGRDYWNoZSA9IFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy93b3JsZC8vc3R1YmJlZENhY2hlJyk7XG5jb25zdCBXb3JsZENhY2hlUHJvbWlzZSA9IFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy93b3JsZC8vY2FjaGVQcm9taXNlJyk7XG5jb25zdCBTdHViYmVkV29ybGRDYWNoZVByb21pc2UgPSBTeW1ib2wuZm9yKFxuICAnQHdvcmtmbG93L3dvcmxkLy9zdHViYmVkQ2FjaGVQcm9taXNlJ1xuKTtcblxuY29uc3QgZ2xvYmFsU3ltYm9sczogdHlwZW9mIGdsb2JhbFRoaXMgJiB7XG4gIFtXb3JsZENhY2hlXT86IFdvcmxkO1xuICBbU3R1YmJlZFdvcmxkQ2FjaGVdPzogV29ybGQ7XG4gIFtXb3JsZENhY2hlUHJvbWlzZV0/OiBQcm9taXNlPFdvcmxkPjtcbiAgW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV0/OiBQcm9taXNlPFdvcmxkPjtcbn0gPSBnbG9iYWxUaGlzO1xuXG4vLyBEeW5hbWljIGltcG9ydCBmb3IgY3VzdG9tIHdvcmxkIG1vZHVsZXMuIFVzZXMgYSBzdGFuZGFyZCBpbXBvcnQoKVxuLy8gd3JhcHBlZCBpbiBhIHRyeS9jYXRjaCB3aXRoIHJlcXVpcmUoKSBmYWxsYmFjayBmb3IgQ0pTIHRlc3QgcnVubmVycy5cbi8vIE5vdGU6IHRoZSBwcmV2aW91cyBgbmV3IEZ1bmN0aW9uKCdzcGVjaWZpZXInLCAncmV0dXJuIGltcG9ydChzcGVjaWZpZXIpJylgXG4vLyBwYXR0ZXJuIHdhcyByZXBsYWNlZCBiZWNhdXNlIFR1cmJvcGFjayAoTmV4dC5qcykgdHJlYXRzIHVucmVzb2x2YWJsZVxuLy8gZHluYW1pYyBpbXBvcnRzIGZyb20gYG5ldyBGdW5jdGlvbmAgYXMgZmF0YWwgYnVpbGQgZXJyb3JzIGluIHRoZSBWMlxuLy8gY29tYmluZWQgZmxvdyByb3V0ZSBjb250ZXh0LlxuXG5mdW5jdGlvbiByZXNvbHZlTW9kdWxlUGF0aChzcGVjaWZpZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIEFscmVhZHkgYSBmaWxlOi8vIFVSTFxuICBpZiAoc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xuICAgIHJldHVybiBzcGVjaWZpZXI7XG4gIH1cbiAgLy8gQWJzb2x1dGUgcGF0aCAtIGNvbnZlcnQgdG8gZmlsZTovLyBVUkxcbiAgaWYgKHNwZWNpZmllci5zdGFydHNXaXRoKCcvJykpIHtcbiAgICByZXR1cm4gcGF0aFRvRmlsZVVSTChcbiAgICAgIC8qIHdlYnBhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgIC8qIHR1cmJvcGFja0lnbm9yZTogdHJ1ZSAqL1xuICAgICAgc3BlY2lmaWVyXG4gICAgKS5ocmVmO1xuICB9XG4gIC8vIFJlbGF0aXZlIHBhdGggLSByZXNvbHZlIHJlbGF0aXZlIHRvIGN3ZCBhbmQgY29udmVydCB0byBmaWxlOi8vIFVSTFxuICBpZiAoc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy4vJykgfHwgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy4uLycpKSB7XG4gICAgcmV0dXJuIHBhdGhUb0ZpbGVVUkwoXG4gICAgICAvKiB3ZWJwYWNrSWdub3JlOiB0cnVlICovXG4gICAgICAvKiB0dXJib3BhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgIHByb2Nlc3MuY3dkKCkgKyAnLycgKyBzcGVjaWZpZXJcbiAgICApLmhyZWY7XG4gIH1cbiAgLy8gUGFja2FnZSBzcGVjaWZpZXIgLSB1c2UgcmVxdWlyZS5yZXNvbHZlIHRvIGZpbmQgdGhlIHBhY2thZ2VcbiAgdHJ5IHtcbiAgICByZXR1cm4gcGF0aFRvRmlsZVVSTChcbiAgICAgIC8qIHdlYnBhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgIC8qIHR1cmJvcGFja0lnbm9yZTogdHJ1ZSAqL1xuICAgICAgZ2V0UnVudGltZVJlcXVpcmUoKS5yZXNvbHZlKFxuICAgICAgICAvKiB3ZWJwYWNrSWdub3JlOiB0cnVlICovXG4gICAgICAgIC8qIHR1cmJvcGFja0lnbm9yZTogdHJ1ZSAqL1xuICAgICAgICBzcGVjaWZpZXJcbiAgICAgIClcbiAgICApLmhyZWY7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBzcGVjaWZpZXI7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgd29ybGQgaW5zdGFuY2UgYmFzZWQgb24gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICogV09SS0ZMT1dfVEFSR0VUX1dPUkxEIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB0YXJnZXQgd29ybGQuXG4gKlxuICogTm90ZTogV09SS0ZMT1dfVkVSQ0VMXyogZW52IHZhcnMgKFBST0pFQ1QsIFRFQU0sIEFVVEhfVE9LRU4sIGV0Yy4pIGFyZVxuICogaW50ZW50aW9uYWxseSBOT1QgcmVhZCBoZXJlLiBUaG9zZSBhcmUgZm9yIENMSS9vYnNlcnZhYmlsaXR5IHRvb2xpbmcgb25seVxuICogYW5kIHNob3VsZCBub3QgYWZmZWN0IHJ1bnRpbWUgYmVoYXZpb3IuIFRoZSBWZXJjZWwgcnVudGltZSBwcm92aWRlc1xuICogYXV0aGVudGljYXRpb24gdmlhIE9JREMgdG9rZW5zIGFuZCBwcm9qZWN0IGNvbnRleHQgdmlhIHN5c3RlbSBlbnYgdmFyc1xuICogKFZFUkNFTF9ERVBMT1lNRU5UX0lELCBWRVJDRUxfUFJPSkVDVF9JRCkuIFRvb2xpbmcgdGhhdCBuZWVkcyB0aGVzZSBlbnZcbiAqIHZhcnMgc2hvdWxkIGNhbGwgY3JlYXRlVmVyY2VsV29ybGQoKSBkaXJlY3RseSB3aXRoIGFuIGV4cGxpY2l0IGNvbmZpZyBhbmRcbiAqIHVzZSBzZXRXb3JsZCgpIHRvIGluamVjdCB0aGUgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVXb3JsZCA9IGFzeW5jICgpOiBQcm9taXNlPFdvcmxkPiA9PiB7XG4gIGNvbnN0IHRhcmdldFdvcmxkID0gcmVzb2x2ZVdvcmtmbG93VGFyZ2V0V29ybGQoKTtcblxuICBpZiAoaXNWZXJjZWxXb3JsZFRhcmdldCh0YXJnZXRXb3JsZCkpIHtcbiAgICAvLyBXYXJuIGlmIFdPUktGTE9XX1ZFUkNFTF8qIGVudiB2YXJzIGFyZSBzZXQgaW5zaWRlIGEgVmVyY2VsIHNlcnZlcmxlc3NcbiAgICAvLyBmdW5jdGlvbiAoVkVSQ0VMPTEpIOKAlCB0aGV5IGhhdmUgbm8gZWZmZWN0IGF0IHJ1bnRpbWUgYW5kIGxpa2VseSBpbmRpY2F0ZVxuICAgIC8vIGEgbWlzY29uZmlndXJhdGlvbiAodXNlciBtYW51YWxseSBhZGRlZCB0aGVtIGFzIFZlcmNlbCBwcm9qZWN0IGVudiB2YXJzLFxuICAgIC8vIHdoaWNoIGlzIG5vdCBuZWVkZWQpLiBXZSBnYXRlIG9uIFZFUkNFTD0xIHNvIHRoZSB3YXJuaW5nIGRvZXMgbm90IGZpcmVcbiAgICAvLyB3aGVuIHRoZSBDTEkgb3Igd2ViIG9ic2VydmFiaWxpdHkgYXBwIHNldHMgdGhlc2UgZW52IHZhcnMgaW50ZW50aW9uYWxseS5cbiAgICBjb25zdCBzdGFsZUVudlZhcnMgPSBbXG4gICAgICAnV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1QnLFxuICAgICAgJ1dPUktGTE9XX1ZFUkNFTF9URUFNJyxcbiAgICAgICdXT1JLRkxPV19WRVJDRUxfQVVUSF9UT0tFTicsXG4gICAgICAnV09SS0ZMT1dfVkVSQ0VMX0VOVicsXG4gICAgXS5maWx0ZXIoKGtleSkgPT4gcHJvY2Vzcy5lbnZba2V5XSk7XG4gICAgaWYgKHN0YWxlRW52VmFycy5sZW5ndGggPiAwICYmIHByb2Nlc3MuZW52LlZFUkNFTCA9PT0gJzEnKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbd29ya2Zsb3ddIFdhcm5pbmc6ICR7c3RhbGVFbnZWYXJzLmpvaW4oJywgJyl9IGVudiB2YXIocykgYCArXG4gICAgICAgICAgJ2FyZSBzZXQgYnV0IGhhdmUgbm8gZWZmZWN0IGF0IHJ1bnRpbWUuIFRoZXNlIGFyZSBvbmx5IHVzZWQgYnkgdGhlIFdvcmtmbG93IENMSS4gJyArXG4gICAgICAgICAgJ1JlbW92ZSB0aGVtIGZyb20geW91ciBWZXJjZWwgcHJvamVjdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3JlYXRlVmVyY2VsV29ybGQoKTtcbiAgfVxuXG4gIGlmICh0YXJnZXRXb3JsZCA9PT0gJ2xvY2FsJykge1xuICAgIHJldHVybiBjcmVhdGVMb2NhbFdvcmxkKHtcbiAgICAgIGRhdGFEaXI6IHByb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX0RBVEFfRElSLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gVHJ5IHJlcXVpcmUoKSBmaXJzdCBmb3IgY3VzdG9tIHdvcmxkcyDigJQgdGhpcyBhdm9pZHMgVHVyYm9wYWNrIHRyYWNpbmdcbiAgLy8gYSBkeW5hbWljIGltcG9ydCgpIHRoYXQgaXQgY2FuJ3Qgc3RhdGljYWxseSByZXNvbHZlLiBGYWxsIGJhY2sgdG9cbiAgLy8gZHluYW1pYyBpbXBvcnQoKSBmb3IgRVNNLW9ubHkgcGFja2FnZXMuXG4gIGxldCBtb2Q6IGFueTtcbiAgdHJ5IHtcbiAgICBtb2QgPSBnZXRSdW50aW1lUmVxdWlyZSgpKFxuICAgICAgLyogd2VicGFja0lnbm9yZTogdHJ1ZSAqL1xuICAgICAgLyogdHVyYm9wYWNrSWdub3JlOiB0cnVlICovXG4gICAgICB0YXJnZXRXb3JsZFxuICAgICk7XG4gIH0gY2F0Y2gge1xuICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IHJlc29sdmVNb2R1bGVQYXRoKHRhcmdldFdvcmxkKTtcbiAgICBtb2QgPSBhd2FpdCBpbXBvcnQoXG4gICAgICAvKiB3ZWJwYWNrSWdub3JlOiB0cnVlICovXG4gICAgICAvKiB0dXJib3BhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgIHJlc29sdmVkUGF0aFxuICAgICk7XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2QgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbW9kKCkgYXMgV29ybGQ7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG1vZC5kZWZhdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1vZC5kZWZhdWx0KCkgYXMgV29ybGQ7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG1vZC5jcmVhdGVXb3JsZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBtb2QuY3JlYXRlV29ybGQoKSBhcyBXb3JsZDtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgSW52YWxpZCB0YXJnZXQgd29ybGQgbW9kdWxlOiAke3RhcmdldFdvcmxkfSwgbXVzdCBleHBvcnQgYSBkZWZhdWx0IGZ1bmN0aW9uIG9yIGNyZWF0ZVdvcmxkIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIFdvcmxkIGluc3RhbmNlLmBcbiAgKTtcbn07XG5cbmV4cG9ydCB0eXBlIFdvcmxkSGFuZGxlcnMgPSBQaWNrPFdvcmxkLCAnY3JlYXRlUXVldWVIYW5kbGVyJyB8ICdzcGVjVmVyc2lvbic+O1xuXG4vKipcbiAqIFNvbWUgZnVuY3Rpb25zIGZyb20gdGhlIHdvcmxkIGFyZSBuZWVkZWQgYXQgYnVpbGQgdGltZSwgYnV0IHdlIGRvIE5PVCB3YW50XG4gKiB0byBjYWNoZSB0aGUgd29ybGQgaW4gdGhvc2UgaW5zdGFuY2VzIGZvciBnZW5lcmFsIHVzZSwgc2luY2Ugd2UgZG9uJ3QgaGF2ZVxuICogdGhlIGNvcnJlY3QgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNldCB5ZXQuIFRoaXMgaXMgYSBzYWZlIGZ1bmN0aW9uIHRvXG4gKiBjYWxsIGF0IGJ1aWxkIHRpbWUsIHRoYXQgb25seSBnaXZlcyBhY2Nlc3MgdG8gbm9uLWVudmlyb25tZW50LWJvdW5kIHdvcmxkXG4gKiBmdW5jdGlvbnMuIFRoZSBvbmx5IGJpbmRpbmcgdmFsdWUgc2hvdWxkIGJlIHRoZSB0YXJnZXQgd29ybGQuXG4gKiBPbmNlIHdlIG1pZ3JhdGUgdG8gYSBmaWxlLWJhc2VkIGNvbmZpZ3VyYXRpb24gKHdvcmtmbG93LmNvbmZpZy50cyksIHdlIHNob3VsZFxuICogYmUgYWJsZSB0byByZS1jb21iaW5lIGdldFdvcmxkIGFuZCBnZXRXb3JsZEhhbmRsZXJzIGludG8gb25lIHNpbmdsZXRvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFdvcmxkSGFuZGxlcnMgPSBhc3luYyAoKTogUHJvbWlzZTxXb3JsZEhhbmRsZXJzPiA9PiB7XG4gIGlmIChnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlXSkge1xuICAgIGFzc2VydFdvcmxkU3VwcG9ydHNSdW50aW1lUHJvdG9jb2woZ2xvYmFsU3ltYm9sc1tTdHViYmVkV29ybGRDYWNoZV0pO1xuICAgIHJldHVybiBnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlXTtcbiAgfVxuICAvLyBTdG9yZSB0aGUgcHJvbWlzZSBpbW1lZGlhdGVseSB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyB3aXRoIGNvbmN1cnJlbnQgY2FsbHMuXG4gIC8vIENsZWFyIG9uIHJlamVjdGlvbiBzbyBzdWJzZXF1ZW50IGNhbGxzIGNhbiByZXRyeSBpbnN0ZWFkIG9mIGNhY2hpbmcgdGhlIGZhaWx1cmUuXG4gIGlmICghZ2xvYmFsU3ltYm9sc1tTdHViYmVkV29ybGRDYWNoZVByb21pc2VdKSB7XG4gICAgZ2xvYmFsU3ltYm9sc1tTdHViYmVkV29ybGRDYWNoZVByb21pc2VdID0gY3JlYXRlV29ybGQoKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICBnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV0gPSB1bmRlZmluZWQ7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgX3dvcmxkID0gYXdhaXQgZ2xvYmFsU3ltYm9sc1tTdHViYmVkV29ybGRDYWNoZVByb21pc2VdO1xuICBhc3NlcnRXb3JsZFN1cHBvcnRzUnVudGltZVByb3RvY29sKF93b3JsZCk7XG4gIGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVdID0gX3dvcmxkO1xuICByZXR1cm4ge1xuICAgIGNyZWF0ZVF1ZXVlSGFuZGxlcjogX3dvcmxkLmNyZWF0ZVF1ZXVlSGFuZGxlcixcbiAgICBzcGVjVmVyc2lvbjogX3dvcmxkLnNwZWNWZXJzaW9uLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFdvcmxkID0gYXN5bmMgKCk6IFByb21pc2U8V29ybGQ+ID0+IHtcbiAgaWYgKGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZV0pIHtcbiAgICBhc3NlcnRXb3JsZFN1cHBvcnRzUnVudGltZVByb3RvY29sKGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZV0pO1xuICAgIHJldHVybiBnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVdO1xuICB9XG4gIC8vIFN0b3JlIHRoZSBwcm9taXNlIGltbWVkaWF0ZWx5IHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIHdpdGggY29uY3VycmVudCBjYWxscy5cbiAgLy8gQ2xlYXIgb24gcmVqZWN0aW9uIHNvIHN1YnNlcXVlbnQgY2FsbHMgY2FuIHJldHJ5IGluc3RlYWQgb2YgY2FjaGluZyB0aGUgZmFpbHVyZS5cbiAgaWYgKCFnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVQcm9taXNlXSkge1xuICAgIGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZVByb21pc2VdID0gY3JlYXRlV29ybGQoKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICBnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVQcm9taXNlXSA9IHVuZGVmaW5lZDtcbiAgICAgIHRocm93IGVycjtcbiAgICB9KTtcbiAgfVxuICBnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVdID0gYXdhaXQgZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlUHJvbWlzZV07XG4gIGFzc2VydFdvcmxkU3VwcG9ydHNSdW50aW1lUHJvdG9jb2woZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlXSk7XG4gIHJldHVybiBnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVdO1xufTtcblxuLyoqXG4gKiBSZXNldCB0aGUgY2FjaGVkIHdvcmxkIGluc3RhbmNlLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgd2hlbiBlbnZpcm9ubWVudFxuICogdmFyaWFibGVzIGNoYW5nZSBhbmQgeW91IG5lZWQgdG8gcmVpbml0aWFsaXplIHRoZSB3b3JsZCB3aXRoIG5ldyBjb25maWcuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRXb3JsZCA9ICh3b3JsZDogV29ybGQgfCB1bmRlZmluZWQpOiB2b2lkID0+IHtcbiAgZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlXSA9IHdvcmxkO1xuICBnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlXSA9IHdvcmxkO1xuICBnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVQcm9taXNlXSA9IHVuZGVmaW5lZDtcbiAgZ2xvYmFsU3ltYm9sc1tTdHViYmVkV29ybGRDYWNoZVByb21pc2VdID0gdW5kZWZpbmVkO1xufTtcblxuLy8gUmVnaXN0ZXIgZ2V0V29ybGQgb24gZ2xvYmFsVGhpcyBzbyBnZXRXb3JsZExhenkgY2FuIGNhbGwgaXQgZGlyZWN0bHkgd2hlblxuLy8gd29ybGQudHMgaXMgc3RhdGljYWxseSBwcmVzZW50IGluIHRoZSBidW5kbGUuIFRoaXMgYXZvaWRzIHRoZSByZWxhdGl2ZVxuLy8gZHluYW1pYyBpbXBvcnQoJy4vd29ybGQuanMnKSBmYWxsYmFjayBpbiBnZXQtd29ybGQtbGF6eS50cywgd2hpY2ggZmFpbHNcbi8vIGFmdGVyIE5leHQuanMgaW5saW5lcyBnZXQtd29ybGQtbGF6eS5qcyBpbnRvIGEgcm91dGUgYnVuZGxlIChubyBzaWJsaW5nXG4vLyB3b3JsZC5qcyBleGlzdHMgYXQgdGhlIGJ1bmRsZWQgbG9jYXRpb24pLlxuLy9cbi8vIEZvciBzZXJ2ZXIgcm91dGVzIHRoYXQgb25seSBjb25zdW1lIGBzdGFydGAgKG9yIGFub3RoZXIgaGVscGVyIHRoYXQgZ29lc1xuLy8gdGhyb3VnaCBnZXRXb3JsZExhenkgd2l0aG91dCBzdGF0aWNhbGx5IHVzaW5nIGdldFdvcmxkKSwgd2VicGFjay90dXJib3BhY2tcbi8vIHdvdWxkIG90aGVyd2lzZSB0cmVlLXNoYWtlIHdvcmxkLnRzIG91dCBvZiB0aGUgYnVuZGxlIGVudGlyZWx5LiBUaGVcbi8vIGhvc3Qtb25seSBgLi93b3JsZC1pbml0LnRzYCBtb2R1bGUgaW1wb3J0cyB3b3JsZC50cyBmb3IgaXRzIHNpZGUgZWZmZWN0XG4vLyBhbmQgaXMgaXRzZWxmIGltcG9ydGVkIGJ5IGBwYWNrYWdlcy93b3JrZmxvdy9zcmMvYXBpLnRzYCBzbyB0aGlzXG4vLyByZWdpc3RyYXRpb24gcnVucyBpbiBldmVyeSBzZXJ2ZXIgYnVuZGxlIHRoYXQgdG91Y2hlcyBgd29ya2Zsb3cvYXBpYC5cbi8vXG4vLyBTdGVwL1ZNIGJ1bmRsZXMgbmV2ZXIgcmVhY2ggdGhpcyBicmFuY2g6IHRoZXkgZG9uJ3Qgc3RhdGljYWxseSBpbXBvcnRcbi8vIHdvcmxkLnRzLCBhbmQgYHdvcmxkLWluaXRgIHJlc29sdmVzIHRvIGFuIGVtcHR5IHN0dWIgdmlhIHRoZSBgd29ya2Zsb3dgXG4vLyBleHBvcnQgY29uZGl0aW9uLlxuY29uc3QgR2V0V29ybGRGbktleSA9IFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy93b3JsZC8vZ2V0V29ybGRGbicpO1xuKGdsb2JhbFRoaXMgYXMgeyBbR2V0V29ybGRGbktleV0/OiAoKSA9PiBQcm9taXNlPFdvcmxkPiB9KVtHZXRXb3JsZEZuS2V5XSA/Pz1cbiAgZ2V0V29ybGQ7XG4iXX0=
|
|
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
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"
|
|
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"}
|