@trigger.dev/sdk 3.0.0-beta.7 → 3.0.1
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/commonjs/apiClient.d.ts +737 -0
- package/dist/commonjs/apiClient.js +692 -0
- package/dist/commonjs/apiClient.js.map +1 -0
- package/dist/commonjs/concurrencyLimit.d.ts +10 -0
- package/dist/commonjs/concurrencyLimit.js +17 -0
- package/dist/commonjs/concurrencyLimit.js.map +1 -0
- package/dist/commonjs/errors.d.ts +66 -0
- package/dist/commonjs/errors.js +109 -0
- package/dist/commonjs/errors.js.map +1 -0
- package/dist/commonjs/httpEndpoint.d.ts +87 -0
- package/dist/commonjs/httpEndpoint.js +130 -0
- package/dist/commonjs/httpEndpoint.js.map +1 -0
- package/dist/commonjs/index.d.ts +23 -0
- package/dist/commonjs/index.js +55 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/integrations.d.ts +11 -0
- package/dist/commonjs/integrations.js +3 -0
- package/dist/commonjs/integrations.js.map +1 -0
- package/dist/commonjs/io.d.ts +453 -0
- package/dist/commonjs/io.js +1165 -0
- package/dist/commonjs/io.js.map +1 -0
- package/dist/commonjs/ioWithIntegrations.d.ts +4 -0
- package/dist/commonjs/ioWithIntegrations.js +32 -0
- package/dist/commonjs/ioWithIntegrations.js.map +1 -0
- package/dist/commonjs/job.d.ts +96 -0
- package/dist/commonjs/job.js +210 -0
- package/dist/commonjs/job.js.map +1 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/commonjs/retry.d.ts +20 -0
- package/dist/commonjs/retry.js +22 -0
- package/dist/commonjs/retry.js.map +1 -0
- package/dist/commonjs/runLocalStorage.d.ts +8 -0
- package/dist/commonjs/runLocalStorage.js +6 -0
- package/dist/commonjs/runLocalStorage.js.map +1 -0
- package/dist/commonjs/security.d.ts +18 -0
- package/dist/commonjs/security.js +41 -0
- package/dist/commonjs/security.js.map +1 -0
- package/dist/commonjs/status.d.ts +19 -0
- package/dist/commonjs/status.js +38 -0
- package/dist/commonjs/status.js.map +1 -0
- package/dist/commonjs/store/keyValueStore.d.ts +17 -0
- package/dist/commonjs/store/keyValueStore.js +138 -0
- package/dist/commonjs/store/keyValueStore.js.map +1 -0
- package/dist/commonjs/store/keyValueStoreClient.d.ts +19 -0
- package/dist/commonjs/store/keyValueStoreClient.js +65 -0
- package/dist/commonjs/store/keyValueStoreClient.js.map +1 -0
- package/dist/commonjs/triggerClient.d.ts +300 -0
- package/dist/commonjs/triggerClient.js +1366 -0
- package/dist/commonjs/triggerClient.js.map +1 -0
- package/dist/commonjs/triggers/dynamic.d.ts +56 -0
- package/dist/commonjs/triggers/dynamic.js +97 -0
- package/dist/commonjs/triggers/dynamic.js.map +1 -0
- package/dist/commonjs/triggers/eventTrigger.d.ts +58 -0
- package/dist/commonjs/triggers/eventTrigger.js +69 -0
- package/dist/commonjs/triggers/eventTrigger.js.map +1 -0
- package/dist/commonjs/triggers/externalSource.d.ts +148 -0
- package/dist/commonjs/triggers/externalSource.js +106 -0
- package/dist/commonjs/triggers/externalSource.js.map +1 -0
- package/dist/commonjs/triggers/invokeTrigger.d.ts +39 -0
- package/dist/commonjs/triggers/invokeTrigger.js +58 -0
- package/dist/commonjs/triggers/invokeTrigger.js.map +1 -0
- package/dist/commonjs/triggers/notifications.d.ts +111 -0
- package/dist/commonjs/triggers/notifications.js +101 -0
- package/dist/commonjs/triggers/notifications.js.map +1 -0
- package/dist/commonjs/triggers/scheduled.d.ts +145 -0
- package/dist/commonjs/triggers/scheduled.js +208 -0
- package/dist/commonjs/triggers/scheduled.js.map +1 -0
- package/dist/commonjs/triggers/webhook.d.ts +143 -0
- package/dist/commonjs/triggers/webhook.js +133 -0
- package/dist/commonjs/triggers/webhook.js.map +1 -0
- package/dist/commonjs/typed-emitter.d.ts +37 -0
- package/dist/commonjs/typed-emitter.js +3 -0
- package/dist/commonjs/typed-emitter.js.map +1 -0
- package/dist/commonjs/types.d.ts +204 -0
- package/dist/commonjs/types.js +23 -0
- package/dist/commonjs/types.js.map +1 -0
- package/dist/commonjs/utils/formatSchemaErrors.d.ts +3 -0
- package/dist/commonjs/utils/formatSchemaErrors.js +10 -0
- package/dist/commonjs/utils/formatSchemaErrors.js.map +1 -0
- package/dist/commonjs/utils/typedAsyncLocalStorage.d.ts +6 -0
- package/dist/commonjs/utils/typedAsyncLocalStorage.js +18 -0
- package/dist/commonjs/utils/typedAsyncLocalStorage.js.map +1 -0
- package/dist/commonjs/utils.d.ts +1 -0
- package/dist/commonjs/utils.js +11 -0
- package/dist/commonjs/utils.js.map +1 -0
- package/dist/commonjs/v3/cache.d.ts +28 -0
- package/dist/commonjs/v3/cache.js +63 -0
- package/dist/commonjs/v3/cache.js.map +1 -0
- package/dist/commonjs/v3/config.d.ts +4 -0
- package/dist/commonjs/v3/config.js +7 -0
- package/dist/commonjs/v3/config.js.map +1 -0
- package/dist/commonjs/v3/envvars.d.ts +14 -0
- package/dist/commonjs/v3/envvars.js +246 -0
- package/dist/commonjs/v3/envvars.js.map +1 -0
- package/dist/commonjs/v3/idempotencyKeys.d.ts +49 -0
- package/dist/commonjs/v3/idempotencyKeys.js +76 -0
- package/dist/commonjs/v3/idempotencyKeys.js.map +1 -0
- package/dist/commonjs/v3/index.d.ts +36 -0
- package/dist/commonjs/v3/index.js +79 -0
- package/dist/commonjs/v3/index.js.map +1 -0
- package/dist/commonjs/v3/retry.d.ts +15 -0
- package/dist/commonjs/v3/retry.js +411 -0
- package/dist/commonjs/v3/retry.js.map +1 -0
- package/dist/commonjs/v3/runs.d.ts +345 -0
- package/dist/commonjs/v3/runs.js +195 -0
- package/dist/commonjs/v3/runs.js.map +1 -0
- package/dist/commonjs/v3/schedules/api.d.ts +1 -0
- package/dist/commonjs/v3/schedules/api.js +3 -0
- package/dist/commonjs/v3/schedules/api.js.map +1 -0
- package/dist/commonjs/v3/schedules/index.d.ts +87 -0
- package/dist/commonjs/v3/schedules/index.js +250 -0
- package/dist/commonjs/v3/schedules/index.js.map +1 -0
- package/dist/commonjs/v3/shared.d.ts +443 -0
- package/dist/commonjs/v3/shared.js +547 -0
- package/dist/commonjs/v3/shared.js.map +1 -0
- package/dist/commonjs/v3/tags.d.ts +6 -0
- package/dist/commonjs/v3/tags.js +50 -0
- package/dist/commonjs/v3/tags.js.map +1 -0
- package/dist/commonjs/v3/tasks.d.ts +31 -0
- package/dist/commonjs/v3/tasks.js +35 -0
- package/dist/commonjs/v3/tasks.js.map +1 -0
- package/dist/commonjs/v3/tracer.d.ts +2 -0
- package/dist/commonjs/v3/tracer.js +7 -0
- package/dist/commonjs/v3/tracer.js.map +1 -0
- package/dist/commonjs/v3/usage.d.ts +77 -0
- package/dist/commonjs/v3/usage.js +115 -0
- package/dist/commonjs/v3/usage.js.map +1 -0
- package/dist/commonjs/v3/wait.d.ts +22 -0
- package/dist/commonjs/v3/wait.js +99 -0
- package/dist/commonjs/v3/wait.js.map +1 -0
- package/dist/commonjs/version.d.ts +1 -0
- package/dist/commonjs/version.js +5 -0
- package/dist/commonjs/version.js.map +1 -0
- package/dist/esm/apiClient.d.ts +737 -0
- package/dist/esm/apiClient.js +687 -0
- package/dist/esm/apiClient.js.map +1 -0
- package/dist/esm/concurrencyLimit.d.ts +10 -0
- package/dist/esm/concurrencyLimit.js +13 -0
- package/dist/esm/concurrencyLimit.js.map +1 -0
- package/dist/esm/errors.d.ts +66 -0
- package/dist/esm/errors.js +95 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/httpEndpoint.d.ts +87 -0
- package/dist/esm/httpEndpoint.js +125 -0
- package/dist/esm/httpEndpoint.js.map +1 -0
- package/dist/esm/index.d.ts +23 -0
- package/dist/esm/index.js +35 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/integrations.d.ts +11 -0
- package/dist/esm/integrations.js +2 -0
- package/dist/esm/integrations.js.map +1 -0
- package/dist/esm/io.d.ts +453 -0
- package/dist/esm/io.js +1159 -0
- package/dist/esm/io.js.map +1 -0
- package/dist/esm/ioWithIntegrations.d.ts +4 -0
- package/dist/esm/ioWithIntegrations.js +29 -0
- package/dist/esm/ioWithIntegrations.js.map +1 -0
- package/dist/esm/job.d.ts +96 -0
- package/dist/esm/job.js +206 -0
- package/dist/esm/job.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/retry.d.ts +20 -0
- package/dist/esm/retry.js +19 -0
- package/dist/esm/retry.js.map +1 -0
- package/dist/esm/runLocalStorage.d.ts +8 -0
- package/dist/esm/runLocalStorage.js +3 -0
- package/dist/esm/runLocalStorage.js.map +1 -0
- package/dist/esm/security.d.ts +18 -0
- package/dist/esm/security.js +34 -0
- package/dist/esm/security.js.map +1 -0
- package/dist/esm/status.d.ts +19 -0
- package/dist/esm/status.js +34 -0
- package/dist/esm/status.js.map +1 -0
- package/dist/esm/store/keyValueStore.d.ts +17 -0
- package/dist/esm/store/keyValueStore.js +134 -0
- package/dist/esm/store/keyValueStore.js.map +1 -0
- package/dist/esm/store/keyValueStoreClient.d.ts +19 -0
- package/dist/esm/store/keyValueStoreClient.js +61 -0
- package/dist/esm/store/keyValueStoreClient.js.map +1 -0
- package/dist/esm/triggerClient.d.ts +300 -0
- package/dist/esm/triggerClient.js +1359 -0
- package/dist/esm/triggerClient.js.map +1 -0
- package/dist/esm/triggers/dynamic.d.ts +56 -0
- package/dist/esm/triggers/dynamic.js +93 -0
- package/dist/esm/triggers/dynamic.js.map +1 -0
- package/dist/esm/triggers/eventTrigger.d.ts +58 -0
- package/dist/esm/triggers/eventTrigger.js +64 -0
- package/dist/esm/triggers/eventTrigger.js.map +1 -0
- package/dist/esm/triggers/externalSource.d.ts +148 -0
- package/dist/esm/triggers/externalSource.js +100 -0
- package/dist/esm/triggers/externalSource.js.map +1 -0
- package/dist/esm/triggers/invokeTrigger.d.ts +39 -0
- package/dist/esm/triggers/invokeTrigger.js +53 -0
- package/dist/esm/triggers/invokeTrigger.js.map +1 -0
- package/dist/esm/triggers/notifications.d.ts +111 -0
- package/dist/esm/triggers/notifications.js +94 -0
- package/dist/esm/triggers/notifications.js.map +1 -0
- package/dist/esm/triggers/scheduled.d.ts +145 -0
- package/dist/esm/triggers/scheduled.js +197 -0
- package/dist/esm/triggers/scheduled.js.map +1 -0
- package/dist/esm/triggers/webhook.d.ts +143 -0
- package/dist/esm/triggers/webhook.js +128 -0
- package/dist/esm/triggers/webhook.js.map +1 -0
- package/dist/esm/typed-emitter.d.ts +37 -0
- package/dist/esm/typed-emitter.js +2 -0
- package/dist/esm/typed-emitter.js.map +1 -0
- package/dist/esm/types.d.ts +204 -0
- package/dist/esm/types.js +19 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/formatSchemaErrors.d.ts +3 -0
- package/dist/esm/utils/formatSchemaErrors.js +7 -0
- package/dist/esm/utils/formatSchemaErrors.js.map +1 -0
- package/dist/esm/utils/typedAsyncLocalStorage.d.ts +6 -0
- package/dist/esm/utils/typedAsyncLocalStorage.js +14 -0
- package/dist/esm/utils/typedAsyncLocalStorage.js.map +1 -0
- package/dist/esm/utils.d.ts +1 -0
- package/dist/esm/utils.js +8 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/esm/v3/cache.d.ts +28 -0
- package/dist/esm/v3/cache.js +58 -0
- package/dist/esm/v3/cache.js.map +1 -0
- package/dist/esm/v3/config.d.ts +4 -0
- package/dist/esm/v3/config.js +4 -0
- package/dist/esm/v3/config.js.map +1 -0
- package/dist/esm/v3/envvars.d.ts +14 -0
- package/dist/esm/v3/envvars.js +238 -0
- package/dist/esm/v3/envvars.js.map +1 -0
- package/dist/esm/v3/idempotencyKeys.d.ts +49 -0
- package/dist/esm/v3/idempotencyKeys.js +72 -0
- package/dist/esm/v3/idempotencyKeys.js.map +1 -0
- package/dist/esm/v3/index.d.ts +36 -0
- package/dist/esm/v3/index.js +35 -0
- package/dist/esm/v3/index.js.map +1 -0
- package/dist/esm/v3/retry.d.ts +15 -0
- package/dist/esm/v3/retry.js +408 -0
- package/dist/esm/v3/retry.js.map +1 -0
- package/dist/esm/v3/runs.d.ts +345 -0
- package/dist/esm/v3/runs.js +192 -0
- package/dist/esm/v3/runs.js.map +1 -0
- package/dist/esm/v3/schedules/api.d.ts +1 -0
- package/dist/esm/v3/schedules/api.js +2 -0
- package/dist/esm/v3/schedules/api.js.map +1 -0
- package/dist/esm/v3/schedules/index.d.ts +87 -0
- package/dist/esm/v3/schedules/index.js +239 -0
- package/dist/esm/v3/schedules/index.js.map +1 -0
- package/dist/esm/v3/shared.d.ts +443 -0
- package/dist/esm/v3/shared.js +534 -0
- package/dist/esm/v3/shared.js.map +1 -0
- package/dist/esm/v3/tags.d.ts +6 -0
- package/dist/esm/v3/tags.js +47 -0
- package/dist/esm/v3/tags.js.map +1 -0
- package/dist/esm/v3/tasks.d.ts +31 -0
- package/dist/esm/v3/tasks.js +31 -0
- package/dist/esm/v3/tasks.js.map +1 -0
- package/dist/esm/v3/tracer.d.ts +2 -0
- package/dist/esm/v3/tracer.js +4 -0
- package/dist/esm/v3/tracer.js.map +1 -0
- package/dist/esm/v3/usage.d.ts +77 -0
- package/dist/esm/v3/usage.js +112 -0
- package/dist/esm/v3/usage.js.map +1 -0
- package/dist/esm/v3/wait.d.ts +22 -0
- package/dist/esm/v3/wait.js +96 -0
- package/dist/esm/v3/wait.js.map +1 -0
- package/dist/esm/version.d.ts +1 -0
- package/dist/esm/version.js +2 -0
- package/dist/esm/version.js.map +1 -0
- package/package.json +62 -47
- package/dist/index.d.mts +0 -2704
- package/dist/index.d.ts +0 -2704
- package/dist/index.js +0 -4886
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -4847
- package/dist/index.mjs.map +0 -1
- package/dist/v3/index.d.mts +0 -261
- package/dist/v3/index.d.ts +0 -261
- package/dist/v3/index.js +0 -921
- package/dist/v3/index.js.map +0 -1
- package/dist/v3/index.mjs +0 -911
- package/dist/v3/index.mjs.map +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tasks = exports.SubtaskUnwrapError = void 0;
|
|
4
|
+
exports.task = task;
|
|
5
|
+
const shared_js_1 = require("./shared.js");
|
|
6
|
+
Object.defineProperty(exports, "SubtaskUnwrapError", { enumerable: true, get: function () { return shared_js_1.SubtaskUnwrapError; } });
|
|
7
|
+
/** Creates a task that can be triggered
|
|
8
|
+
* @param options - Task options
|
|
9
|
+
* @example
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { task } from "@trigger.dev/sdk/v3";
|
|
13
|
+
*
|
|
14
|
+
* export const helloWorld = task({
|
|
15
|
+
id: "hello-world",
|
|
16
|
+
* run: async (payload: { url: string }) => {
|
|
17
|
+
* return { hello: "world" };
|
|
18
|
+
* },
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @returns A task that can be triggered
|
|
24
|
+
*/
|
|
25
|
+
function task(options) {
|
|
26
|
+
return (0, shared_js_1.createTask)(options);
|
|
27
|
+
}
|
|
28
|
+
exports.tasks = {
|
|
29
|
+
trigger: shared_js_1.trigger,
|
|
30
|
+
triggerAndPoll: shared_js_1.triggerAndPoll,
|
|
31
|
+
batchTrigger: shared_js_1.batchTrigger,
|
|
32
|
+
triggerAndWait: shared_js_1.triggerAndWait,
|
|
33
|
+
batchTriggerAndWait: shared_js_1.batchTriggerAndWait,
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/v3/tasks.ts"],"names":[],"mappings":";;;AA+DA,oBASC;AAvED,2CAQqB;AAEZ,mGAHP,8BAAkB,OAGO;AAkC3B;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,IAAI,CAMlB,OAA+D;IAE/D,OAAO,IAAA,sBAAU,EAA4C,OAAO,CAAC,CAAC;AACxE,CAAC;AAEY,QAAA,KAAK,GAAG;IACnB,OAAO,EAAP,mBAAO;IACP,cAAc,EAAd,0BAAc;IACd,YAAY,EAAZ,wBAAY;IACZ,cAAc,EAAd,0BAAc;IACd,mBAAmB,EAAnB,+BAAmB;CACpB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tracer = void 0;
|
|
4
|
+
const v3_1 = require("@trigger.dev/core/v3");
|
|
5
|
+
const version_js_1 = require("../version.js");
|
|
6
|
+
exports.tracer = new v3_1.TriggerTracer({ name: "@trigger.dev/sdk", version: version_js_1.VERSION });
|
|
7
|
+
//# sourceMappingURL=tracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../../src/v3/tracer.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,8CAAwC;AAE3B,QAAA,MAAM,GAAG,IAAI,kBAAa,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,oBAAO,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export type ComputeUsage = {
|
|
2
|
+
costInCents: number;
|
|
3
|
+
durationMs: number;
|
|
4
|
+
};
|
|
5
|
+
export type CurrentUsage = {
|
|
6
|
+
compute: {
|
|
7
|
+
attempt: ComputeUsage;
|
|
8
|
+
total: ComputeUsage;
|
|
9
|
+
};
|
|
10
|
+
baseCostInCents: number;
|
|
11
|
+
totalCostInCents: number;
|
|
12
|
+
};
|
|
13
|
+
export declare const usage: {
|
|
14
|
+
/**
|
|
15
|
+
* Get the current running usage of this task run.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
*
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { usage, task } from "@trigger.dev/sdk/v3";
|
|
21
|
+
*
|
|
22
|
+
* export const myTask = task({
|
|
23
|
+
* id: "my-task",
|
|
24
|
+
* run: async (payload, { ctx }) => {
|
|
25
|
+
* // ... Do a bunch of work
|
|
26
|
+
*
|
|
27
|
+
* const currentUsage = usage.getCurrent();
|
|
28
|
+
*
|
|
29
|
+
* // You have access to the current compute cost and duration up to this point
|
|
30
|
+
* console.log("Current attempt compute cost and duration", {
|
|
31
|
+
* cost: currentUsage.compute.attempt.costInCents,
|
|
32
|
+
* duration: currentUsage.compute.attempt.durationMs,
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* // You also can see the total compute cost and duration up to this point in the run, across all attempts
|
|
36
|
+
* console.log("Current total compute cost and duration", {
|
|
37
|
+
* cost: currentUsage.compute.total.costInCents,
|
|
38
|
+
* duration: currentUsage.compute.total.durationMs,
|
|
39
|
+
* });
|
|
40
|
+
*
|
|
41
|
+
* // You can see the base cost of the run, which is the cost of the run before any compute costs
|
|
42
|
+
* console.log("Total cost", {
|
|
43
|
+
* cost: currentUsage.totalCostInCents,
|
|
44
|
+
* baseCost: currentUsage.baseCostInCents,
|
|
45
|
+
* });
|
|
46
|
+
* },
|
|
47
|
+
* });
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
getCurrent: () => CurrentUsage;
|
|
51
|
+
/**
|
|
52
|
+
* Measure the cost and duration of a function.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
*
|
|
56
|
+
* ```typescript
|
|
57
|
+
* import { usage } from "@trigger.dev/sdk/v3";
|
|
58
|
+
*
|
|
59
|
+
* export const myTask = task({
|
|
60
|
+
* id: "my-task",
|
|
61
|
+
* run: async (payload, { ctx }) => {
|
|
62
|
+
* const { result, compute } = await usage.measure(async () => {
|
|
63
|
+
* // Do some work
|
|
64
|
+
* return "result";
|
|
65
|
+
* });
|
|
66
|
+
*
|
|
67
|
+
* console.log("Result", result);
|
|
68
|
+
* console.log("Cost and duration", { cost: compute.costInCents, duration: compute.durationMs });
|
|
69
|
+
* },
|
|
70
|
+
* });
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
measure: <T>(cb: () => Promise<T>) => Promise<{
|
|
74
|
+
result: T;
|
|
75
|
+
compute: ComputeUsage;
|
|
76
|
+
}>;
|
|
77
|
+
};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.usage = void 0;
|
|
4
|
+
const v3_1 = require("@trigger.dev/core/v3");
|
|
5
|
+
exports.usage = {
|
|
6
|
+
/**
|
|
7
|
+
* Get the current running usage of this task run.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
*
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { usage, task } from "@trigger.dev/sdk/v3";
|
|
13
|
+
*
|
|
14
|
+
* export const myTask = task({
|
|
15
|
+
* id: "my-task",
|
|
16
|
+
* run: async (payload, { ctx }) => {
|
|
17
|
+
* // ... Do a bunch of work
|
|
18
|
+
*
|
|
19
|
+
* const currentUsage = usage.getCurrent();
|
|
20
|
+
*
|
|
21
|
+
* // You have access to the current compute cost and duration up to this point
|
|
22
|
+
* console.log("Current attempt compute cost and duration", {
|
|
23
|
+
* cost: currentUsage.compute.attempt.costInCents,
|
|
24
|
+
* duration: currentUsage.compute.attempt.durationMs,
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* // You also can see the total compute cost and duration up to this point in the run, across all attempts
|
|
28
|
+
* console.log("Current total compute cost and duration", {
|
|
29
|
+
* cost: currentUsage.compute.total.costInCents,
|
|
30
|
+
* duration: currentUsage.compute.total.durationMs,
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* // You can see the base cost of the run, which is the cost of the run before any compute costs
|
|
34
|
+
* console.log("Total cost", {
|
|
35
|
+
* cost: currentUsage.totalCostInCents,
|
|
36
|
+
* baseCost: currentUsage.baseCostInCents,
|
|
37
|
+
* });
|
|
38
|
+
* },
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
getCurrent: () => {
|
|
43
|
+
const sample = v3_1.usage.sample();
|
|
44
|
+
const machine = v3_1.taskContext.ctx?.machine;
|
|
45
|
+
const run = v3_1.taskContext.ctx?.run;
|
|
46
|
+
if (!sample) {
|
|
47
|
+
return {
|
|
48
|
+
compute: {
|
|
49
|
+
attempt: {
|
|
50
|
+
costInCents: 0,
|
|
51
|
+
durationMs: 0,
|
|
52
|
+
},
|
|
53
|
+
total: {
|
|
54
|
+
costInCents: run?.costInCents ?? 0,
|
|
55
|
+
durationMs: run?.durationMs ?? 0,
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
baseCostInCents: run?.baseCostInCents ?? 0,
|
|
59
|
+
totalCostInCents: (run?.costInCents ?? 0) + (run?.baseCostInCents ?? 0),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const currentCostInCents = machine?.centsPerMs ? sample.cpuTime * machine.centsPerMs : 0;
|
|
63
|
+
return {
|
|
64
|
+
compute: {
|
|
65
|
+
attempt: {
|
|
66
|
+
costInCents: currentCostInCents,
|
|
67
|
+
durationMs: sample.cpuTime,
|
|
68
|
+
},
|
|
69
|
+
total: {
|
|
70
|
+
costInCents: (run?.costInCents ?? 0) + currentCostInCents,
|
|
71
|
+
durationMs: (run?.durationMs ?? 0) + sample.cpuTime,
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
baseCostInCents: run?.baseCostInCents ?? 0,
|
|
75
|
+
totalCostInCents: (run?.costInCents ?? 0) + currentCostInCents + (run?.baseCostInCents ?? 0),
|
|
76
|
+
};
|
|
77
|
+
},
|
|
78
|
+
/**
|
|
79
|
+
* Measure the cost and duration of a function.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
*
|
|
83
|
+
* ```typescript
|
|
84
|
+
* import { usage } from "@trigger.dev/sdk/v3";
|
|
85
|
+
*
|
|
86
|
+
* export const myTask = task({
|
|
87
|
+
* id: "my-task",
|
|
88
|
+
* run: async (payload, { ctx }) => {
|
|
89
|
+
* const { result, compute } = await usage.measure(async () => {
|
|
90
|
+
* // Do some work
|
|
91
|
+
* return "result";
|
|
92
|
+
* });
|
|
93
|
+
*
|
|
94
|
+
* console.log("Result", result);
|
|
95
|
+
* console.log("Cost and duration", { cost: compute.costInCents, duration: compute.durationMs });
|
|
96
|
+
* },
|
|
97
|
+
* });
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
measure: async (cb) => {
|
|
101
|
+
const measurement = v3_1.usage.start();
|
|
102
|
+
const result = await cb();
|
|
103
|
+
const sample = v3_1.usage.stop(measurement);
|
|
104
|
+
const machine = v3_1.taskContext.ctx?.machine;
|
|
105
|
+
const costInCents = machine?.centsPerMs ? sample.cpuTime * machine.centsPerMs : 0;
|
|
106
|
+
return {
|
|
107
|
+
result,
|
|
108
|
+
compute: {
|
|
109
|
+
costInCents,
|
|
110
|
+
durationMs: sample.cpuTime,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/v3/usage.ts"],"names":[],"mappings":";;;AAAA,6CAAsE;AAiBzD,QAAA,KAAK,GAAG;IACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,UAAU,EAAE,GAAiB,EAAE;QAC7B,MAAM,MAAM,GAAG,UAAQ,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,gBAAW,CAAC,GAAG,EAAE,OAAO,CAAC;QACzC,MAAM,GAAG,GAAG,gBAAW,CAAC,GAAG,EAAE,GAAG,CAAC;QAEjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE;oBACP,OAAO,EAAE;wBACP,WAAW,EAAE,CAAC;wBACd,UAAU,EAAE,CAAC;qBACd;oBACD,KAAK,EAAE;wBACL,WAAW,EAAE,GAAG,EAAE,WAAW,IAAI,CAAC;wBAClC,UAAU,EAAE,GAAG,EAAE,UAAU,IAAI,CAAC;qBACjC;iBACF;gBACD,eAAe,EAAE,GAAG,EAAE,eAAe,IAAI,CAAC;gBAC1C,gBAAgB,EAAE,CAAC,GAAG,EAAE,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,IAAI,CAAC,CAAC;aACxE,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzF,OAAO;YACL,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,WAAW,EAAE,kBAAkB;oBAC/B,UAAU,EAAE,MAAM,CAAC,OAAO;iBAC3B;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,CAAC,GAAG,EAAE,WAAW,IAAI,CAAC,CAAC,GAAG,kBAAkB;oBACzD,UAAU,EAAE,CAAC,GAAG,EAAE,UAAU,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO;iBACpD;aACF;YACD,eAAe,EAAE,GAAG,EAAE,eAAe,IAAI,CAAC;YAC1C,gBAAgB,EAAE,CAAC,GAAG,EAAE,WAAW,IAAI,CAAC,CAAC,GAAG,kBAAkB,GAAG,CAAC,GAAG,EAAE,eAAe,IAAI,CAAC,CAAC;SAC7F,CAAC;IACJ,CAAC;IACD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,EAAE,KAAK,EAAK,EAAoB,EAAiD,EAAE;QACxF,MAAM,WAAW,GAAG,UAAQ,CAAC,KAAK,EAAE,CAAC;QAErC,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QAE1B,MAAM,MAAM,GAAG,UAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,gBAAW,CAAC,GAAG,EAAE,OAAO,CAAC;QAEzC,MAAM,WAAW,GAAG,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAElF,OAAO;YACL,MAAM;YACN,OAAO,EAAE;gBACP,WAAW;gBACX,UAAU,EAAE,MAAM,CAAC,OAAO;aAC3B;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type WaitOptions = {
|
|
2
|
+
seconds: number;
|
|
3
|
+
} | {
|
|
4
|
+
minutes: number;
|
|
5
|
+
} | {
|
|
6
|
+
hours: number;
|
|
7
|
+
} | {
|
|
8
|
+
days: number;
|
|
9
|
+
} | {
|
|
10
|
+
weeks: number;
|
|
11
|
+
} | {
|
|
12
|
+
months: number;
|
|
13
|
+
} | {
|
|
14
|
+
years: number;
|
|
15
|
+
};
|
|
16
|
+
export declare const wait: {
|
|
17
|
+
for: (options: WaitOptions) => Promise<void>;
|
|
18
|
+
until: (options: {
|
|
19
|
+
date: Date;
|
|
20
|
+
throwIfInThePast?: boolean;
|
|
21
|
+
}) => Promise<void>;
|
|
22
|
+
};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.wait = void 0;
|
|
4
|
+
const v3_1 = require("@trigger.dev/core/v3");
|
|
5
|
+
const tracer_js_1 = require("./tracer.js");
|
|
6
|
+
exports.wait = {
|
|
7
|
+
for: async (options) => {
|
|
8
|
+
return tracer_js_1.tracer.startActiveSpan(`wait.for()`, async (span) => {
|
|
9
|
+
const start = Date.now();
|
|
10
|
+
const durationInMs = calculateDurationInMs(options);
|
|
11
|
+
await v3_1.runtime.waitForDuration(durationInMs);
|
|
12
|
+
}, {
|
|
13
|
+
attributes: {
|
|
14
|
+
[v3_1.SemanticInternalAttributes.STYLE_ICON]: "wait",
|
|
15
|
+
...(0, v3_1.accessoryAttributes)({
|
|
16
|
+
items: [
|
|
17
|
+
{
|
|
18
|
+
text: nameForWaitOptions(options),
|
|
19
|
+
variant: "normal",
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
style: "codepath",
|
|
23
|
+
}),
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
until: async (options) => {
|
|
28
|
+
return tracer_js_1.tracer.startActiveSpan(`wait.until()`, async (span) => {
|
|
29
|
+
const start = Date.now();
|
|
30
|
+
if (options.throwIfInThePast && options.date < new Date()) {
|
|
31
|
+
throw new Error("Date is in the past");
|
|
32
|
+
}
|
|
33
|
+
const durationInMs = options.date.getTime() - start;
|
|
34
|
+
await v3_1.runtime.waitForDuration(durationInMs);
|
|
35
|
+
}, {
|
|
36
|
+
attributes: {
|
|
37
|
+
[v3_1.SemanticInternalAttributes.STYLE_ICON]: "wait",
|
|
38
|
+
...(0, v3_1.accessoryAttributes)({
|
|
39
|
+
items: [
|
|
40
|
+
{
|
|
41
|
+
text: options.date.toISOString(),
|
|
42
|
+
variant: "normal",
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
style: "codepath",
|
|
46
|
+
}),
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
function nameForWaitOptions(options) {
|
|
52
|
+
if ("seconds" in options) {
|
|
53
|
+
return options.seconds === 1 ? `1 second` : `${options.seconds} seconds`;
|
|
54
|
+
}
|
|
55
|
+
if ("minutes" in options) {
|
|
56
|
+
return options.minutes === 1 ? `1 minute` : `${options.minutes} minutes`;
|
|
57
|
+
}
|
|
58
|
+
if ("hours" in options) {
|
|
59
|
+
return options.hours === 1 ? `1 hour` : `${options.hours} hours`;
|
|
60
|
+
}
|
|
61
|
+
if ("days" in options) {
|
|
62
|
+
return options.days === 1 ? `1 day` : `${options.days} days`;
|
|
63
|
+
}
|
|
64
|
+
if ("weeks" in options) {
|
|
65
|
+
return options.weeks === 1 ? `1 week` : `${options.weeks} weeks`;
|
|
66
|
+
}
|
|
67
|
+
if ("months" in options) {
|
|
68
|
+
return options.months === 1 ? `1 month` : `${options.months} months`;
|
|
69
|
+
}
|
|
70
|
+
if ("years" in options) {
|
|
71
|
+
return options.years === 1 ? `1 year` : `${options.years} years`;
|
|
72
|
+
}
|
|
73
|
+
return "NaN";
|
|
74
|
+
}
|
|
75
|
+
function calculateDurationInMs(options) {
|
|
76
|
+
if ("seconds" in options) {
|
|
77
|
+
return options.seconds * 1000;
|
|
78
|
+
}
|
|
79
|
+
if ("minutes" in options) {
|
|
80
|
+
return options.minutes * 1000 * 60;
|
|
81
|
+
}
|
|
82
|
+
if ("hours" in options) {
|
|
83
|
+
return options.hours * 1000 * 60 * 60;
|
|
84
|
+
}
|
|
85
|
+
if ("days" in options) {
|
|
86
|
+
return options.days * 1000 * 60 * 60 * 24;
|
|
87
|
+
}
|
|
88
|
+
if ("weeks" in options) {
|
|
89
|
+
return options.weeks * 1000 * 60 * 60 * 24 * 7;
|
|
90
|
+
}
|
|
91
|
+
if ("months" in options) {
|
|
92
|
+
return options.months * 1000 * 60 * 60 * 24 * 30;
|
|
93
|
+
}
|
|
94
|
+
if ("years" in options) {
|
|
95
|
+
return options.years * 1000 * 60 * 60 * 24 * 365;
|
|
96
|
+
}
|
|
97
|
+
throw new Error("Invalid options");
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=wait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../src/v3/wait.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const VERSION = "0.0.0";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,OAAO,CAAC"}
|