@unchainedshop/core-enrollments 4.0.0-rc.8 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +17 -6
  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 +41 -27
  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"}
@@ -20,8 +20,19 @@ export declare enum EnrollmentStatus {
20
20
  PAUSED = "PAUSED",
21
21
  TERMINATED = "TERMINATED"
22
22
  }
23
+ export interface EnrollmentOrderPositionTemplate {
24
+ context?: any;
25
+ configuration?: {
26
+ key: string;
27
+ value: string;
28
+ }[];
29
+ originalProductId: string;
30
+ productId: string;
31
+ quantity: number;
32
+ quotationId?: string;
33
+ }
23
34
  export type Enrollment = {
24
- _id?: string;
35
+ _id: string;
25
36
  billingAddress: Address;
26
37
  configuration?: {
27
38
  key: string;
@@ -29,8 +40,8 @@ export type Enrollment = {
29
40
  }[];
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,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,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,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,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.8",
3
+ "version": "4.0.0",
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",
@@ -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
36
  configuration?: { key: string; value: string }[];
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
  }