@forestadmin/workflow-executor 1.27.2 → 1.28.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/dist/adapters/run-to-available-step-mapper.js +11 -1
- package/dist/adapters/server-types.d.ts +2 -0
- package/dist/executors/condition-step-executor.js +13 -5
- package/dist/executors/deterministic-condition-evaluator.d.ts +5 -1
- package/dist/executors/deterministic-condition-evaluator.js +167 -9
- package/dist/executors/step-executor-factory.js +2 -1
- package/dist/types/execution-context.d.ts +1 -0
- package/dist/types/step-execution-data.d.ts +2 -0
- package/dist/types/validated/execution.d.ts +67 -6
- package/dist/types/validated/execution.js +6 -1
- package/dist/types/validated/step-definition.d.ts +89 -9
- package/dist/types/validated/step-definition.js +41 -5
- package/package.json +3 -1
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.default = toAvailableStepExecution;
|
|
7
|
+
const luxon_1 = require("luxon");
|
|
7
8
|
const zod_1 = require("zod");
|
|
8
9
|
const record_id_serializer_1 = require("./record-id-serializer");
|
|
9
10
|
const server_types_1 = require("./server-types");
|
|
@@ -128,6 +129,15 @@ function toAvailableStepExecution(run) {
|
|
|
128
129
|
stepDefinition: (0, step_definition_mapper_1.default)(pending.stepDefinition),
|
|
129
130
|
previousSteps: toPreviousSteps(run.workflowHistory, pending.stepIndex),
|
|
130
131
|
user: toStepUser(run.id, run.userProfile),
|
|
132
|
+
// UTC when the project has none set, when the orchestrator is too old to send one, and when
|
|
133
|
+
// the name is not a zone Luxon knows: a relative date must resolve the same on every executor
|
|
134
|
+
// instance, so the machine's zone is never the fallback. The zone actually used is persisted
|
|
135
|
+
// with the evaluation, so the run view shows UTC rather than the name it fell back from.
|
|
136
|
+
// This branch is the main path, not an edge case: 635 of 85457 projects carry a timezone
|
|
137
|
+
// (0.7%, measured on production in September 2026), so almost every Decision reads its
|
|
138
|
+
// relative dates in UTC — an hour or two away from the day the list filter shows the same
|
|
139
|
+
// user, since that one follows the browser.
|
|
140
|
+
timezone: run.timezone && luxon_1.IANAZone.isValidZone(run.timezone) ? run.timezone : 'UTC',
|
|
131
141
|
};
|
|
132
142
|
// Defense against mapper bugs: zod asserts the shape we produce is what the domain expects,
|
|
133
143
|
// before any executor consumes it. Fails loudly with a typed error instead of crashing deep.
|
|
@@ -142,4 +152,4 @@ function toAvailableStepExecution(run) {
|
|
|
142
152
|
throw err;
|
|
143
153
|
}
|
|
144
154
|
}
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXRvLWF2YWlsYWJsZS1zdGVwLW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVycy9ydW4tdG8tYXZhaWxhYmxlLXN0ZXAtbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBK0lBLDJDQThEQztBQWhNRCxpQ0FBaUM7QUFDakMsNkJBQXdCO0FBRXhCLGlFQUE2RDtBQUM3RCxpREFBMkQ7QUFDM0Qsc0ZBQXdEO0FBQ3hELHNDQUltQjtBQUNuQiw0REFLc0M7QUFDdEMsa0VBSXlDO0FBRXpDLFNBQVMsY0FBYyxDQUFDLFNBQWtCO0lBQ3hDLElBQUksU0FBUyxLQUFLLE9BQU87UUFBRSxPQUFPLE9BQU8sQ0FBQztJQUMxQyxJQUFJLFNBQVMsS0FBSyxnQkFBZ0I7UUFBRSxPQUFPLGdCQUFnQixDQUFDO0lBRTVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxpR0FBaUc7QUFDakcsMkZBQTJGO0FBQzNGLDZEQUE2RDtBQUM3RCxTQUFTLGFBQWEsQ0FBQyxDQUFvQjtJQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFBLGdDQUFnQixFQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNuRCxNQUFNLFdBQVcsR0FBRyxJQUFBLG9DQUFxQixFQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUE0QixDQUFDO0lBRXpELG1HQUFtRztJQUNuRyw0RkFBNEY7SUFDNUYsTUFBTSxlQUFlLEdBQUcsOEJBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0scUJBQXFCLEdBQUcseUNBQTBCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRTdGLE1BQU0sV0FBVyxHQUFHO1FBQ2xCLE1BQU0sRUFBRSxDQUFDLENBQUMs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
|
|
@@ -184,6 +184,8 @@ export interface ServerHydratedWorkflowRun {
|
|
|
184
184
|
renderingId: number;
|
|
185
185
|
lockedAt?: string | null;
|
|
186
186
|
userProfile: ServerUserProfile;
|
|
187
|
+
/** The project's IANA zone. Absent from an orchestrator that predates it, null when unset. */
|
|
188
|
+
timezone?: string | null;
|
|
187
189
|
}
|
|
188
190
|
export interface ServerStepHistoryUpdate {
|
|
189
191
|
/** Accepted by the server Joi schema; missing from the server TS type (server-side gap). */
|
|
@@ -78,13 +78,15 @@ class ConditionStepExecutor extends base_step_executor_1.default {
|
|
|
78
78
|
async evaluateDeterministically(step) {
|
|
79
79
|
const { optionConditions, fallbackOption } = step.preRecordedArgs;
|
|
80
80
|
const stepExecutions = await this.context.runStore.getStepExecutions(this.context.runId);
|
|
81
|
+
// One clock per step, so "today" cannot flip between the first and the last condition.
|
|
82
|
+
const clock = { now: new Date(), timezone: this.context.timezone };
|
|
81
83
|
let matchedOption;
|
|
82
84
|
const evaluations = optionConditions.map(({ option, aggregator, conditions }) => {
|
|
83
85
|
if (matchedOption !== undefined) {
|
|
84
86
|
return { option, outcome: 'not-evaluated' };
|
|
85
87
|
}
|
|
86
88
|
const results = conditions.map((condition, index) => {
|
|
87
|
-
const { met, reason } = this.evaluateCondition(condition, stepExecutions);
|
|
89
|
+
const { met, reason } = this.evaluateCondition(condition, stepExecutions, clock);
|
|
88
90
|
return { index, met, ...(reason && { reason }) };
|
|
89
91
|
});
|
|
90
92
|
const matched = aggregator === 'or'
|
|
@@ -109,12 +111,18 @@ class ConditionStepExecutor extends base_step_executor_1.default {
|
|
|
109
111
|
await this.context.runStore.saveStepExecution(this.context.runId, {
|
|
110
112
|
type: 'condition',
|
|
111
113
|
stepIndex: this.context.stepIndex,
|
|
112
|
-
executionParams: {
|
|
114
|
+
executionParams: {
|
|
115
|
+
evaluations,
|
|
116
|
+
selectedOption,
|
|
117
|
+
usedFallback,
|
|
118
|
+
evaluatedAt: clock.now.toISOString(),
|
|
119
|
+
timezone: clock.timezone,
|
|
120
|
+
},
|
|
113
121
|
executionResult: { answer: selectedOption },
|
|
114
122
|
});
|
|
115
123
|
return this.buildOutcomeResult({ status: 'success', selectedOption });
|
|
116
124
|
}
|
|
117
|
-
evaluateCondition(condition, stepExecutions) {
|
|
125
|
+
evaluateCondition(condition, stepExecutions, clock) {
|
|
118
126
|
const resolved = this.resolveConditionValue(condition, stepExecutions);
|
|
119
127
|
// The reason is what keeps the fallback from passing for a decision the data took: the run view
|
|
120
128
|
// words it instead of showing a bare cross. Returning here also means "never read" is not
|
|
@@ -128,7 +136,7 @@ class ConditionStepExecutor extends base_step_executor_1.default {
|
|
|
128
136
|
});
|
|
129
137
|
return { met: null, reason: resolved.reason };
|
|
130
138
|
}
|
|
131
|
-
return { met: (0, deterministic_condition_evaluator_1.default)(condition.operator, resolved.value, condition.value) };
|
|
139
|
+
return { met: (0, deterministic_condition_evaluator_1.default)(condition.operator, resolved.value, condition.value, clock) };
|
|
132
140
|
}
|
|
133
141
|
// Same live-path + most-recent-occurrence resolution as resolveSourceRecordRef: previousSteps
|
|
134
142
|
// are already restricted to the live path, and in a loop the same step id repeats.
|
|
@@ -185,4 +193,4 @@ class ConditionStepExecutor extends base_step_executor_1.default {
|
|
|
185
193
|
}
|
|
186
194
|
}
|
|
187
195
|
exports.default = ConditionStepExecutor;
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLXN0ZXAtZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXhlY3V0b3JzL2NvbmRpdGlvbi1zdGVwLWV4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBYUEsb0RBQTJGO0FBQzNGLDZCQUF3QjtBQUV4QixzQ0FBdUU7QUFDdkUsOEVBQW9EO0FBQ3BELDRHQUFtRjtBQUNuRiw4RkFBK0Q7QUFDL0Qsd0VBSTRDO0FBYTVDLE1BQU0scUJBQXFCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NGQW9Cd0QsQ0FBQztBQUV2RixNQUFxQixxQkFBc0IsU0FBUSw0QkFBeUM7SUFDaEYsa0JBQWtCLENBQUMsT0FNNUI7UUFDQyxPQUFPO1lBQ0wsV0FBVyxFQUFFO2dCQUNYLElBQUksRUFBRSxXQUFXO2dCQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2dCQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO2dCQUNqQyxHQUFHLE9BQU87YUFDWDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRVMsS0FBSyxDQUFDLFNBQVM7UUFDdkIsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRW5FLElBQUksSUFBQSw4Q0FBNEIsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLDRGQUE0RjtZQUM1Riw0RkFBNEY7WUFDNUYsSUFBSSxtQkFBbUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ2pCLE1BQU0sRUFDTiw2RUFBNkUsRUFDN0UsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxpRkFBaUY7UUFDakYsK0JBQStCO1FBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLEtBQUssbUNBQWlCLENBQUMsTUFBTSxDQUFDO1FBRWpFLElBQUksUUFBUSxJQUFJLG1CQUFtQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsTUFBTSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsR0FDakMsbUJBQW1CLEtBQUssU0FBUztZQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUM7WUFDaEQsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3QixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2hFLElBQUksRUFBRSxXQUFXO1lBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDakMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUU7WUFDdEQsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDekUsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO2dCQUM3QixNQUFNLEVBQUUsT0FBTztnQkFDZixLQUFLLEVBQUUsMkRBQTJEO2FBQ25FLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU8sS0FBSyxDQUFDLHlCQUF5QixDQUNyQyxJQUFnQztRQUVoQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNsRSxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekYsdUZBQXVGO1FBQ3ZGLE1BQU0sS0FBSyxHQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFMUUsSUFBSSxhQUFpQyxDQUFDO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFO1lBQzlFLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQWdDLENBQUM7WUFDNUUsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ2xELE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRWpGLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FDWCxVQUFVLEtBQUssSUFBSTtnQkFDakIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQztnQkFDN0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ25ELElBQUksT0FBTztnQkFBRSxhQUFhLEdBQUcsTUFBTSxDQUFDO1lBRXBDLE9BQU87Z0JBQ0wsTUFBTTtnQkFDTixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWE7Z0JBQzVDLFVBQVUsRUFBRSxPQUFPO2FBQ1UsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sWUFBWSxHQUFHLGFBQWEsS0FBSyxTQUFTLENBQUM7UUFDakQsTUFBTSxjQUFjLEdBQUcsYUFBYSxJQUFJLGNBQWMsQ0FBQztRQUV2RCw4RkFBOEY7UUFDOUYsK0ZBQStGO1FBQy9GLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxtQ0FBMEIsQ0FDbEMseUJBQXlCLGNBQWMsNkNBQTZDLE9BQU8sR0FBRyxDQUMvRixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDaEUsSUFBSSxFQUFFLFdBQVc7WUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUztZQUNqQyxlQUFlLEVBQUU7Z0JBQ2YsV0FBVztnQkFDWCxjQUFjO2dCQUNkLFlBQVk7Z0JBQ1osV0FBVyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFO2dCQUNwQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7YUFDekI7WUFDRCxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFO1NBQzVDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTyxpQkFBaUIsQ0FDdkIsU0FBaUMsRUFDakMsY0FBbUMsRUFDbkMsS0FBWTtRQUVaLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFdkUsZ0dBQWdHO1FBQ2hHLDBGQUEwRjtRQUMxRix5RUFBeUU7UUFDekUsSUFBSSxRQUFRLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSwrREFBK0QsRUFBRTtnQkFDM0YsR0FBRyxJQUFJLENBQUMsTUFBTTtnQkFDZCxZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVk7Z0JBQ3BDLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUztnQkFDOUIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO2FBQ3hCLENBQUMsQ0FBQztZQUVILE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEQsQ0FBQztRQUVELE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBQSwyQ0FBZ0IsRUFBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQy9GLENBQUM7SUFFRCw4RkFBOEY7SUFDOUYsbUZBQW1GO0lBQzNFLHFCQUFxQixDQUMzQixTQUFpQyxFQUNqQyxjQUFtQztRQUVuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQy9DLElBQUksQ0FBQyxFQUFFLENBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEtBQUssMEJBQVEsQ0FBQyxVQUFVO1lBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxZQUFZLENBQ3JELENBQUM7UUFDRixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxDQUFDO1FBRTVFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDeEUsSUFBSSxTQUFTLEVBQUUsSUFBSSxLQUFLLGFBQWE7WUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztRQUUzRixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO1lBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLENBQUM7UUFFdkYsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRU8sY0FBYyxDQUNwQixJQUE2QixFQUM3QixtQkFBNEI7UUFFNUIsTUFBTSxNQUFNLEdBQUcsaUNBQWdCLENBQUMsU0FBVSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLHVCQUFjLENBQ3RCLDRCQUE0QixNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ2pGLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFrQyxDQUFDO1FBRXJFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sSUFBSSx1QkFBYyxDQUN0QixXQUFXLGNBQWMsNkNBQTZDLE9BQU8sR0FBRyxDQUNqRixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBNkI7UUFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxnQ0FBcUIsQ0FBQztZQUNyQyxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLFdBQVcsRUFDVCwrQ0FBK0M7Z0JBQy9DLHNEQUFzRDtnQkFDdEQseUJBQXlCO1lBQzNCLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDO2dCQUNmLFNBQVMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxDQUFDO2dCQUNqRSxRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyw4Q0FBOEMsQ0FBQztnQkFDN0UsTUFBTSxFQUFFLE9BQUM7cUJBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7cUJBQ2xCLFFBQVEsRUFBRTtxQkFDVixRQUFRLENBQUMsdUVBQXVFLENBQUM7YUFDckYsQ0FBQztZQUNGLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHO1lBQ2YsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQzVDLElBQUksd0JBQWEsQ0FBQyxxQkFBcUIsQ0FBQztZQUN4QyxJQUFJLHVCQUFZLENBQUMsaUJBQWlCLElBQUksQ0FBQyxNQUFNLElBQUkscUNBQXFDLEVBQUUsQ0FBQztTQUMxRixDQUFDO1FBRUYsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFrQixRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDcEUsQ0FBQztDQUNGO0FBak9ELHdDQWlPQyJ9
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import type { ConditionOperator } from '../types/validated/step-definition';
|
|
2
|
+
export interface Clock {
|
|
3
|
+
now: Date;
|
|
4
|
+
timezone: string;
|
|
5
|
+
}
|
|
2
6
|
/**
|
|
3
7
|
* Pure evaluation of one deterministic condition. Never throws for data reasons:
|
|
4
8
|
* - `null` = not evaluable (the resolved value is null/missing) — treated as "not met";
|
|
5
9
|
* - a type-mismatched comparison (including for negated operators) is "not met" (`false`),
|
|
6
10
|
* so a broken config can never accidentally satisfy a condition.
|
|
7
11
|
*/
|
|
8
|
-
export default function evaluateOperator(operator: ConditionOperator, actual: unknown, expected: unknown): boolean | null;
|
|
12
|
+
export default function evaluateOperator(operator: ConditionOperator, actual: unknown, expected: unknown, clock: Clock): boolean | null;
|
|
9
13
|
//# sourceMappingURL=deterministic-condition-evaluator.d.ts.map
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = evaluateOperator;
|
|
4
|
+
const luxon_1 = require("luxon");
|
|
4
5
|
// Guard against Date.parse's laxity ("5" parses as a year in some engines): only strings that
|
|
5
6
|
// start like an ISO date are treated as dates.
|
|
6
7
|
const ISO_DATE_PREFIX = /^\d{4}-\d{2}-\d{2}/;
|
|
8
|
+
const DATE_ONLY = /^\d{4}-\d{2}-\d{2}$/;
|
|
7
9
|
const TIMEZONE_SUFFIX = /(Z|[+-]\d{2}:?\d{2})$/i;
|
|
8
10
|
// Sequelize hands back numeric/decimal/bigint columns as strings although datasource-sequelize
|
|
9
11
|
// maps them to the Number primitive, so the builder's JSON number meets a string at runtime.
|
|
10
12
|
const NUMERIC_STRING = /^-?\d+(\.\d+)?$/;
|
|
13
|
+
// A Time column holds a time of day, which nothing else in this file can read: not a number, not
|
|
14
|
+
// an instant. The seconds and their fraction are optional, and both sides may write them
|
|
15
|
+
// differently — Postgres returns "08:30:00", the builder's time widget writes "08:30".
|
|
16
|
+
const TIME_OF_DAY = /^(\d{2}):(\d{2})(?::(\d{2})(\.\d+)?)?$/;
|
|
11
17
|
const INTEGER_STRING = /^-?\d+$/;
|
|
12
18
|
// Date.parse rolls an out-of-range day over ("2026-02-30" becomes 2026-03-02), which would make a
|
|
13
19
|
// nonsensical config compare equal to a real date instead of being inert.
|
|
@@ -21,11 +27,37 @@ function toTimestamp(value) {
|
|
|
21
27
|
if (!isRealCalendarDate(value.slice(0, 10)))
|
|
22
28
|
return null;
|
|
23
29
|
// Date.parse reads an offset-less datetime as host-local (date-only as UTC), which would route
|
|
24
|
-
// the same run differently per machine — pin every offset-less datetime to UTC.
|
|
25
|
-
|
|
30
|
+
// the same run differently per machine — pin every offset-less datetime to UTC. Postgres emits
|
|
31
|
+
// the SQL form ("2026-09-04 08:00:00+02"): space separator, bare-hour offset that Date.parse
|
|
32
|
+
// only accepts as hh:mm once the separator is a T.
|
|
33
|
+
const datetime = value
|
|
34
|
+
.trim()
|
|
35
|
+
.replace(/\s+/, 'T')
|
|
36
|
+
.replace(/\s+/g, '')
|
|
37
|
+
.replace(/(:\d{2}(?:\.\d+)?)([+-]\d{2})$/, '$1$2:00');
|
|
38
|
+
const absolute = datetime.includes('T') && !TIMEZONE_SUFFIX.test(datetime) ? `${datetime}Z` : datetime;
|
|
26
39
|
const parsed = Date.parse(absolute);
|
|
27
40
|
return Number.isNaN(parsed) ? null : parsed;
|
|
28
41
|
}
|
|
42
|
+
// A calendar date has no instant of its own, so it is read at midnight in the project's zone: that
|
|
43
|
+
// is what makes "today" the project's today for a Dateonly column, whatever the machine's or UTC's
|
|
44
|
+
// day is at that moment. A datetime is an absolute instant already (the UTC pinning above).
|
|
45
|
+
function toInstant(value, timezone) {
|
|
46
|
+
if (typeof value !== 'string' || !isRealCalendarDate(value.slice(0, 10)))
|
|
47
|
+
return null;
|
|
48
|
+
if (DATE_ONLY.test(value))
|
|
49
|
+
return luxon_1.DateTime.fromISO(value, { zone: timezone });
|
|
50
|
+
const timestamp = toTimestamp(value);
|
|
51
|
+
return timestamp === null ? null : luxon_1.DateTime.fromMillis(timestamp, { zone: timezone });
|
|
52
|
+
}
|
|
53
|
+
// The toolkit compares a Dateonly column against the bound's calendar date (its time transforms
|
|
54
|
+
// format the bound with toISODate for that column type), so a bound falling mid-day is read at the
|
|
55
|
+
// start of its day when the value is a calendar date: "past" on a Dateonly excludes today, as the
|
|
56
|
+
// list filter does. The kind is told from the value's shape where the toolkit reads the column
|
|
57
|
+
// type, so parity holds as long as a Dateonly serialises as a bare YYYY-MM-DD.
|
|
58
|
+
function alignToValueKind(actual, bound) {
|
|
59
|
+
return DATE_ONLY.test(actual) ? bound.startOf('day') : bound;
|
|
60
|
+
}
|
|
29
61
|
function toNumber(value) {
|
|
30
62
|
if (typeof value === 'number')
|
|
31
63
|
return Number.isNaN(value) ? null : value;
|
|
@@ -60,6 +92,25 @@ function compareIntegers(actual, expected) {
|
|
|
60
92
|
return 0;
|
|
61
93
|
return actualInteger > expectedInteger ? 1 : -1;
|
|
62
94
|
}
|
|
95
|
+
// A count since midnight rather than text: comparing the strings would order "08:30:00.10" before
|
|
96
|
+
// "08:30:00.1", which is the same instant written twice. Microseconds, the precision Postgres's
|
|
97
|
+
// `time` keeps, and read as six exact digits rather than scaled by a float: rounding to
|
|
98
|
+
// milliseconds made 08:30:00.0001 equal 08:30:00, and carried .9999 into the next second.
|
|
99
|
+
function toMicrosOfDay(value) {
|
|
100
|
+
if (typeof value !== 'string')
|
|
101
|
+
return null;
|
|
102
|
+
const parts = TIME_OF_DAY.exec(value);
|
|
103
|
+
if (!parts)
|
|
104
|
+
return null;
|
|
105
|
+
const [, hours, minutes, seconds = '0', fraction = '.0'] = parts;
|
|
106
|
+
if (Number(minutes) > 59 || Number(seconds) > 59)
|
|
107
|
+
return null;
|
|
108
|
+
const micros = ((Number(hours) * 60 + Number(minutes)) * 60 + Number(seconds)) * 1000000 +
|
|
109
|
+
Number(`${fraction.slice(1)}000000`.slice(0, 6));
|
|
110
|
+
// Postgres's `time` tops out at 24:00:00, which it stores and returns for the end of a day, so
|
|
111
|
+
// the bound is that instant rather than hour 23: 24:00:00 is a time, 24:00:00.001 is not.
|
|
112
|
+
return micros > 24 * 60 * 60 * 1000000 ? null : micros;
|
|
113
|
+
}
|
|
63
114
|
function scalarEqual(actual, expected) {
|
|
64
115
|
if (actual === expected)
|
|
65
116
|
return true;
|
|
@@ -73,6 +124,10 @@ function scalarEqual(actual, expected) {
|
|
|
73
124
|
const expectedTs = toTimestamp(expected);
|
|
74
125
|
if (actualTs !== null && expectedTs !== null)
|
|
75
126
|
return actualTs === expectedTs;
|
|
127
|
+
const actualTime = toMicrosOfDay(actual);
|
|
128
|
+
const expectedTime = toMicrosOfDay(expected);
|
|
129
|
+
if (actualTime !== null && expectedTime !== null)
|
|
130
|
+
return actualTime === expectedTime;
|
|
76
131
|
return typeof actual === typeof expected ? false : null;
|
|
77
132
|
}
|
|
78
133
|
function isEqual(actual, expected) {
|
|
@@ -95,6 +150,12 @@ function compare(actual, expected) {
|
|
|
95
150
|
const expectedTs = toTimestamp(expected);
|
|
96
151
|
if (actualTs !== null && expectedTs !== null)
|
|
97
152
|
return actualTs - expectedTs;
|
|
153
|
+
// Without this, "is greater than" on a Time column can never be met: the builder offers the
|
|
154
|
+
// operator, and the step would route to the fallback on every record without saying why.
|
|
155
|
+
const actualTime = toMicrosOfDay(actual);
|
|
156
|
+
const expectedTime = toMicrosOfDay(expected);
|
|
157
|
+
if (actualTime !== null && expectedTime !== null)
|
|
158
|
+
return actualTime - expectedTime;
|
|
98
159
|
return null;
|
|
99
160
|
}
|
|
100
161
|
function isPresent(value) {
|
|
@@ -117,23 +178,120 @@ function memberOf(list, candidate) {
|
|
|
117
178
|
return true;
|
|
118
179
|
return results.includes(null) ? null : false;
|
|
119
180
|
}
|
|
181
|
+
function includesAll(actual, expected) {
|
|
182
|
+
if (!Array.isArray(actual))
|
|
183
|
+
return false;
|
|
184
|
+
const wanted = Array.isArray(expected) ? expected : [expected];
|
|
185
|
+
return wanted.length > 0 && wanted.every(item => memberOf(actual, item) === true);
|
|
186
|
+
}
|
|
187
|
+
function stringTest(satisfies) {
|
|
188
|
+
return (actual, expected) => typeof actual === 'string' && typeof expected === 'string' && satisfies(actual, expected);
|
|
189
|
+
}
|
|
120
190
|
function ordering(satisfies) {
|
|
121
191
|
return (actual, expected) => {
|
|
122
192
|
const diff = compare(actual, expected);
|
|
123
193
|
return diff !== null && satisfies(diff);
|
|
124
194
|
};
|
|
125
195
|
}
|
|
196
|
+
// The builder pins a datetime for a Date column and a calendar date for a Dateonly one, so both
|
|
197
|
+
// sides share a kind and a calendar date is read in the project's zone on either side. The toolkit
|
|
198
|
+
// reads a bare date in the server's zone here; the project's is the deliberate choice.
|
|
199
|
+
function dateOrdering(satisfies) {
|
|
200
|
+
return (actual, expected, clock) => {
|
|
201
|
+
const actualInstant = toInstant(actual, clock.timezone);
|
|
202
|
+
const expectedInstant = toInstant(expected, clock.timezone);
|
|
203
|
+
return (actualInstant !== null &&
|
|
204
|
+
expectedInstant !== null &&
|
|
205
|
+
satisfies(actualInstant, expectedInstant));
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
function days(value) {
|
|
209
|
+
const count = toNumber(value);
|
|
210
|
+
return count !== null && Number.isInteger(count) && count > 0 ? count : null;
|
|
211
|
+
}
|
|
212
|
+
// A calendar period: the whole previous one, or this one up to the clock. Luxon's week starts on
|
|
213
|
+
// Monday, like the toolkit's, so both agree on which week a Sunday belongs to.
|
|
214
|
+
const previousPeriod = (unit) => now => [now.minus({ [unit]: 1 }).startOf(unit), now.startOf(unit)];
|
|
215
|
+
const periodToDate = (unit) => now => [now.startOf(unit), now];
|
|
216
|
+
const WINDOWS = {
|
|
217
|
+
today: now => [now.startOf('day'), now.plus({ days: 1 }).startOf('day')],
|
|
218
|
+
yesterday: now => [now.minus({ days: 1 }).startOf('day'), now.startOf('day')],
|
|
219
|
+
previous_week: previousPeriod('week'),
|
|
220
|
+
previous_month: previousPeriod('month'),
|
|
221
|
+
previous_quarter: previousPeriod('quarter'),
|
|
222
|
+
previous_year: previousPeriod('year'),
|
|
223
|
+
previous_week_to_date: periodToDate('week'),
|
|
224
|
+
previous_month_to_date: periodToDate('month'),
|
|
225
|
+
previous_quarter_to_date: periodToDate('quarter'),
|
|
226
|
+
previous_year_to_date: periodToDate('year'),
|
|
227
|
+
previous_x_days: (now, value) => {
|
|
228
|
+
const count = days(value);
|
|
229
|
+
return count === null ? null : [now.minus({ days: count }).startOf('day'), now.startOf('day')];
|
|
230
|
+
},
|
|
231
|
+
previous_x_days_to_date: (now, value) => {
|
|
232
|
+
const count = days(value);
|
|
233
|
+
return count === null ? null : [now.minus({ days: count }).startOf('day'), now];
|
|
234
|
+
},
|
|
235
|
+
};
|
|
236
|
+
function within(name) {
|
|
237
|
+
return (actual, expected, clock) => {
|
|
238
|
+
const instant = toInstant(actual, clock.timezone);
|
|
239
|
+
if (instant === null)
|
|
240
|
+
return false;
|
|
241
|
+
const window = WINDOWS[name](luxon_1.DateTime.fromJSDate(clock.now).setZone(clock.timezone), expected);
|
|
242
|
+
if (window === null)
|
|
243
|
+
return false;
|
|
244
|
+
const [start, end] = window.map(bound => alignToValueKind(actual, bound));
|
|
245
|
+
const afterStart = DATE_ONLY.test(actual) ? instant >= start : instant > start;
|
|
246
|
+
return afterStart && instant < end;
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
function relativeTo(bound, satisfies) {
|
|
250
|
+
return (actual, expected, clock) => {
|
|
251
|
+
const instant = toInstant(actual, clock.timezone);
|
|
252
|
+
if (instant === null)
|
|
253
|
+
return false;
|
|
254
|
+
const reference = bound(luxon_1.DateTime.fromJSDate(clock.now).setZone(clock.timezone), expected);
|
|
255
|
+
return reference !== null && satisfies(instant, alignToValueKind(actual, reference));
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
function hoursAgo(now, value) {
|
|
259
|
+
const count = toNumber(value);
|
|
260
|
+
return count !== null && count >= 0 ? now.minus({ hours: count }) : null;
|
|
261
|
+
}
|
|
126
262
|
const EVALUATORS = {
|
|
127
263
|
equal: (actual, expected) => isEqual(actual, expected) === true,
|
|
128
264
|
not_equal: (actual, expected) => isEqual(actual, expected) === false,
|
|
129
265
|
greater_than: ordering(diff => diff > 0),
|
|
130
266
|
less_than: ordering(diff => diff < 0),
|
|
131
|
-
greater_than_or_equal: ordering(diff => diff >= 0),
|
|
132
|
-
less_than_or_equal: ordering(diff => diff <= 0),
|
|
133
267
|
in: (actual, expected) => memberOf(expected, actual) === true,
|
|
134
268
|
not_in: (actual, expected) => memberOf(expected, actual) === false,
|
|
135
|
-
|
|
136
|
-
|
|
269
|
+
includes_all: includesAll,
|
|
270
|
+
contains: stringTest((actual, expected) => actual.includes(expected)),
|
|
271
|
+
not_contains: stringTest((actual, expected) => !actual.includes(expected)),
|
|
272
|
+
starts_with: stringTest((actual, expected) => actual.startsWith(expected)),
|
|
273
|
+
ends_with: stringTest((actual, expected) => actual.endsWith(expected)),
|
|
274
|
+
// Case folded, accents kept: the Postgres ILIKE path of the list filter ('É' ILIKE '%é%' holds,
|
|
275
|
+
// 'é' ILIKE '%e%' does not). MySQL and SQLite collations diverge; Postgres is the contract.
|
|
276
|
+
i_contains: stringTest((actual, expected) => actual.toLowerCase().includes(expected.toLowerCase())),
|
|
277
|
+
before: dateOrdering((actual, expected) => actual < expected),
|
|
278
|
+
after: dateOrdering((actual, expected) => actual > expected),
|
|
279
|
+
past: relativeTo(now => now, (actual, bound) => actual < bound),
|
|
280
|
+
future: relativeTo(now => now, (actual, bound) => actual > bound),
|
|
281
|
+
before_x_hours_ago: relativeTo(hoursAgo, (actual, bound) => actual < bound),
|
|
282
|
+
after_x_hours_ago: relativeTo(hoursAgo, (actual, bound) => actual > bound),
|
|
283
|
+
today: within('today'),
|
|
284
|
+
yesterday: within('yesterday'),
|
|
285
|
+
previous_x_days: within('previous_x_days'),
|
|
286
|
+
previous_x_days_to_date: within('previous_x_days_to_date'),
|
|
287
|
+
previous_week: within('previous_week'),
|
|
288
|
+
previous_month: within('previous_month'),
|
|
289
|
+
previous_quarter: within('previous_quarter'),
|
|
290
|
+
previous_year: within('previous_year'),
|
|
291
|
+
previous_week_to_date: within('previous_week_to_date'),
|
|
292
|
+
previous_month_to_date: within('previous_month_to_date'),
|
|
293
|
+
previous_quarter_to_date: within('previous_quarter_to_date'),
|
|
294
|
+
previous_year_to_date: within('previous_year_to_date'),
|
|
137
295
|
};
|
|
138
296
|
/**
|
|
139
297
|
* Pure evaluation of one deterministic condition. Never throws for data reasons:
|
|
@@ -141,13 +299,13 @@ const EVALUATORS = {
|
|
|
141
299
|
* - a type-mismatched comparison (including for negated operators) is "not met" (`false`),
|
|
142
300
|
* so a broken config can never accidentally satisfy a condition.
|
|
143
301
|
*/
|
|
144
|
-
function evaluateOperator(operator, actual, expected) {
|
|
302
|
+
function evaluateOperator(operator, actual, expected, clock) {
|
|
145
303
|
if (operator === 'present')
|
|
146
304
|
return isPresent(actual);
|
|
147
305
|
if (operator === 'blank')
|
|
148
306
|
return !isPresent(actual);
|
|
149
307
|
if (actual === null || actual === undefined)
|
|
150
308
|
return null;
|
|
151
|
-
return EVALUATORS[operator](actual, expected);
|
|
309
|
+
return EVALUATORS[operator](actual, expected, clock);
|
|
152
310
|
}
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZXJtaW5pc3RpYy1jb25kaXRpb24tZXZhbHVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4ZWN1dG9ycy9kZXRlcm1pbmlzdGljLWNvbmRpdGlvbi1ldmFsdWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFxS0EsbUNBVUM7QUE3S0QsOEZBQThGO0FBQzlGLCtDQUErQztBQUMvQyxNQUFNLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQztBQUM3QyxNQUFNLGVBQWUsR0FBRyx3QkFBd0IsQ0FBQztBQUNqRCwrRkFBK0Y7QUFDL0YsNkZBQTZGO0FBQzdGLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDO0FBQ3pDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQztBQUVqQyxrR0FBa0c7QUFDbEcsMEVBQTBFO0FBQzFFLFNBQVMsa0JBQWtCLENBQUMsUUFBZ0I7SUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxRQUFRLGdCQUFnQixDQUFDLENBQUM7SUFFckQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0RixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYztJQUNqQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDM0UsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFekQsK0ZBQStGO0lBQy9GLGdGQUFnRjtJQUNoRixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJ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
|
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZXJtaW5pc3RpYy1jb25kaXRpb24tZXZhbHVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4ZWN1dG9ycy9kZXRlcm1pbmlzdGljLWNvbmRpdGlvbi1ldmFsdWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1WUEsbUNBV0M7QUFoWkQsaUNBQWlDO0FBUWpDLDhGQUE4RjtBQUM5RiwrQ0FBK0M7QUFDL0MsTUFBTSxlQUFlLEdBQUcsb0JBQW9CLENBQUM7QUFDN0MsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUM7QUFDeEMsTUFBTSxlQUFlLEdBQUcsd0JBQXdCLENBQUM7QUFDakQsK0ZBQStGO0FBQy9GLDZGQUE2RjtBQUM3RixNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztBQUN6QyxpR0FBaUc7QUFDakcseUZBQXlGO0FBQ3pGLHVGQUF1RjtBQUN2RixNQUFNLFdBQVcsR0FBRyx3Q0FBd0MsQ0FBQztBQUM3RCxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFFakMsa0dBQWtHO0FBQ2xHLDBFQUEwRTtBQUMxRSxTQUFTLGtCQUFrQixDQUFDLFFBQWdCO0lBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsUUFBUSxnQkFBZ0IsQ0FBQyxDQUFDO0lBRXJELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdEYsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEtBQWM7SUFDakMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzNFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFB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
|
|
@@ -99,6 +99,7 @@ class StepExecutorFactory {
|
|
|
99
99
|
stepDefinition: step.stepDefinition,
|
|
100
100
|
previousSteps: step.previousSteps,
|
|
101
101
|
user: step.user,
|
|
102
|
+
timezone: step.timezone,
|
|
102
103
|
model: cfg.aiModelPort.getModel({
|
|
103
104
|
aiConfigName: step.stepDefinition.aiConfigName,
|
|
104
105
|
userId: step.user.id,
|
|
@@ -121,4 +122,4 @@ class StepExecutorFactory {
|
|
|
121
122
|
}
|
|
122
123
|
}
|
|
123
124
|
exports.default = StepExecutorFactory;
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1leGVjdXRvci1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4ZWN1dG9ycy9zdGVwLWV4ZWN1dG9yLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUF3QkEsc0NBTW1CO0FBQ25CLHlFQUFnRDtBQUNoRCxrRUFBeUM7QUFDekMsc0VBQTRDO0FBQzVDLHdGQUE4RDtBQUM5RCxzRkFBNEQ7QUFDNUQsNEdBQWdGO0FBQ2hGLDRFQUFrRDtBQUNsRCw0RkFBaUU7QUFDakUsZ0hBQW9GO0FBQ3BGLGdHQUFxRTtBQUNyRSx3RUFBOEQ7QUFDOUQsa0VBQXdFO0FBYXhFLE1BQXFCLG1CQUFtQjtJQUN0QyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDakIsSUFBNEIsRUFDNUIsYUFBZ0MsRUFDaEMsZUFBZ0MsRUFDaEMsZ0JBQTBGLEVBQzFGLG1CQUE2QixFQUM3QixpQkFBMEI7UUFFMUIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxDQUM5QyxJQUFJLEVBQ0osYUFBYSxFQUNiLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsaUJBQWlCLENBQ2xCLENBQUM7WUFFRixRQUFRLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2pDLEtBQUssMEJBQVEsQ0FBQyxTQUFTO29CQUNyQixPQUFPLElBQUksaUNBQXFCLENBQUMsT0FBb0QsQ0FBQyxDQUFDO2dCQUN6RixLQUFLLDBCQUFRLENBQUMsVUFBVTtvQkFDdEIsT0FBTyxJQUFJLG1DQUFzQixDQUFDLE9BQXFELENBQUMsQ0FBQztnQkFDM0YsS0FBSywwQkFBUSxDQUFDLFlBQVk7b0JBQ3hCLE9BQU8sSUFBSSxxQ0FBd0IsQ0FDakMsT0FBdUQsQ0FDeEQsQ0FBQztnQkFDSixLQUFLLDBCQUFRLENBQUMsYUFBYTtvQkFDekIsT0FBTyxJQUFJLDZDQUErQixDQUN4QyxPQUF3RCxDQUN6RCxDQUFDO2dCQUNKLEtBQUssMEJBQVEsQ0FBQyxpQkFBaUI7b0JBQzdCLE9BQU8sSUFBSSwyQ0FBNkIsQ0FDdEMsT0FBNEQsQ0FDN0QsQ0FBQztnQkFFSixLQUFLLDBCQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDbEIsTUFBTSxVQUFVLEdBQUcsT0FBOEMsQ0FBQztvQkFDbEUsTUFBTSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixDQUMxRSxVQUFVLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ2IsQ0FBQztvQkFFRixPQUFPLElBQUksMkJBQWUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNwRixDQUFDO2dCQUVELEtBQUssMEJBQVEsQ0FBQyxRQUFRO29CQUNwQixPQUFPLElBQUksZ0NBQW9CLENBQUMsT0FBbUQsQ0FBQyxDQUFDO2dCQUN2RjtvQkFDRSxNQUFNLElBQUksdUJBQWMsQ0FDdEIsc0JBQXVCLElBQUksQ0FBQyxjQUFtQyxDQUFDLElBQUksRUFBRSxDQUN2RSxDQUFDO1lBQ04sQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsZ0dBQWdHO1lBQ2hHLGtGQUFrRjtZQUNsRixJQUFJLEtBQUssWUFBWSxpQ0FBd0IsRUFBRSxDQUFDO2dCQUM5QyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSw2Q0FBNkMsRUFBRTtvQkFDMUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztvQkFDekIsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtpQkFDL0MsQ0FBQyxDQUFDO2dCQUVILE9BQU87b0JBQ0wsT0FBTyxFQUFFLEtBQUssSUFBa0MsRUFBRSxDQUFDLENBQUM7d0JBQ2xELFdBQVcsRUFBRTs0QkFDWCxJQUFJLEVBQUUsS0FBSzs0QkFDWCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07NEJBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzs0QkFDekIsTUFBTSxFQUFFLGdCQUFnQjs0QkFDeEIsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjt5QkFDL0M7cUJBQ0YsQ0FBQztpQkFDSCxDQUFDO1lBQ0osQ0FBQztZQUVELGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLG9DQUFvQyxFQUFFO2dCQUNsRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixLQUFLLEVBQUUsSUFBQSw0QkFBbUIsRUFBQyxLQUFLLENBQUM7Z0JBQ2pDLEtBQUssRUFBRSxJQUFBLHFCQUFZLEVBQUMsS0FBSyxDQUFDO2dCQUMxQixLQUFLLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUzthQUN4RCxDQUFDLENBQUM7WUFFSCxPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLLElBQWtDLEVBQUUsQ0FBQyxDQUFDO29CQUNsRCxXQUFXLEVBQUU7d0JBQ1gsSUFBSSxFQUFFLElBQUEsb0NBQXFCLEVBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7d0JBQ3JELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTt3QkFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3dCQUN6QixNQUFNLEVBQUUsT0FBTzt3QkFDZixLQUFLLEVBQ0gsS0FBSyxZQUFZLDhCQUFxQjs0QkFDcEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXOzRCQUNuQixDQUFDLENBQUMsK0JBQStCO3FCQUN0QztpQkFDRixDQUFDO2FBQ0gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLFlBQVksQ0FDekIsSUFBNEIsRUFDNUIsR0FBc0IsRUFDdEIsZUFBZ0MsRUFDaEMsbUJBQTZCLEVBQzdCLGlCQUEwQjtRQUUxQixNQUFNLGNBQWMsR0FBRyxJQUFJLHlCQUFjLENBQ3ZDLEdBQUcsQ0FBQyxXQUFXLEVBQ2YsR0FBRyxDQUFDLFlBQVksRUFDaEIsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FDdEIsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFHLElBQUksc0JBQVcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhFLE9BQU87WUFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLEtBQUssRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztnQkFDOUIsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWTtnQkFDOUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTthQUNyQixDQUFDO1lBQ0YsS0FBSyxFQUFFLElBQUksd0JBQVksQ0FBQztnQkFDdEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO2dCQUN4QixjQUFjO2dCQUNkLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixXQUFXO2dCQUNYLGlCQUFpQjthQUNsQixDQUFDO1lBQ0YsV0FBVztZQUNYLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtZQUN0QixjQUFjO1lBQ2QsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1lBQ2xCLG1CQUFtQjtZQUNuQixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7WUFDOUIsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLGdCQUFnQjtTQUN2QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBcEpELHNDQW9KQyJ9
|
|
@@ -27,6 +27,7 @@ export interface ExecutionContext<TStep extends StepDefinition = StepDefinition>
|
|
|
27
27
|
readonly activityLog: ActivityLog;
|
|
28
28
|
readonly runStore: RunStore;
|
|
29
29
|
readonly user: StepUser;
|
|
30
|
+
readonly timezone: string;
|
|
30
31
|
readonly schemaResolver: SchemaResolver;
|
|
31
32
|
readonly previousSteps: ReadonlyArray<Readonly<Step>>;
|
|
32
33
|
readonly logger: Logger;
|
|
@@ -29,6 +29,8 @@ export interface DeterministicConditionExecutionParams {
|
|
|
29
29
|
evaluations: ConditionEvaluation[];
|
|
30
30
|
selectedOption: string;
|
|
31
31
|
usedFallback: boolean;
|
|
32
|
+
evaluatedAt: string;
|
|
33
|
+
timezone: string;
|
|
32
34
|
}
|
|
33
35
|
export interface ConditionStepExecutionData extends BaseStepExecutionData {
|
|
34
36
|
type: 'condition';
|
|
@@ -37,11 +37,31 @@ export declare const StepSchema: z.ZodObject<{
|
|
|
37
37
|
blank: "blank";
|
|
38
38
|
greater_than: "greater_than";
|
|
39
39
|
less_than: "less_than";
|
|
40
|
-
greater_than_or_equal: "greater_than_or_equal";
|
|
41
|
-
less_than_or_equal: "less_than_or_equal";
|
|
42
40
|
not_in: "not_in";
|
|
41
|
+
includes_all: "includes_all";
|
|
43
42
|
contains: "contains";
|
|
44
43
|
not_contains: "not_contains";
|
|
44
|
+
starts_with: "starts_with";
|
|
45
|
+
ends_with: "ends_with";
|
|
46
|
+
i_contains: "i_contains";
|
|
47
|
+
before: "before";
|
|
48
|
+
after: "after";
|
|
49
|
+
past: "past";
|
|
50
|
+
future: "future";
|
|
51
|
+
today: "today";
|
|
52
|
+
yesterday: "yesterday";
|
|
53
|
+
previous_x_days: "previous_x_days";
|
|
54
|
+
previous_x_days_to_date: "previous_x_days_to_date";
|
|
55
|
+
before_x_hours_ago: "before_x_hours_ago";
|
|
56
|
+
after_x_hours_ago: "after_x_hours_ago";
|
|
57
|
+
previous_week: "previous_week";
|
|
58
|
+
previous_month: "previous_month";
|
|
59
|
+
previous_quarter: "previous_quarter";
|
|
60
|
+
previous_year: "previous_year";
|
|
61
|
+
previous_week_to_date: "previous_week_to_date";
|
|
62
|
+
previous_month_to_date: "previous_month_to_date";
|
|
63
|
+
previous_quarter_to_date: "previous_quarter_to_date";
|
|
64
|
+
previous_year_to_date: "previous_year_to_date";
|
|
45
65
|
}>;
|
|
46
66
|
value: z.ZodOptional<z.ZodUnknown>;
|
|
47
67
|
}, z.core.$strip>>;
|
|
@@ -244,11 +264,31 @@ export declare const AvailableStepExecutionSchema: z.ZodObject<{
|
|
|
244
264
|
blank: "blank";
|
|
245
265
|
greater_than: "greater_than";
|
|
246
266
|
less_than: "less_than";
|
|
247
|
-
greater_than_or_equal: "greater_than_or_equal";
|
|
248
|
-
less_than_or_equal: "less_than_or_equal";
|
|
249
267
|
not_in: "not_in";
|
|
268
|
+
includes_all: "includes_all";
|
|
250
269
|
contains: "contains";
|
|
251
270
|
not_contains: "not_contains";
|
|
271
|
+
starts_with: "starts_with";
|
|
272
|
+
ends_with: "ends_with";
|
|
273
|
+
i_contains: "i_contains";
|
|
274
|
+
before: "before";
|
|
275
|
+
after: "after";
|
|
276
|
+
past: "past";
|
|
277
|
+
future: "future";
|
|
278
|
+
today: "today";
|
|
279
|
+
yesterday: "yesterday";
|
|
280
|
+
previous_x_days: "previous_x_days";
|
|
281
|
+
previous_x_days_to_date: "previous_x_days_to_date";
|
|
282
|
+
before_x_hours_ago: "before_x_hours_ago";
|
|
283
|
+
after_x_hours_ago: "after_x_hours_ago";
|
|
284
|
+
previous_week: "previous_week";
|
|
285
|
+
previous_month: "previous_month";
|
|
286
|
+
previous_quarter: "previous_quarter";
|
|
287
|
+
previous_year: "previous_year";
|
|
288
|
+
previous_week_to_date: "previous_week_to_date";
|
|
289
|
+
previous_month_to_date: "previous_month_to_date";
|
|
290
|
+
previous_quarter_to_date: "previous_quarter_to_date";
|
|
291
|
+
previous_year_to_date: "previous_year_to_date";
|
|
252
292
|
}>;
|
|
253
293
|
value: z.ZodOptional<z.ZodUnknown>;
|
|
254
294
|
}, z.core.$strip>>;
|
|
@@ -360,11 +400,31 @@ export declare const AvailableStepExecutionSchema: z.ZodObject<{
|
|
|
360
400
|
blank: "blank";
|
|
361
401
|
greater_than: "greater_than";
|
|
362
402
|
less_than: "less_than";
|
|
363
|
-
greater_than_or_equal: "greater_than_or_equal";
|
|
364
|
-
less_than_or_equal: "less_than_or_equal";
|
|
365
403
|
not_in: "not_in";
|
|
404
|
+
includes_all: "includes_all";
|
|
366
405
|
contains: "contains";
|
|
367
406
|
not_contains: "not_contains";
|
|
407
|
+
starts_with: "starts_with";
|
|
408
|
+
ends_with: "ends_with";
|
|
409
|
+
i_contains: "i_contains";
|
|
410
|
+
before: "before";
|
|
411
|
+
after: "after";
|
|
412
|
+
past: "past";
|
|
413
|
+
future: "future";
|
|
414
|
+
today: "today";
|
|
415
|
+
yesterday: "yesterday";
|
|
416
|
+
previous_x_days: "previous_x_days";
|
|
417
|
+
previous_x_days_to_date: "previous_x_days_to_date";
|
|
418
|
+
before_x_hours_ago: "before_x_hours_ago";
|
|
419
|
+
after_x_hours_ago: "after_x_hours_ago";
|
|
420
|
+
previous_week: "previous_week";
|
|
421
|
+
previous_month: "previous_month";
|
|
422
|
+
previous_quarter: "previous_quarter";
|
|
423
|
+
previous_year: "previous_year";
|
|
424
|
+
previous_week_to_date: "previous_week_to_date";
|
|
425
|
+
previous_month_to_date: "previous_month_to_date";
|
|
426
|
+
previous_quarter_to_date: "previous_quarter_to_date";
|
|
427
|
+
previous_year_to_date: "previous_year_to_date";
|
|
368
428
|
}>;
|
|
369
429
|
value: z.ZodOptional<z.ZodUnknown>;
|
|
370
430
|
}, z.core.$strip>>;
|
|
@@ -535,6 +595,7 @@ export declare const AvailableStepExecutionSchema: z.ZodObject<{
|
|
|
535
595
|
permissionLevel: z.ZodString;
|
|
536
596
|
tags: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
537
597
|
}, z.core.$strict>;
|
|
598
|
+
timezone: z.ZodString;
|
|
538
599
|
}, z.core.$strict>;
|
|
539
600
|
export type AvailableStepExecution = z.infer<typeof AvailableStepExecutionSchema>;
|
|
540
601
|
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AvailableStepExecutionSchema = exports.TriggerTypeSchema = exports.TriggerType = exports.StepSchema = exports.StepUserSchema = void 0;
|
|
4
|
+
const luxon_1 = require("luxon");
|
|
4
5
|
const zod_1 = require("zod");
|
|
5
6
|
const collection_1 = require("./collection");
|
|
6
7
|
const step_definition_1 = require("./step-definition");
|
|
@@ -46,6 +47,10 @@ exports.AvailableStepExecutionSchema = zod_1.z
|
|
|
46
47
|
stepDefinition: step_definition_1.StepDefinitionSchema,
|
|
47
48
|
previousSteps: zod_1.z.array(exports.StepSchema),
|
|
48
49
|
user: exports.StepUserSchema,
|
|
50
|
+
// Refused rather than trusted: Luxon reads an unknown zone as invalid and every relative
|
|
51
|
+
// condition would then quietly not match. The mapper normalises to UTC, so this only ever
|
|
52
|
+
// fires on a mapper bug.
|
|
53
|
+
timezone: zod_1.z.string().refine(luxon_1.IANAZone.isValidZone),
|
|
49
54
|
})
|
|
50
55
|
.strict();
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL3ZhbGlkYXRlZC9leGVjdXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWlDO0FBQ2pDLDZCQUF3QjtBQUV4Qiw2Q0FBK0M7QUFDL0MsdURBQXlEO0FBQ3pELGlEQUFtRDtBQUV0QyxRQUFBLGNBQWMsR0FBRyxPQUFDO0tBQzVCLE1BQU0sQ0FBQztJQUNOLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2QsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDakIsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDckIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDaEIsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUU7SUFDM0MsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDaEIsZUFBZSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDM0IsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztDQUN2QyxDQUFDO0tBQ0QsTUFBTSxFQUFFLENBQUM7QUFHQyxRQUFBLFVBQVUsR0FBRyxPQUFDO0tBQ3hCLE1BQU0sQ0FBQztJQUNOLGNBQWMsRUFBRSxzQ0FBb0I7SUFDcEMsV0FBVyxFQUFFLGdDQUFpQjtJQUM5QiwwRkFBMEY7SUFDMUYsdUZBQXVGO0lBQ3ZGLDRDQUE0QztJQUM1QyxpQkFBaUIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzdELENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQztBQUdaLElBQVksV0FJWDtBQUpELFdBQVksV0FBVztJQUNyQixnQ0FBaUIsQ0FBQTtJQUNqQixrQ0FBbUIsQ0FBQTtJQUNuQiwwQkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUpXLFdBQVcsMkJBQVgsV0FBVyxRQUl0QjtBQUNZLFFBQUEsaUJBQWlCLEdBQUcsT0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUU5QyxRQUFBLDRCQUE0QixHQUFHLE9BQUM7S0FDMUMsTUFBTSxDQUFDO0lBQ04sS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6QixTQUFTLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRTtJQUN6QyxZQUFZLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0IsV0FBVyxFQUFFLHlCQUFpQjtJQUM5QixhQUFhLEVBQUUsNEJBQWU7SUFDOUIsY0FBYyxFQUFFLHNDQUFvQjtJQUNwQyxhQUFhLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBVSxDQUFDO0lBQ2xDLElBQUksRUFBRSxzQkFBYztJQUNwQix5RkFBeUY7SUFDekYsMEZBQTBGO0lBQzFGLHlCQUF5QjtJQUN6QixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBUSxDQUFDLFdBQVcsQ0FBQztDQUNsRCxDQUFDO0tBQ0QsTUFBTSxFQUFFLENBQUMifQ==
|
|
@@ -17,7 +17,7 @@ export declare enum StepExecutionMode {
|
|
|
17
17
|
AutomatedWithConfirmation = "automated-with-confirmation",
|
|
18
18
|
FullyAutomated = "fully-automated"
|
|
19
19
|
}
|
|
20
|
-
export declare const CONDITION_OPERATORS: readonly ["equal", "not_equal", "present", "blank", "greater_than", "less_than", "
|
|
20
|
+
export declare const CONDITION_OPERATORS: readonly ["equal", "not_equal", "present", "blank", "greater_than", "less_than", "in", "not_in", "includes_all", "contains", "not_contains", "starts_with", "ends_with", "i_contains", "before", "after", "past", "future", "today", "yesterday", "previous_x_days", "previous_x_days_to_date", "before_x_hours_ago", "after_x_hours_ago", "previous_week", "previous_month", "previous_quarter", "previous_year", "previous_week_to_date", "previous_month_to_date", "previous_quarter_to_date", "previous_year_to_date"];
|
|
21
21
|
export type ConditionOperator = (typeof CONDITION_OPERATORS)[number];
|
|
22
22
|
declare const DeterministicConditionSchema: z.ZodObject<{
|
|
23
23
|
sourceStepId: z.ZodString;
|
|
@@ -30,11 +30,31 @@ declare const DeterministicConditionSchema: z.ZodObject<{
|
|
|
30
30
|
blank: "blank";
|
|
31
31
|
greater_than: "greater_than";
|
|
32
32
|
less_than: "less_than";
|
|
33
|
-
greater_than_or_equal: "greater_than_or_equal";
|
|
34
|
-
less_than_or_equal: "less_than_or_equal";
|
|
35
33
|
not_in: "not_in";
|
|
34
|
+
includes_all: "includes_all";
|
|
36
35
|
contains: "contains";
|
|
37
36
|
not_contains: "not_contains";
|
|
37
|
+
starts_with: "starts_with";
|
|
38
|
+
ends_with: "ends_with";
|
|
39
|
+
i_contains: "i_contains";
|
|
40
|
+
before: "before";
|
|
41
|
+
after: "after";
|
|
42
|
+
past: "past";
|
|
43
|
+
future: "future";
|
|
44
|
+
today: "today";
|
|
45
|
+
yesterday: "yesterday";
|
|
46
|
+
previous_x_days: "previous_x_days";
|
|
47
|
+
previous_x_days_to_date: "previous_x_days_to_date";
|
|
48
|
+
before_x_hours_ago: "before_x_hours_ago";
|
|
49
|
+
after_x_hours_ago: "after_x_hours_ago";
|
|
50
|
+
previous_week: "previous_week";
|
|
51
|
+
previous_month: "previous_month";
|
|
52
|
+
previous_quarter: "previous_quarter";
|
|
53
|
+
previous_year: "previous_year";
|
|
54
|
+
previous_week_to_date: "previous_week_to_date";
|
|
55
|
+
previous_month_to_date: "previous_month_to_date";
|
|
56
|
+
previous_quarter_to_date: "previous_quarter_to_date";
|
|
57
|
+
previous_year_to_date: "previous_year_to_date";
|
|
38
58
|
}>;
|
|
39
59
|
value: z.ZodOptional<z.ZodUnknown>;
|
|
40
60
|
}, z.core.$strip>;
|
|
@@ -56,11 +76,31 @@ declare const OptionConditionsSchema: z.ZodObject<{
|
|
|
56
76
|
blank: "blank";
|
|
57
77
|
greater_than: "greater_than";
|
|
58
78
|
less_than: "less_than";
|
|
59
|
-
greater_than_or_equal: "greater_than_or_equal";
|
|
60
|
-
less_than_or_equal: "less_than_or_equal";
|
|
61
79
|
not_in: "not_in";
|
|
80
|
+
includes_all: "includes_all";
|
|
62
81
|
contains: "contains";
|
|
63
82
|
not_contains: "not_contains";
|
|
83
|
+
starts_with: "starts_with";
|
|
84
|
+
ends_with: "ends_with";
|
|
85
|
+
i_contains: "i_contains";
|
|
86
|
+
before: "before";
|
|
87
|
+
after: "after";
|
|
88
|
+
past: "past";
|
|
89
|
+
future: "future";
|
|
90
|
+
today: "today";
|
|
91
|
+
yesterday: "yesterday";
|
|
92
|
+
previous_x_days: "previous_x_days";
|
|
93
|
+
previous_x_days_to_date: "previous_x_days_to_date";
|
|
94
|
+
before_x_hours_ago: "before_x_hours_ago";
|
|
95
|
+
after_x_hours_ago: "after_x_hours_ago";
|
|
96
|
+
previous_week: "previous_week";
|
|
97
|
+
previous_month: "previous_month";
|
|
98
|
+
previous_quarter: "previous_quarter";
|
|
99
|
+
previous_year: "previous_year";
|
|
100
|
+
previous_week_to_date: "previous_week_to_date";
|
|
101
|
+
previous_month_to_date: "previous_month_to_date";
|
|
102
|
+
previous_quarter_to_date: "previous_quarter_to_date";
|
|
103
|
+
previous_year_to_date: "previous_year_to_date";
|
|
64
104
|
}>;
|
|
65
105
|
value: z.ZodOptional<z.ZodUnknown>;
|
|
66
106
|
}, z.core.$strip>>;
|
|
@@ -91,11 +131,31 @@ export declare const ConditionStepDefinitionSchema: z.ZodObject<{
|
|
|
91
131
|
blank: "blank";
|
|
92
132
|
greater_than: "greater_than";
|
|
93
133
|
less_than: "less_than";
|
|
94
|
-
greater_than_or_equal: "greater_than_or_equal";
|
|
95
|
-
less_than_or_equal: "less_than_or_equal";
|
|
96
134
|
not_in: "not_in";
|
|
135
|
+
includes_all: "includes_all";
|
|
97
136
|
contains: "contains";
|
|
98
137
|
not_contains: "not_contains";
|
|
138
|
+
starts_with: "starts_with";
|
|
139
|
+
ends_with: "ends_with";
|
|
140
|
+
i_contains: "i_contains";
|
|
141
|
+
before: "before";
|
|
142
|
+
after: "after";
|
|
143
|
+
past: "past";
|
|
144
|
+
future: "future";
|
|
145
|
+
today: "today";
|
|
146
|
+
yesterday: "yesterday";
|
|
147
|
+
previous_x_days: "previous_x_days";
|
|
148
|
+
previous_x_days_to_date: "previous_x_days_to_date";
|
|
149
|
+
before_x_hours_ago: "before_x_hours_ago";
|
|
150
|
+
after_x_hours_ago: "after_x_hours_ago";
|
|
151
|
+
previous_week: "previous_week";
|
|
152
|
+
previous_month: "previous_month";
|
|
153
|
+
previous_quarter: "previous_quarter";
|
|
154
|
+
previous_year: "previous_year";
|
|
155
|
+
previous_week_to_date: "previous_week_to_date";
|
|
156
|
+
previous_month_to_date: "previous_month_to_date";
|
|
157
|
+
previous_quarter_to_date: "previous_quarter_to_date";
|
|
158
|
+
previous_year_to_date: "previous_year_to_date";
|
|
99
159
|
}>;
|
|
100
160
|
value: z.ZodOptional<z.ZodUnknown>;
|
|
101
161
|
}, z.core.$strip>>;
|
|
@@ -280,11 +340,31 @@ export declare const StepDefinitionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
|
|
|
280
340
|
blank: "blank";
|
|
281
341
|
greater_than: "greater_than";
|
|
282
342
|
less_than: "less_than";
|
|
283
|
-
greater_than_or_equal: "greater_than_or_equal";
|
|
284
|
-
less_than_or_equal: "less_than_or_equal";
|
|
285
343
|
not_in: "not_in";
|
|
344
|
+
includes_all: "includes_all";
|
|
286
345
|
contains: "contains";
|
|
287
346
|
not_contains: "not_contains";
|
|
347
|
+
starts_with: "starts_with";
|
|
348
|
+
ends_with: "ends_with";
|
|
349
|
+
i_contains: "i_contains";
|
|
350
|
+
before: "before";
|
|
351
|
+
after: "after";
|
|
352
|
+
past: "past";
|
|
353
|
+
future: "future";
|
|
354
|
+
today: "today";
|
|
355
|
+
yesterday: "yesterday";
|
|
356
|
+
previous_x_days: "previous_x_days";
|
|
357
|
+
previous_x_days_to_date: "previous_x_days_to_date";
|
|
358
|
+
before_x_hours_ago: "before_x_hours_ago";
|
|
359
|
+
after_x_hours_ago: "after_x_hours_ago";
|
|
360
|
+
previous_week: "previous_week";
|
|
361
|
+
previous_month: "previous_month";
|
|
362
|
+
previous_quarter: "previous_quarter";
|
|
363
|
+
previous_year: "previous_year";
|
|
364
|
+
previous_week_to_date: "previous_week_to_date";
|
|
365
|
+
previous_month_to_date: "previous_month_to_date";
|
|
366
|
+
previous_quarter_to_date: "previous_quarter_to_date";
|
|
367
|
+
previous_year_to_date: "previous_year_to_date";
|
|
288
368
|
}>;
|
|
289
369
|
value: z.ZodOptional<z.ZodUnknown>;
|
|
290
370
|
}, z.core.$strip>>;
|
|
@@ -41,6 +41,8 @@ const sharedFields = {
|
|
|
41
41
|
const { Manual, AutomatedWithConfirmation, FullyAutomated } = StepExecutionMode;
|
|
42
42
|
// Wire-final operator names (PRD-472 cross-repo contract). An unknown operator is rejected here,
|
|
43
43
|
// at the schema boundary, so a run never reaches evaluation with a comparison it cannot honor.
|
|
44
|
+
// The set a list view filter offers, no more: every name here has a Filters operator in the front
|
|
45
|
+
// (which is what the builder can render) and a translation in the orchestrator's parser.
|
|
44
46
|
exports.CONDITION_OPERATORS = [
|
|
45
47
|
'equal',
|
|
46
48
|
'not_equal',
|
|
@@ -48,21 +50,55 @@ exports.CONDITION_OPERATORS = [
|
|
|
48
50
|
'blank',
|
|
49
51
|
'greater_than',
|
|
50
52
|
'less_than',
|
|
51
|
-
'greater_than_or_equal',
|
|
52
|
-
'less_than_or_equal',
|
|
53
53
|
'in',
|
|
54
54
|
'not_in',
|
|
55
|
+
'includes_all',
|
|
55
56
|
'contains',
|
|
56
57
|
'not_contains',
|
|
58
|
+
'starts_with',
|
|
59
|
+
'ends_with',
|
|
60
|
+
'i_contains',
|
|
61
|
+
'before',
|
|
62
|
+
'after',
|
|
63
|
+
'past',
|
|
64
|
+
'future',
|
|
65
|
+
'today',
|
|
66
|
+
'yesterday',
|
|
67
|
+
'previous_x_days',
|
|
68
|
+
'previous_x_days_to_date',
|
|
69
|
+
'before_x_hours_ago',
|
|
70
|
+
'after_x_hours_ago',
|
|
71
|
+
'previous_week',
|
|
72
|
+
'previous_month',
|
|
73
|
+
'previous_quarter',
|
|
74
|
+
'previous_year',
|
|
75
|
+
'previous_week_to_date',
|
|
76
|
+
'previous_month_to_date',
|
|
77
|
+
'previous_quarter_to_date',
|
|
78
|
+
'previous_year_to_date',
|
|
79
|
+
];
|
|
80
|
+
const VALUE_LESS_OPERATORS = [
|
|
81
|
+
'present',
|
|
82
|
+
'blank',
|
|
83
|
+
'past',
|
|
84
|
+
'future',
|
|
85
|
+
'today',
|
|
86
|
+
'yesterday',
|
|
87
|
+
'previous_week',
|
|
88
|
+
'previous_month',
|
|
89
|
+
'previous_quarter',
|
|
90
|
+
'previous_year',
|
|
91
|
+
'previous_week_to_date',
|
|
92
|
+
'previous_month_to_date',
|
|
93
|
+
'previous_quarter_to_date',
|
|
94
|
+
'previous_year_to_date',
|
|
57
95
|
];
|
|
58
|
-
const VALUE_LESS_OPERATORS = ['present', 'blank'];
|
|
59
96
|
const DeterministicConditionSchema = zod_1.z
|
|
60
97
|
.object({
|
|
61
98
|
/** Stable BPMN id of the upstream Get Data step whose output holds the value. */
|
|
62
99
|
sourceStepId: zod_1.z.string().min(1),
|
|
63
100
|
fieldName: zod_1.z.string().min(1),
|
|
64
101
|
operator: zod_1.z.enum(exports.CONDITION_OPERATORS),
|
|
65
|
-
/** Absent for `present`/`blank`. */
|
|
66
102
|
value: zod_1.z.unknown().optional(),
|
|
67
103
|
})
|
|
68
104
|
// A value-bearing operator without its value compares against `undefined`: it can never be met,
|
|
@@ -220,4 +256,4 @@ exports.StepDefinitionSchema = zod_1.z.discriminatedUnion('type', [
|
|
|
220
256
|
exports.McpStepDefinitionSchema,
|
|
221
257
|
exports.GuidanceStepDefinitionSchema,
|
|
222
258
|
]);
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL3ZhbGlkYXRlZC9zdGVwLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXdCO0FBRXhCLElBQVksUUFRWDtBQVJELFdBQVksUUFBUTtJQUNsQixtQ0FBdUIsQ0FBQTtJQUN2QixzQ0FBMEIsQ0FBQTtJQUMxQiwwQ0FBOEIsQ0FBQTtJQUM5Qiw0Q0FBZ0MsQ0FBQTtJQUNoQyxxREFBeUMsQ0FBQTtJQUN6Qyx1QkFBVyxDQUFBO0lBQ1gsaUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVJXLFFBQVEsd0JBQVIsUUFBUSxRQVFuQjtBQUVEOzs7R0FHRztBQUNILElBQVksaUJBSVg7QUFKRCxXQUFZLGlCQUFpQjtJQUMzQixzQ0FBaUIsQ0FBQTtJQUNqQiw4RUFBeUQsQ0FBQTtJQUN6RCx1REFBa0MsQ0FBQTtBQUNwQyxDQUFDLEVBSlcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFJNUI7QUFFRCxpRkFBaUY7QUFDakYsK0ZBQStGO0FBQy9GLCtGQUErRjtBQUMvRiw0QkFBNEI7QUFDNUIsOEZBQThGO0FBQzlGLHdEQUF3RDtBQUN4RCxNQUFNLGNBQWMsR0FBRyxPQUFDO0tBQ3JCLE1BQU0sRUFBRTtLQUNSLE9BQU8sRUFBRTtLQUNULFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQztBQUUxQyxNQUFNLFlBQVksR0FBRztJQUNuQixNQUFNLEVBQUUsY0FBYztJQUN0QixZQUFZLEVBQUUsY0FBYztJQUM1QixLQUFLLEVBQUUsY0FBYztDQUN0QixDQUFDO0FBRUYsZ0ZBQWdGO0FBQ2hGLE1BQU0sRUFBRSxNQUFNLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLEdBQUcsaUJBQWlCLENBQUM7QUFFaEYsaUdBQWlHO0FBQ2pHLCtGQUErRjtBQUMvRixrR0FBa0c7QUFD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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/workflow-executor",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.28.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"bin": {
|
|
6
6
|
"forest-workflow-executor": "dist/cli.js"
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"jsonwebtoken": "^9.0.3",
|
|
38
38
|
"koa": "^3.0.1",
|
|
39
39
|
"koa-jwt": "^4.0.4",
|
|
40
|
+
"luxon": "^3.2.1",
|
|
40
41
|
"pg": "^8.8.0",
|
|
41
42
|
"picocolors": "^1.1.1",
|
|
42
43
|
"sequelize": "^6.37.8",
|
|
@@ -47,6 +48,7 @@
|
|
|
47
48
|
"@types/jsonwebtoken": "^9.0.10",
|
|
48
49
|
"@types/koa": "^2.13.5",
|
|
49
50
|
"@types/koa__router": "^12.0.4",
|
|
51
|
+
"@types/luxon": "^3.2.0",
|
|
50
52
|
"@types/sequelize": "^6.12.0",
|
|
51
53
|
"sqlite3": "^6.0.1",
|
|
52
54
|
"supertest": "^7.1.3"
|