@runium/core 0.0.8 → 0.1.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/index.js +21 -14
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -113,7 +113,7 @@ function et(e, t) {
|
|
|
113
113
|
})(e, t), tt(e);
|
|
114
114
|
}
|
|
115
115
|
U(C, ["uniqueItemProperties"]);
|
|
116
|
-
var h = ((e) => (e.IDLE = "idle", e.STARTING = "starting", e.STARTED = "started", e.COMPLETED = "completed", e.FAILED = "failed", e.STOPPING = "stopping", e.STOPPED = "stopped", e))(h || {}),
|
|
116
|
+
var h = ((e) => (e.IDLE = "idle", e.STARTING = "starting", e.STARTED = "started", e.COMPLETED = "completed", e.FAILED = "failed", e.STOPPING = "stopping", e.STOPPED = "stopped", e))(h || {}), k = ((e) => (e.STATE_CHANGE = "state-change", e.STDOUT = "stdout", e.STDERR = "stderr", e))(k || {});
|
|
117
117
|
const jt = -1;
|
|
118
118
|
class D extends v {
|
|
119
119
|
constructor(t) {
|
|
@@ -210,7 +210,7 @@ class st extends D {
|
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
var rt = ((e) => (e.ACTION_TYPE_ALREADY_USED = "project-schema-action-type-already-used", e.TASK_TYPE_ALREADY_USED = "project-schema-task-type-already-used", e.TRIGGER_TYPE_ALREADY_USED = "project-schema-trigger-type-already-used", e))(rt || {});
|
|
213
|
-
const $ = /^[a-zA-Z0-9_-]+$/, it = { id: { type: "string", pattern: $.source }, name: { type: "string" }, type: { type: "string" }, mode: { $ref: "#/$defs/Runium_TaskStartMode" }, dependencies: { type: "array", items: { $ref: "#/$defs/Runium_TaskDependency" } }, handlers: { type: "array", items: { $ref: "#/$defs/Runium_TaskHandler" } }, restart: { $ref: "#/$defs/Runium_TaskRestartPolicy" } },
|
|
213
|
+
const $ = /^[a-zA-Z0-9_-]+$/, it = { id: { type: "string", pattern: $.source }, name: { type: "string" }, type: { type: "string" }, mode: { $ref: "#/$defs/Runium_TaskStartMode" }, dependencies: { type: "array", items: { $ref: "#/$defs/Runium_TaskDependency" } }, handlers: { type: "array", items: { $ref: "#/$defs/Runium_TaskHandler" } }, restart: { $ref: "#/$defs/Runium_TaskRestartPolicy" } }, E = { id: { type: "string", pattern: $.source }, action: { $ref: "#/$defs/Runium_Action" }, disabled: { type: "boolean" } };
|
|
214
214
|
function L(e, t) {
|
|
215
215
|
return { type: "object", properties: { ...structuredClone(it), type: { const: e }, options: { ...structuredClone(t) } }, required: ["id", "options"], additionalProperties: !1 };
|
|
216
216
|
}
|
|
@@ -219,10 +219,10 @@ function ot(e, t) {
|
|
|
219
219
|
}
|
|
220
220
|
function nt(e, t) {
|
|
221
221
|
const s = t ? { payload: t } : {}, r = t ? ["payload"] : [];
|
|
222
|
-
return { type: "object", properties: { ...structuredClone(
|
|
222
|
+
return { type: "object", properties: { ...structuredClone(E), type: { type: "string", const: e }, ...s }, required: ["id", "type", "action", ...r], additionalProperties: !1 };
|
|
223
223
|
}
|
|
224
224
|
function at() {
|
|
225
|
-
const e = { $schema: "https://json-schema.org/draft/2020-12/schema", $id: "https://example.com/schemas/project.json", title: "Project", type: "object", properties: { id: { type: "string", pattern: $.source }, name: { type: "string" }, tasks: { type: "array", items: { oneOf: [{ $ref: "#/$defs/Runium_TaskConfig" }] }, minItems: 1, uniqueItemProperties: ["id"] }, triggers: { type: "array", items: { $ref: "#/$defs/Runium_Trigger" }, uniqueItemProperties: ["id"] } }, required: ["id", "tasks"], additionalProperties: !1, $defs: { Runium_EnvValue: { type: ["string", "number", "boolean"] }, Runium_Env: { type: "object", additionalProperties: { $ref: "#/$defs/Runium_EnvValue" } }, Runium_TaskStartMode: { type: "string", enum: Object.values(f) }, Runium_TaskHandler: { type: "object", properties: { action: { $ref: "#/$defs/Runium_Action" }, condition: { $ref: "#/$defs/Runium_TaskStateCondition" } }, required: ["action", "condition"], additionalProperties: !1 }, Runium_TaskStateCondition: { oneOf: [{ type: "string" }, { type: "boolean" }, { $ref: "#/$defs/Runium_TaskState" }] }, Runium_TaskState: { type: "object", properties: { status: { $ref: "#/$defs/Runium_TaskStatus" }, iteration: { type: "number", minimum: 0 }, exitCode: { type: "number", minimum: 0 }, reason: { type: "string" } }, additionalProperties: !1 }, Runium_TaskStatus: { type: "string", enum: Object.values(h) }, Runium_TaskDependency: { type: "object", properties: { taskId: { type: "string" }, condition: { $ref: "#/$defs/Runium_TaskStateCondition" } }, required: ["taskId", "condition"], additionalProperties: !1 }, Runium_Trigger: { oneOf: [{ $ref: "#/$defs/Runium_TriggerEvent" }, { $ref: "#/$defs/Runium_TriggerInterval" }, { $ref: "#/$defs/Runium_TriggerTimeout" }] }, Runium_TriggerEvent: { type: "object", properties: { ...structuredClone(
|
|
225
|
+
const e = { $schema: "https://json-schema.org/draft/2020-12/schema", $id: "https://example.com/schemas/project.json", title: "Project", type: "object", properties: { id: { type: "string", pattern: $.source }, name: { type: "string" }, tasks: { type: "array", items: { oneOf: [{ $ref: "#/$defs/Runium_TaskConfig" }] }, minItems: 1, uniqueItemProperties: ["id"] }, triggers: { type: "array", items: { $ref: "#/$defs/Runium_Trigger" }, uniqueItemProperties: ["id"] } }, required: ["id", "tasks"], additionalProperties: !1, $defs: { Runium_EnvValue: { type: ["string", "number", "boolean"] }, Runium_Env: { type: "object", additionalProperties: { $ref: "#/$defs/Runium_EnvValue" } }, Runium_TaskStartMode: { type: "string", enum: Object.values(f) }, Runium_TaskHandler: { type: "object", properties: { action: { $ref: "#/$defs/Runium_Action" }, condition: { $ref: "#/$defs/Runium_TaskStateCondition" } }, required: ["action", "condition"], additionalProperties: !1 }, Runium_TaskStateCondition: { oneOf: [{ type: "string" }, { type: "boolean" }, { $ref: "#/$defs/Runium_TaskState" }] }, Runium_TaskState: { type: "object", properties: { status: { $ref: "#/$defs/Runium_TaskStatus" }, iteration: { type: "number", minimum: 0 }, exitCode: { type: "number", minimum: 0 }, reason: { type: "string" } }, additionalProperties: !1 }, Runium_TaskStatus: { type: "string", enum: Object.values(h) }, Runium_TaskDependency: { type: "object", properties: { taskId: { type: "string" }, condition: { $ref: "#/$defs/Runium_TaskStateCondition" } }, required: ["taskId", "condition"], additionalProperties: !1 }, Runium_Trigger: { oneOf: [{ $ref: "#/$defs/Runium_TriggerEvent" }, { $ref: "#/$defs/Runium_TriggerInterval" }, { $ref: "#/$defs/Runium_TriggerTimeout" }] }, Runium_TriggerEvent: { type: "object", properties: { ...structuredClone(E), type: { const: l.EVENT }, event: { type: "string" } }, required: ["id", "type", "event", "action"], additionalProperties: !1 }, Runium_TriggerInterval: { type: "object", properties: { ...structuredClone(E), type: { const: l.INTERVAL }, interval: { type: "number", minimum: 0 } }, required: ["id", "type", "interval", "action"], additionalProperties: !1 }, Runium_TriggerTimeout: { type: "object", properties: { ...structuredClone(E), type: { const: l.TIMEOUT }, timeout: { type: "number", minimum: 0 } }, required: ["id", "type", "timeout", "action"], additionalProperties: !1 }, Runium_Action: { oneOf: [{ $ref: "#/$defs/Runium_ActionEmitEvent" }, { $ref: "#/$defs/Runium_ActionProcessTask" }, { $ref: "#/$defs/Runium_ActionStopProject" }, { $ref: "#/$defs/Runium_ActionToggleTrigger" }] }, Runium_ActionEmitEvent: { type: "object", properties: { type: { type: "string", const: d.EMIT_EVENT }, event: { type: "string" } }, required: ["type", "event"], additionalProperties: !1 }, Runium_ActionProcessTask: { type: "object", properties: { type: { type: "string", enum: [d.START_TASK, d.RESTART_TASK, d.STOP_TASK] }, taskId: { type: "string" } }, required: ["type", "taskId"], additionalProperties: !1 }, Runium_ActionStopProject: { type: "object", properties: { type: { type: "string", const: d.STOP_PROJECT } }, required: ["type"], additionalProperties: !1 }, Runium_ActionToggleTrigger: { type: "object", properties: { type: { type: "string", enum: [d.ENABLE_TRIGGER, d.DISABLE_TRIGGER] }, triggerId: { type: "string" } }, required: ["type", "triggerId"], additionalProperties: !1 }, Runium_TaskConfig: { ...L(T.DEFAULT, { $ref: "#/$defs/Runium_TaskOptions" }) }, Runium_TaskOptions: { type: "object", properties: { command: { type: "string" }, arguments: { type: "array", items: { type: "string" } }, shell: { type: "boolean" }, cwd: { type: "string" }, env: { $ref: "#/$defs/Runium_Env" }, ttl: { type: "number" }, log: { $ref: "#/$defs/Runium_TaskLog" }, stopSignal: { type: "string" } }, required: ["command"], additionalProperties: !1 }, Runium_TaskRestartPolicy: { oneOf: [{ $ref: "#/$defs/Runium_TaskRestartPolicyAlways" }, { $ref: "#/$defs/Runium_TaskRestartPolicyOnFailure" }] }, Runium_TaskRestartPolicyAlways: { type: "object", required: ["policy"], properties: { policy: { const: m.ALWAYS }, delay: { type: "number" } }, additionalProperties: !1 }, Runium_TaskRestartPolicyOnFailure: { type: "object", required: ["policy"], properties: { policy: { const: m.ON_FAILURE }, delay: { type: "number" }, maxRetries: { type: "number" } }, additionalProperties: !1 }, Runium_TaskLog: { type: "object", properties: { stdout: { type: ["string", "null"] }, stderr: { type: ["string", "null"] } }, additionalProperties: !1 } } };
|
|
226
226
|
return Object.freeze(e);
|
|
227
227
|
}
|
|
228
228
|
function ct(e, t) {
|
|
@@ -272,7 +272,7 @@ function ct(e, t) {
|
|
|
272
272
|
return r;
|
|
273
273
|
})(s, t.triggers)), Object.freeze(s);
|
|
274
274
|
}
|
|
275
|
-
class
|
|
275
|
+
class R {
|
|
276
276
|
project;
|
|
277
277
|
id;
|
|
278
278
|
action;
|
|
@@ -287,7 +287,7 @@ class k {
|
|
|
287
287
|
return this.disabled;
|
|
288
288
|
}
|
|
289
289
|
}
|
|
290
|
-
class pt extends
|
|
290
|
+
class pt extends R {
|
|
291
291
|
event;
|
|
292
292
|
constructor(t, s) {
|
|
293
293
|
super(t, s), this.event = t.event;
|
|
@@ -302,7 +302,7 @@ class pt extends k {
|
|
|
302
302
|
this.project.processAction(this.action);
|
|
303
303
|
};
|
|
304
304
|
}
|
|
305
|
-
class dt extends
|
|
305
|
+
class dt extends R {
|
|
306
306
|
interval;
|
|
307
307
|
intervalId = null;
|
|
308
308
|
constructor(t, s) {
|
|
@@ -317,7 +317,7 @@ class dt extends k {
|
|
|
317
317
|
this.intervalId && clearInterval(this.intervalId), this.disabled = !0, this.intervalId = null;
|
|
318
318
|
}
|
|
319
319
|
}
|
|
320
|
-
class ut extends
|
|
320
|
+
class ut extends R {
|
|
321
321
|
timeout;
|
|
322
322
|
timeoutId = null;
|
|
323
323
|
constructor(t, s) {
|
|
@@ -391,7 +391,7 @@ class wt extends v {
|
|
|
391
391
|
}
|
|
392
392
|
registerTrigger(t, s) {
|
|
393
393
|
if (this.triggerProcessors.has(t)) throw new p(`Trigger processor for type "${t}" already registered`, "project-trigger-processor-already-registered", { type: t });
|
|
394
|
-
if (!(s.prototype instanceof
|
|
394
|
+
if (!(s.prototype instanceof R)) throw new p(`Trigger processor for type "${t}" must be a subclass of "RuniumTrigger"`, "project-trigger-processor-incorrect", { type: t });
|
|
395
395
|
this.triggerProcessors.set(t, s);
|
|
396
396
|
}
|
|
397
397
|
updateState(t) {
|
|
@@ -403,11 +403,11 @@ class wt extends v {
|
|
|
403
403
|
const s = t.type || T.DEFAULT, r = this.taskProcessors.get(s);
|
|
404
404
|
if (!r) throw new p(`Task processor for type "${s}" not found`, "project-task-processor-not-found", { type: s });
|
|
405
405
|
const i = new r(t.options);
|
|
406
|
-
i.on(
|
|
406
|
+
i.on(k.STATE_CHANGE, (o) => {
|
|
407
407
|
this.emit("task-state-change", t.id, o), this.onTaskStateChange(t.id, o);
|
|
408
|
-
}), i.on(
|
|
408
|
+
}), i.on(k.STDOUT, (o) => {
|
|
409
409
|
this.emit("task-stdout", t.id, o);
|
|
410
|
-
}), i.on(
|
|
410
|
+
}), i.on(k.STDERR, (o) => {
|
|
411
411
|
this.emit("task-stderr", t.id, o);
|
|
412
412
|
}), this.tasks.set(t.id, { instance: i, config: t, dependencies: [...t.dependencies || []], dependents: null });
|
|
413
413
|
}
|
|
@@ -461,6 +461,13 @@ class wt extends v {
|
|
|
461
461
|
return this.emit("restart-task", t), s.restart();
|
|
462
462
|
}
|
|
463
463
|
}
|
|
464
|
+
getTaskState(t) {
|
|
465
|
+
if (this.tasks.has(t)) {
|
|
466
|
+
const { instance: s } = this.tasks.get(t);
|
|
467
|
+
return s.getState();
|
|
468
|
+
}
|
|
469
|
+
return null;
|
|
470
|
+
}
|
|
464
471
|
isDependentTaskReady(t) {
|
|
465
472
|
if (this.tasks.has(t)) {
|
|
466
473
|
const { dependencies: s = [], config: r } = this.tasks.get(t);
|
|
@@ -566,10 +573,10 @@ export {
|
|
|
566
573
|
l as ProjectTriggerType,
|
|
567
574
|
p as RuniumError,
|
|
568
575
|
D as RuniumTask,
|
|
569
|
-
|
|
576
|
+
R as RuniumTrigger,
|
|
570
577
|
jt as SILENT_EXIT_CODE,
|
|
571
578
|
st as Task,
|
|
572
|
-
|
|
579
|
+
k as TaskEvent,
|
|
573
580
|
h as TaskStatus,
|
|
574
581
|
ut as TimeoutTrigger,
|
|
575
582
|
$t as applyMacros,
|