@unchainedshop/platform 3.1.11 → 4.0.0-rc.2

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.
Files changed (39) hide show
  1. package/lib/bulk-importer/createBulkImporter.d.ts +3 -5
  2. package/lib/bulk-importer/createBulkImporter.d.ts.map +1 -1
  3. package/lib/bulk-importer/createBulkImporter.js.map +1 -1
  4. package/lib/setup/setupWorkqueue.d.ts +15 -12
  5. package/lib/setup/setupWorkqueue.d.ts.map +1 -1
  6. package/lib/setup/setupWorkqueue.js +42 -11
  7. package/lib/setup/setupWorkqueue.js.map +1 -1
  8. package/lib/startPlatform.d.ts +1 -5
  9. package/lib/startPlatform.d.ts.map +1 -1
  10. package/lib/startPlatform.js +18 -27
  11. package/lib/startPlatform.js.map +1 -1
  12. package/lib/templates/order-parser/getOrderPositionsData.d.ts +4 -4
  13. package/lib/templates/order-parser/getOrderPositionsData.d.ts.map +1 -1
  14. package/lib/templates/order-parser/getOrderPositionsData.js +1 -1
  15. package/lib/templates/order-parser/getOrderPositionsData.js.map +1 -1
  16. package/lib/templates/order-parser/getOrderSummaryData.d.ts +8 -8
  17. package/lib/templates/order-parser/getOrderSummaryData.d.ts.map +1 -1
  18. package/lib/templates/order-parser/getOrderSummaryData.js +1 -1
  19. package/lib/templates/order-parser/getOrderSummaryData.js.map +1 -1
  20. package/lib/templates/order-parser/index.d.ts +1 -1
  21. package/lib/templates/order-parser/index.d.ts.map +1 -1
  22. package/lib/templates/order-parser/index.js.map +1 -1
  23. package/lib/templates/resolveForwardDeliveryTemplate.js +1 -1
  24. package/lib/templates/resolveForwardDeliveryTemplate.js.map +1 -1
  25. package/lib/templates/resolveOrderConfirmationTemplate.js +1 -1
  26. package/lib/templates/resolveOrderConfirmationTemplate.js.map +1 -1
  27. package/lib/templates/resolveOrderRejectionTemplate.js +1 -1
  28. package/lib/templates/resolveOrderRejectionTemplate.js.map +1 -1
  29. package/package.json +13 -13
  30. package/src/bulk-importer/createBulkImporter.ts +3 -5
  31. package/src/setup/setupWorkqueue.ts +85 -25
  32. package/src/startPlatform.ts +20 -33
  33. package/src/templates/order-parser/getOrderPositionsData.ts +3 -3
  34. package/src/templates/order-parser/getOrderSummaryData.ts +3 -3
  35. package/src/templates/order-parser/index.ts +1 -1
  36. package/src/templates/resolveForwardDeliveryTemplate.ts +1 -1
  37. package/src/templates/resolveOrderConfirmationTemplate.ts +1 -1
  38. package/src/templates/resolveOrderRejectionTemplate.ts +1 -1
  39. package/src/setup/setupCarts.ts +0 -35
@@ -3,20 +3,18 @@ import { BulkImporter, UnchainedCore } from '@unchainedshop/core';
3
3
  import * as AssortmentHandlers from './handlers/assortment/index.js';
4
4
  import * as FilterHandlers from './handlers/filter/index.js';
5
5
  import * as ProductHandlers from './handlers/product/index.js';
6
- export type BulkImportOperationResult = {
6
+ export interface BulkImportOperationResult {
7
7
  entity: string;
8
8
  operation: string;
9
9
  success: boolean;
10
- };
10
+ }
11
11
  export type BulkImportOperation = (payload: any, options: {
12
12
  bulk: (collection: string) => typeof mongodb.BulkOperationBase;
13
13
  createShouldUpsertIfIDExists?: boolean;
14
14
  updateShouldUpsertIfIDNotExists?: boolean;
15
15
  skipCacheInvalidation?: boolean;
16
16
  }, unchainedAPI: UnchainedCore) => Promise<BulkImportOperationResult>;
17
- export type BulkImportHandler = {
18
- [x: string]: BulkImportOperation;
19
- };
17
+ export type BulkImportHandler = Record<string, BulkImportOperation>;
20
18
  export declare const getOperation: (entity: string, operation: string) => BulkImportOperation;
21
19
  export declare const createBulkImporterFactory: (db: any, bulkImporterOptions: any) => BulkImporter;
22
20
  export { AssortmentHandlers, ProductHandlers, FilterHandlers };
