@misterhomer1992/miit-bot-payment 1.0.4 → 1.0.5
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.
- package/dist/modules/subscription/repository.d.ts +24 -1
- package/dist/modules/subscription/repository.d.ts.map +1 -1
- package/dist/modules/subscription/repository.js +75 -6
- package/dist/modules/subscription/repository.js.map +1 -1
- package/dist/modules/subscription/service.d.ts +24 -1
- package/dist/modules/subscription/service.d.ts.map +1 -1
- package/dist/modules/subscription/service.js +32 -1
- package/dist/modules/subscription/service.js.map +1 -1
- package/package.json +1 -1
|
@@ -17,15 +17,17 @@ export declare class SubscriptionRepository {
|
|
|
17
17
|
*/
|
|
18
18
|
constructor();
|
|
19
19
|
/**
|
|
20
|
-
* Retrieves
|
|
20
|
+
* Retrieves a subscription for a specific user.
|
|
21
21
|
* @param params - Query parameters
|
|
22
22
|
* @param params.userId - The user's unique identifier
|
|
23
23
|
* @param params.appNamespace - The application namespace/platform
|
|
24
|
+
* @param params.status - Optional status filter. Can be a single status or array of statuses. Defaults to 'active'
|
|
24
25
|
* @returns Promise resolving to SubscriptionEntity or null if not found
|
|
25
26
|
*/
|
|
26
27
|
getByUserId(params: {
|
|
27
28
|
userId: string;
|
|
28
29
|
appNamespace: string;
|
|
30
|
+
status?: SubscriptionEntity['status'] | SubscriptionEntity['status'][];
|
|
29
31
|
}): Promise<SubscriptionEntity | null>;
|
|
30
32
|
/**
|
|
31
33
|
* Creates a new subscription record in the database.
|
|
@@ -81,6 +83,27 @@ export declare class SubscriptionRepository {
|
|
|
81
83
|
* @returns SubscriptionEntity with document ID
|
|
82
84
|
*/
|
|
83
85
|
private mapDocumentToEntity;
|
|
86
|
+
/**
|
|
87
|
+
* Activates a subscription for a user using a transaction.
|
|
88
|
+
* Creates a new subscription if one doesn't exist, or updates the existing one.
|
|
89
|
+
* Also updates the user document to reflect active subscription status.
|
|
90
|
+
* @param params - Activation parameters
|
|
91
|
+
* @param params.userId - The user's unique identifier
|
|
92
|
+
* @param params.appNamespace - The application namespace/platform
|
|
93
|
+
* @param params.startedAt - ISO timestamp when subscription period starts
|
|
94
|
+
* @param params.expiresAt - ISO timestamp when subscription period ends
|
|
95
|
+
* @param params.planId - The subscription plan identifier
|
|
96
|
+
* @param params.provider - Payment provider (e.g., 'wayforpay')
|
|
97
|
+
* @throws Error if user not found or transaction fails
|
|
98
|
+
*/
|
|
99
|
+
activateSubscription(params: {
|
|
100
|
+
userId: string;
|
|
101
|
+
appNamespace: AppNamespace;
|
|
102
|
+
startedAt: string;
|
|
103
|
+
expiresAt: string;
|
|
104
|
+
planId: string;
|
|
105
|
+
provider: 'wayforpay';
|
|
106
|
+
}): Promise<void>;
|
|
84
107
|
/**
|
|
85
108
|
* Builds an update object from field tuples.
|
|
86
109
|
* @param fields - Array of field paths and values
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/modules/subscription/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkD,MAAM,0BAA0B,CAAC;AACtG,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/modules/subscription/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkD,MAAM,0BAA0B,CAAC;AACtG,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,MAAM,0BAA0B,GAAG;IACrC,qBAAqB;IACrB,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE;CAC1D,EAAE,CAAC;AAEJ;;;GAGG;AACH,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAElD;;OAEG;;IAKH;;;;;;;OAOG;IACU,WAAW,CAAC,MAAM,EAAE;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;KAC1E,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IA6BtC;;;;;;;;;;OAUG;IACU,MAAM,CAAC,MAAM,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,YAAY,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwB/B;;;;;;;OAOG;IACU,oBAAoB,CAAC,MAAM,EAAE;QACtC,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,YAAY,CAAC;QAC3B,MAAM,EAAE,0BAA0B,CAAC;KACtC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBjB;;;;OAIG;IACU,6BAA6B,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAgB3E;;;;;;OAMG;IACU,gBAAgB,CAAC,MAAM,EAAE;QAClC,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,0BAA0B,CAAC;KACtC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;;;;;;;;;OAYG;IACU,oBAAoB,CAAC,MAAM,EAAE;QACtC,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,YAAY,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,WAAW,CAAC;KACzB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsDjB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;CAS5B"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SubscriptionRepository = void 0;
|
|
4
4
|
const firestore_1 = require("firebase-admin/firestore");
|
|
5
5
|
const const_1 = require("./const");
|
|
6
|
+
const utils_1 = require("../../utils");
|
|
6
7
|
/**
|
|
7
8
|
* SubscriptionRepository class handles all database operations related to subscriptions.
|
|
8
9
|
* Implements repository pattern for subscription data access.
|
|
@@ -16,21 +17,31 @@ class SubscriptionRepository {
|
|
|
16
17
|
this.db = (0, firestore_1.getFirestore)();
|
|
17
18
|
}
|
|
18
19
|
/**
|
|
19
|
-
* Retrieves
|
|
20
|
+
* Retrieves a subscription for a specific user.
|
|
20
21
|
* @param params - Query parameters
|
|
21
22
|
* @param params.userId - The user's unique identifier
|
|
22
23
|
* @param params.appNamespace - The application namespace/platform
|
|
24
|
+
* @param params.status - Optional status filter. Can be a single status or array of statuses. Defaults to 'active'
|
|
23
25
|
* @returns Promise resolving to SubscriptionEntity or null if not found
|
|
24
26
|
*/
|
|
25
27
|
async getByUserId(params) {
|
|
26
28
|
const { userId, appNamespace } = params;
|
|
27
|
-
|
|
29
|
+
let query = this.db
|
|
28
30
|
.collection(this.collectionName)
|
|
29
31
|
.where('platform', '==', appNamespace)
|
|
30
|
-
.where('userId', '==', userId)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
.
|
|
32
|
+
.where('userId', '==', userId);
|
|
33
|
+
if (!(0, utils_1.isUndefined)(params.status)) {
|
|
34
|
+
// Handle status filter
|
|
35
|
+
if (Array.isArray(params.status)) {
|
|
36
|
+
// Multiple statuses - use 'in' operator
|
|
37
|
+
query = query.where('status', 'in', params.status);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
// Single status - use '==' operator
|
|
41
|
+
query = query.where('status', '==', params.status);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const querySnapshot = await query.limit(1).get();
|
|
34
45
|
if (querySnapshot.empty) {
|
|
35
46
|
return null;
|
|
36
47
|
}
|
|
@@ -129,6 +140,64 @@ class SubscriptionRepository {
|
|
|
129
140
|
...doc.data(),
|
|
130
141
|
};
|
|
131
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* Activates a subscription for a user using a transaction.
|
|
145
|
+
* Creates a new subscription if one doesn't exist, or updates the existing one.
|
|
146
|
+
* Also updates the user document to reflect active subscription status.
|
|
147
|
+
* @param params - Activation parameters
|
|
148
|
+
* @param params.userId - The user's unique identifier
|
|
149
|
+
* @param params.appNamespace - The application namespace/platform
|
|
150
|
+
* @param params.startedAt - ISO timestamp when subscription period starts
|
|
151
|
+
* @param params.expiresAt - ISO timestamp when subscription period ends
|
|
152
|
+
* @param params.planId - The subscription plan identifier
|
|
153
|
+
* @param params.provider - Payment provider (e.g., 'wayforpay')
|
|
154
|
+
* @throws Error if user not found or transaction fails
|
|
155
|
+
*/
|
|
156
|
+
async activateSubscription(params) {
|
|
157
|
+
const { userId, appNamespace, startedAt, expiresAt, planId, provider } = params;
|
|
158
|
+
return await this.db.runTransaction(async (tx) => {
|
|
159
|
+
// Get user document
|
|
160
|
+
const userSnapshot = await tx.get(this.db.collection(`platform/${appNamespace}/users`).doc(userId));
|
|
161
|
+
// Get subscription document
|
|
162
|
+
const subscriptionSnapshot = await tx.get(this.db
|
|
163
|
+
.collection(this.collectionName)
|
|
164
|
+
.where('userId', '==', userId)
|
|
165
|
+
.where('platform', '==', appNamespace)
|
|
166
|
+
.limit(1));
|
|
167
|
+
if (!userSnapshot.exists) {
|
|
168
|
+
throw new Error(`User not found: ${userId}`);
|
|
169
|
+
}
|
|
170
|
+
if (subscriptionSnapshot.empty) {
|
|
171
|
+
// Create new subscription
|
|
172
|
+
const subscriptionEntity = {
|
|
173
|
+
planId,
|
|
174
|
+
expiresAt,
|
|
175
|
+
status: 'active',
|
|
176
|
+
platform: appNamespace,
|
|
177
|
+
provider,
|
|
178
|
+
startedAt,
|
|
179
|
+
userId,
|
|
180
|
+
};
|
|
181
|
+
const docRef = this.db.collection(this.collectionName).doc();
|
|
182
|
+
await tx.create(docRef, {
|
|
183
|
+
id: docRef.id,
|
|
184
|
+
...subscriptionEntity,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
// Update existing subscription
|
|
189
|
+
await tx.update(subscriptionSnapshot.docs[0].ref, {
|
|
190
|
+
expiresAt,
|
|
191
|
+
status: 'active',
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
// Update user document
|
|
195
|
+
await tx.update(userSnapshot.ref, {
|
|
196
|
+
'subscription.isActive': true,
|
|
197
|
+
'subscription.isTrial': false,
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
}
|
|
132
201
|
/**
|
|
133
202
|
* Builds an update object from field tuples.
|
|
134
203
|
* @param fields - Array of field paths and values
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/modules/subscription/repository.ts"],"names":[],"mappings":";;;AAAA,wDAAsG;AAEtG,mCAAsD;
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/modules/subscription/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,15 +16,17 @@ export declare class SubscriptionService {
|
|
|
16
16
|
*/
|
|
17
17
|
constructor(logger: Logger);
|
|
18
18
|
/**
|
|
19
|
-
* Retrieves
|
|
19
|
+
* Retrieves a subscription for a specific user.
|
|
20
20
|
* @param params - Query parameters
|
|
21
21
|
* @param params.userId - The user's unique identifier
|
|
22
22
|
* @param params.appNamespace - The application namespace/platform
|
|
23
|
+
* @param params.status - Optional status filter. Can be a single status or array of statuses. Defaults to 'active'
|
|
23
24
|
* @returns Promise resolving to SubscriptionEntity or null if not found
|
|
24
25
|
*/
|
|
25
26
|
getByUserId(params: {
|
|
26
27
|
userId: string;
|
|
27
28
|
appNamespace: string;
|
|
29
|
+
status?: SubscriptionEntity['status'] | SubscriptionEntity['status'][];
|
|
28
30
|
}): Promise<SubscriptionEntity | null>;
|
|
29
31
|
/**
|
|
30
32
|
* Creates a new subscription record in the database.
|
|
@@ -97,5 +99,26 @@ export declare class SubscriptionService {
|
|
|
97
99
|
path: string;
|
|
98
100
|
}) => string;
|
|
99
101
|
}): Promise<string>;
|
|
102
|
+
/**
|
|
103
|
+
* Activates a subscription for a user.
|
|
104
|
+
* This operation is transactional - it creates/updates the subscription document
|
|
105
|
+
* and updates the user's subscription status atomically.
|
|
106
|
+
* @param params - Activation parameters
|
|
107
|
+
* @param params.userId - The user's unique identifier
|
|
108
|
+
* @param params.appNamespace - The application namespace/platform
|
|
109
|
+
* @param params.startedAt - ISO timestamp when subscription period starts
|
|
110
|
+
* @param params.expiresAt - ISO timestamp when subscription period ends
|
|
111
|
+
* @param params.planId - The subscription plan identifier
|
|
112
|
+
* @param params.provider - Payment provider (e.g., 'wayforpay')
|
|
113
|
+
* @throws Error if user not found or activation fails
|
|
114
|
+
*/
|
|
115
|
+
activateSubscription(params: {
|
|
116
|
+
userId: string;
|
|
117
|
+
appNamespace: AppNamespace;
|
|
118
|
+
startedAt: string;
|
|
119
|
+
expiresAt: string;
|
|
120
|
+
planId: string;
|
|
121
|
+
provider: 'wayforpay';
|
|
122
|
+
}): Promise<void>;
|
|
100
123
|
}
|
|
101
124
|
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/modules/subscription/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAA0B,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C;;;GAGG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEhD;;;OAGG;gBACS,MAAM,EAAE,MAAM;IAM1B
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/modules/subscription/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAA0B,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C;;;GAGG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEhD;;;OAGG;gBACS,MAAM,EAAE,MAAM;IAM1B;;;;;;;OAOG;IACU,WAAW,CAAC,MAAM,EAAE;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;KAC1E,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAgBtC;;;;;;;;;;OAUG;IACU,MAAM,CAAC,MAAM,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,YAAY,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkB/B;;;;;;;OAOG;IACU,oBAAoB,CAAC,MAAM,EAAE;QACtC,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,YAAY,CAAC;QAC3B,MAAM,EAAE,0BAA0B,CAAC;KACtC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBjB;;;;OAIG;IACU,6BAA6B,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAc3E;;;;;;OAMG;IACU,gBAAgB,CAAC,MAAM,EAAE;QAClC,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,0BAA0B,CAAC;KACtC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjB;;;;;;;;;;;;OAYG;IACU,iCAAiC,CAAC,MAAM,EAAE;QACnD,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,YAAY,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,KAAK,MAAM,CAAC;KACjE,GAAG,OAAO,CAAC,MAAM,CAAC;IAyDnB;;;;;;;;;;;;OAYG;IACU,oBAAoB,CAAC,MAAM,EAAE;QACtC,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,YAAY,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,WAAW,CAAC;KACzB,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBpB"}
|
|
@@ -23,10 +23,11 @@ class SubscriptionService {
|
|
|
23
23
|
this.paymentService = new service_1.PaymentService(logger);
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
* Retrieves
|
|
26
|
+
* Retrieves a subscription for a specific user.
|
|
27
27
|
* @param params - Query parameters
|
|
28
28
|
* @param params.userId - The user's unique identifier
|
|
29
29
|
* @param params.appNamespace - The application namespace/platform
|
|
30
|
+
* @param params.status - Optional status filter. Can be a single status or array of statuses. Defaults to 'active'
|
|
30
31
|
* @returns Promise resolving to SubscriptionEntity or null if not found
|
|
31
32
|
*/
|
|
32
33
|
async getByUserId(params) {
|
|
@@ -200,6 +201,36 @@ class SubscriptionService {
|
|
|
200
201
|
throw error;
|
|
201
202
|
}
|
|
202
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Activates a subscription for a user.
|
|
206
|
+
* This operation is transactional - it creates/updates the subscription document
|
|
207
|
+
* and updates the user's subscription status atomically.
|
|
208
|
+
* @param params - Activation parameters
|
|
209
|
+
* @param params.userId - The user's unique identifier
|
|
210
|
+
* @param params.appNamespace - The application namespace/platform
|
|
211
|
+
* @param params.startedAt - ISO timestamp when subscription period starts
|
|
212
|
+
* @param params.expiresAt - ISO timestamp when subscription period ends
|
|
213
|
+
* @param params.planId - The subscription plan identifier
|
|
214
|
+
* @param params.provider - Payment provider (e.g., 'wayforpay')
|
|
215
|
+
* @throws Error if user not found or activation fails
|
|
216
|
+
*/
|
|
217
|
+
async activateSubscription(params) {
|
|
218
|
+
try {
|
|
219
|
+
await this.repository.activateSubscription(params);
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
this.logger.error({
|
|
223
|
+
message: 'Error in subscription service activateSubscription',
|
|
224
|
+
payload: {
|
|
225
|
+
userId: params.userId,
|
|
226
|
+
appNamespace: params.appNamespace,
|
|
227
|
+
planId: params.planId,
|
|
228
|
+
error: JSON.stringify(error),
|
|
229
|
+
},
|
|
230
|
+
});
|
|
231
|
+
throw error;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
203
234
|
}
|
|
204
235
|
exports.SubscriptionService = SubscriptionService;
|
|
205
236
|
//# sourceMappingURL=service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/modules/subscription/service.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,6CAAkF;AAGlF,mCAAoE;AACpE,iDAAqD;AAErD;;;GAGG;AACH,MAAa,mBAAmB;IAK5B;;;OAGG;IACH,YAAY,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,mCAAsB,EAAE,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,IAAI,wBAAc,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/modules/subscription/service.ts"],"names":[],"mappings":"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"}
|