@unchainedshop/core-enrollments 4.0.0-rc.9 → 4.0.1

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 (37) hide show
  1. package/lib/db/EnrollmentStatus.d.ts +7 -0
  2. package/lib/db/EnrollmentStatus.d.ts.map +1 -0
  3. package/lib/db/EnrollmentStatus.js +8 -0
  4. package/lib/db/EnrollmentStatus.js.map +1 -0
  5. package/lib/db/EnrollmentsCollection.d.ts +20 -9
  6. package/lib/db/EnrollmentsCollection.d.ts.map +1 -1
  7. package/lib/db/EnrollmentsCollection.js +25 -21
  8. package/lib/db/EnrollmentsCollection.js.map +1 -1
  9. package/lib/db/EnrollmentsSchema.d.ts +4 -0
  10. package/lib/db/EnrollmentsSchema.d.ts.map +1 -0
  11. package/lib/db/EnrollmentsSchema.js +46 -0
  12. package/lib/db/EnrollmentsSchema.js.map +1 -0
  13. package/lib/director/EnrollmentAdapter.d.ts +7 -0
  14. package/lib/director/EnrollmentAdapter.d.ts.map +1 -0
  15. package/lib/director/EnrollmentAdapter.js +73 -0
  16. package/lib/director/EnrollmentAdapter.js.map +1 -0
  17. package/lib/director/EnrollmentDirector.d.ts +3 -0
  18. package/lib/director/EnrollmentDirector.d.ts.map +1 -0
  19. package/lib/director/EnrollmentDirector.js +46 -0
  20. package/lib/director/EnrollmentDirector.js.map +1 -0
  21. package/lib/director/EnrollmentError.d.ts +7 -0
  22. package/lib/director/EnrollmentError.d.ts.map +1 -0
  23. package/lib/director/EnrollmentError.js +8 -0
  24. package/lib/director/EnrollmentError.js.map +1 -0
  25. package/lib/enrollments-settings.d.ts +6 -8
  26. package/lib/enrollments-settings.d.ts.map +1 -1
  27. package/lib/enrollments-settings.js +5 -5
  28. package/lib/enrollments-settings.js.map +1 -1
  29. package/lib/module/configureEnrollmentsModule.d.ts +18 -24
  30. package/lib/module/configureEnrollmentsModule.d.ts.map +1 -1
  31. package/lib/module/configureEnrollmentsModule.js +16 -8
  32. package/lib/module/configureEnrollmentsModule.js.map +1 -1
  33. package/package.json +4 -4
  34. package/src/db/EnrollmentsCollection.ts +43 -29
  35. package/src/enrollments-settings.ts +12 -12
  36. package/src/module/configureEnrollmentsModule.ts +24 -27
  37. package/tsconfig.json +2 -1
@@ -0,0 +1,7 @@
1
+ export declare enum EnrollmentStatus {
2
+ INITIAL = "INITIAL",
3
+ ACTIVE = "ACTIVE",
4
+ PAUSED = "PAUSED",
5
+ TERMINATED = "TERMINATED"
6
+ }
7
+ //# sourceMappingURL=EnrollmentStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnrollmentStatus.d.ts","sourceRoot":"","sources":["../../src/db/EnrollmentStatus.ts"],"names":[],"mappings":"AAAA,oBAAY,gBAAgB;IAC1B,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,UAAU,eAAe;CAC1B"}
@@ -0,0 +1,8 @@
1
+ export var EnrollmentStatus;
2
+ (function (EnrollmentStatus) {
3
+ EnrollmentStatus["INITIAL"] = "INITIAL";
4
+ EnrollmentStatus["ACTIVE"] = "ACTIVE";
5
+ EnrollmentStatus["PAUSED"] = "PAUSED";
6
+ EnrollmentStatus["TERMINATED"] = "TERMINATED";
7
+ })(EnrollmentStatus || (EnrollmentStatus = {}));
8
+ //# sourceMappingURL=EnrollmentStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnrollmentStatus.js","sourceRoot":"","sources":["../../src/db/EnrollmentStatus.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,6CAAyB,CAAA;AAC3B,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,QAK3B"}
@@ -10,7 +10,7 @@ export interface EnrollmentPlan {
10
10
  configuration: {
11
11
  key: string;
12
12
  value: string;
13
- }[];
13
+ }[] | null;
14
14
  productId: string;
15
15
  quantity: number;
16
16
  }
@@ -20,17 +20,28 @@ export declare enum EnrollmentStatus {
20
20
  PAUSED = "PAUSED",
21
21
  TERMINATED = "TERMINATED"
22
22
  }
