@dynamatix/gb-schemas 1.3.336 → 1.3.338
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/shared/workflow.init.d.ts.map +1 -1
- package/dist/shared/workflow.init.js +4 -1
- package/dist/shared/workflow.middleware.d.ts +26 -26
- package/dist/shared/workflow.middleware.d.ts.map +1 -1
- package/dist/shared/workflow.middleware.js +8 -2
- package/dist/shared/workflow.plugin.d.ts +25 -25
- package/dist/shared/workflow.plugin.d.ts.map +1 -1
- package/dist/shared/workflow.plugin.js +14 -3
- package/package.json +5 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.init.d.ts","sourceRoot":"","sources":["../../shared/workflow.init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow.init.d.ts","sourceRoot":"","sources":["../../shared/workflow.init.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,wBAAgB,4BAA4B,SAI3C;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,OAAO,CAUxD;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CAAC,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,WAQ5F"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import dotenv from 'dotenv';
|
|
2
|
+
import { registerWorkflowPlugin } from './workflow.plugin.js';
|
|
3
|
+
// Load environment variables from .env file
|
|
4
|
+
dotenv.config();
|
|
2
5
|
/**
|
|
3
6
|
* Initialize workflow middleware for all schemas
|
|
4
7
|
* Call this function once in your application startup to enable workflow middleware globally
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
/// <reference path="../value-objects/pound.d.ts" />
|
|
2
2
|
/// <reference path="../value-objects/account-number.d.ts" />
|
|
3
3
|
/// <reference path="../value-objects/sort-code.d.ts" />
|
|
4
|
-
/// <reference types="mongoose/types/aggregate" />
|
|
5
|
-
/// <reference types="mongoose/types/callback" />
|
|
6
|
-
/// <reference types="mongoose/types/collection" />
|
|
7
|
-
/// <reference types="mongoose/types/connection" />
|
|
8
|
-
/// <reference types="mongoose/types/cursor" />
|
|
9
|
-
/// <reference types="mongoose/types/document" />
|
|
10
|
-
/// <reference types="mongoose/types/error" />
|
|
11
|
-
/// <reference types="mongoose/types/expressions" />
|
|
12
|
-
/// <reference types="mongoose/types/helpers" />
|
|
13
|
-
/// <reference types="mongoose/types/middlewares" />
|
|
14
|
-
/// <reference types="mongoose/types/indexes" />
|
|
15
|
-
/// <reference types="mongoose/types/models" />
|
|
16
|
-
/// <reference types="mongoose/types/mongooseoptions" />
|
|
17
|
-
/// <reference types="mongoose/types/pipelinestage" />
|
|
18
|
-
/// <reference types="mongoose/types/populate" />
|
|
19
|
-
/// <reference types="mongoose/types/query" />
|
|
20
|
-
/// <reference types="mongoose/types/schemaoptions" />
|
|
21
|
-
/// <reference types="mongoose/types/session" />
|
|
22
|
-
/// <reference types="mongoose/types/types" />
|
|
23
|
-
/// <reference types="mongoose/types/utility" />
|
|
24
|
-
/// <reference types="mongoose/types/validation" />
|
|
25
|
-
/// <reference types="mongoose/types/virtuals" />
|
|
26
|
-
/// <reference types="mongoose/types/schematypes" />
|
|
27
|
-
/// <reference types="mongoose/types/inferschematype" />
|
|
28
|
-
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
4
|
+
/// <reference types="mongoose/types/aggregate.js" />
|
|
5
|
+
/// <reference types="mongoose/types/callback.js" />
|
|
6
|
+
/// <reference types="mongoose/types/collection.js" />
|
|
7
|
+
/// <reference types="mongoose/types/connection.js" />
|
|
8
|
+
/// <reference types="mongoose/types/cursor.js" />
|
|
9
|
+
/// <reference types="mongoose/types/document.js" />
|
|
10
|
+
/// <reference types="mongoose/types/error.js" />
|
|
11
|
+
/// <reference types="mongoose/types/expressions.js" />
|
|
12
|
+
/// <reference types="mongoose/types/helpers.js" />
|
|
13
|
+
/// <reference types="mongoose/types/middlewares.js" />
|
|
14
|
+
/// <reference types="mongoose/types/indexes.js" />
|
|
15
|
+
/// <reference types="mongoose/types/models.js" />
|
|
16
|
+
/// <reference types="mongoose/types/mongooseoptions.js" />
|
|
17
|
+
/// <reference types="mongoose/types/pipelinestage.js" />
|
|
18
|
+
/// <reference types="mongoose/types/populate.js" />
|
|
19
|
+
/// <reference types="mongoose/types/query.js" />
|
|
20
|
+
/// <reference types="mongoose/types/schemaoptions.js" />
|
|
21
|
+
/// <reference types="mongoose/types/session.js" />
|
|
22
|
+
/// <reference types="mongoose/types/types.js" />
|
|
23
|
+
/// <reference types="mongoose/types/utility.js" />
|
|
24
|
+
/// <reference types="mongoose/types/validation.js" />
|
|
25
|
+
/// <reference types="mongoose/types/virtuals.js" />
|
|
26
|
+
/// <reference types="mongoose/types/schematypes.js" />
|
|
27
|
+
/// <reference types="mongoose/types/inferschematype.js" />
|
|
28
|
+
/// <reference types="mongoose/types/inferrawdoctype.js" />
|
|
29
29
|
import mongoose from 'mongoose';
|
|
30
|
-
import { WorkflowTriggerEvent, WorkflowMiddlewareOptions } from './workflow-trigger.type';
|
|
30
|
+
import { WorkflowTriggerEvent, WorkflowMiddlewareOptions } from './workflow-trigger.type.js';
|
|
31
31
|
export declare class WorkflowMiddleware {
|
|
32
32
|
private workflowService;
|
|
33
33
|
private options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.middleware.d.ts","sourceRoot":"","sources":["../../shared/workflow.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,OAAO,EACH,oBAAoB,EAEpB,yBAAyB,EAC5B,MAAM,
|
|
1
|
+
{"version":3,"file":"workflow.middleware.d.ts","sourceRoot":"","sources":["../../shared/workflow.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,OAAO,EACH,oBAAoB,EAEpB,yBAAyB,EAC5B,MAAM,4BAA4B,CAAC;AAEpC,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,OAAO,CAA4B;gBAE/B,OAAO,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC;IAYxD;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;;;OAIG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM;yBAGK,GAAG,OAAO,GAAG,QAAQ,QAAQ;2BAiB3B,GAAG,OAAO,GAAG,QAAQ,QAAQ;;IAkBvE;;;;OAIG;IACG,WAAW,CAAC,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B5E;;;;;OAKG;YACW,cAAc;IA8C5B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;;OAKG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAS5F;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC;;;EAGxG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,QAShI"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import WorkflowTriggerModel from './workflow-trigger.model';
|
|
2
|
-
import { WorkflowService } from './workflow.service';
|
|
1
|
+
import WorkflowTriggerModel from './workflow-trigger.model.js';
|
|
2
|
+
import { WorkflowService } from './workflow.service.js';
|
|
3
3
|
export class WorkflowMiddleware {
|
|
4
4
|
constructor(options) {
|
|
5
5
|
// Read configuration from environment variables with fallbacks
|
|
@@ -34,6 +34,7 @@ export class WorkflowMiddleware {
|
|
|
34
34
|
// Post-save middleware for create and update operations
|
|
35
35
|
postSave: async function (doc, next) {
|
|
36
36
|
try {
|
|
37
|
+
console.log('Post-save middleware for create and update operations');
|
|
37
38
|
const middleware = new WorkflowMiddleware(this.options || {});
|
|
38
39
|
await middleware.handleEvent({
|
|
39
40
|
recordType,
|
|
@@ -50,6 +51,7 @@ export class WorkflowMiddleware {
|
|
|
50
51
|
// Post-remove middleware for delete operations
|
|
51
52
|
postRemove: async function (doc, next) {
|
|
52
53
|
try {
|
|
54
|
+
console.log('Post-remove middleware for delete operations');
|
|
53
55
|
const middleware = new WorkflowMiddleware(this.options || {});
|
|
54
56
|
await middleware.handleEvent({
|
|
55
57
|
recordType,
|
|
@@ -73,6 +75,7 @@ export class WorkflowMiddleware {
|
|
|
73
75
|
async handleEvent(event, document) {
|
|
74
76
|
try {
|
|
75
77
|
// Find active triggers for this event
|
|
78
|
+
console.log('Finding active triggers for this event');
|
|
76
79
|
const WorkflowTrigger = this.getWorkflowTriggerModel();
|
|
77
80
|
const triggers = await WorkflowTrigger.find({
|
|
78
81
|
triggerKey: event.triggerKey,
|
|
@@ -83,6 +86,7 @@ export class WorkflowMiddleware {
|
|
|
83
86
|
return;
|
|
84
87
|
}
|
|
85
88
|
// Process each trigger
|
|
89
|
+
console.log('Processing each trigger');
|
|
86
90
|
for (const trigger of triggers) {
|
|
87
91
|
await this.processTrigger(trigger, document, event);
|
|
88
92
|
}
|
|
@@ -99,12 +103,14 @@ export class WorkflowMiddleware {
|
|
|
99
103
|
*/
|
|
100
104
|
async processTrigger(trigger, document, event) {
|
|
101
105
|
try {
|
|
106
|
+
console.log('Processing trigger');
|
|
102
107
|
// Check if condition is met (if specified)
|
|
103
108
|
if (trigger.condition && !this.evaluateCondition(trigger.condition, document)) {
|
|
104
109
|
console.log(`Condition not met for trigger ${trigger.triggerKey}`);
|
|
105
110
|
return;
|
|
106
111
|
}
|
|
107
112
|
// Extract variables from document
|
|
113
|
+
console.log('Extracting variables from document');
|
|
108
114
|
const variables = this.workflowService.extractVariables(trigger.requiredVariables, trigger.optionalVariables || [], document);
|
|
109
115
|
// Validate required variables
|
|
110
116
|
if (!this.workflowService.validateRequiredVariables(trigger.requiredVariables, variables)) {
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
/// <reference path="../value-objects/pound.d.ts" />
|
|
2
2
|
/// <reference path="../value-objects/account-number.d.ts" />
|
|
3
3
|
/// <reference path="../value-objects/sort-code.d.ts" />
|
|
4
|
-
/// <reference types="mongoose/types/aggregate" />
|
|
5
|
-
/// <reference types="mongoose/types/callback" />
|
|
6
|
-
/// <reference types="mongoose/types/collection" />
|
|
7
|
-
/// <reference types="mongoose/types/connection" />
|
|
8
|
-
/// <reference types="mongoose/types/cursor" />
|
|
9
|
-
/// <reference types="mongoose/types/document" />
|
|
10
|
-
/// <reference types="mongoose/types/error" />
|
|
11
|
-
/// <reference types="mongoose/types/expressions" />
|
|
12
|
-
/// <reference types="mongoose/types/helpers" />
|
|
13
|
-
/// <reference types="mongoose/types/middlewares" />
|
|
14
|
-
/// <reference types="mongoose/types/indexes" />
|
|
15
|
-
/// <reference types="mongoose/types/models" />
|
|
16
|
-
/// <reference types="mongoose/types/mongooseoptions" />
|
|
17
|
-
/// <reference types="mongoose/types/pipelinestage" />
|
|
18
|
-
/// <reference types="mongoose/types/populate" />
|
|
19
|
-
/// <reference types="mongoose/types/query" />
|
|
20
|
-
/// <reference types="mongoose/types/schemaoptions" />
|
|
21
|
-
/// <reference types="mongoose/types/session" />
|
|
22
|
-
/// <reference types="mongoose/types/types" />
|
|
23
|
-
/// <reference types="mongoose/types/utility" />
|
|
24
|
-
/// <reference types="mongoose/types/validation" />
|
|
25
|
-
/// <reference types="mongoose/types/virtuals" />
|
|
26
|
-
/// <reference types="mongoose/types/schematypes" />
|
|
27
|
-
/// <reference types="mongoose/types/inferschematype" />
|
|
28
|
-
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
4
|
+
/// <reference types="mongoose/types/aggregate.js" />
|
|
5
|
+
/// <reference types="mongoose/types/callback.js" />
|
|
6
|
+
/// <reference types="mongoose/types/collection.js" />
|
|
7
|
+
/// <reference types="mongoose/types/connection.js" />
|
|
8
|
+
/// <reference types="mongoose/types/cursor.js" />
|
|
9
|
+
/// <reference types="mongoose/types/document.js" />
|
|
10
|
+
/// <reference types="mongoose/types/error.js" />
|
|
11
|
+
/// <reference types="mongoose/types/expressions.js" />
|
|
12
|
+
/// <reference types="mongoose/types/helpers.js" />
|
|
13
|
+
/// <reference types="mongoose/types/middlewares.js" />
|
|
14
|
+
/// <reference types="mongoose/types/indexes.js" />
|
|
15
|
+
/// <reference types="mongoose/types/models.js" />
|
|
16
|
+
/// <reference types="mongoose/types/mongooseoptions.js" />
|
|
17
|
+
/// <reference types="mongoose/types/pipelinestage.js" />
|
|
18
|
+
/// <reference types="mongoose/types/populate.js" />
|
|
19
|
+
/// <reference types="mongoose/types/query.js" />
|
|
20
|
+
/// <reference types="mongoose/types/schemaoptions.js" />
|
|
21
|
+
/// <reference types="mongoose/types/session.js" />
|
|
22
|
+
/// <reference types="mongoose/types/types.js" />
|
|
23
|
+
/// <reference types="mongoose/types/utility.js" />
|
|
24
|
+
/// <reference types="mongoose/types/validation.js" />
|
|
25
|
+
/// <reference types="mongoose/types/virtuals.js" />
|
|
26
|
+
/// <reference types="mongoose/types/schematypes.js" />
|
|
27
|
+
/// <reference types="mongoose/types/inferschematype.js" />
|
|
28
|
+
/// <reference types="mongoose/types/inferrawdoctype.js" />
|
|
29
29
|
import mongoose from 'mongoose';
|
|
30
30
|
/**
|
|
31
31
|
* Workflow plugin that automatically applies workflow middleware to schemas
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.plugin.d.ts","sourceRoot":"","sources":["../../shared/workflow.plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"workflow.plugin.d.ts","sourceRoot":"","sources":["../../shared/workflow.plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,QAiEnE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,SAGrC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,QAE9E"}
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
import mongoose from 'mongoose';
|
|
2
|
-
import { WorkflowMiddleware } from './workflow.middleware';
|
|
2
|
+
import { WorkflowMiddleware } from './workflow.middleware.js';
|
|
3
3
|
/**
|
|
4
4
|
* Workflow plugin that automatically applies workflow middleware to schemas
|
|
5
5
|
* This plugin reads the record type from schema options and applies the appropriate middleware
|
|
6
6
|
*/
|
|
7
7
|
export function workflowPlugin(schema, options) {
|
|
8
|
-
//
|
|
9
|
-
|
|
8
|
+
// For global plugins, we'll determine the record type when the middleware is triggered
|
|
9
|
+
// by looking at the document's constructor name
|
|
10
|
+
console.log(`🔌 Workflow plugin applied to schema`);
|
|
10
11
|
// Create workflow middleware instance
|
|
11
12
|
const middleware = new WorkflowMiddleware();
|
|
12
13
|
// Apply post-save middleware
|
|
13
14
|
schema.post('save', async function (doc, next) {
|
|
15
|
+
// Determine record type from document constructor name
|
|
16
|
+
const recordType = doc.constructor.modelName?.toLowerCase() || 'unknown';
|
|
17
|
+
console.log(`💾 Post-save middleware triggered for ${recordType}`);
|
|
18
|
+
console.log(` Document ID: ${doc._id}`);
|
|
19
|
+
console.log(` Is new: ${doc.isNew}`);
|
|
20
|
+
console.log(` Trigger key: ${recordType}.${doc.isNew ? 'created' : 'updated'}`);
|
|
14
21
|
try {
|
|
15
22
|
await middleware.handleEvent({
|
|
16
23
|
recordType,
|
|
@@ -26,6 +33,8 @@ export function workflowPlugin(schema, options) {
|
|
|
26
33
|
});
|
|
27
34
|
// Apply post-remove middleware
|
|
28
35
|
schema.post(/^delete/, async function (doc, next) {
|
|
36
|
+
const recordType = doc.constructor.modelName?.toLowerCase() || 'unknown';
|
|
37
|
+
console.log(`🗑️ Post-delete middleware triggered for ${recordType}`);
|
|
29
38
|
try {
|
|
30
39
|
await middleware.handleEvent({
|
|
31
40
|
recordType,
|
|
@@ -40,6 +49,8 @@ export function workflowPlugin(schema, options) {
|
|
|
40
49
|
next();
|
|
41
50
|
});
|
|
42
51
|
schema.post('findOneAndDelete', async function (doc, next) {
|
|
52
|
+
const recordType = doc.constructor.modelName?.toLowerCase() || 'unknown';
|
|
53
|
+
console.log(`🗑️ Post-findOneAndDelete middleware triggered for ${recordType}`);
|
|
43
54
|
try {
|
|
44
55
|
await middleware.handleEvent({
|
|
45
56
|
recordType,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamatix/gb-schemas",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.338",
|
|
4
4
|
"description": "All the schemas for gatehouse bank back-end",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
"scripts": {
|
|
9
9
|
"build": "tsc",
|
|
10
10
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
11
|
+
"test:workflow": "npm run build && node test-workflow.js",
|
|
12
|
+
"test:workflow:env": "npm run build && WORKFLOW_API_KEY=test-key WORKFLOW_API_URL=http://localhost:3000/api/workflows node test-workflow-with-env.js",
|
|
13
|
+
"example:app": "npm run build && node example-app-usage.js",
|
|
14
|
+
"test:workflow:triggers": "npm run build && node test-workflow-with-triggers.js",
|
|
11
15
|
"patch": "tsc && npm version patch && npm publish --access public && exit 0",
|
|
12
16
|
"generate-docs": "NODE_OPTIONS='--loader ts-node/esm' ts-node schema-docs/docs.seeder.ts",
|
|
13
17
|
"example:income": "NODE_OPTIONS='--loader ts-node/esm' ts-node examples/add-applicant-income.ts",
|