@unchainedshop/platform 2.7.6 → 2.8.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.
@@ -1,3 +1,4 @@
1
+ import { UnchainedCore } from '@unchainedshop/types/core.js';
1
2
  export declare enum MessageTypes {
2
3
  ACCOUNT_ACTION = "ACCOUNT_ACTION",
3
4
  DELIVERY = "DELIVERY",
@@ -7,4 +8,4 @@ export declare enum MessageTypes {
7
8
  ENROLLMENT_STATUS = "ENROLLMENT_STATUS",
8
9
  ERROR_REPORT = "ERROR_REPORT"
9
10
  }
10
- export declare const setupTemplates: () => void;
11
+ export declare const setupTemplates: (unchainedAPI: UnchainedCore) => void;
@@ -1,4 +1,6 @@
1
1
  import { MessagingDirector } from '@unchainedshop/core-messaging';
2
+ import { subscribe } from '@unchainedshop/events';
3
+ import { OrderStatus } from '@unchainedshop/types/orders.js';
2
4
  import { resolveOrderRejectionTemplate } from '../templates/resolveOrderRejectionTemplate.js';
3
5
  import { resolveAccountActionTemplate } from '../templates/resolveAccountActionTemplate.js';
4
6
  import { resolveForwardDeliveryTemplate } from '../templates/resolveForwardDeliveryTemplate.js';
@@ -16,7 +18,7 @@ export var MessageTypes;
16
18
  MessageTypes["ENROLLMENT_STATUS"] = "ENROLLMENT_STATUS";
17
19
  MessageTypes["ERROR_REPORT"] = "ERROR_REPORT";
18
20
  })(MessageTypes || (MessageTypes = {}));