23
- export type Enrollment = {
24
- _id?: string;
25
- billingAddress: Address;
23
+ export interface EnrollmentOrderPositionTemplate {
24
+ context?: any;
26
25
  configuration?: {
27
26
  key: string;
28
27
  value: string;
29
28
  }[];
29
+ originalProductId: string;
30
+ productId: string;
31
+ quantity: number;
32
+ quotationId?: string;
33
+ }
34
+ export type Enrollment = {
35
+ _id: string;
36
+ billingAddress: Address;
37
+ configuration: {
38
+ key: string;
39
+ value: string;
40
+ }[] | null;
30
41
  contact: Contact;
31
42
  context?: any;
32
- countryCode?: string;
33
- currencyCode?: string;
43
+ countryCode: string;
44
+ currencyCode: string;
34
45
  delivery: {
35
46
  deliveryProviderId?: string;
36
47
  context?: any;
@@ -39,14 +50,14 @@ export type Enrollment = {
39
50
  orderIdForFirstPeriod?: string;
40
51
  expires?: Date;
41
52
  meta?: any;
42
- payment: {
43
- paymentProviderId?: string;
53
+ payment?: {
54
+ paymentProviderId: string;
44
55
  context?: any;
45
56
  };
46
57
  periods: EnrollmentPeriod[];
47
58
  productId: string;
48
59
  quantity?: number;
49
- status: EnrollmentStatus;
60
+ status: EnrollmentStatus | null;
50
61
  userId: string;
51
62
  } & LogFields & TimestampFields;
52
63
  export declare const EnrollmentsCollection: (db: mongodb.Db) => Promise<mongodb.Collection<Enrollment>>;
@@ -1 +1 @@
1
- {"version":3,"file":"EnrollmentsCollection.d.ts","sourceRoot":"","sources":["../../src/db/EnrollmentsCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiD,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,IAAI,CAAC;IACZ,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,oBAAY,gBAAgB;IAC1B,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,UAAU,eAAe;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QACR,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,EAAE;QACP,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;IACF,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,SAAS,GACX,eAAe,CAAC;AAElB,eAAO,MAAM,qBAAqB,GAAU,IAAI,OAAO,CAAC,EAAE,4CAiCzD,CAAC"}
1
+ {"version":3,"file":"EnrollmentsCollection.d.ts","sourceRoot":"","sources":["../../src/db/EnrollmentsCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiD,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,IAAI,CAAC;IACZ,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI,CAAC;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,oBAAY,gBAAgB;IAC1B,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,aAAa,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI,CAAC;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE;QACR,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE;QACR,iBAAiB,EAAE,MAAM,CAAC;QAC1B,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;IACF,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,SAAS,GACX,eAAe,CAAC;AAElB,eAAO,MAAM,qBAAqB,GAAU,IAAI,OAAO,CAAC,EAAE,4CAsCzD,CAAC"}
@@ -8,33 +8,37 @@ export var EnrollmentStatus;
8
8
  })(EnrollmentStatus || (EnrollmentStatus = {}));
9
9
  export const EnrollmentsCollection = async (db) => {
10
10
  const Enrollments = db.collection('enrollments');
11
+ if (!isDocumentDBCompatModeEnabled()) {
12
+ await buildDbIndexes(Enrollments, [
13
+ {
14
+ index: {
15
+ _id: 'text',
16
+ userId: 'text',
17
+ enrollmentNumber: 'text',
18
+ status: 'text',
19
+ 'contact.telNumber': 'text',
20
+ 'contact.emailAddress': 'text',
21
+ },
22
+ options: {
23
+ weights: {
24
+ _id: 8,
25
+ userId: 3,
26
+ enrollmentNumber: 6,
27
+ 'contact.telNumber': 5,
28
+ 'contact.emailAddress': 4,
29
+ status: 1,
30
+ },
31
+ name: 'enrollment_fulltext_search',
32
+ },
33
+ },
34
+ ]);
35
+ }
11
36
  // Enrollment Indexes
12
37
  await buildDbIndexes(Enrollments, [
13
38
  { index: { userId: 1 } },
14
39
  { index: { productId: 1 } },
15
40
  { index: { status: 1 } },
16
41
  { index: { enrollmentNumber: 1 } },
17
- !isDocumentDBCompatModeEnabled() && {
18
- index: {
19
- _id: 'text',
20
- userId: 'text',
21
- enrollmentNumber: 'text',
22
- status: 'text',
23
- 'contact.telNumber': 'text',
24
- 'contact.emailAddress': 'text',
25
- },
26
- options: {
27
- weights: {
28
- _id: 8,
29
- userId: 3,
30
- enrollmentNumber: 6,
31
- 'contact.telNumber': 5,
32
- 'contact.emailAddress': 4,
33
- status: 1,
34
- },
35
- name: 'enrollment_fulltext_search',
36
- },
37
- },
38
42
  ]);
39
43
  return Enrollments;
40
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"EnrollmentsCollection.js","sourceRoot":"","sources":["../../src/db/EnrollmentsCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAgBhG,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,6CAAyB,CAAA;AAC3B,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,QAK3B;AA8BD,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAAc,EAAE,EAAE;IAC5D,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAa,aAAa,CAAC,CAAC;IAE7D,qBAAqB;IACrB,MAAM,cAAc,CAAa,WAAW,EAAE;QAC5C,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;QACxB,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;QAC3B,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;QACxB,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE;QAClC,CAAC,6BAA6B,EAAE,IAAI;YAClC,KAAK,EAAE;gBACL,GAAG,EAAE,MAAM;gBACX,MAAM,EAAE,MAAM;gBACd,gBAAgB,EAAE,MAAM;gBACxB,MAAM,EAAE,MAAM;gBACd,mBAAmB,EAAE,MAAM;gBAC3B,sBAAsB,EAAE,MAAM;aACxB;YACR,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,GAAG,EAAE,CAAC;oBACN,MAAM,EAAE,CAAC;oBACT,gBAAgB,EAAE,CAAC;oBACnB,mBAAmB,EAAE,CAAC;oBACtB,sBAAsB,EAAE,CAAC;oBACzB,MAAM,EAAE,CAAC;iBACV;gBACD,IAAI,EAAE,4BAA4B;aACnC;SACF;KACF,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
1
+ {"version":3,"file":"EnrollmentsCollection.js","sourceRoot":"","sources":["../../src/db/EnrollmentsCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAgBhG,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,6CAAyB,CAAA;AAC3B,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,QAK3B;AAuCD,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAAc,EAAE,EAAE;IAC5D,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAa,aAAa,CAAC,CAAC;IAE7D,IAAI,CAAC,6BAA6B,EAAE,EAAE,CAAC;QACrC,MAAM,cAAc,CAAa,WAAW,EAAE;YAC5C;gBACE,KAAK,EAAE;oBACL,GAAG,EAAE,MAAM;oBACX,MAAM,EAAE,MAAM;oBACd,gBAAgB,EAAE,MAAM;oBACxB,MAAM,EAAE,MAAM;oBACd,mBAAmB,EAAE,MAAM;oBAC3B,sBAAsB,EAAE,MAAM;iBACxB;gBACR,OAAO,EAAE;oBACP,OAAO,EAAE;wBACP,GAAG,EAAE,CAAC;wBACN,MAAM,EAAE,CAAC;wBACT,gBAAgB,EAAE,CAAC;wBACnB,mBAAmB,EAAE,CAAC;wBACtB,sBAAsB,EAAE,CAAC;wBACzB,MAAM,EAAE,CAAC;qBACV;oBACD,IAAI,EAAE,4BAA4B;iBACnC;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;IACrB,MAAM,cAAc,CAAa,WAAW,EAAE;QAC5C,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;QACxB,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;QAC3B,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;QACxB,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE;KACnC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import SimpleSchema from 'simpl-schema';
2
+ export declare const PeriodSchema: SimpleSchema;
3
+ export declare const EnrollmentsSchema: SimpleSchema;
4
+ //# sourceMappingURL=EnrollmentsSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnrollmentsSchema.d.ts","sourceRoot":"","sources":["../../src/db/EnrollmentsSchema.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,eAAO,MAAM,YAAY,cAUxB,CAAC;AAEF,eAAO,MAAM,iBAAiB,cAqC7B,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { Schemas } from '@unchainedshop/utils';
2
+ import SimpleSchema from 'simpl-schema';
3
+ export const PeriodSchema = new SimpleSchema({
4
+ orderId: { type: String },
5
+ start: { type: Date, required: true },
6
+ end: { type: Date, required: true },
7
+ isTrial: { type: Boolean },
8
+ }, {
9
+ requiredByDefault: false,
10
+ });
11
+ export const EnrollmentsSchema = new SimpleSchema({
12
+ userId: { type: String, required: true },
13
+ status: { type: String, required: true },
14
+ productId: { type: String, required: true },
15
+ quantity: { type: Number },
16
+ configuration: Array,
17
+ 'configuration.$': {
18
+ type: Object,
19
+ required: true,
20
+ },
21
+ 'configuration.$.key': {
22
+ type: String,
23
+ required: true,
24
+ },
25
+ 'configuration.$.value': {
26
+ type: String,
27
+ },
28
+ enrollmentNumber: String,
29
+ expires: Date,
30
+ meta: { type: Object, blackbox: true },
31
+ billingAddress: Schemas.Address,
32
+ contact: Schemas.Contact,
33
+ currencyCode: String,
34
+ countryCode: String,
35
+ payment: { type: Object },
36
+ 'payment.paymentProviderId': String,
37
+ 'payment.context': Schemas.contextFields.context,
38
+ delivery: { type: Object },
39
+ 'delivery.deliveryProviderId': String,
40
+ 'delivery.context': Schemas.contextFields.context,
41
+ periods: { type: Array },
42
+ 'periods.$': { type: PeriodSchema, required: true },
43
+ ...Schemas.logFields,
44
+ ...Schemas.timestampFields,
45
+ }, { requiredByDefault: false });
46
+ //# sourceMappingURL=EnrollmentsSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnrollmentsSchema.js","sourceRoot":"","sources":["../../src/db/EnrollmentsSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,CAC1C;IACE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IACzB,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACrC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACnC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;CAC3B,EACD;IACE,iBAAiB,EAAE,KAAK;CACzB,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,YAAY,CAC/C;IACE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACxC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACxC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC3C,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC1B,aAAa,EAAE,KAAK;IACpB,iBAAiB,EAAE;QACjB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,MAAM;KACb;IACD,gBAAgB,EAAE,MAAM;IACxB,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,cAAc,EAAE,OAAO,CAAC,OAAO;IAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IACzB,2BAA2B,EAAE,MAAM;IACnC,iBAAiB,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO;IAChD,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC1B,6BAA6B,EAAE,MAAM;IACrC,kBAAkB,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO;IACjD,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IACxB,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;IACnD,GAAG,OAAO,CAAC,SAAS;IACpB,GAAG,OAAO,CAAC,eAAe;CAC3B,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { IEnrollmentAdapter } from '@unchainedshop/types/enrollments.js';
2
+ export declare const periodForReferenceDate: (referenceDate: Date, intervalCount?: number, interval?: string) => {
3
+ start: Date;
4
+ end: Date;
5
+ };
6
+ export declare const EnrollmentAdapter: Omit<IEnrollmentAdapter, 'key' | 'label' | 'version'>;
7
+ //# sourceMappingURL=EnrollmentAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnrollmentAdapter.d.ts","sourceRoot":"","sources":["../../src/director/EnrollmentAdapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,eAAO,MAAM,sBAAsB,kBAAmB,IAAI;;;CAgBzD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,CA2DnF,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { log, LogLevel } from '@unchainedshop/logger';
2
+ import * as dateFns from 'date-fns/add';
3
+ export const periodForReferenceDate = (referenceDate, intervalCount = 1, interval = 'WEEKS') => {
4
+ const lowerCaseInterval = interval.toLowerCase();
5
+ const start = new Date(referenceDate);
6
+ if (lowerCaseInterval === 'hours') {
7
+ start.setMinutes(0, 0, 0);
8
+ }
9
+ else {
10
+ start.setSeconds(0, 0);
11
+ }
12
+ return {
13
+ start,
14
+ end: dateFns.add(start, {
15
+ [lowerCaseInterval]: intervalCount,
16
+ }),
17
+ };
18
+ };
19
+ export const EnrollmentAdapter = {
20
+ isActivatedFor: () => {
21
+ return false;
22
+ },
23
+ transformOrderItemToEnrollmentPlan: async (item) => {
24
+ return {
25
+ configuration: item.configuration,
26
+ productId: item.productId,
27
+ quantity: item.quantity,
28
+ };
29
+ },
30
+ actions: (context) => {
31
+ return {
32
+ configurationForOrder: async () => {
33
+ throw new Error(`Not implemented on EnrollmentAdapter`);
34
+ },
35
+ isOverdue: async () => false,
36
+ isValidForActivation: async () => false,
37
+ nextPeriod: async () => {
38
+ const { enrollment } = context;
39
+ const product = await context.modules.products.findProduct({
40
+ productId: enrollment.productId,
41
+ });
42
+ const plan = product?.plan;
43
+ const referenceDate = new Date();
44
+ if (!plan)
45
+ return null;
46
+ if (plan.trialIntervalCount && !enrollment?.periods?.length) {
47
+ return {
48
+ ...periodForReferenceDate(referenceDate, plan.trialIntervalCount, plan.trialInterval),
49
+ isTrial: true,
50
+ };
51
+ }
52
+ const lastEnd = enrollment?.periods?.reduce((acc, item) => {
53
+ if (!acc)
54
+ return item.end;
55
+ const endDate = new Date(item.end);
56
+ if (acc.getTime() < endDate.getTime()) {
57
+ return endDate;
58
+ }
59
+ return acc;
60
+ }, referenceDate);
61
+ return {
62
+ ...periodForReferenceDate(lastEnd, plan.billingIntervalCount, plan.billingInterval),
63
+ isTrial: false,
64
+ };
65
+ },
66
+ };
67
+ },
68
+ // eslint-disable-next-line
69
+ log(message, { level = LogLevel.Debug, ...options } = {}) {
70
+ return log(message, { level, ...options });
71
+ },
72
+ };
73
+ //# sourceMappingURL=EnrollmentAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnrollmentAdapter.js","sourceRoot":"","sources":["../../src/director/EnrollmentAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { IEnrollmentDirector } from '@unchainedshop/types/enrollments.js';
2
+ export declare const EnrollmentDirector: IEnrollmentDirector;
3
+ //# sourceMappingURL=EnrollmentDirector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnrollmentDirector.d.ts","sourceRoot":"","sources":["../../src/director/EnrollmentDirector.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EACpB,MAAM,qCAAqC,CAAC;AAsB7C,eAAO,MAAM,kBAAkB,EAAE,mBAqChC,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { log, LogLevel } from '@unchainedshop/logger';
2
+ import { BaseDirector } from '@unchainedshop/utils';
3
+ const baseDirector = BaseDirector('EnrollmentDirector', {
4
+ adapterSortKey: 'orderIndex',
5
+ });
6
+ const findAppropriateAdapters = (productPlan) => baseDirector.getAdapters({
7
+ adapterFilter: (Adapter) => {
8
+ const activated = Adapter.isActivatedFor(productPlan);
9
+ if (!activated) {
10
+ log(`Enrollment Director -> ${Adapter.key} (${Adapter.version}) skipped`, {
11
+ level: LogLevel.Warning,
12
+ });
13
+ }
14
+ return activated;
15
+ },
16
+ });
17
+ export const EnrollmentDirector = {
18
+ ...baseDirector,
19
+ transformOrderItemToEnrollment: async ({ orderPosition, product }, doc, unchainedAPI) => {
20
+ const Adapter = findAppropriateAdapters(product.plan)?.[0];
21
+ if (!Adapter) {
22
+ throw new Error('No suitable enrollment plugin available for this item');
23
+ }
24
+ const enrollmentPlan = await Adapter.transformOrderItemToEnrollmentPlan(orderPosition, unchainedAPI);
25
+ const enrollmentData = {
26
+ ...doc,
27
+ ...enrollmentPlan,
28
+ configuration: [],
29
+ };
30
+ return enrollmentData;
31
+ },
32
+ actions: async (enrollmentContext, unchainedAPI) => {
33
+ const context = { ...enrollmentContext, ...unchainedAPI };
34
+ // Resolve adapter
35
+ const product = await context.modules.products.findProduct({
36
+ productId: context.enrollment.productId,
37
+ });
38
+ const Adapter = findAppropriateAdapters(product?.plan)?.[0];
39
+ if (!Adapter) {
40
+ throw new Error('No suitable enrollment plugin available for this plan configuration');
41
+ }
42
+ const adapter = Adapter.actions(context);
43
+ return adapter;
44
+ },
45
+ };
46
+ //# sourceMappingURL=EnrollmentDirector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnrollmentDirector.js","sourceRoot":"","sources":["../../src/director/EnrollmentDirector.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,YAAY,GAAG,YAAY,CAAqB,oBAAoB,EAAE;IAC1E,cAAc,EAAE,YAAY;CAC7B,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,CAAC,WAAyB,EAAE,EAAE,CAC5D,YAAY,CAAC,WAAW,CAAC;IACvB,aAAa,EAAE,CAAC,OAA2B,EAAE,EAAE;QAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,0BAA0B,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,OAAO,WAAW,EAAE;gBACxE,KAAK,EAAE,QAAQ,CAAC,OAAO;aACxB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,GAAG,YAAY;IAEf,8BAA8B,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE;QACtF,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,kCAAkC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAErG,MAAM,cAAc,GAAmB;YACrC,GAAG,GAAG;YACN,GAAG,cAAc;YACjB,aAAa,EAAE,EAAE;SAClB,CAAC;QAEF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,EAAE;QACjD,MAAM,OAAO,GAAG,EAAE,GAAG,iBAAiB,EAAE,GAAG,YAAY,EAAE,CAAC;QAE1D,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzD,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;SACxC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEzC,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare enum EnrollmentError {
2
+ ADAPTER_NOT_FOUND = "ADAPTER_NOT_FOUND",
3
+ NOT_IMPLEMENTED = "NOT_IMPLEMENTED",
4
+ INCOMPLETE_CONFIGURATION = "INCOMPLETE_CONFIGURATION",
5
+ WRONG_CREDENTIALS = "WRONG_CREDENTIALS"
6
+ }
7
+ //# sourceMappingURL=EnrollmentError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnrollmentError.d.ts","sourceRoot":"","sources":["../../src/director/EnrollmentError.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,iBAAiB,sBAAsB;IACvC,eAAe,oBAAoB;IACnC,wBAAwB,6BAA6B;IACrD,iBAAiB,sBAAsB;CACxC"}
@@ -0,0 +1,8 @@
1
+ export var EnrollmentError;
2
+ (function (EnrollmentError) {
3
+ EnrollmentError["ADAPTER_NOT_FOUND"] = "ADAPTER_NOT_FOUND";
4
+ EnrollmentError["NOT_IMPLEMENTED"] = "NOT_IMPLEMENTED";
5
+ EnrollmentError["INCOMPLETE_CONFIGURATION"] = "INCOMPLETE_CONFIGURATION";
6
+ EnrollmentError["WRONG_CREDENTIALS"] = "WRONG_CREDENTIALS";
7
+ })(EnrollmentError || (EnrollmentError = {}));
8
+ //# sourceMappingURL=EnrollmentError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnrollmentError.js","sourceRoot":"","sources":["../../src/director/EnrollmentError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,0DAAuC,CAAA;IACvC,sDAAmC,CAAA;IACnC,wEAAqD,CAAA;IACrD,0DAAuC,CAAA;AACzC,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B"}
@@ -1,12 +1,10 @@
1
1
  import later from '@breejs/later';
2
2
  import { Enrollment } from './db/EnrollmentsCollection.js';
3
- export interface EnrollmentsSettingsOptions {
4
- autoSchedulingSchedule?: later.ScheduleData;
5
- enrollmentNumberHashFn?: (enrollment: Enrollment, index: number) => string;
3
+ export interface EnrollmentSettings {
4
+ autoSchedulingSchedule: later.ScheduleData;
5
+ enrollmentNumberHashFn: (enrollment: Enrollment, index: number) => string;
6
+ configureSettings: (options?: EnrollmentsSettingsOptions) => void;
6
7
  }
7
- export declare const enrollmentsSettings: {
8
- autoSchedulingSchedule: any;
9
- enrollmentNumberHashFn: any;
10
- configureSettings({ autoSchedulingSchedule, enrollmentNumberHashFn, }?: EnrollmentsSettingsOptions): void;
11
- };
8
+ export type EnrollmentsSettingsOptions = Omit<Partial<typeof enrollmentsSettings>, 'configureSettings'>;
9
+ export declare const enrollmentsSettings: EnrollmentSettings;
12
10
  //# sourceMappingURL=enrollments-settings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"enrollments-settings.d.ts","sourceRoot":"","sources":["../src/enrollments-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,eAAe,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,MAAM,WAAW,0BAA0B;IACzC,sBAAsB,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC5C,sBAAsB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5E;AAED,eAAO,MAAM,mBAAmB;;;4EAM3B,0BAA0B;CAI9B,CAAC"}
1
+ {"version":3,"file":"enrollments-settings.d.ts","sourceRoot":"","sources":["../src/enrollments-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,eAAe,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,MAAM,WAAW,kBAAkB;IACjC,sBAAsB,EAAE,KAAK,CAAC,YAAY,CAAC;IAC3C,sBAAsB,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1E,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,0BAA0B,KAAK,IAAI,CAAC;CACnE;AAED,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAExG,eAAO,MAAM,mBAAmB,EAAE,kBAOjC,CAAC"}
@@ -2,11 +2,11 @@ import later from '@breejs/later';
2
2
  import { generateRandomHash } from '@unchainedshop/utils';
3
3
  const everyHourSchedule = later.parse.text('every 59 minutes');
4
4
  export const enrollmentsSettings = {
5
- autoSchedulingSchedule: null,
6
- enrollmentNumberHashFn: null,
7
- configureSettings({ autoSchedulingSchedule = everyHourSchedule, enrollmentNumberHashFn = generateRandomHash, } = {}) {
8
- this.autoSchedulingSchedule = autoSchedulingSchedule;
9
- this.enrollmentNumberHashFn = enrollmentNumberHashFn;
5
+ autoSchedulingSchedule: everyHourSchedule,
6
+ enrollmentNumberHashFn: generateRandomHash,
7
+ configureSettings({ autoSchedulingSchedule, enrollmentNumberHashFn } = {}) {
8
+ this.autoSchedulingSchedule = autoSchedulingSchedule || everyHourSchedule;
9
+ this.enrollmentNumberHashFn = enrollmentNumberHashFn || generateRandomHash;
10
10
  },
11
11
  };
12
12
  //# sourceMappingURL=enrollments-settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enrollments-settings.js","sourceRoot":"","sources":["../src/enrollments-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAO/D,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,sBAAsB,EAAE,IAAI;IAC5B,sBAAsB,EAAE,IAAI;IAC5B,iBAAiB,CAAC,EAChB,sBAAsB,GAAG,iBAAiB,EAC1C,sBAAsB,GAAG,kBAAkB,MACb,EAAE;QAChC,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;QACrD,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;IACvD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"enrollments-settings.js","sourceRoot":"","sources":["../src/enrollments-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAU/D,MAAM,CAAC,MAAM,mBAAmB,GAAuB;IACrD,sBAAsB,EAAE,iBAAiB;IACzC,sBAAsB,EAAE,kBAAkB;IAC1C,iBAAiB,CAAC,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,GAAG,EAAE;QACvE,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,IAAI,iBAAiB,CAAC;QAC1E,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,IAAI,kBAAkB,CAAC;IAC7E,CAAC;CACF,CAAC"}
@@ -7,23 +7,17 @@ export interface EnrollmentQuery {
7
7
  userId?: string;
8
8
  queryString?: string;
9
9
  }
10
- export declare const buildFindSelector: ({ queryString, status, userId }: EnrollmentQuery) => {
11
- deleted: Date;
12
- status?: any;
13
- $text?: {
14
- $search: string;
15
- };
16
- userId?: string;
17
- };
10
+ export declare const buildFindSelector: ({ queryString, status, userId }: EnrollmentQuery) => mongodb.Filter<Enrollment>;
18
11
  export declare const configureEnrollmentsModule: ({ db, options: enrollmentOptions, }: ModuleInput<EnrollmentsSettingsOptions>) => Promise<{
19
12
  count: (query: EnrollmentQuery) => Promise<number>;
20
13
  openEnrollmentWithProduct: ({ productId }: {
21
14
  productId: string;
22
- }) => Promise<Enrollment>;
23
- findEnrollment: ({ enrollmentId, orderId }: {
24
- enrollmentId?: string;
25
- orderId?: string;
26
- }, options?: mongodb.FindOptions) => Promise<Enrollment>;
15
+ }) => Promise<mongodb.WithId<Enrollment> | null>;
16
+ findEnrollment: (params: {
17
+ enrollmentId: string;
18
+ } | {
19
+ orderId: string;
20
+ }, options?: mongodb.FindOptions) => Promise<Enrollment | null>;
27
21
  findEnrollments: ({ limit, offset, sort, ...query }: EnrollmentQuery & {
28
22
  limit?: number;
29
23
  offset?: number;
@@ -33,26 +27,26 @@ export declare const configureEnrollmentsModule: ({ db, options: enrollmentOptio
33
27
  isExpired: (enrollment: Enrollment, { referenceDate }: {
34
28
  referenceDate?: Date;
35
29
  }) => boolean;
36
- addEnrollmentPeriod: (enrollmentId: string, period: EnrollmentPeriod) => Promise<Enrollment>;
37
- create: ({ countryCode, currencyCode, ...enrollmentData }: Omit<Enrollment, "status" | "periods" | "log">) => Promise<Enrollment>;
30
+ addEnrollmentPeriod: (enrollmentId: string, period: EnrollmentPeriod) => Promise<mongodb.WithId<Enrollment> | null>;
31
+ create: ({ countryCode, currencyCode, ...enrollmentData }: Omit<Enrollment, "status" | "periods" | "log" | "_id" | "created"> & Pick<Partial<Enrollment>, "_id" | "created">) => Promise<Enrollment>;
38
32
  delete: (enrollmentId: string) => Promise<number>;
39
- removeEnrollmentPeriodByOrderId: (enrollmentId: string, orderId: string) => Promise<Enrollment>;
40
- updateBillingAddress: (enrollmentId: string, fieldValue: Address) => Promise<mongodb.WithId<Enrollment>>;
41
- updateContact: (enrollmentId: string, fieldValue: Contact) => Promise<mongodb.WithId<Enrollment>>;
42
- updateContext: (enrollmentId: string, fieldValue: any) => Promise<mongodb.WithId<Enrollment>>;
33
+ removeEnrollmentPeriodByOrderId: (enrollmentId: string, orderId: string) => Promise<mongodb.WithId<Enrollment> | null>;
34
+ updateBillingAddress: (enrollmentId: string, fieldValue: Address) => Promise<mongodb.WithId<Enrollment> | null>;
35
+ updateContact: (enrollmentId: string, fieldValue: Contact) => Promise<mongodb.WithId<Enrollment> | null>;
36
+ updateContext: (enrollmentId: string, fieldValue: any) => Promise<mongodb.WithId<Enrollment> | null>;
43
37
  updateDelivery: (enrollmentId: string, fieldValue: {
44
38
  deliveryProviderId?: string;
45
39
  context?: any;
46
- }) => Promise<mongodb.WithId<Enrollment>>;
40
+ }) => Promise<mongodb.WithId<Enrollment> | null>;
47
41
  updatePayment: (enrollmentId: string, fieldValue: {
48
- paymentProviderId?: string;
42
+ paymentProviderId: string;
49
43
  context?: any;
50
- }) => Promise<mongodb.WithId<Enrollment>>;
51
- updatePlan: (enrollmentId: string, plan: EnrollmentPlan) => Promise<Enrollment>;
44
+ } | undefined) => Promise<mongodb.WithId<Enrollment> | null>;
45
+ updatePlan: (enrollmentId: string, plan: EnrollmentPlan) => Promise<mongodb.WithId<Enrollment> | null>;
52
46
  updateStatus: (enrollmentId: string, { status, info }: {
53
47
  status: EnrollmentStatus;
54
48
  info?: string;
55
- }) => Promise<Enrollment>;
49
+ }) => Promise<mongodb.WithId<Enrollment> | null>;
56
50
  deleteInactiveUserEnrollments: (userId: string) => Promise<number>;
57
51
  }>;
58
52
  export type EnrollmentsModule = Awaited<ReturnType<typeof configureEnrollmentsModule>>;
@@ -1 +1 @@
1
- {"version":3,"file":"configureEnrollmentsModule.d.ts","sourceRoot":"","sources":["../../src/module/configureEnrollmentsModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACjB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAGL,OAAO,EACP,OAAO,EACP,OAAO,EAEP,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAuB,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAE7F,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AASD,eAAO,MAAM,iBAAiB,GAAI,iCAAiC,eAAe;aAErE,IAAI;aACJ,GAAG;YACJ;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;aAClB,MAAM;CAYlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAU,qCAG9C,WAAW,CAAC,0BAA0B,CAAC;mBAoFjB,eAAe;+CAIa;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,UAAU,CAAC;gDAO/D;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,YAC5D,OAAO,CAAC,WAAW,KAC5B,OAAO,CAAC,UAAU,CAAC;yDAanB,eAAe,GAAG;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;KACrB,KAAG,OAAO,CAAC,UAAU,EAAE,CAAC;mCAYM,UAAU,KAAG,gBAAgB;4BAvH/B,UAAU,qBAAqB;QAAE,aAAa,CAAC,EAAE,IAAI,CAAA;KAAE;wCAgI1C,MAAM,UAAU,gBAAgB,KAAG,OAAO,CAAC,UAAU,CAAC;+DAgC7F,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC,KAAG,OAAO,CAAC,UAAU,CAAC;2BAoB1C,MAAM;oDAcnB,MAAM,WACX,MAAM,KACd,OAAO,CAAC,UAAU,CAAC;yCAxID,MAAM;kCAAN,MAAM;kCAAN,MAAM;mCAAN,MAAM;;;;kCAAN,MAAM;;;;+BA8JM,MAAM,QAAQ,cAAc,KAAG,OAAO,CAAC,UAAU,CAAC;iCA3MrE,MAAM,oBACG;QAAE,MAAM,EAAE,gBAAgB,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KACjE,OAAO,CAAC,UAAU,CAAC;4CA4N0B,MAAM;EAQvD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"configureEnrollmentsModule.d.ts","sourceRoot":"","sources":["../../src/module/configureEnrollmentsModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACjB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAGL,OAAO,EACP,OAAO,EACP,OAAO,EAEP,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAuB,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAE7F,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AASD,eAAO,MAAM,iBAAiB,GAAI,iCAAiC,eAAe,+BAYjF,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAU,qCAG9C,WAAW,CAAC,0BAA0B,CAAC;mBAsFjB,eAAe;+CAIa;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE;6BAO5D;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,YAC5C,OAAO,CAAC,WAAW;yDAgB5B,eAAe,GAAG;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;KACrB,KAAG,OAAO,CAAC,UAAU,EAAE,CAAC;mCAYM,UAAU,KAAG,gBAAgB;4BA3H/B,UAAU,qBAAqB;QAAE,aAAa,CAAC,EAAE,IAAI,CAAA;KAAE;wCAoI1C,MAAM,UAAU,gBAAgB;+DAgCvE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC,GACnE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,KAAG,OAAO,CAAC,UAAU,CAAC;2BAoBvC,MAAM;oDAamB,MAAM,WAAW,MAAM;yCAxIxD,MAAM;kCAAN,MAAM;kCAAN,MAAM;mCAAN,MAAM;;;;kCAAN,MAAM;;;;+BA8JM,MAAM,QAAQ,cAAc;iCA5M/C,MAAM,oBACG;QAAE,MAAM,EAAE,gBAAgB,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;4CA8NpB,MAAM;EAQvD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC"}
@@ -30,6 +30,8 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
30
30
  const Enrollments = await EnrollmentsCollection(db);
31
31
  const isExpired = (enrollment, { referenceDate }) => {
32
32
  const relevantDate = referenceDate ? new Date(referenceDate) : new Date();
33
+ if (!enrollment.expires)
34
+ return false;
33
35
  const expiryDate = new Date(enrollment.expires);
34
36
  return relevantDate.getTime() > expiryDate.getTime();
35
37
  };
@@ -43,6 +45,8 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
43
45
  const updateStatus = async (enrollmentId, { status, info = '' }) => {
44
46
  const selector = generateDbFilterById(enrollmentId);
45
47
  const enrollment = await Enrollments.findOne(selector, {});
48
+ if (!enrollment)
49
+ return null;
46
50
  if (enrollment.status === status)
47
51
  return enrollment;
48
52
  const date = new Date();
@@ -93,11 +97,11 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
93
97
  selector.status = { $in: [EnrollmentStatus.ACTIVE, EnrollmentStatus.PAUSED] };
94
98
  return Enrollments.findOne(selector);
95
99
  },
96
- findEnrollment: async ({ enrollmentId, orderId }, options) => {
97
- const selector = enrollmentId
98
- ? generateDbFilterById(enrollmentId)
99
- : { 'periods.orderId': orderId };
100
- return Enrollments.findOne(selector, options);
100
+ findEnrollment: async (params, options) => {
101
+ if ('enrollmentId' in params) {
102
+ return Enrollments.findOne(generateDbFilterById(params.enrollmentId), options);
103
+ }
104
+ return Enrollments.findOne({ 'periods.orderId': params.orderId, deleted: { $exists: false } }, options);
101
105
  },
102
106
  findEnrollments: async ({ limit, offset, sort, ...query }) => {
103
107
  const defaultSortOption = [{ key: 'created', value: SortDirection.ASC }];
@@ -134,6 +138,8 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
134
138
  }, {
135
139
  returnDocument: 'after',
136
140
  });
141
+ if (!enrollment)
142
+ return null;
137
143
  await emit('ENROLLMENT_ADD_PERIOD', { enrollment });
138
144
  return enrollment;
139
145
  },
@@ -149,9 +155,9 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
149
155
  configuration: enrollmentData.configuration || [],
150
156
  log: [],
151
157
  });
152
- const enrollment = await Enrollments.findOne({
158
+ const enrollment = (await Enrollments.findOne({
153
159
  _id: enrollmentId,
154
- });
160
+ }));
155
161
  await emit('ENROLLMENT_CREATE', { enrollment });
156
162
  return enrollment;
157
163
  },
@@ -171,7 +177,7 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
171
177
  updated: new Date(),
172
178
  },
173
179
  $pull: {
174
- periods: { orderId: { $in: [orderId, undefined, null] } },
180
+ periods: { orderId: { $in: [orderId, undefined] } },
175
181
  },
176
182
  }, { returnDocument: 'after' });
177
183
  },