@@ -1 +1 @@
1
- {"version":3,"file":"createBulkImporter.d.ts","sourceRoot":"","sources":["../../src/bulk-importer/createBulkImporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,kBAAkB,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAK/D,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,CAChC,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE;IACP,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,OAAO,CAAC,iBAAiB,CAAC;IAC/D,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,EACD,YAAY,EAAE,aAAa,KACxB,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAExC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;CAClC,CAAC;AAIF,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,mBAahE,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,OAAE,EAAE,qBAAqB,GAAG,KAAG,YAuFxE,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"createBulkImporter.d.ts","sourceRoot":"","sources":["../../src/bulk-importer/createBulkImporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,kBAAkB,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAK/D,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,MAAM,mBAAmB,GAAG,CAChC,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE;IACP,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,OAAO,CAAC,iBAAiB,CAAC;IAC/D,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,EACD,YAAY,EAAE,aAAa,KACxB,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAExC,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAIpE,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,mBAahE,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,OAAE,EAAE,qBAAqB,GAAG,KAAG,YAuFxE,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createBulkImporter.js","sourceRoot":"","sources":["../../src/bulk-importer/createBulkImporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createBulkImporter.js","sourceRoot":"","sources":["../../src/bulk-importer/createBulkImporter.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,18 @@
1
- import { UnchainedCore } from '@unchainedshop/core';
2
- import { IntervalWorkerParams } from '@unchainedshop/plugins/worker/IntervalWorker.js';
3
- import { WorkData } from '@unchainedshop/core-worker';
4
- export interface SetupWorkqueueOptions {
5
- batchCount?: number;
1
+ import { FailedReschedulerParams, IntervalWorkerParams, IScheduler, IWorker, UnchainedCore } from '@unchainedshop/core';
2
+ import { MigrationRepository } from '@unchainedshop/mongodb';
3
+ export type WorkQueueQueueManager = IWorker<any> | IScheduler<any>;
4
+ export interface SetupWorkqueueOptions extends IntervalWorkerParams, FailedReschedulerParams {
5
+ enabledQueueManagers?: WorkQueueQueueManager[];
6
+ invalidateProviders?: boolean;
7
+ providerInvalidationMaxAgeDays?: number;
8
+ assignCartForUsers?: boolean;
6
9
  disableWorker?: boolean;
7
- schedule?: IntervalWorkerParams['schedule'];
8
- workerId?: string;
9
- retryInput?: (workData: WorkData, priorInput: Record<string, any>) => Promise<Record<string, any> | null>;
10
+ skipInvalidationOnStartup?: boolean;
10
11
  }
11
- export declare const setupWorkqueue: (unchainedAPI: UnchainedCore, workQueueOptions?: SetupWorkqueueOptions) => {
12
- start: () => void;
13
- stop: () => void;
14
- }[];
12
+ export declare const defaultQueueManagers: WorkQueueQueueManager[];
13
+ export declare const queueWorkers: any[];
14
+ export declare const setupWorkqueue: ({ unchainedAPI, migrationRepository, ...workQueueOptions }: {
15
+ unchainedAPI: UnchainedCore;
16
+ migrationRepository: MigrationRepository<UnchainedCore>;
17
+ } & SetupWorkqueueOptions) => Promise<void>;
15
18
  //# sourceMappingURL=setupWorkqueue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupWorkqueue.d.ts","sourceRoot":"","sources":["../../src/setup/setupWorkqueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAkB,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAEvG,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CACX,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,cAAc,GACzB,cAAc,aAAa,EAC3B,mBAAkB,qBAA0B;;;GAU7C,CAAC"}
1
+ {"version":3,"file":"setupWorkqueue.d.ts","sourceRoot":"","sources":["../../src/setup/setupWorkqueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,uBAAuB,EAEvB,oBAAoB,EACpB,UAAU,EACV,OAAO,EACP,aAAa,EACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AACnE,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB,EAAE,uBAAuB;IAC1F,oBAAoB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC/C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAQD,eAAO,MAAM,oBAAoB,EAAE,qBAAqB,EAIvD,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,GAAG,EAAO,CAAC;AAEtC,eAAO,MAAM,cAAc,GAAU,4DAIlC;IACD,YAAY,EAAE,aAAa,CAAC;IAC5B,mBAAmB,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;CACzD,GAAG,qBAAqB,kBA4CxB,CAAC"}
@@ -1,13 +1,44 @@
1
- import { EventListenerWorker } from '@unchainedshop/plugins/worker/EventListenerWorker.js';
2
- import { IntervalWorker } from '@unchainedshop/plugins/worker/IntervalWorker.js';
3
- import { FailedRescheduler } from '@unchainedshop/plugins/worker/FailedRescheduler.js';
4
- export const setupWorkqueue = (unchainedAPI, workQueueOptions = {}) => {
5
- const handlers = [
6
- FailedRescheduler.actions(workQueueOptions, unchainedAPI),
7
- EventListenerWorker.actions(workQueueOptions, unchainedAPI),
8
- IntervalWorker.actions(workQueueOptions, unchainedAPI),
9
- ];
10
- handlers.forEach((handler) => handler.start());
11
- return handlers;
1
+ import { EventListenerWorker, FailedRescheduler, IntervalWorker, } from '@unchainedshop/core';
2
+ import { runMigrations } from '../migrations/runMigrations.js';
3
+ const { UNCHAINED_DISABLE_PROVIDER_INVALIDATION, UNCHAINED_DISABLE_WORKER, UNCHAINED_ASSIGN_CART_FOR_USERS, } = process.env;
4
+ export const defaultQueueManagers = [
5
+ FailedRescheduler,
6
+ EventListenerWorker,
7
+ IntervalWorker,
8
+ ];
9
+ export const queueWorkers = [];
10
+ export const setupWorkqueue = async ({ unchainedAPI, migrationRepository, ...workQueueOptions }) => {
11
+ if (workQueueOptions.disableWorker || UNCHAINED_DISABLE_WORKER)
12
+ return;
13
+ // Run migrations
14
+ await runMigrations({ migrationRepository, unchainedAPI });
15
+ // Start queue managers
16
+ (workQueueOptions?.enabledQueueManagers || defaultQueueManagers).forEach((f) => {
17
+ const handler = f.actions(workQueueOptions, unchainedAPI);
18
+ queueWorkers.push(handler);
19
+ handler.start();
20
+ });
21
+ // Invalidate providers on carts
22
+ if (workQueueOptions.invalidateProviders ?? !UNCHAINED_DISABLE_PROVIDER_INVALIDATION) {
23
+ const orders = await unchainedAPI.modules.orders.findCartsToInvalidate(workQueueOptions.providerInvalidationMaxAgeDays);
24
+ await Promise.allSettled(orders.map(async (order) => {
25
+ await unchainedAPI.services.orders.updateCalculation(order._id);
26
+ }));
27
+ }
28
+ // Ensure users have carts
29
+ if (workQueueOptions.assignCartForUsers ?? Boolean(UNCHAINED_ASSIGN_CART_FOR_USERS)) {
30
+ const users = await unchainedAPI.modules.users.findUsers({});
31
+ await Promise.all(users.map((user) => {
32
+ const locale = unchainedAPI.modules.users.userLocale(user);
33
+ return unchainedAPI.services.orders.nextUserCart({
34
+ user,
35
+ countryCode: locale.region,
36
+ });
37
+ }));
38
+ }
39
+ // Setup filter cache
40
+ if (!workQueueOptions?.skipInvalidationOnStartup) {
41
+ setImmediate(() => unchainedAPI.services.filters.invalidateFilterCache());
42
+ }
12
43
  };
13
44
  //# sourceMappingURL=setupWorkqueue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupWorkqueue.js","sourceRoot":"","sources":["../../src/setup/setupWorkqueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAwB,MAAM,iDAAiD,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AAavF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,YAA2B,EAC3B,mBAA0C,EAAE,EAC5C,EAAE;IACF,MAAM,QAAQ,GAAG;QACf,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,EAAE,YAAY,CAAC;QACzD,mBAAmB,CAAC,OAAO,CAAC,gBAAgB,EAAE,YAAY,CAAC;QAC3D,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,YAAY,CAAC;KACvD,CAAC;IAEF,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
1
+ {"version":3,"file":"setupWorkqueue.js","sourceRoot":"","sources":["../../src/setup/setupWorkqueue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAEjB,cAAc,GAKf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAa/D,MAAM,EACJ,uCAAuC,EACvC,wBAAwB,EACxB,+BAA+B,GAChC,GAAG,OAAO,CAAC,GAAG,CAAC;AAEhB,MAAM,CAAC,MAAM,oBAAoB,GAA4B;IAC3D,iBAAiB;IACjB,mBAAmB;IACnB,cAAc;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAU,EAAE,CAAC;AAEtC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,EACnC,YAAY,EACZ,mBAAmB,EACnB,GAAG,gBAAgB,EAII,EAAE,EAAE;IAC3B,IAAI,gBAAgB,CAAC,aAAa,IAAI,wBAAwB;QAAE,OAAO;IAEvE,iBAAiB;IACjB,MAAM,aAAa,CAAC,EAAE,mBAAmB,EAAE,YAAY,EAAE,CAAC,CAAC;IAE3D,uBAAuB;IACvB,CAAC,gBAAgB,EAAE,oBAAoB,IAAI,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7E,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;QAC1D,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,gCAAgC;IAChC,IAAI,gBAAgB,CAAC,mBAAmB,IAAI,CAAC,uCAAuC,EAAE,CAAC;QACrF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CACpE,gBAAgB,CAAC,8BAA8B,CAChD,CAAC;QACF,MAAM,OAAO,CAAC,UAAU,CACtB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACzB,MAAM,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClE,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,IAAI,gBAAgB,CAAC,kBAAkB,IAAI,OAAO,CAAC,+BAA+B,CAAC,EAAE,CAAC;QACpF,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE7D,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACjB,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3D,OAAO,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC/C,IAAI;gBACJ,WAAW,EAAE,MAAM,CAAC,MAAM;aAC3B,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,gBAAgB,EAAE,yBAAyB,EAAE,CAAC;QACjD,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC,CAAC"}
@@ -3,7 +3,6 @@ import { UnchainedCoreOptions } from '@unchainedshop/core';
3
3
  import { mongodb } from '@unchainedshop/mongodb';
4
4
  import { UnchainedCore } from '@unchainedshop/core';
5
5
  import { BulkImportHandler } from './bulk-importer/createBulkImporter.js';
6
- import { SetupCartsOptions } from './setup/setupCarts.js';
7
6
  import { MessageTypes } from './setup/setupTemplates.js';
8
7
  import { SetupWorkqueueOptions } from './setup/setupWorkqueue.js';
9
8
  import { IRoleOptionConfig } from '@unchainedshop/roles';
@@ -13,11 +12,8 @@ export type PlatformOptions = {
13
12
  handlers?: Record<string, BulkImportHandler>;
14
13
  };
15
14
  rolesOptions?: IRoleOptionConfig;
16
- workQueueOptions?: SetupWorkqueueOptions & SetupCartsOptions & {
17
- skipInvalidationOnStartup?: boolean;
18
- };
15
+ workQueueOptions?: SetupWorkqueueOptions;
19
16
  } & Omit<UnchainedCoreOptions, 'bulkImporter' | 'migrationRepository' | 'db'> & Omit<UnchainedServerOptions, 'roles' | 'unchainedAPI'>;
20
- export declare const queueWorkers: Array<any>;
21
17
  export declare const startPlatform: ({ modules, services, options, rolesOptions, bulkImporter: bulkImporterOptions, workQueueOptions, ...arbitraryAPIServerConfiguration }: PlatformOptions) => Promise<{
22
18
  unchainedAPI: UnchainedCore;
23
19
  graphqlHandler: any;
@@ -1 +1 @@
1
- {"version":3,"file":"startPlatform.d.ts","sourceRoot":"","sources":["../src/startPlatform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAY,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAU,OAAO,EAAU,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAA6B,MAAM,uCAAuC,CAAC;AAIrG,OAAO,EAAE,iBAAiB,EAAc,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAkB,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAkB,MAAM,2BAA2B,CAAC;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;KAC9C,CAAC;IACF,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,iBAAiB,GAAG;QAAE,yBAAyB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACxG,GAAG,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,qBAAqB,GAAG,IAAI,CAAC,GAC3E,IAAI,CAAC,sBAAsB,EAAE,OAAO,GAAG,cAAc,CAAC,CAAC;AAkCzD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,GAAG,CAAM,CAAC;AAE3C,eAAO,MAAM,aAAa,GAAU,uIAQjC,eAAe,KAAG,OAAO,CAAC;IAC3B,YAAY,EAAE,aAAa,CAAC;IAC5B,cAAc,EAAE,GAAG,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;CAChB,CAwEA,CAAC"}
1
+ {"version":3,"file":"startPlatform.d.ts","sourceRoot":"","sources":["../src/startPlatform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAY,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAU,OAAO,EAAU,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAA6B,MAAM,uCAAuC,CAAC;AAGrG,OAAO,EAAkB,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAkB,MAAM,2BAA2B,CAAC;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;KAC9C,CAAC;IACF,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CAC1C,GAAG,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,qBAAqB,GAAG,IAAI,CAAC,GAC3E,IAAI,CAAC,sBAAsB,EAAE,OAAO,GAAG,cAAc,CAAC,CAAC;AA2BzD,eAAO,MAAM,aAAa,GAAU,uIAQjC,eAAe,KAAG,OAAO,CAAC;IAC3B,YAAY,EAAE,aAAa,CAAC;IAC5B,cAAc,EAAE,GAAG,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;CAChB,CAsEA,CAAC"}
@@ -3,10 +3,8 @@ import { initCore } from '@unchainedshop/core';
3
3
  import { initDb, stopDb } from '@unchainedshop/mongodb';
4
4
  import { defaultLogger } from '@unchainedshop/logger';
5
5
  import { createBulkImporterFactory } from './bulk-importer/createBulkImporter.js';
6
- import { runMigrations } from './migrations/runMigrations.js';
7
6
  import { setupAccounts } from './setup/setupAccounts.js';
8
7
  import { setupUploadHandlers } from './setup/setupUploadHandlers.js';
9
- import { setupCarts } from './setup/setupCarts.js';
10
8
  import { setupTemplates, MessageTypes } from './setup/setupTemplates.js';
11
9
  import { setupWorkqueue } from './setup/setupWorkqueue.js';
12
10
  import { createMigrationRepository } from './migrations/migrationRepository.js';
@@ -18,7 +16,6 @@ const REQUIRED_ENV_VARIABLES = [
18
16
  'ROOT_URL',
19
17
  'UNCHAINED_TOKEN_SECRET',
20
18
  ];
21
- const { UNCHAINED_DISABLE_WORKER } = process.env;
22
19
  const exitOnMissingEnvironmentVariables = () => {
23
20
  const failedEnv = REQUIRED_ENV_VARIABLES.filter((key) => !process.env[key]);
24
21
  if (failedEnv.length > 0) {
@@ -32,16 +29,9 @@ const existOnInvalidEnvironmentVariables = () => {
32
29
  process.exit(1);
33
30
  }
34
31
  };
35
- const checkWorkQueueEnabled = (options) => {
36
- if (options?.disableWorker)
37
- return false;
38
- return !UNCHAINED_DISABLE_WORKER;
39
- };
40
- export const queueWorkers = [];
41
32
  export const startPlatform = async ({ modules, services, options, rolesOptions = {}, bulkImporter: bulkImporterOptions, workQueueOptions, ...arbitraryAPIServerConfiguration }) => {
42
33
  exitOnMissingEnvironmentVariables();
43
34
  existOnInvalidEnvironmentVariables();
44
- const isWorkQueueEnabled = checkWorkQueueEnabled(workQueueOptions);
45
35
  const configuredRoles = roles.configureRoles(rolesOptions);
46
36
  // Configure database
47
37
  const db = await initDb();
@@ -57,31 +47,24 @@ export const startPlatform = async ({ modules, services, options, rolesOptions =
57
47
  services,
58
48
  options,
59
49
  });
60
- if (isWorkQueueEnabled) {
61
- await runMigrations({ migrationRepository, unchainedAPI });
62
- }
63
- // Setup accountsjs specific extensions and event handlers
50
+ // Setup Accounts specific extensions and event handlers
64
51
  setupAccounts(unchainedAPI);
65
- // Setup email templates
52
+ // Setup Messaging Templates
66
53
  setupTemplates(unchainedAPI);
67
- // Setup file upload handlers
54
+ // Setup File Upload Handlers
68
55
  setupUploadHandlers(unchainedAPI);
69
- // Start the graphQL server
56
+ // Start GraphQL Server
70
57
  const graphqlHandler = await startAPIServer({
71
58
  unchainedAPI,
72
59
  roles: configuredRoles,
73
60
  ...arbitraryAPIServerConfiguration,
74
61
  });
75
- // Setup work queues for scheduled work
76
- if (isWorkQueueEnabled) {
77
- const handlers = setupWorkqueue(unchainedAPI, workQueueOptions);
78
- handlers.forEach((handler) => queueWorkers.push(handler));
79
- await setupCarts(unchainedAPI, workQueueOptions);
80
- }
81
- // Setup filter cache
82
- if (!workQueueOptions?.skipInvalidationOnStartup) {
83
- setImmediate(() => unchainedAPI.services.filters.invalidateFilterCache());
84
- }
62
+ // Setup Work Queue
63
+ await setupWorkqueue({
64
+ unchainedAPI,
65
+ migrationRepository,
66
+ ...workQueueOptions,
67
+ });
85
68
  const { default: packageJson } = await import(`${import.meta.dirname}/../package.json`, {
86
69
  with: { type: 'json' },
87
70
  });
@@ -94,6 +77,14 @@ export const startPlatform = async ({ modules, services, options, rolesOptions =
94
77
  defaultLogger.info(`Unchained Engine stopped`, { version: packageJson.version });
95
78
  process.exit(0);
96
79
  });
80
+ process.on('SIGINT', async () => {
81
+ defaultLogger.info('Stopping GraphQL server (SIGINT)');
82
+ await graphqlHandler.dispose();
83
+ defaultLogger.info('Stopping DB Connection (SIGINT)');
84
+ await stopDb();
85
+ defaultLogger.info(`Unchained Engine stopped`, { version: packageJson.version });
86
+ process.exit(0);
87
+ });
97
88
  return { unchainedAPI, graphqlHandler, db };
98
89
  };
99
90
  //# sourceMappingURL=startPlatform.js.map
@@ -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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"}
@@ -1,11 +1,11 @@
1
1
  import { UnchainedCore } from '@unchainedshop/core';
2
2
  import { Order } from '@unchainedshop/core-orders';
3
- type PriceFormatter = ({ amount, currency }: {
3
+ type PriceFormatter = ({ amount, currencyCode }: {
4
4
  amount: number;
5
- currency: string;
5
+ currencyCode: string;
6
6
  }) => string;
7
7
  export declare const getOrderPositionsData: (order: Order, params: {
8
- locale: string;
8
+ locale: Intl.Locale;
9
9
  useNetPrice?: boolean;
10
10
  format?: PriceFormatter;
11
11
  }, context: UnchainedCore) => Promise<{
@@ -20,7 +20,7 @@ export declare const getOrderPositionsData: (order: Order, params: {
20
20
  unitPrice: import("@unchainedshop/utils").Price;
21
21
  total: {
22
22
  amount: number;
23
- currency: string;
23
+ currencyCode: string;
24
24
  };
25
25
  };
26
26
  unitPrice: string;
@@ -1 +1 @@
1
- {"version":3,"file":"getOrderPositionsData.d.ts","sourceRoot":"","sources":["../../../src/templates/order-parser/getOrderPositionsData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAInD,KAAK,cAAc,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAK,MAAM,CAAC;AAE7F,eAAO,MAAM,qBAAqB,GAChC,OAAO,KAAK,EACZ,QAAQ;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,cAAc,CAAA;CAAE,EAC1E,SAAS,aAAa;;;;;;;;;;;;;;;;;IAuCvB,CAAC"}
1
+ {"version":3,"file":"getOrderPositionsData.d.ts","sourceRoot":"","sources":["../../../src/templates/order-parser/getOrderPositionsData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAInD,KAAK,cAAc,GAAG,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,KAAK,MAAM,CAAC;AAErG,eAAO,MAAM,qBAAqB,GAChC,OAAO,KAAK,EACZ,QAAQ;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,cAAc,CAAA;CAAE,EAC/E,SAAS,aAAa;;;;;;;;;;;;;;;;;IAuCvB,CAAC"}
@@ -13,7 +13,7 @@ export const getOrderPositionsData = async (order, params, context) => {
13
13
  });
14
14
  const positionPricing = ProductPricingSheet({
15
15
  calculation: orderPosition.calculation,
16
- currency: order.currency,
16
+ currencyCode: order.currencyCode,
17
17
  quantity: orderPosition.quantity,
18
18
  });
19
19
  const total = positionPricing.total({ useNetPrice });
@@ -1 +1 @@
1
- {"version":3,"file":"getOrderPositionsData.js","sourceRoot":"","sources":["../../../src/templates/order-parser/getOrderPositionsData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAI1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,KAAY,EACZ,MAA0E,EAC1E,OAAsB,EACtB,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC,aAAa,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IAChE,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC;QACvE,OAAO,EAAE,KAAK,CAAC,GAAG;KACnB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAChB,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;QACzC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAClE,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,mBAAmB,CAAC;YAC1C,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,aAAa,CAAC,QAAQ;SACjC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QAE7D,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC;QACrC,OAAO;YACL,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,aAAa,EAAE,aAAa,CAAC,aAAa;YAC1C,YAAY;YACZ,QAAQ;YACR,SAAS,EAAE;gBACT,SAAS;gBACT,KAAK;aACN;YACD,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;YAC5B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;SACrB,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"getOrderPositionsData.js","sourceRoot":"","sources":["../../../src/templates/order-parser/getOrderPositionsData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAI1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,KAAY,EACZ,MAA+E,EAC/E,OAAsB,EACtB,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC,aAAa,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IAChE,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC;QACvE,OAAO,EAAE,KAAK,CAAC,GAAG;KACnB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAChB,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;QACzC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAClE,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,mBAAmB,CAAC;YAC1C,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,QAAQ,EAAE,aAAa,CAAC,QAAQ;SACjC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QAE7D,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC;QACrC,OAAO;YACL,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,aAAa,EAAE,aAAa,CAAC,aAAa;YAC1C,YAAY;YACZ,QAAQ;YACR,SAAS,EAAE;gBACT,SAAS;gBACT,KAAK;aACN;YACD,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;YAC5B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;SACrB,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -1,34 +1,34 @@
1
1
  import { Order } from '@unchainedshop/core-orders';
2
2
  import { UnchainedCore } from '@unchainedshop/core';
3
- type PriceFormatter = ({ amount, currency }: {
3
+ type PriceFormatter = ({ amount, currencyCode }: {
4
4
  amount: number;
5
- currency: string;
5
+ currencyCode: string;
6
6
  }) => string;
7
7
  export declare const getOrderSummaryData: (order: Order, params: {
8
- locale?: string;
8
+ locale: Intl.Locale;
9
9
  useNetPrice?: boolean;
10
10
  format?: PriceFormatter;
11
11
  }, context: UnchainedCore) => Promise<{
12
12
  rawPrices: {
13
13
  items: {
14
14
  amount: number;
15
- currency: string;
15
+ currencyCode: string;
16
16
  };
17
17
  taxes: {
18
18
  amount: number;
19
- currency: string;
19
+ currencyCode: string;
20
20
  };
21
21
  delivery: {
22
22
  amount: number;
23
- currency: string;
23
+ currencyCode: string;
24
24
  };
25
25
  payment: {
26
26
  amount: number;
27
- currency: string;
27
+ currencyCode: string;
28
28
  };
29
29
  gross: {
30
30
  amount: number;
31
- currency: string;
31
+ currencyCode: string;
32
32
  };
33
33
  };
34
34
  prices: {
@@ -1 +1 @@
1
- {"version":3,"file":"getOrderSummaryData.d.ts","sourceRoot":"","sources":["../../../src/templates/order-parser/getOrderSummaryData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,aAAa,EAA8C,MAAM,qBAAqB,CAAC;AAGhG,KAAK,cAAc,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAK,MAAM,CAAC;AAE7F,eAAO,MAAM,mBAAmB,GAC9B,OAAO,KAAK,EACZ,QAAQ;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,cAAc,CAAA;CAAE,EAC3E,SAAS,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuEvB,CAAC"}
1
+ {"version":3,"file":"getOrderSummaryData.d.ts","sourceRoot":"","sources":["../../../src/templates/order-parser/getOrderSummaryData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,aAAa,EAA8C,MAAM,qBAAqB,CAAC;AAGhG,KAAK,cAAc,GAAG,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,KAAK,MAAM,CAAC;AAErG,eAAO,MAAM,mBAAmB,GAC9B,OAAO,KAAK,EACZ,QAAQ;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,cAAc,CAAA;CAAE,EAC/E,SAAS,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuEvB,CAAC"}
@@ -19,7 +19,7 @@ export const getOrderSummaryData = async (order, params, context) => {
19
19
  const billingAddress = ch.addressToString(order.billingAddress);
20
20
  const orderPricing = OrderPricingSheet({
21
21
  calculation: order.calculation,
22
- currency: order.currency,
22
+ currencyCode: order.currencyCode,
23
23
  });
24
24
  const paymentTotal = orderPricing.total({
25
25
  category: OrderPricingRowCategory.Payment,
@@ -1 +1 @@
1
- {"version":3,"file":"getOrderSummaryData.js","sourceRoot":"","sources":["../../../src/templates/order-parser/getOrderSummaryData.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAI1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,KAAY,EACZ,MAA2E,EAC3E,OAAsB,EACtB,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC,aAAa,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IAChE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC;QACjE,eAAe,EAAE,KAAK,CAAC,UAAU;KAClC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAClE,cAAc,EAAE,KAAK,CAAC,SAAS;KAChC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC;QAC1E,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;KAClD,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC3D,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;KACrD,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,EAAE,CAAC,eAAe,CACxC,aAAa,EAAE,OAAO,EAAE,eAAe,IAAI,KAAK,CAAC,cAAc,CAChE,CAAC;IACF,MAAM,cAAc,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,iBAAiB,CAAC;QACrC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC;QACtC,QAAQ,EAAE,uBAAuB,CAAC,OAAO;QACzC,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC;QACvC,QAAQ,EAAE,uBAAuB,CAAC,QAAQ;QAC1C,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC;QACpC,QAAQ,EAAE,uBAAuB,CAAC,KAAK;QACvC,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC;QACpC,QAAQ,EAAE,uBAAuB,CAAC,KAAK;QACvC,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC;IAC3C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC;IAE7C,OAAO;QACL,SAAS,EAAE;YACT,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,KAAK;SACb;QACD,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;YACzB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;YACzB,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC;YAC/B,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;SACrB;QACD,OAAO;QACP,QAAQ;QACR,eAAe;QACf,cAAc;KACf,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"getOrderSummaryData.js","sourceRoot":"","sources":["../../../src/templates/order-parser/getOrderSummaryData.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAI1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,KAAY,EACZ,MAA+E,EAC/E,OAAsB,EACtB,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC,aAAa,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IAChE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC;QACjE,eAAe,EAAE,KAAK,CAAC,UAAU;KAClC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAClE,cAAc,EAAE,KAAK,CAAC,SAAS;KAChC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC;QAC1E,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;KAClD,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC3D,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;KACrD,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,EAAE,CAAC,eAAe,CACxC,aAAa,EAAE,OAAO,EAAE,eAAe,IAAI,KAAK,CAAC,cAAc,CAChE,CAAC;IACF,MAAM,cAAc,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,iBAAiB,CAAC;QACrC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;KACjC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC;QACtC,QAAQ,EAAE,uBAAuB,CAAC,OAAO;QACzC,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC;QACvC,QAAQ,EAAE,uBAAuB,CAAC,QAAQ;QAC1C,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC;QACpC,QAAQ,EAAE,uBAAuB,CAAC,KAAK;QACvC,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC;QACpC,QAAQ,EAAE,uBAAuB,CAAC,KAAK;QACvC,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC;IAC3C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC;IAE7C,OAAO;QACL,SAAS,EAAE;YACT,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,KAAK;SACb;QACD,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;YACzB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;YACzB,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC;YAC/B,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;SACrB;QACD,OAAO;QACP,QAAQ;QACR,eAAe;QACf,cAAc;KACf,CAAC;AACJ,CAAC,CAAC"}
@@ -4,7 +4,7 @@ import { Order } from '@unchainedshop/core-orders';
4
4
  import { UnchainedCore } from '@unchainedshop/core';
5
5
  export declare const transformOrderToText: ({ order, locale }: {
6
6
  order: Order;
7
- locale: string;
7
+ locale: Intl.Locale;
8
8
  }, context: UnchainedCore) => Promise<string>;
9
9
  export { getOrderPositionsData, getOrderSummaryData };
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/order-parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAkCpD,eAAO,MAAM,oBAAoB,GAC/B,mBAAmB;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACnD,SAAS,aAAa,oBAavB,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/order-parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAkCpD,eAAO,MAAM,oBAAoB,GAC/B,mBAAmB;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,EACxD,SAAS,aAAa,oBAavB,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/order-parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BpB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,EAAE,KAAK,EAAE,MAAM,EAAoC,EACnD,OAAsB,EACtB,EAAE;IACF,OAAO,QAAQ,CAAC,MAAM,CACpB,YAAY,EACZ;QACE,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE;QACnD,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,MAAM,mBAAmB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;QAC9D,SAAS,EAAE,MAAM,qBAAqB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;KACnE,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/order-parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BpB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,EAAE,KAAK,EAAE,MAAM,EAAyC,EACxD,OAAsB,EACtB,EAAE;IACF,OAAO,QAAQ,CAAC,MAAM,CACpB,YAAY,EACZ;QACE,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE;QACnD,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,MAAM,mBAAmB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;QAC9D,SAAS,EAAE,MAAM,qBAAqB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;KACnE,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC"}
@@ -22,7 +22,7 @@ export const resolveForwardDeliveryTemplate = async ({ config, orderId }, contex
22
22
  const text = mustache.render(textTemplate, {
23
23
  shopName: EMAIL_WEBSITE_NAME,
24
24
  shopUrl: EMAIL_WEBSITE_URL,
25
- orderDetails: await transformOrderToText({ order, locale: systemLocale.baseName }, context),
25
+ orderDetails: await transformOrderToText({ order, locale: systemLocale }, context),
26
26
  }, undefined, { escape: (t) => t });
27
27
  return [
28
28
  {
@@ -1 +1 @@
1
- {"version":3,"file":"resolveForwardDeliveryTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveForwardDeliveryTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;CAMpB,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAqB,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE;IACrG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;QACzD,OAAO;YACL,GAAG,GAAG;YACN,CAAC,GAAG,CAAC,EAAE,KAAK;SACb,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,OAAO,GAAG,GAAG,kBAAkB,UAAU,KAAK,CAAC,WAAW,EAAE,CAAC;IAEnE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,YAAY,EACZ;QACE,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC;KAC5F,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG,kBAAkB,KAAK,YAAY,CAAC,IAAI,IAAI,UAAU,IAAI,yBAAyB,GAAG;gBAC/F,EAAE,EAAE,YAAY,CAAC,EAAE,IAAI,wBAAwB;gBAC/C,EAAE,EAAE,YAAY,CAAC,EAAE;gBACnB,OAAO;gBACP,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"resolveForwardDeliveryTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveForwardDeliveryTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;CAMpB,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAqB,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE;IACrG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;QACzD,OAAO;YACL,GAAG,GAAG;YACN,CAAC,GAAG,CAAC,EAAE,KAAK;SACb,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,OAAO,GAAG,GAAG,kBAAkB,UAAU,KAAK,CAAC,WAAW,EAAE,CAAC;IAEnE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,YAAY,EACZ;QACE,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC;KACnF,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG,kBAAkB,KAAK,YAAY,CAAC,IAAI,IAAI,UAAU,IAAI,yBAAyB,GAAG;gBAC/F,EAAE,EAAE,YAAY,CAAC,EAAE,IAAI,wBAAwB;gBAC/C,EAAE,EAAE,YAAY,CAAC,EAAE;gBACnB,OAAO;gBACP,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -18,7 +18,7 @@ export const resolveOrderConfirmationTemplate = async ({ orderId, locale }, cont
18
18
  const text = mustache.render(textTemplate, {
19
19
  shopName: EMAIL_WEBSITE_NAME,
20
20
  shopUrl: EMAIL_WEBSITE_URL,
21
- orderDetails: await transformOrderToText({ order, locale }, context),
21
+ orderDetails: await transformOrderToText({ order, locale: new Intl.Locale(locale) }, context),
22
22
  }, undefined, { escape: (t) => t });
23
23
  return [
24
24
  {
@@ -1 +1 @@
1
- {"version":3,"file":"resolveOrderConfirmationTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveOrderConfirmationTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;CAMpB,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAGxC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,KAAK,CAAC,WAAW,EAAE,CAAC;IAE7C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,YAAY,EACZ;QACE,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;KACrE,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG,kBAAkB,KAAK,UAAU,IAAI,yBAAyB,GAAG;gBAC1E,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;gBAC9B,OAAO;gBACP,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"resolveOrderConfirmationTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveOrderConfirmationTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;CAMpB,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAGxC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,KAAK,CAAC,WAAW,EAAE,CAAC;IAE7C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,YAAY,EACZ;QACE,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC;KAC9F,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG,kBAAkB,KAAK,UAAU,IAAI,yBAAyB,GAAG;gBAC1E,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;gBAC9B,OAAO;gBACP,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -22,7 +22,7 @@ export const resolveOrderRejectionTemplate = async ({ orderId, locale }, context
22
22
  const text = mustache.render(textTemplate, {
23
23
  shopName: EMAIL_WEBSITE_NAME,
24
24
  shopUrl: EMAIL_WEBSITE_URL,
25
- orderDetails: await transformOrderToText({ order, locale }, context),
25
+ orderDetails: await transformOrderToText({ order, locale: new Intl.Locale(locale) }, context),
26
26
  }, undefined, { escape: (t) => t });
27
27
  return [
28
28
  {
@@ -1 +1 @@
1
- {"version":3,"file":"resolveOrderRejectionTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveOrderRejectionTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;;;;;CAUpB,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAqB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE;IACpG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,kBAAkB,KAAK,CAAC,WAAW,EAAE,CAAC;IAEtD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,YAAY,EACZ;QACE,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;KACrE,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG,kBAAkB,KAAK,UAAU,IAAI,yBAAyB,GAAG;gBAC1E,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;gBAC9B,OAAO;gBACP,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"resolveOrderRejectionTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveOrderRejectionTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;;;;;CAUpB,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAqB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE;IACpG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,kBAAkB,KAAK,CAAC,WAAW,EAAE,CAAC;IAEtD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,YAAY,EACZ;QACE,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC;KAC9F,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG,kBAAkB,KAAK,UAAU,IAAI,yBAAyB,GAAG;gBAC1E,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;gBAC9B,OAAO;gBACP,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/platform",
3
- "version": "3.1.11",
3
+ "version": "4.0.0-rc.2",
4
4
  "main": "lib/platform-index.js",
5
5
  "types": "lib/platform-index.d.ts",
6
6
  "type": "module",
@@ -34,22 +34,22 @@
34
34
  "node": ">=22.0.0"
35
35
  },
36
36
  "dependencies": {
37
- "@unchainedshop/api": "^3.1.7",
38
- "@unchainedshop/core": "^3.1.7",
39
- "@unchainedshop/events": "^3.1.7",
40
- "@unchainedshop/file-upload": "^3.1.7",
41
- "@unchainedshop/logger": "^3.1.7",
42
- "@unchainedshop/mongodb": "^3.1.7",
43
- "@unchainedshop/plugins": "^3.1.7",
44
- "@unchainedshop/roles": "^3.1.7",
45
- "@unchainedshop/utils": "^3.1.7",
37
+ "@unchainedshop/api": "^4.0.0-rc.2",
38
+ "@unchainedshop/core": "^4.0.0-rc.2",
39
+ "@unchainedshop/events": "^4.0.0-rc.2",
40
+ "@unchainedshop/file-upload": "^4.0.0-rc.2",
41
+ "@unchainedshop/logger": "^4.0.0-rc.2",
42
+ "@unchainedshop/mongodb": "^4.0.0-rc.2",
43
+ "@unchainedshop/plugins": "^4.0.0-rc.2",
44
+ "@unchainedshop/roles": "^4.0.0-rc.2",
45
+ "@unchainedshop/utils": "^4.0.0-rc.2",
46
46
  "mustache": "^4.2.0",
47
47
  "safe-stable-stringify": "^2.5.0"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@types/mustache": "^4.2.5",
51
- "@types/node": "^22.13.14",
52
- "tsx": "^4.19.3",
53
- "typescript": "^5.8.2"
51
+ "@types/node": "^22.15.3",
52
+ "tsx": "^4.19.4",
53
+ "typescript": "^5.8.3"
54
54
  }
55
55
  }
@@ -7,11 +7,11 @@ import { createLogger } from '@unchainedshop/logger';
7
7
 
8
8
  const logger = createLogger('unchained:bulk-import');
9
9
 
10
- export type BulkImportOperationResult = {
10
+ export interface BulkImportOperationResult {
11
11
  entity: string;
12
12
  operation: string;
13
13
  success: boolean;
14
- };
14
+ }
15
15
  export type BulkImportOperation = (
16
16
  payload: any,
17
17
  options: {
@@ -23,9 +23,7 @@ export type BulkImportOperation = (
23
23
  unchainedAPI: UnchainedCore,
24
24
  ) => Promise<BulkImportOperationResult>;
25
25
 
26
- export type BulkImportHandler = {
27
- [x: string]: BulkImportOperation;
28
- };
26
+ export type BulkImportHandler = Record<string, BulkImportOperation>;
29
27
 
30
28
  let bulkOperationHandlers: Record<string, BulkImportHandler> = {};
31
29
 
@@ -1,29 +1,89 @@
1
- import { UnchainedCore } from '@unchainedshop/core';
2
- import { EventListenerWorker } from '@unchainedshop/plugins/worker/EventListenerWorker.js';
3
- import { IntervalWorker, IntervalWorkerParams } from '@unchainedshop/plugins/worker/IntervalWorker.js';
4
- import { FailedRescheduler } from '@unchainedshop/plugins/worker/FailedRescheduler.js';
5
- import { WorkData } from '@unchainedshop/core-worker';
6
- export interface SetupWorkqueueOptions {
7
- batchCount?: number;
1
+ import {
2
+ EventListenerWorker,
3
+ FailedRescheduler,
4
+ FailedReschedulerParams,
5
+ IntervalWorker,
6
+ IntervalWorkerParams,
7
+ IScheduler,
8
+ IWorker,
9
+ UnchainedCore,
10
+ } from '@unchainedshop/core';
11
+ import { runMigrations } from '../migrations/runMigrations.js';
12
+ import { MigrationRepository } from '@unchainedshop/mongodb';
13
+
14
+ export type WorkQueueQueueManager = IWorker<any> | IScheduler<any>;
15
+ export interface SetupWorkqueueOptions extends IntervalWorkerParams, FailedReschedulerParams {
16
+ enabledQueueManagers?: WorkQueueQueueManager[];
17
+ invalidateProviders?: boolean;
18
+ providerInvalidationMaxAgeDays?: number;
19
+ assignCartForUsers?: boolean;
8
20
  disableWorker?: boolean;
9
- schedule?: IntervalWorkerParams['schedule'];
10
- workerId?: string;
11
- retryInput?: (
12
- workData: WorkData,
13
- priorInput: Record<string, any>,
14
- ) => Promise<Record<string, any> | null>;
21
+ skipInvalidationOnStartup?: boolean;
15
22
  }
16
23
 
17
- export const setupWorkqueue = (
18
- unchainedAPI: UnchainedCore,
19
- workQueueOptions: SetupWorkqueueOptions = {},
20
- ) => {
21
- const handlers = [
22
- FailedRescheduler.actions(workQueueOptions, unchainedAPI),
23
- EventListenerWorker.actions(workQueueOptions, unchainedAPI),
24
- IntervalWorker.actions(workQueueOptions, unchainedAPI),
25
- ];
26
-
27
- handlers.forEach((handler) => handler.start());
28
- return handlers;
24
+ const {
25
+ UNCHAINED_DISABLE_PROVIDER_INVALIDATION,
26
+ UNCHAINED_DISABLE_WORKER,
27
+ UNCHAINED_ASSIGN_CART_FOR_USERS,
28
+ } = process.env;
29
+
30
+ export const defaultQueueManagers: WorkQueueQueueManager[] = [
31
+ FailedRescheduler,
32
+ EventListenerWorker,
33
+ IntervalWorker,
34
+ ];
35
+
36
+ export const queueWorkers: any[] = [];
37
+
38
+ export const setupWorkqueue = async ({
39
+ unchainedAPI,
40
+ migrationRepository,
41
+ ...workQueueOptions
42
+ }: {
43
+ unchainedAPI: UnchainedCore;
44
+ migrationRepository: MigrationRepository<UnchainedCore>;
45
+ } & SetupWorkqueueOptions) => {
46
+ if (workQueueOptions.disableWorker || UNCHAINED_DISABLE_WORKER) return;
47
+
48
+ // Run migrations
49
+ await runMigrations({ migrationRepository, unchainedAPI });
50
+
51
+ // Start queue managers
52
+ (workQueueOptions?.enabledQueueManagers || defaultQueueManagers).forEach((f) => {
53
+ const handler = f.actions(workQueueOptions, unchainedAPI);
54
+ queueWorkers.push(handler);
55
+ handler.start();
56
+ });
57
+
58
+ // Invalidate providers on carts
59
+ if (workQueueOptions.invalidateProviders ?? !UNCHAINED_DISABLE_PROVIDER_INVALIDATION) {
60
+ const orders = await unchainedAPI.modules.orders.findCartsToInvalidate(
61
+ workQueueOptions.providerInvalidationMaxAgeDays,
62
+ );
63
+ await Promise.allSettled(
64
+ orders.map(async (order) => {
65
+ await unchainedAPI.services.orders.updateCalculation(order._id);
66
+ }),
67
+ );
68
+ }
69
+
70
+ // Ensure users have carts
71
+ if (workQueueOptions.assignCartForUsers ?? Boolean(UNCHAINED_ASSIGN_CART_FOR_USERS)) {
72
+ const users = await unchainedAPI.modules.users.findUsers({});
73
+
74
+ await Promise.all(
75
+ users.map((user) => {
76
+ const locale = unchainedAPI.modules.users.userLocale(user);
77
+ return unchainedAPI.services.orders.nextUserCart({
78
+ user,
79
+ countryCode: locale.region,
80
+ });
81
+ }),
82
+ );
83
+ }
84
+
85
+ // Setup filter cache
86
+ if (!workQueueOptions?.skipInvalidationOnStartup) {
87
+ setImmediate(() => unchainedAPI.services.filters.invalidateFilterCache());
88
+ }
29
89
  };
@@ -4,10 +4,8 @@ import { initDb, mongodb, stopDb } from '@unchainedshop/mongodb';
4
4
  import { defaultLogger } from '@unchainedshop/logger';
5
5
  import { UnchainedCore } from '@unchainedshop/core';
6
6
  import { BulkImportHandler, createBulkImporterFactory } from './bulk-importer/createBulkImporter.js';
7
- import { runMigrations } from './migrations/runMigrations.js';
8
7
  import { setupAccounts } from './setup/setupAccounts.js';
9
8
  import { setupUploadHandlers } from './setup/setupUploadHandlers.js';
10
- import { SetupCartsOptions, setupCarts } from './setup/setupCarts.js';
11
9
  import { setupTemplates, MessageTypes } from './setup/setupTemplates.js';
12
10
  import { SetupWorkqueueOptions, setupWorkqueue } from './setup/setupWorkqueue.js';
13
11
  import { createMigrationRepository } from './migrations/migrationRepository.js';
@@ -19,7 +17,7 @@ export type PlatformOptions = {
19
17
  handlers?: Record<string, BulkImportHandler>;
20
18
  };
21
19
  rolesOptions?: IRoleOptionConfig;
22
- workQueueOptions?: SetupWorkqueueOptions & SetupCartsOptions & { skipInvalidationOnStartup?: boolean };
20
+ workQueueOptions?: SetupWorkqueueOptions;
23
21
  } & Omit<UnchainedCoreOptions, 'bulkImporter' | 'migrationRepository' | 'db'> &
24
22
  Omit<UnchainedServerOptions, 'roles' | 'unchainedAPI'>;
25
23
 
@@ -31,8 +29,6 @@ const REQUIRED_ENV_VARIABLES = [
31
29
  'UNCHAINED_TOKEN_SECRET',
32
30
  ];
33
31
 
34
- const { UNCHAINED_DISABLE_WORKER } = process.env;
35
-
36
32
  const exitOnMissingEnvironmentVariables = () => {
37
33
  const failedEnv = REQUIRED_ENV_VARIABLES.filter((key) => !process.env[key]);
38
34
  if (failedEnv.length > 0) {
@@ -50,13 +46,6 @@ const existOnInvalidEnvironmentVariables = () => {
50
46
  }
51
47
  };
52
48
 
53
- const checkWorkQueueEnabled = (options: SetupWorkqueueOptions) => {
54
- if (options?.disableWorker) return false;
55
- return !UNCHAINED_DISABLE_WORKER;
56
- };
57
-
58
- export const queueWorkers: Array<any> = [];
59
-
60
49
  export const startPlatform = async ({
61
50
  modules,
62
51
  services,
@@ -73,8 +62,6 @@ export const startPlatform = async ({
73
62
  exitOnMissingEnvironmentVariables();
74
63
  existOnInvalidEnvironmentVariables();
75
64
 
76
- const isWorkQueueEnabled = checkWorkQueueEnabled(workQueueOptions);
77
-
78
65
  const configuredRoles = roles.configureRoles(rolesOptions);
79
66
 
80
67
  // Configure database
@@ -94,37 +81,28 @@ export const startPlatform = async ({
94
81
  options,
95
82
  });
96
83
 
97
- if (isWorkQueueEnabled) {
98
- await runMigrations({ migrationRepository, unchainedAPI });
99
- }
100
-
101
- // Setup accountsjs specific extensions and event handlers
84
+ // Setup Accounts specific extensions and event handlers
102
85
  setupAccounts(unchainedAPI);
103
86
 
104
- // Setup email templates
87
+ // Setup Messaging Templates
105
88
  setupTemplates(unchainedAPI);
106
89
 
107
- // Setup file upload handlers
90
+ // Setup File Upload Handlers
108
91
  setupUploadHandlers(unchainedAPI);
109
92
 
110
- // Start the graphQL server
93
+ // Start GraphQL Server
111
94
  const graphqlHandler = await startAPIServer({
112
95
  unchainedAPI,
113
96
  roles: configuredRoles,
114
97
  ...arbitraryAPIServerConfiguration,
115
98
  });
116
99
 
117
- // Setup work queues for scheduled work
118
- if (isWorkQueueEnabled) {
119
- const handlers = setupWorkqueue(unchainedAPI, workQueueOptions);
120
- handlers.forEach((handler) => queueWorkers.push(handler));
121
- await setupCarts(unchainedAPI, workQueueOptions);
122
- }
123
-
124
- // Setup filter cache
125
- if (!workQueueOptions?.skipInvalidationOnStartup) {
126
- setImmediate(() => unchainedAPI.services.filters.invalidateFilterCache());
127
- }
100
+ // Setup Work Queue
101
+ await setupWorkqueue({
102
+ unchainedAPI,
103
+ migrationRepository,
104
+ ...workQueueOptions,
105
+ });
128
106
 
129
107
  const { default: packageJson } = await import(`${import.meta.dirname}/../package.json`, {
130
108
  with: { type: 'json' },
@@ -140,5 +118,14 @@ export const startPlatform = async ({
140
118
  process.exit(0);
141
119
  });
142
120
 
121
+ process.on('SIGINT', async () => {
122
+ defaultLogger.info('Stopping GraphQL server (SIGINT)');
123
+ await graphqlHandler.dispose();
124
+ defaultLogger.info('Stopping DB Connection (SIGINT)');
125
+ await stopDb();
126
+ defaultLogger.info(`Unchained Engine stopped`, { version: packageJson.version });
127
+ process.exit(0);
128
+ });
129
+
143
130
  return { unchainedAPI, graphqlHandler, db };
144
131
  };
@@ -3,11 +3,11 @@ import { Order } from '@unchainedshop/core-orders';
3
3
  import { ProductPricingSheet } from '@unchainedshop/core';
4
4
  import { ch } from '@unchainedshop/utils';
5
5
 
6
- type PriceFormatter = ({ amount, currency }: { amount: number; currency: string }) => string;
6
+ type PriceFormatter = ({ amount, currencyCode }: { amount: number; currencyCode: string }) => string;
7
7
 
8
8
  export const getOrderPositionsData = async (
9
9
  order: Order,
10
- params: { locale: string; useNetPrice?: boolean; format?: PriceFormatter },
10
+ params: { locale: Intl.Locale; useNetPrice?: boolean; format?: PriceFormatter },
11
11
  context: UnchainedCore,
12
12
  ) => {
13
13
  const { modules } = context;
@@ -25,7 +25,7 @@ export const getOrderPositionsData = async (
25
25
 
26
26
  const positionPricing = ProductPricingSheet({
27
27
  calculation: orderPosition.calculation,
28
- currency: order.currency,
28
+ currencyCode: order.currencyCode,
29
29
  quantity: orderPosition.quantity,
30
30
  });
31
31
 
@@ -2,11 +2,11 @@ import { Order } from '@unchainedshop/core-orders';
2
2
  import { UnchainedCore, OrderPricingSheet, OrderPricingRowCategory } from '@unchainedshop/core';
3
3
  import { ch } from '@unchainedshop/utils';
4
4
 
5
- type PriceFormatter = ({ amount, currency }: { amount: number; currency: string }) => string;
5
+ type PriceFormatter = ({ amount, currencyCode }: { amount: number; currencyCode: string }) => string;
6
6
 
7
7
  export const getOrderSummaryData = async (
8
8
  order: Order,
9
- params: { locale?: string; useNetPrice?: boolean; format?: PriceFormatter },
9
+ params: { locale: Intl.Locale; useNetPrice?: boolean; format?: PriceFormatter },
10
10
  context: UnchainedCore,
11
11
  ) => {
12
12
  const { modules } = context;
@@ -30,7 +30,7 @@ export const getOrderSummaryData = async (
30
30
  const billingAddress = ch.addressToString(order.billingAddress);
31
31
  const orderPricing = OrderPricingSheet({
32
32
  calculation: order.calculation,
33
- currency: order.currency,
33
+ currencyCode: order.currencyCode,
34
34
  });
35
35
 
36
36
  const paymentTotal = orderPricing.total({
@@ -36,7 +36,7 @@ Total: {{summary.prices.gross}}
36
36
  `;
37
37
 
38
38
  export const transformOrderToText = async (
39
- { order, locale }: { order: Order; locale: string },
39
+ { order, locale }: { order: Order; locale: Intl.Locale },
40
40
  context: UnchainedCore,
41
41
  ) => {
42
42
  return mustache.render(
@@ -31,7 +31,7 @@ export const resolveForwardDeliveryTemplate: TemplateResolver = async ({ config,
31
31
  {
32
32
  shopName: EMAIL_WEBSITE_NAME,
33
33
  shopUrl: EMAIL_WEBSITE_URL,
34
- orderDetails: await transformOrderToText({ order, locale: systemLocale.baseName }, context),
34
+ orderDetails: await transformOrderToText({ order, locale: systemLocale }, context),
35
35
  },
36
36
  undefined,
37
37
  { escape: (t) => t },
@@ -30,7 +30,7 @@ export const resolveOrderConfirmationTemplate: TemplateResolver<{
30
30
  {
31
31
  shopName: EMAIL_WEBSITE_NAME,
32
32
  shopUrl: EMAIL_WEBSITE_URL,
33
- orderDetails: await transformOrderToText({ order, locale }, context),
33
+ orderDetails: await transformOrderToText({ order, locale: new Intl.Locale(locale) }, context),
34
34
  },
35
35
  undefined,
36
36
  { escape: (t) => t },
@@ -31,7 +31,7 @@ export const resolveOrderRejectionTemplate: TemplateResolver = async ({ orderId,
31
31
  {
32
32
  shopName: EMAIL_WEBSITE_NAME,
33
33
  shopUrl: EMAIL_WEBSITE_URL,
34
- orderDetails: await transformOrderToText({ order, locale }, context),
34
+ orderDetails: await transformOrderToText({ order, locale: new Intl.Locale(locale) }, context),
35
35
  },
36
36
  undefined,
37
37
  { escape: (t) => t },
@@ -1,35 +0,0 @@
1
- import { UnchainedCore } from '@unchainedshop/core';
2
-
3
- export interface SetupCartsOptions {
4
- invalidateProviders?: boolean;
5
- providerInvalidationMaxAgeDays?: number;
6
- assignCartForUsers?: boolean;
7
- }
8
- const { UNCHAINED_DISABLE_PROVIDER_INVALIDATION, UNCHAINED_ASSIGN_CART_FOR_USERS } = process.env;
9
-
10
- export const setupCarts = async (unchainedAPI: UnchainedCore, options: SetupCartsOptions = {}) => {
11
- if (options.invalidateProviders ?? !UNCHAINED_DISABLE_PROVIDER_INVALIDATION) {
12
- const orders = await unchainedAPI.modules.orders.findCartsToInvalidate(
13
- options.providerInvalidationMaxAgeDays,
14
- );
15
- await Promise.allSettled(
16
- orders.map(async (order) => {
17
- await unchainedAPI.services.orders.updateCalculation(order._id);
18
- }),
19
- );
20
- }
21
-
22
- if (options.assignCartForUsers ?? Boolean(UNCHAINED_ASSIGN_CART_FOR_USERS)) {
23
- const users = await unchainedAPI.modules.users.findUsers({});
24
-
25
- await Promise.all(
26
- users.map((user) => {
27
- const locale = unchainedAPI.modules.users.userLocale(user);
28
- return unchainedAPI.services.orders.nextUserCart({
29
- user,
30
- countryCode: locale.region,
31
- });
32
- }),
33
- );
34
- }
35
- };