19
- export const setupTemplates = () => {
21
+ export const setupTemplates = (unchainedAPI) => {
20
22
  MessagingDirector.registerTemplate(MessageTypes.ACCOUNT_ACTION, resolveAccountActionTemplate);
21
23
  MessagingDirector.registerTemplate(MessageTypes.DELIVERY, resolveForwardDeliveryTemplate);
22
24
  MessagingDirector.registerTemplate(MessageTypes.ORDER_CONFIRMATION, resolveOrderConfirmationTemplate);
@@ -24,5 +26,50 @@ export const setupTemplates = () => {
24
26
  MessagingDirector.registerTemplate(MessageTypes.QUOTATION_STATUS, resolveQuotationStatusTemplate);
25
27
  MessagingDirector.registerTemplate(MessageTypes.ENROLLMENT_STATUS, resolveEnrollmentStatusTemplate);
26
28
  MessagingDirector.registerTemplate(MessageTypes.ERROR_REPORT, resolveErrorReportTemplate);
29
+ subscribe('ORDER_CHECKOUT', async ({ payload }) => {
30
+ const { order } = payload;
31
+ const user = await unchainedAPI.modules.users.findUserById(order.userId);
32
+ const locale = unchainedAPI.modules.users.userLocale(user);
33
+ if (order.status === OrderStatus.PENDING) {
34
+ // We only send the "confirmation" when pending, else we let the other events handle it
35
+ await unchainedAPI.modules.worker.addWork({
36
+ type: 'MESSAGE',
37
+ retries: 0,
38
+ input: {
39
+ locale,
40
+ template: MessageTypes.ORDER_CONFIRMATION,
41
+ orderId: order._id,
42
+ },
43
+ });
44
+ }
45
+ });
46
+ subscribe('ORDER_CONFIRMED', async ({ payload }) => {
47
+ const { order } = payload;
48
+ const user = await unchainedAPI.modules.users.findUserById(order.userId);
49
+ const locale = unchainedAPI.modules.users.userLocale(user);
50
+ await unchainedAPI.modules.worker.addWork({
51
+ type: 'MESSAGE',
52
+ retries: 0,
53
+ input: {
54
+ locale,
55
+ template: MessageTypes.ORDER_CONFIRMATION,
56
+ orderId: order._id,
57
+ },
58
+ });
59
+ });
60
+ subscribe('ORDER_REJECTED', async ({ payload }) => {
61
+ const { order } = payload;
62
+ const user = await unchainedAPI.modules.users.findUserById(order.userId);
63
+ const locale = unchainedAPI.modules.users.userLocale(user);
64
+ await unchainedAPI.modules.worker.addWork({
65
+ type: 'MESSAGE',
66
+ retries: 0,
67
+ input: {
68
+ locale,
69
+ template: MessageTypes.ORDER_REJECTION,
70
+ orderId: order._id,
71
+ },
72
+ });
73
+ });
27
74
  };
28
75
  //# sourceMappingURL=setupTemplates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupTemplates.js","sourceRoot":"","sources":["../../src/setup/setupTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC;AAC9F,OAAO,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAChG,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAChG,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAExF,MAAM,CAAN,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,iDAAiC,CAAA;IACjC,qCAAqB,CAAA;IACrB,yDAAyC,CAAA;IACzC,mDAAmC,CAAA;IACnC,qDAAqC,CAAA;IACrC,uDAAuC,CAAA;IACvC,6CAA6B,CAAA;AAC/B,CAAC,EARW,YAAY,KAAZ,YAAY,QAQvB;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,iBAAiB,CAAC,gBAAgB,CAAC,YAAY,CAAC,cAAc,EAAE,4BAA4B,CAAC,CAAC;IAC9F,iBAAiB,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;IAC1F,iBAAiB,CAAC,gBAAgB,CAAC,YAAY,CAAC,kBAAkB,EAAE,gCAAgC,CAAC,CAAC;IACtG,iBAAiB,CAAC,gBAAgB,CAAC,YAAY,CAAC,eAAe,EAAE,6BAA6B,CAAC,CAAC;IAChG,iBAAiB,CAAC,gBAAgB,CAAC,YAAY,CAAC,gBAAgB,EAAE,8BAA8B,CAAC,CAAC;IAClG,iBAAiB,CAAC,gBAAgB,CAAC,YAAY,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAC;IACpG,iBAAiB,CAAC,gBAAgB,CAAC,YAAY,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;AAC5F,CAAC,CAAC"}
1
+ {"version":3,"file":"setupTemplates.js","sourceRoot":"","sources":["../../src/setup/setupTemplates.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,7 @@ export const startPlatform = async ({ modules = {}, services = {}, typeDefs = []
55
55
  // Setup accountsjs specific extensions and event handlers
56
56
  setupAccounts(unchainedAPI);
57
57
  // Setup email templates
58
- setupTemplates();
58
+ setupTemplates(unchainedAPI);
59
59
  // Start the graphQL server
60
60
  const apolloGraphQLServer = await startAPIServer({
61
61
  unchainedAPI,
@@ -1 +1 @@
1
- {"version":3,"file":"startPlatform.js","sourceRoot":"","sources":["../src/startPlatform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"startPlatform.js","sourceRoot":"","sources":["../src/startPlatform.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/platform",
3
- "version": "2.7.6",
3
+ "version": "2.8.0",
4
4
  "main": "lib/platform-index.js",
5
5
  "exports": {
6
6
  ".": "./lib/platform-index.js",
@@ -31,22 +31,22 @@
31
31
  },
32
32
  "homepage": "https://github.com/unchainedshop/unchained#readme",
33
33
  "dependencies": {
34
- "@unchainedshop/api": "^2.7.6",
35
- "@unchainedshop/core": "^2.7.6",
36
- "@unchainedshop/events": "^2.7.6",
37
- "@unchainedshop/file-upload": "^2.7.6",
38
- "@unchainedshop/logger": "^2.7.6",
39
- "@unchainedshop/mongodb": "^2.7.6",
40
- "@unchainedshop/plugins": "^2.7.6",
41
- "@unchainedshop/roles": "^2.7.6",
42
- "@unchainedshop/utils": "^2.7.6",
34
+ "@unchainedshop/api": "^2.8.0",
35
+ "@unchainedshop/core": "^2.8.0",
36
+ "@unchainedshop/events": "^2.8.0",
37
+ "@unchainedshop/file-upload": "^2.8.0",
38
+ "@unchainedshop/logger": "^2.8.0",
39
+ "@unchainedshop/mongodb": "^2.8.0",
40
+ "@unchainedshop/plugins": "^2.8.0",
41
+ "@unchainedshop/roles": "^2.8.0",
42
+ "@unchainedshop/utils": "^2.8.0",
43
43
  "event-iterator": "^2.0.0",
44
44
  "JSONStream": "^1.3.5",
45
45
  "moniker": "0.1.2"
46
46
  },
47
47
  "devDependencies": {
48
- "@types/node": "^20.11.21",
49
- "@unchainedshop/types": "^2.7.6",
48
+ "@types/node": "^20.11.24",
49
+ "@unchainedshop/types": "^2.8.0",
50
50
  "cross-env": "^7.0.3",
51
51
  "jest": "^29.7.0",
52
52
  "ts-jest": "^29.1.2",
@@ -1,4 +1,8 @@
1
1
  import { MessagingDirector } from '@unchainedshop/core-messaging';
2
+ import { UnchainedCore } from '@unchainedshop/types/core.js';
3
+ import { subscribe } from '@unchainedshop/events';
4
+ import { Order, OrderStatus } from '@unchainedshop/types/orders.js';
5
+ import { RawPayloadType } from '@unchainedshop/events/EventDirector.js';
2
6
  import { resolveOrderRejectionTemplate } from '../templates/resolveOrderRejectionTemplate.js';
3
7
  import { resolveAccountActionTemplate } from '../templates/resolveAccountActionTemplate.js';
4
8
  import { resolveForwardDeliveryTemplate } from '../templates/resolveForwardDeliveryTemplate.js';
@@ -17,7 +21,7 @@ export enum MessageTypes {
17
21
  ERROR_REPORT = 'ERROR_REPORT',
18
22
  }
19
23
 
20
- export const setupTemplates = () => {
24
+ export const setupTemplates = (unchainedAPI: UnchainedCore) => {
21
25
  MessagingDirector.registerTemplate(MessageTypes.ACCOUNT_ACTION, resolveAccountActionTemplate);
22
26
  MessagingDirector.registerTemplate(MessageTypes.DELIVERY, resolveForwardDeliveryTemplate);
23
27
  MessagingDirector.registerTemplate(MessageTypes.ORDER_CONFIRMATION, resolveOrderConfirmationTemplate);
@@ -25,4 +29,55 @@ export const setupTemplates = () => {
25
29
  MessagingDirector.registerTemplate(MessageTypes.QUOTATION_STATUS, resolveQuotationStatusTemplate);
26
30
  MessagingDirector.registerTemplate(MessageTypes.ENROLLMENT_STATUS, resolveEnrollmentStatusTemplate);
27
31
  MessagingDirector.registerTemplate(MessageTypes.ERROR_REPORT, resolveErrorReportTemplate);
32
+
33
+ subscribe('ORDER_CHECKOUT', async ({ payload }: RawPayloadType<{ order: Order }>) => {
34
+ const { order } = payload;
35
+ const user = await unchainedAPI.modules.users.findUserById(order.userId);
36
+ const locale = unchainedAPI.modules.users.userLocale(user);
37
+
38
+ if (order.status === OrderStatus.PENDING) {
39
+ // We only send the "confirmation" when pending, else we let the other events handle it
40
+ await unchainedAPI.modules.worker.addWork({
41
+ type: 'MESSAGE',
42
+ retries: 0,
43
+ input: {
44
+ locale,
45
+ template: MessageTypes.ORDER_CONFIRMATION,
46
+ orderId: order._id,
47
+ },
48
+ });
49
+ }
50
+ });
51
+
52
+ subscribe('ORDER_CONFIRMED', async ({ payload }: RawPayloadType<{ order: Order }>) => {
53
+ const { order } = payload;
54
+ const user = await unchainedAPI.modules.users.findUserById(order.userId);
55
+ const locale = unchainedAPI.modules.users.userLocale(user);
56
+
57
+ await unchainedAPI.modules.worker.addWork({
58
+ type: 'MESSAGE',
59
+ retries: 0,
60
+ input: {
61
+ locale,
62
+ template: MessageTypes.ORDER_CONFIRMATION,
63
+ orderId: order._id,
64
+ },
65
+ });
66
+ });
67
+
68
+ subscribe('ORDER_REJECTED', async ({ payload }: RawPayloadType<{ order: Order }>) => {
69
+ const { order } = payload;
70
+ const user = await unchainedAPI.modules.users.findUserById(order.userId);
71
+ const locale = unchainedAPI.modules.users.userLocale(user);
72
+
73
+ await unchainedAPI.modules.worker.addWork({
74
+ type: 'MESSAGE',
75
+ retries: 0,
76
+ input: {
77
+ locale,
78
+ template: MessageTypes.ORDER_REJECTION,
79
+ orderId: order._id,
80
+ },
81
+ });
82
+ });
28
83
  };
@@ -108,7 +108,7 @@ export const startPlatform = async ({
108
108
  setupAccounts(unchainedAPI);
109
109
 
110
110
  // Setup email templates
111
- setupTemplates();
111
+ setupTemplates(unchainedAPI);
112
112
 
113
113
  // Start the graphQL server
114
114
  const apolloGraphQLServer = await startAPIServer({