@@ -189,6 +195,8 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
189
195
  configuration: plan.configuration,
190
196
  },
191
197
  }, { returnDocument: 'after' });
198
+ if (!enrollment)
199
+ return null;
192
200
  await emit('ENROLLMENT_UPDATE', { enrollment, field: 'plan' });
193
201
  return enrollment;
194
202
  },
@@ -1 +1 @@
1
- {"version":3,"file":"configureEnrollmentsModule.js","sourceRoot":"","sources":["../../src/module/configureEnrollmentsModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configureEnrollmentsModule.js","sourceRoot":"","sources":["../../src/module/configureEnrollmentsModule.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/core-enrollments",
3
- "version": "4.0.0-rc.9",
3
+ "version": "4.0.1",
4
4
  "main": "lib/enrollments-index.js",
5
5
  "types": "lib/enrollments-index.d.ts",
6
6
  "type": "module",
@@ -32,9 +32,9 @@
32
32
  "homepage": "https://github.com/unchainedshop/unchained#readme",
33
33
  "dependencies": {
34
34
  "@breejs/later": "^4.2.0",
35
- "@unchainedshop/events": "^4.0.0-rc.4",
36
- "@unchainedshop/logger": "^4.0.0-rc.4",
37
- "@unchainedshop/utils": "^4.0.0-rc.4"
35
+ "@unchainedshop/events": "^4.0.0",
36
+ "@unchainedshop/logger": "^4.0.0",
37
+ "@unchainedshop/utils": "^4.0.0"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/breejs__later": "^4.1.5",
@@ -9,7 +9,7 @@ export interface EnrollmentPeriod {
9
9
  }
10
10
 
11
11
  export interface EnrollmentPlan {
12
- configuration: { key: string; value: string }[];
12
+ configuration: { key: string; value: string }[] | null;
13
13
  productId: string;
14
14
  quantity: number;
15
15
  }
@@ -21,14 +21,23 @@ export enum EnrollmentStatus {
21
21
  TERMINATED = 'TERMINATED',
22
22
  }
23
23
 
24
+ export interface EnrollmentOrderPositionTemplate {
25
+ context?: any;
26
+ configuration?: { key: string; value: string }[];
27
+ originalProductId: string;
28
+ productId: string;
29
+ quantity: number;
30
+ quotationId?: string;
31
+ }
32
+
24
33
  export type Enrollment = {
25
- _id?: string;
34
+ _id: string;
26
35
  billingAddress: Address;
27
- configuration?: { key: string; value: string }[];
36
+ configuration: { key: string; value: string }[] | null;
28
37
  contact: Contact;
29
38
  context?: any;
30
- countryCode?: string;
31
- currencyCode?: string;
39
+ countryCode: string;
40
+ currencyCode: string;
32
41
  delivery: {
33
42
  deliveryProviderId?: string;
34
43
  context?: any;
@@ -37,14 +46,14 @@ export type Enrollment = {
37
46
  orderIdForFirstPeriod?: string;
38
47
  expires?: Date;
39
48
  meta?: any;
40
- payment: {
41
- paymentProviderId?: string;
49
+ payment?: {
50
+ paymentProviderId: string;
42
51
  context?: any;
43
52
  };
44
53
  periods: EnrollmentPeriod[];
45
54
  productId: string;
46
55
  quantity?: number;
47
- status: EnrollmentStatus;
56
+ status: EnrollmentStatus | null;
48
57
  userId: string;
49
58
  } & LogFields &
50
59
  TimestampFields;
@@ -52,33 +61,38 @@ export type Enrollment = {
52
61
  export const EnrollmentsCollection = async (db: mongodb.Db) => {
53
62
  const Enrollments = db.collection<Enrollment>('enrollments');
54
63
 
64
+ if (!isDocumentDBCompatModeEnabled()) {
65
+ await buildDbIndexes<Enrollment>(Enrollments, [
66
+ {
67
+ index: {
68
+ _id: 'text',
69
+ userId: 'text',
70
+ enrollmentNumber: 'text',
71
+ status: 'text',
72
+ 'contact.telNumber': 'text',
73
+ 'contact.emailAddress': 'text',
74
+ } as any,
75
+ options: {
76
+ weights: {
77
+ _id: 8,
78
+ userId: 3,
79
+ enrollmentNumber: 6,
80
+ 'contact.telNumber': 5,
81
+ 'contact.emailAddress': 4,
82
+ status: 1,
83
+ },
84
+ name: 'enrollment_fulltext_search',
85
+ },
86
+ },
87
+ ]);
88
+ }
89
+
55
90
  // Enrollment Indexes
56
91
  await buildDbIndexes<Enrollment>(Enrollments, [
57
92
  { index: { userId: 1 } },
58
93
  { index: { productId: 1 } },
59
94
  { index: { status: 1 } },
60
95
  { index: { enrollmentNumber: 1 } },
61
- !isDocumentDBCompatModeEnabled() && {
62
- index: {
63
- _id: 'text',
64
- userId: 'text',
65
- enrollmentNumber: 'text',
66
- status: 'text',
67
- 'contact.telNumber': 'text',
68
- 'contact.emailAddress': 'text',
69
- } as any,
70
- options: {
71
- weights: {
72
- _id: 8,
73
- userId: 3,
74
- enrollmentNumber: 6,
75
- 'contact.telNumber': 5,
76
- 'contact.emailAddress': 4,
77
- status: 1,
78
- },
79
- name: 'enrollment_fulltext_search',
80
- },
81
- },
82
96
  ]);
83
97
 
84
98
  return Enrollments;
@@ -4,19 +4,19 @@ import { Enrollment } from './db/EnrollmentsCollection.js';
4
4
 
5
5
  const everyHourSchedule = later.parse.text('every 59 minutes');
6
6
 
7
- export interface EnrollmentsSettingsOptions {
8
- autoSchedulingSchedule?: later.ScheduleData;
9
- enrollmentNumberHashFn?: (enrollment: Enrollment, index: number) => string;
7
+ export interface EnrollmentSettings {
8
+ autoSchedulingSchedule: later.ScheduleData;
9
+ enrollmentNumberHashFn: (enrollment: Enrollment, index: number) => string;
10
+ configureSettings: (options?: EnrollmentsSettingsOptions) => void;
10
11
  }
11
12
 
12
- export const enrollmentsSettings = {
13
- autoSchedulingSchedule: null,
14
- enrollmentNumberHashFn: null,
15
- configureSettings({
16
- autoSchedulingSchedule = everyHourSchedule,
17
- enrollmentNumberHashFn = generateRandomHash,
18
- }: EnrollmentsSettingsOptions = {}) {
19
- this.autoSchedulingSchedule = autoSchedulingSchedule;
20
- this.enrollmentNumberHashFn = enrollmentNumberHashFn;
13
+ export type EnrollmentsSettingsOptions = Omit<Partial<typeof enrollmentsSettings>, 'configureSettings'>;
14
+
15
+ export const enrollmentsSettings: EnrollmentSettings = {
16
+ autoSchedulingSchedule: everyHourSchedule,
17
+ enrollmentNumberHashFn: generateRandomHash,
18
+ configureSettings({ autoSchedulingSchedule, enrollmentNumberHashFn } = {}) {
19
+ this.autoSchedulingSchedule = autoSchedulingSchedule || everyHourSchedule;
20
+ this.enrollmentNumberHashFn = enrollmentNumberHashFn || generateRandomHash;
21
21
  },
22
22
  };
@@ -33,12 +33,7 @@ const ENROLLMENT_EVENTS: string[] = [
33
33
  ];
34
34
 
35
35
  export const buildFindSelector = ({ queryString, status, userId }: EnrollmentQuery) => {
36
- const selector: {
37
- deleted: Date;
38
- status?: any;
39
- $text?: { $search: string };
40
- userId?: string;
41
- } = {
36
+ const selector: mongodb.Filter<Enrollment> = {
42
37
  deleted: null,
43
38
  };
44
39
  if (status) selector.status = { $in: status };
@@ -63,6 +58,7 @@ export const configureEnrollmentsModule = async ({
63
58
 
64
59
  const isExpired = (enrollment: Enrollment, { referenceDate }: { referenceDate?: Date }) => {
65
60
  const relevantDate = referenceDate ? new Date(referenceDate) : new Date();
61
+ if (!enrollment.expires) return false;
66
62
  const expiryDate = new Date(enrollment.expires);
67
63
  return relevantDate.getTime() > expiryDate.getTime();
68
64
  };
@@ -78,10 +74,11 @@ export const configureEnrollmentsModule = async ({
78
74
  const updateStatus = async (
79
75
  enrollmentId: string,
80
76
  { status, info = '' }: { status: EnrollmentStatus; info?: string },
81
- ): Promise<Enrollment> => {
77
+ ) => {
82
78
  const selector = generateDbFilterById(enrollmentId);
83
79
  const enrollment = await Enrollments.findOne(selector, {});
84
80
 
81
+ if (!enrollment) return null;
85
82
  if (enrollment.status === status) return enrollment;
86
83
 
87
84
  const date = new Date();
@@ -142,21 +139,23 @@ export const configureEnrollmentsModule = async ({
142
139
  const enrollmentCount = await Enrollments.countDocuments(buildFindSelector(query));
143
140
  return enrollmentCount;
144
141
  },
145
- openEnrollmentWithProduct: async ({ productId }: { productId: string }): Promise<Enrollment> => {
142
+ openEnrollmentWithProduct: async ({ productId }: { productId: string }) => {
146
143
  const selector: mongodb.Filter<Enrollment> = { productId };
147
144
  selector.status = { $in: [EnrollmentStatus.ACTIVE, EnrollmentStatus.PAUSED] };
148
145
  return Enrollments.findOne(selector);
149
146
  },
150
147
 
151
148
  findEnrollment: async (
152
- { enrollmentId, orderId }: { enrollmentId?: string; orderId?: string },
149
+ params: { enrollmentId: string } | { orderId: string },
153
150
  options?: mongodb.FindOptions,
154
- ): Promise<Enrollment> => {
155
- const selector = enrollmentId
156
- ? generateDbFilterById(enrollmentId)
157
- : { 'periods.orderId': orderId };
158
-
159
- return Enrollments.findOne(selector, options);
151
+ ) => {
152
+ if ('enrollmentId' in params) {
153
+ return Enrollments.findOne(generateDbFilterById(params.enrollmentId), options);
154
+ }
155
+ return Enrollments.findOne(
156
+ { 'periods.orderId': params.orderId, deleted: { $exists: false } },
157
+ options,
158
+ );
160
159
  },
161
160
 
162
161
  findEnrollments: async ({
@@ -189,7 +188,7 @@ export const configureEnrollmentsModule = async ({
189
188
  isExpired,
190
189
 
191
190
  // Mutations
192
- addEnrollmentPeriod: async (enrollmentId: string, period: EnrollmentPeriod): Promise<Enrollment> => {
191
+ addEnrollmentPeriod: async (enrollmentId: string, period: EnrollmentPeriod) => {
193
192
  const { start, end, orderId, isTrial } = period;
194
193
  const selector = generateDbFilterById(enrollmentId);
195
194
  const enrollment = await Enrollments.findOneAndUpdate(
@@ -212,8 +211,8 @@ export const configureEnrollmentsModule = async ({
212
211
  },
213
212
  );
214
213
 
214
+ if (!enrollment) return null;
215
215
  await emit('ENROLLMENT_ADD_PERIOD', { enrollment });
216
-
217
216
  return enrollment;
218
217
  },
219
218
 
@@ -221,7 +220,8 @@ export const configureEnrollmentsModule = async ({
221
220
  countryCode,
222
221
  currencyCode,
223
222
  ...enrollmentData
224
- }: Omit<Enrollment, 'status' | 'periods' | 'log'>): Promise<Enrollment> => {
223
+ }: Omit<Enrollment, 'status' | 'periods' | 'log' | '_id' | 'created'> &
224
+ Pick<Partial<Enrollment>, '_id' | 'created'>): Promise<Enrollment> => {
225
225
  const { insertedId: enrollmentId } = await Enrollments.insertOne({
226
226
  _id: generateDbObjectId(),
227
227
  created: new Date(),
@@ -234,9 +234,9 @@ export const configureEnrollmentsModule = async ({
234
234
  log: [],
235
235
  });
236
236
 
237
- const enrollment = await Enrollments.findOne({
237
+ const enrollment = (await Enrollments.findOne({
238
238
  _id: enrollmentId,
239
- });
239
+ })) as Enrollment;
240
240
  await emit('ENROLLMENT_CREATE', { enrollment });
241
241
  return enrollment;
242
242
  },
@@ -254,10 +254,7 @@ export const configureEnrollmentsModule = async ({
254
254
  return deletedCount;
255
255
  },
256
256
 
257
- removeEnrollmentPeriodByOrderId: async (
258
- enrollmentId: string,
259
- orderId: string,
260
- ): Promise<Enrollment> => {
257
+ removeEnrollmentPeriodByOrderId: async (enrollmentId: string, orderId: string) => {
261
258
  const selector = generateDbFilterById(enrollmentId);
262
259
  return Enrollments.findOneAndUpdate(
263
260
  selector,
@@ -266,7 +263,7 @@ export const configureEnrollmentsModule = async ({
266
263
  updated: new Date(),
267
264
  },
268
265
  $pull: {
269
- periods: { orderId: { $in: [orderId, undefined, null] } },
266
+ periods: { orderId: { $in: [orderId, undefined] } },
270
267
  },
271
268
  },
272
269
  { returnDocument: 'after' },
@@ -279,7 +276,7 @@ export const configureEnrollmentsModule = async ({
279
276
  updateDelivery: updateEnrollmentField<Enrollment['delivery']>('delivery'),
280
277
  updatePayment: updateEnrollmentField<Enrollment['payment']>('payment'),
281
278
 
282
- updatePlan: async (enrollmentId: string, plan: EnrollmentPlan): Promise<Enrollment> => {
279
+ updatePlan: async (enrollmentId: string, plan: EnrollmentPlan) => {
283
280
  const enrollment = await Enrollments.findOneAndUpdate(
284
281
  generateDbFilterById(enrollmentId),
285
282
  {
@@ -292,7 +289,7 @@ export const configureEnrollmentsModule = async ({
292
289
  },
293
290
  { returnDocument: 'after' },
294
291
  );
295
-
292
+ if (!enrollment) return null;
296
293
  await emit('ENROLLMENT_UPDATE', { enrollment, field: 'plan' });
297
294
  return enrollment;
298
295
  },
package/tsconfig.json CHANGED
@@ -3,7 +3,8 @@
3
3
  "compilerOptions": {
4
4
  "declarationDir": "./lib",
5
5
  "rootDir": "./src",
6
- "outDir": "./lib"
6
+ "outDir": "./lib",
7
+
7
8
  },
8
9
  "exclude": ["**/*.test.ts", "**/*.test.js", "tests", "lib"]
9
10
  }