payload 3.0.0-beta.120 → 3.0.0-beta.121
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/auth/operations/registerFirstUser.d.ts.map +1 -1
- package/dist/auth/operations/registerFirstUser.js.map +1 -1
- package/dist/auth/strategies/local/register.d.ts +3 -2
- package/dist/auth/strategies/local/register.d.ts.map +1 -1
- package/dist/auth/strategies/local/register.js +3 -2
- package/dist/auth/strategies/local/register.js.map +1 -1
- package/dist/bin/generateTypes.d.ts.map +1 -1
- package/dist/bin/generateTypes.js +4 -0
- package/dist/bin/generateTypes.js.map +1 -1
- package/dist/bin/index.d.ts +1 -1
- package/dist/bin/index.d.ts.map +1 -1
- package/dist/bin/index.js +25 -0
- package/dist/bin/index.js.map +1 -1
- package/dist/collections/config/types.d.ts +7 -5
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/collections/dataloader.d.ts +3 -2
- package/dist/collections/dataloader.d.ts.map +1 -1
- package/dist/collections/dataloader.js +9 -5
- package/dist/collections/dataloader.js.map +1 -1
- package/dist/collections/operations/create.d.ts +4 -3
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +6 -3
- package/dist/collections/operations/create.js.map +1 -1
- package/dist/collections/operations/delete.d.ts +4 -9
- package/dist/collections/operations/delete.d.ts.map +1 -1
- package/dist/collections/operations/delete.js +3 -1
- package/dist/collections/operations/delete.js.map +1 -1
- package/dist/collections/operations/deleteByID.d.ts +4 -3
- package/dist/collections/operations/deleteByID.d.ts.map +1 -1
- package/dist/collections/operations/deleteByID.js +3 -1
- package/dist/collections/operations/deleteByID.js.map +1 -1
- package/dist/collections/operations/duplicate.d.ts +4 -3
- package/dist/collections/operations/duplicate.d.ts.map +1 -1
- package/dist/collections/operations/duplicate.js +7 -3
- package/dist/collections/operations/duplicate.js.map +1 -1
- package/dist/collections/operations/find.d.ts +4 -3
- package/dist/collections/operations/find.d.ts.map +1 -1
- package/dist/collections/operations/find.js +7 -1
- package/dist/collections/operations/find.js.map +1 -1
- package/dist/collections/operations/findByID.d.ts +4 -3
- package/dist/collections/operations/findByID.d.ts.map +1 -1
- package/dist/collections/operations/findByID.js +5 -2
- package/dist/collections/operations/findByID.js.map +1 -1
- package/dist/collections/operations/findVersionByID.d.ts +2 -1
- package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/findVersionByID.js +3 -1
- package/dist/collections/operations/findVersionByID.js.map +1 -1
- package/dist/collections/operations/findVersions.d.ts +2 -1
- package/dist/collections/operations/findVersions.d.ts.map +1 -1
- package/dist/collections/operations/findVersions.js +3 -1
- package/dist/collections/operations/findVersions.js.map +1 -1
- package/dist/collections/operations/local/create.d.ts +5 -4
- package/dist/collections/operations/local/create.d.ts.map +1 -1
- package/dist/collections/operations/local/create.js +2 -1
- package/dist/collections/operations/local/create.js.map +1 -1
- package/dist/collections/operations/local/delete.d.ts +12 -11
- package/dist/collections/operations/local/delete.d.ts.map +1 -1
- package/dist/collections/operations/local/delete.js +2 -1
- package/dist/collections/operations/local/delete.js.map +1 -1
- package/dist/collections/operations/local/duplicate.d.ts +5 -4
- package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
- package/dist/collections/operations/local/duplicate.js +2 -1
- package/dist/collections/operations/local/duplicate.js.map +1 -1
- package/dist/collections/operations/local/find.d.ts +5 -4
- package/dist/collections/operations/local/find.d.ts.map +1 -1
- package/dist/collections/operations/local/find.js +3 -1
- package/dist/collections/operations/local/find.js.map +1 -1
- package/dist/collections/operations/local/findByID.d.ts +7 -6
- package/dist/collections/operations/local/findByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findByID.js +3 -2
- package/dist/collections/operations/local/findByID.js.map +1 -1
- package/dist/collections/operations/local/findVersionByID.d.ts +2 -1
- package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersionByID.js +2 -1
- package/dist/collections/operations/local/findVersionByID.js.map +1 -1
- package/dist/collections/operations/local/findVersions.d.ts +2 -1
- package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersions.js +2 -1
- package/dist/collections/operations/local/findVersions.js.map +1 -1
- package/dist/collections/operations/local/index.d.ts.map +1 -1
- package/dist/collections/operations/local/index.js +1 -1
- package/dist/collections/operations/local/index.js.map +1 -1
- package/dist/collections/operations/local/restoreVersion.d.ts +2 -1
- package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/local/restoreVersion.js +2 -1
- package/dist/collections/operations/local/restoreVersion.js.map +1 -1
- package/dist/collections/operations/local/update.d.ts +12 -11
- package/dist/collections/operations/local/update.d.ts.map +1 -1
- package/dist/collections/operations/local/update.js +2 -1
- package/dist/collections/operations/local/update.js.map +1 -1
- package/dist/collections/operations/restoreVersion.d.ts +2 -1
- package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/restoreVersion.js +4 -2
- package/dist/collections/operations/restoreVersion.js.map +1 -1
- package/dist/collections/operations/update.d.ts +4 -3
- package/dist/collections/operations/update.d.ts.map +1 -1
- package/dist/collections/operations/update.js +6 -3
- package/dist/collections/operations/update.js.map +1 -1
- package/dist/collections/operations/updateByID.d.ts +4 -3
- package/dist/collections/operations/updateByID.d.ts.map +1 -1
- package/dist/collections/operations/updateByID.js +5 -2
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/collections/operations/utils.d.ts +8 -8
- package/dist/collections/operations/utils.d.ts.map +1 -1
- package/dist/collections/operations/utils.js.map +1 -1
- package/dist/config/client.d.ts +2 -2
- package/dist/config/client.d.ts.map +1 -1
- package/dist/config/client.js +1 -0
- package/dist/config/client.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +8 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/config/sanitize.js +21 -0
- package/dist/config/sanitize.js.map +1 -1
- package/dist/config/types.d.ts +6 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/database/types.d.ts +15 -1
- package/dist/database/types.d.ts.map +1 -1
- package/dist/database/types.js.map +1 -1
- package/dist/exports/shared.d.ts +1 -0
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +1 -0
- package/dist/exports/shared.js.map +1 -1
- package/dist/fields/config/types.d.ts +2 -0
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/hooks/afterRead/index.d.ts +2 -1
- package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/index.js +4 -1
- package/dist/fields/hooks/afterRead/index.js.map +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts +4 -2
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js +59 -1
- package/dist/fields/hooks/afterRead/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +1 -0
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.d.ts +4 -2
- package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.js +3 -1
- package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
- package/dist/globals/config/types.d.ts +2 -1
- package/dist/globals/config/types.d.ts.map +1 -1
- package/dist/globals/config/types.js.map +1 -1
- package/dist/globals/operations/findOne.d.ts +2 -1
- package/dist/globals/operations/findOne.d.ts.map +1 -1
- package/dist/globals/operations/findOne.js +15 -2
- package/dist/globals/operations/findOne.js.map +1 -1
- package/dist/globals/operations/findVersionByID.d.ts +2 -1
- package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/findVersionByID.js +3 -1
- package/dist/globals/operations/findVersionByID.js.map +1 -1
- package/dist/globals/operations/findVersions.d.ts +2 -1
- package/dist/globals/operations/findVersions.d.ts.map +1 -1
- package/dist/globals/operations/findVersions.js +7 -3
- package/dist/globals/operations/findVersions.js.map +1 -1
- package/dist/globals/operations/local/findOne.d.ts +5 -4
- package/dist/globals/operations/local/findOne.d.ts.map +1 -1
- package/dist/globals/operations/local/findOne.js +2 -1
- package/dist/globals/operations/local/findOne.js.map +1 -1
- package/dist/globals/operations/local/findVersionByID.d.ts +2 -1
- package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersionByID.js +2 -1
- package/dist/globals/operations/local/findVersionByID.js.map +1 -1
- package/dist/globals/operations/local/findVersions.d.ts +2 -1
- package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersions.js +3 -2
- package/dist/globals/operations/local/findVersions.js.map +1 -1
- package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/globals/operations/local/restoreVersion.js +1 -1
- package/dist/globals/operations/local/restoreVersion.js.map +1 -1
- package/dist/globals/operations/local/update.d.ts +5 -4
- package/dist/globals/operations/local/update.d.ts.map +1 -1
- package/dist/globals/operations/local/update.js +2 -1
- package/dist/globals/operations/local/update.js.map +1 -1
- package/dist/globals/operations/update.d.ts +4 -3
- package/dist/globals/operations/update.d.ts.map +1 -1
- package/dist/globals/operations/update.js +15 -2
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/index.d.ts +61 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/queues/config/generateJobsJSONSchemas.d.ts +18 -0
- package/dist/queues/config/generateJobsJSONSchemas.d.ts.map +1 -0
- package/dist/queues/config/generateJobsJSONSchemas.js +125 -0
- package/dist/queues/config/generateJobsJSONSchemas.js.map +1 -0
- package/dist/queues/config/jobsCollection.d.ts +4 -0
- package/dist/queues/config/jobsCollection.d.ts.map +1 -0
- package/dist/queues/config/jobsCollection.js +211 -0
- package/dist/queues/config/jobsCollection.js.map +1 -0
- package/dist/queues/config/types/index.d.ts +45 -0
- package/dist/queues/config/types/index.d.ts.map +1 -0
- package/dist/queues/config/types/index.js +3 -0
- package/dist/queues/config/types/index.js.map +1 -0
- package/dist/queues/config/types/taskTypes.d.ts +134 -0
- package/dist/queues/config/types/taskTypes.d.ts.map +1 -0
- package/dist/queues/config/types/taskTypes.js +3 -0
- package/dist/queues/config/types/taskTypes.js.map +1 -0
- package/dist/queues/config/types/workflowJSONTypes.d.ts +29 -0
- package/dist/queues/config/types/workflowJSONTypes.d.ts.map +1 -0
- package/dist/queues/config/types/workflowJSONTypes.js +3 -0
- package/dist/queues/config/types/workflowJSONTypes.js.map +1 -0
- package/dist/queues/config/types/workflowTypes.d.ts +98 -0
- package/dist/queues/config/types/workflowTypes.d.ts.map +1 -0
- package/dist/queues/config/types/workflowTypes.js +3 -0
- package/dist/queues/config/types/workflowTypes.js.map +1 -0
- package/dist/queues/localAPI.d.ts +23 -0
- package/dist/queues/localAPI.d.ts.map +1 -0
- package/dist/queues/localAPI.js +28 -0
- package/dist/queues/localAPI.js.map +1 -0
- package/dist/queues/operations/runJobs/index.d.ts +21 -0
- package/dist/queues/operations/runJobs/index.d.ts.map +1 -0
- package/dist/queues/operations/runJobs/index.js +180 -0
- package/dist/queues/operations/runJobs/index.js.map +1 -0
- package/dist/queues/operations/runJobs/runJSONJob/index.d.ts +18 -0
- package/dist/queues/operations/runJobs/runJSONJob/index.d.ts.map +1 -0
- package/dist/queues/operations/runJobs/runJSONJob/index.js +125 -0
- package/dist/queues/operations/runJobs/runJSONJob/index.js.map +1 -0
- package/dist/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.d.ts +6 -0
- package/dist/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.d.ts.map +1 -0
- package/dist/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.js +26 -0
- package/dist/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.js.map +1 -0
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts +26 -0
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts.map +1 -0
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +204 -0
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -0
- package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts +5 -0
- package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts.map +1 -0
- package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js +18 -0
- package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js.map +1 -0
- package/dist/queues/operations/runJobs/runJob/handleWorkflowError.d.ts +17 -0
- package/dist/queues/operations/runJobs/runJob/handleWorkflowError.d.ts.map +1 -0
- package/dist/queues/operations/runJobs/runJob/handleWorkflowError.js +43 -0
- package/dist/queues/operations/runJobs/runJob/handleWorkflowError.js.map +1 -0
- package/dist/queues/operations/runJobs/runJob/importHandlerPath.d.ts +2 -0
- package/dist/queues/operations/runJobs/runJob/importHandlerPath.d.ts.map +1 -0
- package/dist/queues/operations/runJobs/runJob/importHandlerPath.js +21 -0
- package/dist/queues/operations/runJobs/runJob/importHandlerPath.js.map +1 -0
- package/dist/queues/operations/runJobs/runJob/index.d.ts +17 -0
- package/dist/queues/operations/runJobs/runJob/index.d.ts.map +1 -0
- package/dist/queues/operations/runJobs/runJob/index.js +48 -0
- package/dist/queues/operations/runJobs/runJob/index.js.map +1 -0
- package/dist/queues/restEndpointRun.d.ts +3 -0
- package/dist/queues/restEndpointRun.d.ts.map +1 -0
- package/dist/queues/restEndpointRun.js +66 -0
- package/dist/queues/restEndpointRun.js.map +1 -0
- package/dist/queues/utilities/getJobTaskStatus.d.ts +9 -0
- package/dist/queues/utilities/getJobTaskStatus.d.ts.map +1 -0
- package/dist/queues/utilities/getJobTaskStatus.js +29 -0
- package/dist/queues/utilities/getJobTaskStatus.js.map +1 -0
- package/dist/types/index.d.ts +20 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utilities/addSelectGenericsToGeneratedTyoes.spec.js +562 -0
- package/dist/utilities/addSelectGenericsToGeneratedTyoes.spec.js.map +1 -0
- package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts +4 -0
- package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -0
- package/dist/utilities/addSelectGenericsToGeneretedTypes.js +41 -0
- package/dist/utilities/addSelectGenericsToGeneretedTypes.js.map +1 -0
- package/dist/utilities/configToJSONSchema.d.ts +6 -1
- package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
- package/dist/utilities/configToJSONSchema.js +171 -15
- package/dist/utilities/configToJSONSchema.js.map +1 -1
- package/dist/utilities/getSelectMode.d.ts +3 -0
- package/dist/utilities/getSelectMode.d.ts.map +1 -0
- package/dist/utilities/getSelectMode.js +14 -0
- package/dist/utilities/getSelectMode.js.map +1 -0
- package/dist/utilities/traverseFields.d.ts.map +1 -1
- package/dist/utilities/traverseFields.js +51 -8
- package/dist/utilities/traverseFields.js.map +1 -1
- package/dist/versions/drafts/getQueryDraftsSelect.d.ts +5 -0
- package/dist/versions/drafts/getQueryDraftsSelect.d.ts.map +1 -0
- package/dist/versions/drafts/getQueryDraftsSelect.js +18 -0
- package/dist/versions/drafts/getQueryDraftsSelect.js.map +1 -0
- package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +3 -2
- package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js +11 -7
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
- package/dist/versions/saveVersion.d.ts +3 -2
- package/dist/versions/saveVersion.d.ts.map +1 -1
- package/dist/versions/saveVersion.js +5 -1
- package/dist/versions/saveVersion.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { RunningJobFromTask } from './config/types/workflowTypes.js';
|
|
2
|
+
import { type Payload, type PayloadRequest, type RunningJob, type TypedJobs } from '../index.js';
|
|
3
|
+
import { runJobs } from './operations/runJobs/index.js';
|
|
4
|
+
export declare const getJobsLocalAPI: (payload: Payload) => {
|
|
5
|
+
queue: <TTaskOrWorkflowSlug extends keyof TypedJobs["tasks"] | keyof TypedJobs["workflows"]>(args: {
|
|
6
|
+
input: TypedJobs["tasks"][TTaskOrWorkflowSlug]["input"];
|
|
7
|
+
req?: PayloadRequest;
|
|
8
|
+
task: TTaskOrWorkflowSlug extends keyof TypedJobs["tasks"] ? TTaskOrWorkflowSlug : never;
|
|
9
|
+
workflow?: never;
|
|
10
|
+
} | {
|
|
11
|
+
input: TypedJobs["workflows"][TTaskOrWorkflowSlug]["input"];
|
|
12
|
+
req?: PayloadRequest;
|
|
13
|
+
task?: never;
|
|
14
|
+
workflow: TTaskOrWorkflowSlug extends keyof TypedJobs["workflows"] ? TTaskOrWorkflowSlug : never;
|
|
15
|
+
}) => Promise<TTaskOrWorkflowSlug extends keyof TypedJobs["workflows"] ? RunningJob<TTaskOrWorkflowSlug> : RunningJobFromTask<TTaskOrWorkflowSlug>>;
|
|
16
|
+
run: (args?: {
|
|
17
|
+
limit?: number;
|
|
18
|
+
overrideAccess?: boolean;
|
|
19
|
+
queue?: string;
|
|
20
|
+
req?: PayloadRequest;
|
|
21
|
+
}) => Promise<ReturnType<typeof runJobs>>;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=localAPI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localAPI.d.ts","sourceRoot":"","sources":["../../src/queues/localAPI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAEzE,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AAEvD,eAAO,MAAM,eAAe,YAAa,OAAO;YAG5C,mBAAmB,SAAS,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,QAG/E;QACE,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAA;QACvD,GAAG,CAAC,EAAE,cAAc,CAAA;QAEpB,IAAI,EAAE,mBAAmB,SAAS,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,mBAAmB,GAAG,KAAK,CAAA;QACxF,QAAQ,CAAC,EAAE,KAAK,CAAA;KACjB,GACD;QACE,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAA;QAC3D,GAAG,CAAC,EAAE,cAAc,CAAA;QACpB,IAAI,CAAC,EAAE,KAAK,CAAA;QACZ,QAAQ,EAAE,mBAAmB,SAAS,MAAM,SAAS,CAAC,WAAW,CAAC,GAC9D,mBAAmB,GACnB,KAAK,CAAA;KACV,KACJ,OAAO,CACR,mBAAmB,SAAS,MAAM,SAAS,CAAC,WAAW,CAAC,GACpD,UAAU,CAAC,mBAAmB,CAAC,GAC/B,kBAAkB,CAAC,mBAAmB,CAAC,CAC5C;iBAckB;QACjB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,cAAc,CAAC,EAAE,OAAO,CAAA;QACxB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,GAAG,CAAC,EAAE,cAAc,CAAA;KACrB,KAAG,OAAO,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;CAUvC,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createLocalReq } from '../index.js';
|
|
2
|
+
import { runJobs } from './operations/runJobs/index.js';
|
|
3
|
+
export const getJobsLocalAPI = (payload)=>({
|
|
4
|
+
queue: async (args)=>{
|
|
5
|
+
return await payload.create({
|
|
6
|
+
collection: 'payload-jobs',
|
|
7
|
+
data: {
|
|
8
|
+
input: args.input,
|
|
9
|
+
taskSlug: 'task' in args ? args.task : undefined,
|
|
10
|
+
workflowSlug: 'workflow' in args ? args.workflow : undefined
|
|
11
|
+
},
|
|
12
|
+
req: args.req
|
|
13
|
+
});
|
|
14
|
+
// Type assertion is still needed here
|
|
15
|
+
},
|
|
16
|
+
run: async (args)=>{
|
|
17
|
+
const newReq = args?.req ?? await createLocalReq({}, payload);
|
|
18
|
+
const result = await runJobs({
|
|
19
|
+
limit: args?.limit,
|
|
20
|
+
overrideAccess: args?.overrideAccess !== false,
|
|
21
|
+
queue: args?.queue,
|
|
22
|
+
req: newReq
|
|
23
|
+
});
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=localAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/queues/localAPI.ts"],"sourcesContent":["import type { RunningJobFromTask } from './config/types/workflowTypes.js'\n\nimport {\n createLocalReq,\n type Payload,\n type PayloadRequest,\n type RunningJob,\n type TypedJobs,\n} from '../index.js'\nimport { runJobs } from './operations/runJobs/index.js'\n\nexport const getJobsLocalAPI = (payload: Payload) => ({\n queue: async <\n // eslint-disable-next-line @typescript-eslint/no-duplicate-type-constituents\n TTaskOrWorkflowSlug extends keyof TypedJobs['tasks'] | keyof TypedJobs['workflows'],\n >(\n args:\n | {\n input: TypedJobs['tasks'][TTaskOrWorkflowSlug]['input']\n req?: PayloadRequest\n // TTaskOrWorkflowlug with keyof TypedJobs['workflows'] removed:\n task: TTaskOrWorkflowSlug extends keyof TypedJobs['tasks'] ? TTaskOrWorkflowSlug : never\n workflow?: never\n }\n | {\n input: TypedJobs['workflows'][TTaskOrWorkflowSlug]['input']\n req?: PayloadRequest\n task?: never\n workflow: TTaskOrWorkflowSlug extends keyof TypedJobs['workflows']\n ? TTaskOrWorkflowSlug\n : never\n },\n ): Promise<\n TTaskOrWorkflowSlug extends keyof TypedJobs['workflows']\n ? RunningJob<TTaskOrWorkflowSlug>\n : RunningJobFromTask<TTaskOrWorkflowSlug>\n > => {\n return (await payload.create({\n collection: 'payload-jobs',\n data: {\n input: args.input,\n taskSlug: 'task' in args ? args.task : undefined,\n workflowSlug: 'workflow' in args ? args.workflow : undefined,\n },\n req: args.req,\n })) as TTaskOrWorkflowSlug extends keyof TypedJobs['workflows']\n ? RunningJob<TTaskOrWorkflowSlug>\n : RunningJobFromTask<TTaskOrWorkflowSlug> // Type assertion is still needed here\n },\n\n run: async (args?: {\n limit?: number\n overrideAccess?: boolean\n queue?: string\n req?: PayloadRequest\n }): Promise<ReturnType<typeof runJobs>> => {\n const newReq: PayloadRequest = args?.req ?? (await createLocalReq({}, payload))\n const result = await runJobs({\n limit: args?.limit,\n overrideAccess: args?.overrideAccess !== false,\n queue: args?.queue,\n req: newReq,\n })\n return result\n },\n})\n"],"names":["createLocalReq","runJobs","getJobsLocalAPI","payload","queue","args","create","collection","data","input","taskSlug","task","undefined","workflowSlug","workflow","req","run","newReq","result","limit","overrideAccess"],"mappings":"AAEA,SACEA,cAAc,QAKT,cAAa;AACpB,SAASC,OAAO,QAAQ,gCAA+B;AAEvD,OAAO,MAAMC,kBAAkB,CAACC,UAAsB,CAAA;QACpDC,OAAO,OAILC;YAqBA,OAAQ,MAAMF,QAAQG,MAAM,CAAC;gBAC3BC,YAAY;gBACZC,MAAM;oBACJC,OAAOJ,KAAKI,KAAK;oBACjBC,UAAU,UAAUL,OAAOA,KAAKM,IAAI,GAAGC;oBACvCC,cAAc,cAAcR,OAAOA,KAAKS,QAAQ,GAAGF;gBACrD;gBACAG,KAAKV,KAAKU,GAAG;YACf;QAE4C,sCAAsC;QACpF;QAEAC,KAAK,OAAOX;YAMV,MAAMY,SAAyBZ,MAAMU,OAAQ,MAAMf,eAAe,CAAC,GAAGG;YACtE,MAAMe,SAAS,MAAMjB,QAAQ;gBAC3BkB,OAAOd,MAAMc;gBACbC,gBAAgBf,MAAMe,mBAAmB;gBACzChB,OAAOC,MAAMD;gBACbW,KAAKE;YACP;YACA,OAAOC;QACT;IACF,CAAA,EAAE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { PayloadRequest } from '../../../types/index.js';
|
|
2
|
+
import type { RunJobResult } from './runJob/index.js';
|
|
3
|
+
export type RunJobsArgs = {
|
|
4
|
+
limit?: number;
|
|
5
|
+
overrideAccess?: boolean;
|
|
6
|
+
queue?: string;
|
|
7
|
+
req: PayloadRequest;
|
|
8
|
+
};
|
|
9
|
+
export type RunJobsResult = {
|
|
10
|
+
jobStatus?: Record<string, RunJobResult>;
|
|
11
|
+
/**
|
|
12
|
+
* If this is false, there for sure are no jobs remaining, regardless of the limit
|
|
13
|
+
*/
|
|
14
|
+
noJobsRemaining?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Out of the jobs that were queried & processed (within the set limit), how many are remaining and retryable?
|
|
17
|
+
*/
|
|
18
|
+
remainingJobsFromQueried: number;
|
|
19
|
+
};
|
|
20
|
+
export declare const runJobs: ({ limit, overrideAccess, queue, req, }: RunJobsArgs) => Promise<RunJobsResult>;
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/queues/operations/runJobs/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,yBAAyB,CAAA;AAQpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AASrD,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACxC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;OAEG;IACH,wBAAwB,EAAE,MAAM,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,OAAO,2CAKjB,WAAW,KAAG,OAAO,CAAC,aAAa,CAyLrC,CAAA"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { Forbidden } from '../../../errors/Forbidden.js';
|
|
2
|
+
import isolateObjectProperty from '../../../utilities/isolateObjectProperty.js';
|
|
3
|
+
import { getUpdateJobFunction } from './runJob/getUpdateJobFunction.js';
|
|
4
|
+
import { importHandlerPath } from './runJob/importHandlerPath.js';
|
|
5
|
+
import { runJob } from './runJob/index.js';
|
|
6
|
+
import { runJSONJob } from './runJSONJob/index.js';
|
|
7
|
+
export const runJobs = async ({ limit = 10, overrideAccess, queue, req })=>{
|
|
8
|
+
if (!overrideAccess) {
|
|
9
|
+
const hasAccess = await req.payload.config.jobs.access.run({
|
|
10
|
+
req
|
|
11
|
+
});
|
|
12
|
+
if (!hasAccess) {
|
|
13
|
+
throw new Forbidden(req.t);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const where = {
|
|
17
|
+
and: [
|
|
18
|
+
{
|
|
19
|
+
completedAt: {
|
|
20
|
+
exists: false
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
hasError: {
|
|
25
|
+
not_equals: true
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
processing: {
|
|
30
|
+
equals: false
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
or: [
|
|
35
|
+
{
|
|
36
|
+
waitUntil: {
|
|
37
|
+
exists: false
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
waitUntil: {
|
|
42
|
+
less_than: new Date().toISOString()
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
};
|
|
49
|
+
if (queue) {
|
|
50
|
+
where.and.push({
|
|
51
|
+
queue: {
|
|
52
|
+
equals: queue
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
// Find all jobs and ensure we set job to processing: true as early as possible to reduce the chance of
|
|
57
|
+
// the same job being picked up by another worker
|
|
58
|
+
const jobsQuery = await req.payload.update({
|
|
59
|
+
collection: 'payload-jobs',
|
|
60
|
+
data: {
|
|
61
|
+
processing: true,
|
|
62
|
+
seenByWorker: true
|
|
63
|
+
},
|
|
64
|
+
depth: req.payload.config.jobs.depth,
|
|
65
|
+
disableTransaction: true,
|
|
66
|
+
limit,
|
|
67
|
+
showHiddenFields: true,
|
|
68
|
+
where
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* Just for logging purposes, we want to know how many jobs are new and how many are existing (= already been tried).
|
|
72
|
+
* This is only for logs - in the end we still want to run all jobs, regardless of whether they are new or existing.
|
|
73
|
+
*/ const { newJobs } = jobsQuery.docs.reduce((acc, job)=>{
|
|
74
|
+
if (job.totalTried > 0) {
|
|
75
|
+
acc.existingJobs.push(job);
|
|
76
|
+
} else {
|
|
77
|
+
acc.newJobs.push(job);
|
|
78
|
+
}
|
|
79
|
+
return acc;
|
|
80
|
+
}, {
|
|
81
|
+
existingJobs: [],
|
|
82
|
+
newJobs: []
|
|
83
|
+
});
|
|
84
|
+
if (!jobsQuery.docs.length) {
|
|
85
|
+
return {
|
|
86
|
+
noJobsRemaining: true,
|
|
87
|
+
remainingJobsFromQueried: 0
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (jobsQuery?.docs?.length) {
|
|
91
|
+
req.payload.logger.info(`Running ${jobsQuery.docs.length} jobs.`);
|
|
92
|
+
}
|
|
93
|
+
const jobPromises = jobsQuery.docs.map(async (job)=>{
|
|
94
|
+
if (!job.workflowSlug && !job.taskSlug) {
|
|
95
|
+
throw new Error('Job must have either a workflowSlug or a taskSlug');
|
|
96
|
+
}
|
|
97
|
+
const jobReq = isolateObjectProperty(req, 'transactionID');
|
|
98
|
+
const workflowConfig = job.workflowSlug ? req.payload.config.jobs.workflows.find(({ slug })=>slug === job.workflowSlug) : {
|
|
99
|
+
slug: 'singleTask',
|
|
100
|
+
handler: async ({ job, tasks })=>{
|
|
101
|
+
await tasks[job.taskSlug]('1', {
|
|
102
|
+
input: job.input
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
if (!workflowConfig) {
|
|
107
|
+
return null // Skip jobs with no workflow configuration
|
|
108
|
+
;
|
|
109
|
+
}
|
|
110
|
+
const updateJob = getUpdateJobFunction(job, jobReq);
|
|
111
|
+
// the runner will either be passed to the config
|
|
112
|
+
// OR it will be a path, which we will need to import via eval to avoid
|
|
113
|
+
// Next.js compiler dynamic import expression errors
|
|
114
|
+
let workflowHandler;
|
|
115
|
+
if (typeof workflowConfig.handler === 'function' || typeof workflowConfig.handler === 'object' && Array.isArray(workflowConfig.handler)) {
|
|
116
|
+
workflowHandler = workflowConfig.handler;
|
|
117
|
+
} else {
|
|
118
|
+
workflowHandler = await importHandlerPath(workflowConfig.handler);
|
|
119
|
+
if (!workflowHandler) {
|
|
120
|
+
const errorMessage = `Can't find runner while importing with the path ${workflowConfig.handler} in job type ${job.workflowSlug}.`;
|
|
121
|
+
req.payload.logger.error(errorMessage);
|
|
122
|
+
await updateJob({
|
|
123
|
+
error: {
|
|
124
|
+
error: errorMessage
|
|
125
|
+
},
|
|
126
|
+
hasError: true,
|
|
127
|
+
processing: false
|
|
128
|
+
});
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (typeof workflowHandler === 'function') {
|
|
133
|
+
const result = await runJob({
|
|
134
|
+
job,
|
|
135
|
+
req: jobReq,
|
|
136
|
+
updateJob,
|
|
137
|
+
workflowConfig,
|
|
138
|
+
workflowHandler
|
|
139
|
+
});
|
|
140
|
+
return {
|
|
141
|
+
id: job.id,
|
|
142
|
+
result
|
|
143
|
+
};
|
|
144
|
+
} else {
|
|
145
|
+
const result = await runJSONJob({
|
|
146
|
+
job,
|
|
147
|
+
req: jobReq,
|
|
148
|
+
updateJob,
|
|
149
|
+
workflowConfig,
|
|
150
|
+
workflowHandler
|
|
151
|
+
});
|
|
152
|
+
return {
|
|
153
|
+
id: job.id,
|
|
154
|
+
result
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
const resultsArray = await Promise.all(jobPromises);
|
|
159
|
+
const resultsObject = resultsArray.reduce((acc, cur)=>{
|
|
160
|
+
if (cur !== null) {
|
|
161
|
+
// Check if there's a valid result to include
|
|
162
|
+
acc[cur.id] = cur.result;
|
|
163
|
+
}
|
|
164
|
+
return acc;
|
|
165
|
+
}, {});
|
|
166
|
+
let remainingJobsFromQueried = 0;
|
|
167
|
+
for(const jobID in resultsObject){
|
|
168
|
+
const jobResult = resultsObject[jobID];
|
|
169
|
+
if (jobResult.status === 'error') {
|
|
170
|
+
remainingJobsFromQueried++ // Can be retried
|
|
171
|
+
;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
jobStatus: resultsObject,
|
|
176
|
+
remainingJobsFromQueried
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/queues/operations/runJobs/index.ts"],"sourcesContent":["import type { PaginatedDocs } from '../../../database/types.js'\nimport type { PayloadRequest, Where } from '../../../types/index.js'\nimport type { WorkflowJSON } from '../../config/types/workflowJSONTypes.js'\nimport type {\n BaseJob,\n WorkflowConfig,\n WorkflowHandler,\n WorkflowTypes,\n} from '../../config/types/workflowTypes.js'\nimport type { RunJobResult } from './runJob/index.js'\n\nimport { Forbidden } from '../../../errors/Forbidden.js'\nimport isolateObjectProperty from '../../../utilities/isolateObjectProperty.js'\nimport { getUpdateJobFunction } from './runJob/getUpdateJobFunction.js'\nimport { importHandlerPath } from './runJob/importHandlerPath.js'\nimport { runJob } from './runJob/index.js'\nimport { runJSONJob } from './runJSONJob/index.js'\n\nexport type RunJobsArgs = {\n limit?: number\n overrideAccess?: boolean\n queue?: string\n req: PayloadRequest\n}\n\nexport type RunJobsResult = {\n jobStatus?: Record<string, RunJobResult>\n /**\n * If this is false, there for sure are no jobs remaining, regardless of the limit\n */\n noJobsRemaining?: boolean\n /**\n * Out of the jobs that were queried & processed (within the set limit), how many are remaining and retryable?\n */\n remainingJobsFromQueried: number\n}\n\nexport const runJobs = async ({\n limit = 10,\n overrideAccess,\n queue,\n req,\n}: RunJobsArgs): Promise<RunJobsResult> => {\n if (!overrideAccess) {\n const hasAccess = await req.payload.config.jobs.access.run({ req })\n if (!hasAccess) {\n throw new Forbidden(req.t)\n }\n }\n const where: Where = {\n and: [\n {\n completedAt: {\n exists: false,\n },\n },\n {\n hasError: {\n not_equals: true,\n },\n },\n {\n processing: {\n equals: false,\n },\n },\n {\n or: [\n {\n waitUntil: {\n exists: false,\n },\n },\n {\n waitUntil: {\n less_than: new Date().toISOString(),\n },\n },\n ],\n },\n ],\n }\n\n if (queue) {\n where.and.push({\n queue: {\n equals: queue,\n },\n })\n }\n\n // Find all jobs and ensure we set job to processing: true as early as possible to reduce the chance of\n // the same job being picked up by another worker\n const jobsQuery = (await req.payload.update({\n collection: 'payload-jobs',\n data: {\n processing: true,\n seenByWorker: true,\n },\n depth: req.payload.config.jobs.depth,\n disableTransaction: true,\n limit,\n showHiddenFields: true,\n where,\n })) as unknown as PaginatedDocs<BaseJob>\n\n /**\n * Just for logging purposes, we want to know how many jobs are new and how many are existing (= already been tried).\n * This is only for logs - in the end we still want to run all jobs, regardless of whether they are new or existing.\n */\n const { newJobs } = jobsQuery.docs.reduce(\n (acc, job) => {\n if (job.totalTried > 0) {\n acc.existingJobs.push(job)\n } else {\n acc.newJobs.push(job)\n }\n return acc\n },\n { existingJobs: [], newJobs: [] },\n )\n\n if (!jobsQuery.docs.length) {\n return {\n noJobsRemaining: true,\n remainingJobsFromQueried: 0,\n }\n }\n\n if (jobsQuery?.docs?.length) {\n req.payload.logger.info(`Running ${jobsQuery.docs.length} jobs.`)\n }\n\n const jobPromises = jobsQuery.docs.map(async (job) => {\n if (!job.workflowSlug && !job.taskSlug) {\n throw new Error('Job must have either a workflowSlug or a taskSlug')\n }\n const jobReq = isolateObjectProperty(req, 'transactionID')\n\n const workflowConfig: WorkflowConfig<WorkflowTypes> = job.workflowSlug\n ? req.payload.config.jobs.workflows.find(({ slug }) => slug === job.workflowSlug)\n : {\n slug: 'singleTask',\n handler: async ({ job, tasks }) => {\n await tasks[job.taskSlug as string]('1', {\n input: job.input,\n })\n },\n }\n\n if (!workflowConfig) {\n return null // Skip jobs with no workflow configuration\n }\n\n const updateJob = getUpdateJobFunction(job, jobReq)\n\n // the runner will either be passed to the config\n // OR it will be a path, which we will need to import via eval to avoid\n // Next.js compiler dynamic import expression errors\n let workflowHandler: WorkflowHandler<WorkflowTypes> | WorkflowJSON<WorkflowTypes>\n\n if (\n typeof workflowConfig.handler === 'function' ||\n (typeof workflowConfig.handler === 'object' && Array.isArray(workflowConfig.handler))\n ) {\n workflowHandler = workflowConfig.handler\n } else {\n workflowHandler = await importHandlerPath<typeof workflowHandler>(workflowConfig.handler)\n\n if (!workflowHandler) {\n const errorMessage = `Can't find runner while importing with the path ${workflowConfig.handler} in job type ${job.workflowSlug}.`\n req.payload.logger.error(errorMessage)\n\n await updateJob({\n error: {\n error: errorMessage,\n },\n hasError: true,\n processing: false,\n })\n\n return\n }\n }\n\n if (typeof workflowHandler === 'function') {\n const result = await runJob({\n job,\n req: jobReq,\n updateJob,\n workflowConfig,\n workflowHandler,\n })\n return { id: job.id, result }\n } else {\n const result = await runJSONJob({\n job,\n req: jobReq,\n updateJob,\n workflowConfig,\n workflowHandler,\n })\n return { id: job.id, result }\n }\n })\n\n const resultsArray = await Promise.all(jobPromises)\n const resultsObject: RunJobsResult['jobStatus'] = resultsArray.reduce((acc, cur) => {\n if (cur !== null) {\n // Check if there's a valid result to include\n acc[cur.id] = cur.result\n }\n return acc\n }, {})\n\n let remainingJobsFromQueried = 0\n for (const jobID in resultsObject) {\n const jobResult = resultsObject[jobID]\n if (jobResult.status === 'error') {\n remainingJobsFromQueried++ // Can be retried\n }\n }\n\n return {\n jobStatus: resultsObject,\n remainingJobsFromQueried,\n }\n}\n"],"names":["Forbidden","isolateObjectProperty","getUpdateJobFunction","importHandlerPath","runJob","runJSONJob","runJobs","limit","overrideAccess","queue","req","hasAccess","payload","config","jobs","access","run","t","where","and","completedAt","exists","hasError","not_equals","processing","equals","or","waitUntil","less_than","Date","toISOString","push","jobsQuery","update","collection","data","seenByWorker","depth","disableTransaction","showHiddenFields","newJobs","docs","reduce","acc","job","totalTried","existingJobs","length","noJobsRemaining","remainingJobsFromQueried","logger","info","jobPromises","map","workflowSlug","taskSlug","Error","jobReq","workflowConfig","workflows","find","slug","handler","tasks","input","updateJob","workflowHandler","Array","isArray","errorMessage","error","result","id","resultsArray","Promise","all","resultsObject","cur","jobID","jobResult","status","jobStatus"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { PayloadRequest } from '../../../../types/index.js';
|
|
2
|
+
import type { WorkflowJSON } from '../../../config/types/workflowJSONTypes.js';
|
|
3
|
+
import type { BaseJob, WorkflowConfig, WorkflowTypes } from '../../../config/types/workflowTypes.js';
|
|
4
|
+
import type { UpdateJobFunction } from '../runJob/getUpdateJobFunction.js';
|
|
5
|
+
import type { JobRunStatus } from '../runJob/index.js';
|
|
6
|
+
type Args = {
|
|
7
|
+
job: BaseJob;
|
|
8
|
+
req: PayloadRequest;
|
|
9
|
+
updateJob: UpdateJobFunction;
|
|
10
|
+
workflowConfig: WorkflowConfig<WorkflowTypes>;
|
|
11
|
+
workflowHandler: WorkflowJSON<WorkflowTypes>;
|
|
12
|
+
};
|
|
13
|
+
export type RunJSONJobResult = {
|
|
14
|
+
status: JobRunStatus;
|
|
15
|
+
};
|
|
16
|
+
export declare const runJSONJob: ({ job, req, updateJob, workflowConfig, workflowHandler, }: Args) => Promise<RunJSONJobResult>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/queues/operations/runJobs/runJSONJob/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,4CAA4C,CAAA;AAC5F,OAAO,KAAK,EACV,OAAO,EAEP,cAAc,EACd,aAAa,EACd,MAAM,wCAAwC,CAAA;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAKtD,KAAK,IAAI,GAAG;IACV,GAAG,EAAE,OAAO,CAAA;IACZ,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,EAAE,iBAAiB,CAAA;IAC5B,cAAc,EAAE,cAAc,CAAC,aAAa,CAAC,CAAA;IAC7C,eAAe,EAAE,YAAY,CAAC,aAAa,CAAC,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,YAAY,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,UAAU,8DAMpB,IAAI,KAAG,OAAO,CAAC,gBAAgB,CA8HjC,CAAA"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { getRunTaskFunction } from '../runJob/getRunTaskFunction.js';
|
|
2
|
+
import { handleWorkflowError } from '../runJob/handleWorkflowError.js';
|
|
3
|
+
export const runJSONJob = async ({ job, req, updateJob, workflowConfig, workflowHandler })=>{
|
|
4
|
+
// Object so that we can pass contents by reference, not value.
|
|
5
|
+
// We want any mutations to be reflected in here.
|
|
6
|
+
const state = {
|
|
7
|
+
reachedMaxRetries: false
|
|
8
|
+
};
|
|
9
|
+
const stepsToRun = [];
|
|
10
|
+
for (const step of workflowHandler){
|
|
11
|
+
if ('task' in step) {
|
|
12
|
+
if (job?.taskStatus?.[step.task]?.[step.id]?.complete) {
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
} else {
|
|
16
|
+
if (job?.taskStatus?.['inline']?.[step.id]?.complete) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (step.condition && !step.condition({
|
|
21
|
+
job: job
|
|
22
|
+
})) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
stepsToRun.push(step);
|
|
26
|
+
}
|
|
27
|
+
const tasks = getRunTaskFunction(state, job, workflowConfig, req, false, updateJob);
|
|
28
|
+
const inlineTask = getRunTaskFunction(state, job, workflowConfig, req, true, updateJob);
|
|
29
|
+
// Run the job
|
|
30
|
+
let hasFinalError = false;
|
|
31
|
+
let error;
|
|
32
|
+
try {
|
|
33
|
+
await Promise.all(stepsToRun.map(async (step)=>{
|
|
34
|
+
if ('task' in step) {
|
|
35
|
+
await tasks[step.task](step.id, {
|
|
36
|
+
input: step.input ? step.input({
|
|
37
|
+
job: job
|
|
38
|
+
}) : {},
|
|
39
|
+
retries: step.retries
|
|
40
|
+
});
|
|
41
|
+
} else {
|
|
42
|
+
await inlineTask(step.id, {
|
|
43
|
+
retries: step.retries,
|
|
44
|
+
task: step.inlineTask
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}));
|
|
48
|
+
} catch (err) {
|
|
49
|
+
const errorResult = handleWorkflowError({
|
|
50
|
+
error: err,
|
|
51
|
+
job,
|
|
52
|
+
req,
|
|
53
|
+
state,
|
|
54
|
+
workflowConfig
|
|
55
|
+
});
|
|
56
|
+
error = err;
|
|
57
|
+
hasFinalError = errorResult.hasFinalError;
|
|
58
|
+
}
|
|
59
|
+
// Check if workflow has completed
|
|
60
|
+
let workflowCompleted = false;
|
|
61
|
+
for (const [slug, map] of Object.entries(job.taskStatus)){
|
|
62
|
+
for (const [id, taskStatus] of Object.entries(map)){
|
|
63
|
+
if (taskStatus.complete) {
|
|
64
|
+
const step = workflowHandler.find((step)=>{
|
|
65
|
+
if ('task' in step) {
|
|
66
|
+
return step.task === slug && step.id === id;
|
|
67
|
+
} else {
|
|
68
|
+
return step.id === id && slug === 'inline';
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
if (step.completesJob) {
|
|
72
|
+
workflowCompleted = true;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (workflowCompleted) {
|
|
79
|
+
if (error) {
|
|
80
|
+
// Tasks update the job if they error - but in case there is an unhandled error (e.g. in the workflow itself, not in a task)
|
|
81
|
+
// we need to ensure the job is updated to reflect the error
|
|
82
|
+
await updateJob({
|
|
83
|
+
completedAt: new Date().toISOString(),
|
|
84
|
+
error: hasFinalError ? error : undefined,
|
|
85
|
+
hasError: hasFinalError,
|
|
86
|
+
processing: false,
|
|
87
|
+
totalTried: (job.totalTried ?? 0) + 1
|
|
88
|
+
});
|
|
89
|
+
} else {
|
|
90
|
+
await updateJob({
|
|
91
|
+
completedAt: new Date().toISOString(),
|
|
92
|
+
processing: false,
|
|
93
|
+
totalTried: (job.totalTried ?? 0) + 1
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
status: 'success'
|
|
98
|
+
};
|
|
99
|
+
} else {
|
|
100
|
+
if (error) {
|
|
101
|
+
// Tasks update the job if they error - but in case there is an unhandled error (e.g. in the workflow itself, not in a task)
|
|
102
|
+
// we need to ensure the job is updated to reflect the error
|
|
103
|
+
await updateJob({
|
|
104
|
+
error: hasFinalError ? error : undefined,
|
|
105
|
+
hasError: hasFinalError,
|
|
106
|
+
processing: false,
|
|
107
|
+
totalTried: (job.totalTried ?? 0) + 1
|
|
108
|
+
});
|
|
109
|
+
return {
|
|
110
|
+
status: hasFinalError ? 'error-reached-max-retries' : 'error'
|
|
111
|
+
};
|
|
112
|
+
} else {
|
|
113
|
+
// Retry the job - no need to bump processing or totalTried as this does not count as a retry. A condition of a different task might have just opened up!
|
|
114
|
+
return await runJSONJob({
|
|
115
|
+
job,
|
|
116
|
+
req,
|
|
117
|
+
updateJob,
|
|
118
|
+
workflowConfig,
|
|
119
|
+
workflowHandler
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/queues/operations/runJobs/runJSONJob/index.ts"],"sourcesContent":["import type { PayloadRequest } from '../../../../types/index.js'\nimport type { WorkflowJSON, WorkflowStep } from '../../../config/types/workflowJSONTypes.js'\nimport type {\n BaseJob,\n RunningJob,\n WorkflowConfig,\n WorkflowTypes,\n} from '../../../config/types/workflowTypes.js'\nimport type { UpdateJobFunction } from '../runJob/getUpdateJobFunction.js'\nimport type { JobRunStatus } from '../runJob/index.js'\n\nimport { getRunTaskFunction, type RunTaskFunctionState } from '../runJob/getRunTaskFunction.js'\nimport { handleWorkflowError } from '../runJob/handleWorkflowError.js'\n\ntype Args = {\n job: BaseJob\n req: PayloadRequest\n updateJob: UpdateJobFunction\n workflowConfig: WorkflowConfig<WorkflowTypes>\n workflowHandler: WorkflowJSON<WorkflowTypes>\n}\n\nexport type RunJSONJobResult = {\n status: JobRunStatus\n}\n\nexport const runJSONJob = async ({\n job,\n req,\n updateJob,\n workflowConfig,\n workflowHandler,\n}: Args): Promise<RunJSONJobResult> => {\n // Object so that we can pass contents by reference, not value.\n // We want any mutations to be reflected in here.\n const state: RunTaskFunctionState = {\n reachedMaxRetries: false,\n }\n\n const stepsToRun: WorkflowStep<string, string>[] = []\n\n for (const step of workflowHandler) {\n if ('task' in step) {\n if (job?.taskStatus?.[step.task]?.[step.id]?.complete) {\n continue\n }\n } else {\n if (job?.taskStatus?.['inline']?.[step.id]?.complete) {\n continue\n }\n }\n if (step.condition && !step.condition({ job: job as RunningJob<any> })) {\n // TODO: Improve RunningJob type see todo below\n continue\n }\n stepsToRun.push(step)\n }\n\n const tasks = getRunTaskFunction(state, job, workflowConfig, req, false, updateJob)\n const inlineTask = getRunTaskFunction(state, job, workflowConfig, req, true, updateJob)\n\n // Run the job\n let hasFinalError = false\n let error: Error | undefined\n try {\n await Promise.all(\n stepsToRun.map(async (step) => {\n if ('task' in step) {\n await tasks[step.task](step.id, {\n input: step.input ? step.input({ job: job as RunningJob<any> }) : {}, // TODO: Type better. We should use RunningJob anywhere and make TypedCollection['payload-jobs'] be BaseJob if type not generated\n retries: step.retries,\n })\n } else {\n await inlineTask(step.id, {\n retries: step.retries,\n task: step.inlineTask as any, // TODO: Fix type\n })\n }\n }),\n )\n } catch (err) {\n const errorResult = handleWorkflowError({\n error: err,\n job,\n req,\n state,\n workflowConfig,\n })\n error = err\n hasFinalError = errorResult.hasFinalError\n }\n\n // Check if workflow has completed\n let workflowCompleted = false\n for (const [slug, map] of Object.entries(job.taskStatus)) {\n for (const [id, taskStatus] of Object.entries(map)) {\n if (taskStatus.complete) {\n const step = workflowHandler.find((step) => {\n if ('task' in step) {\n return step.task === slug && step.id === id\n } else {\n return step.id === id && slug === 'inline'\n }\n })\n if (step.completesJob) {\n workflowCompleted = true\n break\n }\n }\n }\n }\n\n if (workflowCompleted) {\n if (error) {\n // Tasks update the job if they error - but in case there is an unhandled error (e.g. in the workflow itself, not in a task)\n // we need to ensure the job is updated to reflect the error\n await updateJob({\n completedAt: new Date().toISOString(),\n error: hasFinalError ? error : undefined,\n hasError: hasFinalError, // If reached max retries => final error. If hasError is true this job will not be retried\n processing: false,\n totalTried: (job.totalTried ?? 0) + 1,\n })\n } else {\n await updateJob({\n completedAt: new Date().toISOString(),\n processing: false,\n totalTried: (job.totalTried ?? 0) + 1,\n })\n }\n\n return {\n status: 'success',\n }\n } else {\n if (error) {\n // Tasks update the job if they error - but in case there is an unhandled error (e.g. in the workflow itself, not in a task)\n // we need to ensure the job is updated to reflect the error\n await updateJob({\n error: hasFinalError ? error : undefined,\n hasError: hasFinalError, // If reached max retries => final error. If hasError is true this job will not be retried\n processing: false,\n totalTried: (job.totalTried ?? 0) + 1,\n })\n return {\n status: hasFinalError ? 'error-reached-max-retries' : 'error',\n }\n } else {\n // Retry the job - no need to bump processing or totalTried as this does not count as a retry. A condition of a different task might have just opened up!\n return await runJSONJob({\n job,\n req,\n updateJob,\n workflowConfig,\n workflowHandler,\n })\n }\n }\n}\n"],"names":["getRunTaskFunction","handleWorkflowError","runJSONJob","job","req","updateJob","workflowConfig","workflowHandler","state","reachedMaxRetries","stepsToRun","step","taskStatus","task","id","complete","condition","push","tasks","inlineTask","hasFinalError","error","Promise","all","map","input","retries","err","errorResult","workflowCompleted","slug","Object","entries","find","completesJob","completedAt","Date","toISOString","undefined","hasError","processing","totalTried","status"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { RetryConfig } from '../../../config/types/taskTypes.js';
|
|
2
|
+
export declare function calculateBackoffWaitUntil({ retriesConfig, totalTried, }: {
|
|
3
|
+
retriesConfig: number | RetryConfig;
|
|
4
|
+
totalTried: number;
|
|
5
|
+
}): Date;
|
|
6
|
+
//# sourceMappingURL=calculateBackoffWaitUntil.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculateBackoffWaitUntil.d.ts","sourceRoot":"","sources":["../../../../../src/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAErE,wBAAgB,yBAAyB,CAAC,EACxC,aAAa,EACb,UAAU,GACX,EAAE;IACD,aAAa,EAAE,MAAM,GAAG,WAAW,CAAA;IACnC,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,IAAI,CA2BP"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export function calculateBackoffWaitUntil({ retriesConfig, totalTried }) {
|
|
2
|
+
let waitUntil = new Date();
|
|
3
|
+
if (typeof retriesConfig === 'object') {
|
|
4
|
+
if (retriesConfig.backoff) {
|
|
5
|
+
if (retriesConfig.backoff.type === 'fixed') {
|
|
6
|
+
waitUntil = retriesConfig.backoff.delay ? new Date(new Date().getTime() + retriesConfig.backoff.delay) : new Date();
|
|
7
|
+
} else if (retriesConfig.backoff.type === 'exponential') {
|
|
8
|
+
// 2 ^ (attempts - 1) * delay (current attempt is not included in totalTried, thus no need for -1)
|
|
9
|
+
const delay = retriesConfig.backoff.delay ? retriesConfig.backoff.delay : 0;
|
|
10
|
+
waitUntil = new Date(new Date().getTime() + Math.pow(2, totalTried) * delay);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/*
|
|
15
|
+
const differenceInMSBetweenNowAndWaitUntil = waitUntil.getTime() - new Date().getTime()
|
|
16
|
+
|
|
17
|
+
const differenceInSBetweenNowAndWaitUntil = differenceInMSBetweenNowAndWaitUntil / 1000
|
|
18
|
+
console.log('Calculated backoff', {
|
|
19
|
+
differenceInMSBetweenNowAndWaitUntil,
|
|
20
|
+
differenceInSBetweenNowAndWaitUntil,
|
|
21
|
+
retriesConfig,
|
|
22
|
+
totalTried,
|
|
23
|
+
})*/ return waitUntil;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=calculateBackoffWaitUntil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.ts"],"sourcesContent":["import type { RetryConfig } from '../../../config/types/taskTypes.js'\n\nexport function calculateBackoffWaitUntil({\n retriesConfig,\n totalTried,\n}: {\n retriesConfig: number | RetryConfig\n totalTried: number\n}): Date {\n let waitUntil: Date = new Date()\n if (typeof retriesConfig === 'object') {\n if (retriesConfig.backoff) {\n if (retriesConfig.backoff.type === 'fixed') {\n waitUntil = retriesConfig.backoff.delay\n ? new Date(new Date().getTime() + retriesConfig.backoff.delay)\n : new Date()\n } else if (retriesConfig.backoff.type === 'exponential') {\n // 2 ^ (attempts - 1) * delay (current attempt is not included in totalTried, thus no need for -1)\n const delay = retriesConfig.backoff.delay ? retriesConfig.backoff.delay : 0\n waitUntil = new Date(new Date().getTime() + Math.pow(2, totalTried) * delay)\n }\n }\n }\n\n /*\n const differenceInMSBetweenNowAndWaitUntil = waitUntil.getTime() - new Date().getTime()\n\n const differenceInSBetweenNowAndWaitUntil = differenceInMSBetweenNowAndWaitUntil / 1000\n console.log('Calculated backoff', {\n differenceInMSBetweenNowAndWaitUntil,\n differenceInSBetweenNowAndWaitUntil,\n retriesConfig,\n totalTried,\n })*/\n return waitUntil\n}\n"],"names":["calculateBackoffWaitUntil","retriesConfig","totalTried","waitUntil","Date","backoff","type","delay","getTime","Math","pow"],"mappings":"AAEA,OAAO,SAASA,0BAA0B,EACxCC,aAAa,EACbC,UAAU,EAIX;IACC,IAAIC,YAAkB,IAAIC;IAC1B,IAAI,OAAOH,kBAAkB,UAAU;QACrC,IAAIA,cAAcI,OAAO,EAAE;YACzB,IAAIJ,cAAcI,OAAO,CAACC,IAAI,KAAK,SAAS;gBAC1CH,YAAYF,cAAcI,OAAO,CAACE,KAAK,GACnC,IAAIH,KAAK,IAAIA,OAAOI,OAAO,KAAKP,cAAcI,OAAO,CAACE,KAAK,IAC3D,IAAIH;YACV,OAAO,IAAIH,cAAcI,OAAO,CAACC,IAAI,KAAK,eAAe;gBACvD,kGAAkG;gBAClG,MAAMC,QAAQN,cAAcI,OAAO,CAACE,KAAK,GAAGN,cAAcI,OAAO,CAACE,KAAK,GAAG;gBAC1EJ,YAAY,IAAIC,KAAK,IAAIA,OAAOI,OAAO,KAAKC,KAAKC,GAAG,CAAC,GAAGR,cAAcK;YACxE;QACF;IACF;IAEA;;;;;;;;;IASE,GACF,OAAOJ;AACT"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { PayloadRequest } from '../../../../types/index.js';
|
|
2
|
+
import type { RetryConfig, RunInlineTaskFunction, RunTaskFunctions, TaskConfig, TaskHandlerResult } from '../../../config/types/taskTypes.js';
|
|
3
|
+
import type { BaseJob, SingleTaskStatus, WorkflowConfig } from '../../../config/types/workflowTypes.js';
|
|
4
|
+
import type { UpdateJobFunction } from './getUpdateJobFunction.js';
|
|
5
|
+
export type RunTaskFunctionState = {
|
|
6
|
+
reachedMaxRetries: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare function handleTaskFailed({ error, executedAt, input, job, maxRetries, output, req, retriesConfig, runnerOutput, state, taskConfig, taskID, taskSlug, taskStatus, updateJob, }: {
|
|
9
|
+
error?: Error;
|
|
10
|
+
executedAt: Date;
|
|
11
|
+
input: object;
|
|
12
|
+
job: BaseJob;
|
|
13
|
+
maxRetries: number;
|
|
14
|
+
output: object;
|
|
15
|
+
req: PayloadRequest;
|
|
16
|
+
retriesConfig: number | RetryConfig;
|
|
17
|
+
runnerOutput?: TaskHandlerResult<string>;
|
|
18
|
+
state: RunTaskFunctionState;
|
|
19
|
+
taskConfig?: TaskConfig<string>;
|
|
20
|
+
taskID: string;
|
|
21
|
+
taskSlug: string;
|
|
22
|
+
taskStatus: null | SingleTaskStatus<string>;
|
|
23
|
+
updateJob: UpdateJobFunction;
|
|
24
|
+
}): Promise<never>;
|
|
25
|
+
export declare const getRunTaskFunction: <TIsInline extends boolean>(state: RunTaskFunctionState, job: BaseJob, workflowConfig: WorkflowConfig<string>, req: PayloadRequest, isInline: TIsInline, updateJob: UpdateJobFunction) => TIsInline extends true ? RunInlineTaskFunction : RunTaskFunctions;
|
|
26
|
+
//# sourceMappingURL=getRunTaskFunction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRunTaskFunction.d.ts","sourceRoot":"","sources":["../../../../../src/queues/operations/runJobs/runJob/getRunTaskFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EAErB,gBAAgB,EAChB,UAAU,EAEV,iBAAiB,EAElB,MAAM,oCAAoC,CAAA;AAC3C,OAAO,KAAK,EACV,OAAO,EAEP,gBAAgB,EAChB,cAAc,EAEf,MAAM,wCAAwC,CAAA;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAMlE,MAAM,MAAM,oBAAoB,GAAG;IACjC,iBAAiB,EAAE,OAAO,CAAA;CAC3B,CAAA;AAaD,wBAAsB,gBAAgB,CAAC,EACrC,KAAK,EACL,UAAU,EACV,KAAK,EACL,GAAG,EACH,UAAU,EACV,MAAM,EACN,GAAG,EACH,aAAa,EACb,YAAY,EACZ,KAAK,EACL,UAAU,EACV,MAAM,EACN,QAAQ,EACR,UAAU,EACV,SAAS,GACV,EAAE;IACD,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,UAAU,EAAE,IAAI,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,OAAO,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,cAAc,CAAA;IACnB,aAAa,EAAE,MAAM,GAAG,WAAW,CAAA;IACnC,YAAY,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;IACxC,KAAK,EAAE,oBAAoB,CAAA;IAC3B,UAAU,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC3C,SAAS,EAAE,iBAAiB,CAAA;CAC7B,GAAG,OAAO,CAAC,KAAK,CAAC,CA+DjB;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,SAAS,OAAO,SACnD,oBAAoB,OACtB,OAAO,kBACI,cAAc,CAAC,MAAM,CAAC,OACjC,cAAc,YACT,SAAS,aACR,iBAAiB,KAC3B,SAAS,SAAS,IAAI,GAAG,qBAAqB,GAAG,gBAqKnD,CAAA"}
|