@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.
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.init.d.ts","sourceRoot":"","sources":["../../shared/workflow.init.ts"],"names":[],"mappings":"AAGA;;;;;;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
+ {"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 { registerWorkflowPlugin } from './workflow.plugin';
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,yBAAyB,CAAC;AAEjC,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;2BAgB3B,GAAG,OAAO,GAAG,QAAQ,QAAQ;;IAiBvE;;;;OAIG;IACG,WAAW,CAAC,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB5E;;;;;OAKG;YACW,cAAc;IA4C5B;;;;;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
+ {"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,QAkDnE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,SAGrC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,QAE9E"}
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
- // Get record type from schema options or infer from model name
9
- const recordType = options.recordType || options.modelName?.toLowerCase() || 'unknown';
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.336",
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",