openworkflow 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -347
- package/dist/{testing → backend-test}/backend.testsuite.d.ts +1 -1
- package/dist/backend-test/backend.testsuite.d.ts.map +1 -0
- package/dist/{testing → backend-test}/backend.testsuite.js +8 -9
- package/dist/backend-test/index.d.ts +2 -0
- package/dist/backend-test/index.d.ts.map +1 -0
- package/dist/{testing → backend-test}/index.js +0 -1
- package/dist/backend.js +0 -1
- package/dist/backend.testsuite.d.ts +20 -0
- package/dist/backend.testsuite.d.ts.map +1 -0
- package/dist/backend.testsuite.js +1090 -0
- package/dist/bin/openworkflow.js +0 -1
- package/dist/chaos.test.d.ts +2 -0
- package/dist/chaos.test.d.ts.map +1 -0
- package/dist/chaos.test.js +88 -0
- package/dist/client.js +0 -1
- package/dist/client.test.d.ts +2 -0
- package/dist/client.test.d.ts.map +1 -0
- package/dist/client.test.js +311 -0
- package/dist/core/duration.js +0 -1
- package/dist/core/duration.test.d.ts +2 -0
- package/dist/core/duration.test.d.ts.map +1 -0
- package/dist/core/duration.test.js +263 -0
- package/dist/core/error.js +0 -1
- package/dist/core/error.test.d.ts +2 -0
- package/dist/core/error.test.d.ts.map +1 -0
- package/dist/core/error.test.js +60 -0
- package/dist/core/json.js +0 -1
- package/dist/core/result.js +0 -1
- package/dist/core/result.test.d.ts +2 -0
- package/dist/core/result.test.d.ts.map +1 -0
- package/dist/core/result.test.js +11 -0
- package/dist/core/retry.js +0 -1
- package/dist/core/schema.js +0 -1
- package/dist/core/step.js +0 -1
- package/dist/core/step.test.d.ts +2 -0
- package/dist/core/step.test.d.ts.map +1 -0
- package/dist/core/step.test.js +266 -0
- package/dist/core/workflow.js +0 -1
- package/dist/core/workflow.test.d.ts +2 -0
- package/dist/core/workflow.test.d.ts.map +1 -0
- package/dist/core/workflow.test.js +113 -0
- package/dist/driver.d.ts +116 -0
- package/dist/driver.d.ts.map +1 -0
- package/dist/driver.js +1 -0
- package/dist/execution.js +0 -1
- package/dist/execution.test.d.ts +2 -0
- package/dist/execution.test.d.ts.map +1 -0
- package/dist/execution.test.js +381 -0
- package/dist/factory.d.ts +74 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +72 -0
- package/dist/index.js +0 -1
- package/dist/internal.d.ts +4 -5
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +1 -4
- package/dist/{backend-sqlite/index.d.ts → node-sqlite/backend.d.ts} +14 -4
- package/dist/node-sqlite/backend.d.ts.map +1 -0
- package/dist/{backend-sqlite/index.js → node-sqlite/backend.js} +23 -5
- package/dist/node-sqlite/index.d.ts +11 -0
- package/dist/node-sqlite/index.d.ts.map +1 -0
- package/dist/node-sqlite/index.js +7 -0
- package/dist/{backend-sqlite → node-sqlite}/sqlite.d.ts +2 -3
- package/dist/node-sqlite/sqlite.d.ts.map +1 -0
- package/dist/{backend-sqlite → node-sqlite}/sqlite.js +0 -1
- package/dist/{pg → postgres}/backend.d.ts +3 -1
- package/dist/postgres/backend.d.ts.map +1 -0
- package/dist/{pg → postgres}/backend.js +5 -5
- package/dist/postgres/backend.test.d.ts +2 -0
- package/dist/postgres/backend.test.d.ts.map +1 -0
- package/dist/postgres/backend.test.js +19 -0
- package/dist/postgres/driver.d.ts +81 -0
- package/dist/postgres/driver.d.ts.map +1 -0
- package/dist/postgres/driver.js +63 -0
- package/dist/postgres/index.d.ts +11 -0
- package/dist/postgres/index.d.ts.map +1 -0
- package/dist/postgres/index.js +7 -0
- package/dist/postgres/internal.d.ts +2 -0
- package/dist/postgres/internal.d.ts.map +1 -0
- package/dist/postgres/internal.js +1 -0
- package/dist/postgres/postgres.d.ts.map +1 -0
- package/dist/{backend-postgres → postgres}/postgres.js +0 -1
- package/dist/postgres/postgres.test.d.ts +2 -0
- package/dist/postgres/postgres.test.d.ts.map +1 -0
- package/dist/postgres/postgres.test.js +45 -0
- package/dist/postgres/scripts/db-migrate.d.ts.map +1 -0
- package/dist/{pg → postgres}/scripts/db-migrate.js +0 -1
- package/dist/postgres/scripts/db-reset.d.ts.map +1 -0
- package/dist/{pg → postgres}/scripts/db-reset.js +0 -1
- package/dist/{pg → postgres}/scripts/squawk.d.ts.map +1 -1
- package/dist/{pg → postgres}/scripts/squawk.js +0 -1
- package/dist/postgres/vitest.global-setup.d.ts.map +1 -0
- package/dist/{pg → postgres}/vitest.global-setup.js +0 -1
- package/dist/postgres.d.ts +2 -0
- package/dist/postgres.d.ts.map +1 -0
- package/dist/postgres.js +1 -0
- package/dist/registry.js +0 -1
- package/dist/registry.test.d.ts +2 -0
- package/dist/registry.test.d.ts.map +1 -0
- package/dist/registry.test.js +109 -0
- package/dist/sqlite/backend.d.ts +3 -1
- package/dist/sqlite/backend.d.ts.map +1 -1
- package/dist/sqlite/backend.js +5 -5
- package/dist/sqlite/backend.test.d.ts +2 -0
- package/dist/sqlite/backend.test.d.ts.map +1 -0
- package/dist/sqlite/backend.test.js +50 -0
- package/dist/sqlite/driver.d.ts +79 -0
- package/dist/sqlite/driver.d.ts.map +1 -0
- package/dist/sqlite/driver.js +62 -0
- package/dist/sqlite/index.d.ts +12 -2
- package/dist/sqlite/index.d.ts.map +1 -1
- package/dist/sqlite/index.js +11 -3
- package/dist/sqlite/internal.d.ts +2 -0
- package/dist/sqlite/internal.d.ts.map +1 -0
- package/dist/sqlite/internal.js +1 -0
- package/dist/sqlite/sqlite.js +0 -1
- package/dist/sqlite/sqlite.test.d.ts +2 -0
- package/dist/sqlite/sqlite.test.d.ts.map +1 -0
- package/dist/sqlite/sqlite.test.js +171 -0
- package/dist/sqlite.d.ts +2 -0
- package/dist/sqlite.d.ts.map +1 -0
- package/dist/sqlite.js +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/worker.js +0 -1
- package/dist/worker.test.d.ts +2 -0
- package/dist/worker.test.d.ts.map +1 -0
- package/dist/worker.test.js +900 -0
- package/dist/workflow.js +0 -1
- package/dist/workflow.test.d.ts +2 -0
- package/dist/workflow.test.d.ts.map +1 -0
- package/dist/workflow.test.js +84 -0
- package/package.json +19 -5
- package/dist/backend-postgres/index.d.ts +0 -44
- package/dist/backend-postgres/index.d.ts.map +0 -1
- package/dist/backend-postgres/index.js +0 -535
- package/dist/backend-postgres/index.js.map +0 -1
- package/dist/backend-postgres/postgres.d.ts.map +0 -1
- package/dist/backend-postgres/postgres.js.map +0 -1
- package/dist/backend-sqlite/index.d.ts.map +0 -1
- package/dist/backend-sqlite/index.js.map +0 -1
- package/dist/backend-sqlite/sqlite.d.ts.map +0 -1
- package/dist/backend-sqlite/sqlite.js.map +0 -1
- package/dist/backend.js.map +0 -1
- package/dist/bin/openworkflow.js.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/config.d.ts +0 -34
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -49
- package/dist/config.js.map +0 -1
- package/dist/core/duration.js.map +0 -1
- package/dist/core/error.js.map +0 -1
- package/dist/core/json.js.map +0 -1
- package/dist/core/result.js.map +0 -1
- package/dist/core/retry.js.map +0 -1
- package/dist/core/schema.js.map +0 -1
- package/dist/core/step.js.map +0 -1
- package/dist/core/workflow.js.map +0 -1
- package/dist/execution.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal.js.map +0 -1
- package/dist/pg/backend.d.ts.map +0 -1
- package/dist/pg/backend.js.map +0 -1
- package/dist/pg/index.d.ts +0 -3
- package/dist/pg/index.d.ts.map +0 -1
- package/dist/pg/index.js +0 -3
- package/dist/pg/index.js.map +0 -1
- package/dist/pg/postgres.d.ts +0 -42
- package/dist/pg/postgres.d.ts.map +0 -1
- package/dist/pg/postgres.js +0 -234
- package/dist/pg/postgres.js.map +0 -1
- package/dist/pg/scripts/db-migrate.d.ts.map +0 -1
- package/dist/pg/scripts/db-migrate.js.map +0 -1
- package/dist/pg/scripts/db-reset.d.ts.map +0 -1
- package/dist/pg/scripts/db-reset.js.map +0 -1
- package/dist/pg/scripts/squawk.js.map +0 -1
- package/dist/pg/vitest.global-setup.d.ts.map +0 -1
- package/dist/pg/vitest.global-setup.js.map +0 -1
- package/dist/registry.js.map +0 -1
- package/dist/sqlite/backend.js.map +0 -1
- package/dist/sqlite/index.js.map +0 -1
- package/dist/sqlite/sqlite.js.map +0 -1
- package/dist/testing/backend.testsuite.d.ts.map +0 -1
- package/dist/testing/backend.testsuite.js.map +0 -1
- package/dist/testing/index.d.ts +0 -2
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js.map +0 -1
- package/dist/worker.js.map +0 -1
- package/dist/workflow.js.map +0 -1
- /package/dist/{backend-postgres → postgres}/postgres.d.ts +0 -0
- /package/dist/{pg → postgres}/scripts/db-migrate.d.ts +0 -0
- /package/dist/{pg → postgres}/scripts/db-reset.d.ts +0 -0
- /package/dist/{pg → postgres}/scripts/squawk.d.ts +0 -0
- /package/dist/{pg → postgres}/vitest.global-setup.d.ts +0 -0
package/dist/workflow.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.test.d.ts","sourceRoot":"","sources":["../workflow.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { defineWorkflow, defineWorkflowSpec, isWorkflow } from "./workflow.js";
|
|
2
|
+
import { describe, expect, test } from "vitest";
|
|
3
|
+
describe("defineWorkflowSpec", () => {
|
|
4
|
+
test("returns spec (passthrough)", () => {
|
|
5
|
+
const spec = { name: "test-workflow" };
|
|
6
|
+
const definedSpec = defineWorkflowSpec(spec);
|
|
7
|
+
expect(definedSpec).toStrictEqual(spec);
|
|
8
|
+
});
|
|
9
|
+
});
|
|
10
|
+
describe("defineWorkflow", () => {
|
|
11
|
+
test("returns workflow with spec and fn", () => {
|
|
12
|
+
// eslint-disable-next-line unicorn/consistent-function-scoping
|
|
13
|
+
function fn() {
|
|
14
|
+
return { result: "done" };
|
|
15
|
+
}
|
|
16
|
+
const spec = { name: "test-workflow" };
|
|
17
|
+
const workflow = defineWorkflow(spec, fn);
|
|
18
|
+
expect(workflow).toStrictEqual({
|
|
19
|
+
spec,
|
|
20
|
+
fn,
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe("isWorkflow", () => {
|
|
25
|
+
test("returns true for valid workflow objects", () => {
|
|
26
|
+
const workflow = defineWorkflow({ name: "test" }, () => "done");
|
|
27
|
+
expect(isWorkflow(workflow)).toBe(true);
|
|
28
|
+
});
|
|
29
|
+
test("returns false for null", () => {
|
|
30
|
+
expect(isWorkflow(null)).toBe(false);
|
|
31
|
+
});
|
|
32
|
+
test("returns false for undefined", () => {
|
|
33
|
+
// eslint-disable-next-line unicorn/no-useless-undefined
|
|
34
|
+
expect(isWorkflow(undefined)).toBe(false);
|
|
35
|
+
});
|
|
36
|
+
test("returns false for primitives", () => {
|
|
37
|
+
expect(isWorkflow("string")).toBe(false);
|
|
38
|
+
expect(isWorkflow(123)).toBe(false);
|
|
39
|
+
expect(isWorkflow(true)).toBe(false);
|
|
40
|
+
});
|
|
41
|
+
test("returns false for objects without spec", () => {
|
|
42
|
+
expect(isWorkflow({ fn: () => "result" })).toBe(false);
|
|
43
|
+
});
|
|
44
|
+
test("returns false for objects without fn", () => {
|
|
45
|
+
expect(isWorkflow({ spec: { name: "test" } })).toBe(false);
|
|
46
|
+
});
|
|
47
|
+
test("returns false for objects with invalid spec", () => {
|
|
48
|
+
expect(isWorkflow({ spec: null, fn: () => "result" })).toBe(false);
|
|
49
|
+
expect(isWorkflow({ spec: "invalid", fn: () => "result" })).toBe(false);
|
|
50
|
+
});
|
|
51
|
+
test("returns false for objects with invalid fn", () => {
|
|
52
|
+
expect(isWorkflow({ spec: { name: "test" }, fn: "not-a-function" })).toBe(false);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
// --- type checks below -------------------------------------------------------
|
|
56
|
+
// they're unused but useful to ensure that the types work as expected for both
|
|
57
|
+
// defineWorkflowSpec and defineWorkflow
|
|
58
|
+
const inferredTypesSpec = defineWorkflowSpec({
|
|
59
|
+
name: "inferred-types",
|
|
60
|
+
});
|
|
61
|
+
defineWorkflow(inferredTypesSpec, async ({ step }) => {
|
|
62
|
+
await step.run({ name: "step-1" }, () => {
|
|
63
|
+
return "success";
|
|
64
|
+
});
|
|
65
|
+
return { result: "done" };
|
|
66
|
+
});
|
|
67
|
+
const explicitInputTypeSpec = defineWorkflowSpec({
|
|
68
|
+
name: "explicit-input-type",
|
|
69
|
+
});
|
|
70
|
+
defineWorkflow(explicitInputTypeSpec, async ({ step }) => {
|
|
71
|
+
await step.run({ name: "step-1" }, () => {
|
|
72
|
+
return "success";
|
|
73
|
+
});
|
|
74
|
+
return { result: "done" };
|
|
75
|
+
});
|
|
76
|
+
const explicitInputAndOutputTypesSpec = defineWorkflowSpec({
|
|
77
|
+
name: "explicit-input-and-output-types",
|
|
78
|
+
});
|
|
79
|
+
defineWorkflow(explicitInputAndOutputTypesSpec, async ({ step }) => {
|
|
80
|
+
await step.run({ name: "step-1" }, () => {
|
|
81
|
+
return "success";
|
|
82
|
+
});
|
|
83
|
+
return { result: "done" };
|
|
84
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openworkflow",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Open-source TypeScript framework for building durable, resumable workflows",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"durable execution",
|
|
@@ -28,13 +28,19 @@
|
|
|
28
28
|
"exports": {
|
|
29
29
|
".": {
|
|
30
30
|
"types": "./dist/index.d.ts",
|
|
31
|
-
"development": "./index.ts",
|
|
32
31
|
"default": "./dist/index.js"
|
|
33
32
|
},
|
|
34
33
|
"./internal": {
|
|
35
34
|
"types": "./dist/internal.d.ts",
|
|
36
|
-
"development": "./internal.ts",
|
|
37
35
|
"default": "./dist/internal.js"
|
|
36
|
+
},
|
|
37
|
+
"./postgres": {
|
|
38
|
+
"types": "./dist/postgres.d.ts",
|
|
39
|
+
"default": "./dist/postgres.js"
|
|
40
|
+
},
|
|
41
|
+
"./sqlite": {
|
|
42
|
+
"types": "./dist/sqlite.d.ts",
|
|
43
|
+
"default": "./dist/sqlite.js"
|
|
38
44
|
}
|
|
39
45
|
},
|
|
40
46
|
"bin": {
|
|
@@ -51,9 +57,17 @@
|
|
|
51
57
|
"devDependencies": {
|
|
52
58
|
"arktype": "^2.1.29",
|
|
53
59
|
"valibot": "^1.2.0",
|
|
54
|
-
"vitest": "^4.0.
|
|
60
|
+
"vitest": "^4.0.18",
|
|
55
61
|
"yup": "^1.7.1",
|
|
56
|
-
"zod": "^4.3.
|
|
62
|
+
"zod": "^4.3.6"
|
|
63
|
+
},
|
|
64
|
+
"peerDependencies": {
|
|
65
|
+
"postgres": ">=3"
|
|
66
|
+
},
|
|
67
|
+
"peerDependenciesMeta": {
|
|
68
|
+
"postgres": {
|
|
69
|
+
"optional": true
|
|
70
|
+
}
|
|
57
71
|
},
|
|
58
72
|
"engines": {
|
|
59
73
|
"node": ">=20"
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { Backend, CancelWorkflowRunParams, ClaimWorkflowRunParams, CompleteStepAttemptParams, CompleteWorkflowRunParams, CreateStepAttemptParams, CreateWorkflowRunParams, ExtendWorkflowRunLeaseParams, FailStepAttemptParams, FailWorkflowRunParams, GetStepAttemptParams, GetWorkflowRunParams, ListStepAttemptsParams, ListWorkflowRunsParams, PaginatedResponse, SleepWorkflowRunParams } from "../backend.js";
|
|
2
|
-
import type { StepAttempt } from "../core/step.js";
|
|
3
|
-
import type { WorkflowRun } from "../core/workflow.js";
|
|
4
|
-
interface BackendPostgresOptions {
|
|
5
|
-
namespaceId?: string;
|
|
6
|
-
runMigrations?: boolean;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Manages a connection to a Postgres database for workflow operations.
|
|
10
|
-
*/
|
|
11
|
-
export declare class BackendPostgres implements Backend {
|
|
12
|
-
private pg;
|
|
13
|
-
private namespaceId;
|
|
14
|
-
private constructor();
|
|
15
|
-
/**
|
|
16
|
-
* Create and initialize a new BackendPostgres instance. This will
|
|
17
|
-
* automatically run migrations on startup unless `runMigrations` is set to
|
|
18
|
-
* false.
|
|
19
|
-
* @param url - Postgres connection URL
|
|
20
|
-
* @param options - Backend options
|
|
21
|
-
* @returns A connected backend instance
|
|
22
|
-
*/
|
|
23
|
-
static connect(url: string, options?: BackendPostgresOptions): Promise<BackendPostgres>;
|
|
24
|
-
stop(): Promise<void>;
|
|
25
|
-
createWorkflowRun(params: CreateWorkflowRunParams): Promise<WorkflowRun>;
|
|
26
|
-
getWorkflowRun(params: GetWorkflowRunParams): Promise<WorkflowRun | null>;
|
|
27
|
-
listWorkflowRuns(params: ListWorkflowRunsParams): Promise<PaginatedResponse<WorkflowRun>>;
|
|
28
|
-
private buildListWorkflowRunsWhere;
|
|
29
|
-
claimWorkflowRun(params: ClaimWorkflowRunParams): Promise<WorkflowRun | null>;
|
|
30
|
-
extendWorkflowRunLease(params: ExtendWorkflowRunLeaseParams): Promise<WorkflowRun>;
|
|
31
|
-
sleepWorkflowRun(params: SleepWorkflowRunParams): Promise<WorkflowRun>;
|
|
32
|
-
completeWorkflowRun(params: CompleteWorkflowRunParams): Promise<WorkflowRun>;
|
|
33
|
-
failWorkflowRun(params: FailWorkflowRunParams): Promise<WorkflowRun>;
|
|
34
|
-
cancelWorkflowRun(params: CancelWorkflowRunParams): Promise<WorkflowRun>;
|
|
35
|
-
createStepAttempt(params: CreateStepAttemptParams): Promise<StepAttempt>;
|
|
36
|
-
getStepAttempt(params: GetStepAttemptParams): Promise<StepAttempt | null>;
|
|
37
|
-
listStepAttempts(params: ListStepAttemptsParams): Promise<PaginatedResponse<StepAttempt>>;
|
|
38
|
-
private buildListStepAttemptsWhere;
|
|
39
|
-
private processPaginationResults;
|
|
40
|
-
completeStepAttempt(params: CompleteStepAttemptParams): Promise<StepAttempt>;
|
|
41
|
-
failStepAttempt(params: FailStepAttemptParams): Promise<StepAttempt>;
|
|
42
|
-
}
|
|
43
|
-
export {};
|
|
44
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backend-postgres/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAWvD,UAAU,sBAAsB;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,OAAO;IAC7C,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IAKP;;;;;;;OAOG;WACU,OAAO,CAClB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,eAAe,CAAC;IAiBrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,iBAAiB,CACrB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,WAAW,CAAC;IA0CjB,cAAc,CAClB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAYxB,gBAAgB,CACpB,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IA2B1C,OAAO,CAAC,0BAA0B;IA0B5B,gBAAgB,CACpB,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAmDxB,sBAAsB,CAC1B,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,WAAW,CAAC;IAkBjB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC;IAwBtE,mBAAmB,CACvB,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,WAAW,CAAC;IAuBjB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC;IAgEpE,iBAAiB,CACrB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,WAAW,CAAC;IA2CjB,iBAAiB,CACrB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,WAAW,CAAC;IAoCjB,cAAc,CAClB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAWxB,gBAAgB,CACpB,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IA2B1C,OAAO,CAAC,0BAA0B;IA6BlC,OAAO,CAAC,wBAAwB;IAyC1B,mBAAmB,CACvB,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,WAAW,CAAC;IA0BjB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC;CAyB3E"}
|