@vendure/core 2.2.0-next.1 → 2.2.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/common/validate-custom-field-value.d.ts +2 -2
- package/dist/api/common/validate-custom-field-value.js +5 -5
- package/dist/api/common/validate-custom-field-value.js.map +1 -1
- package/dist/api/config/get-custom-fields-config-without-interfaces.d.ts +1 -1
- package/dist/api/config/get-custom-fields-config-without-interfaces.js +2 -1
- package/dist/api/config/get-custom-fields-config-without-interfaces.js.map +1 -1
- package/dist/api/config/graphql-custom-fields.js +14 -0
- package/dist/api/config/graphql-custom-fields.js.map +1 -1
- package/dist/api/middleware/exception-logger.filter.d.ts +5 -2
- package/dist/api/middleware/exception-logger.filter.js +21 -2
- package/dist/api/middleware/exception-logger.filter.js.map +1 -1
- package/dist/api/middleware/id-codec-plugin.js +2 -0
- package/dist/api/middleware/id-codec-plugin.js.map +1 -1
- package/dist/api/middleware/validate-custom-fields-interceptor.js +7 -7
- package/dist/api/middleware/validate-custom-fields-interceptor.js.map +1 -1
- package/dist/api/resolvers/admin/global-settings.resolver.d.ts +1 -0
- package/dist/api/resolvers/admin/global-settings.resolver.js +27 -3
- package/dist/api/resolvers/admin/global-settings.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/order.resolver.d.ts +2 -1
- package/dist/api/resolvers/admin/order.resolver.js +13 -0
- package/dist/api/resolvers/admin/order.resolver.js.map +1 -1
- package/dist/api/resolvers/entity/administrator-entity.resolver.d.ts +3 -3
- package/dist/api/resolvers/entity/administrator-entity.resolver.js +9 -9
- package/dist/api/resolvers/entity/administrator-entity.resolver.js.map +1 -1
- package/dist/api/resolvers/entity/product-variant-entity.resolver.js +2 -1
- package/dist/api/resolvers/entity/product-variant-entity.resolver.js.map +1 -1
- package/dist/api/schema/admin-api/order.api.graphql +41 -0
- package/dist/api/schema/common/history-entry.type.graphql +1 -0
- package/dist/common/error/generated-graphql-admin-errors.d.ts +9 -0
- package/dist/common/error/generated-graphql-admin-errors.js +12 -2
- package/dist/common/error/generated-graphql-admin-errors.js.map +1 -1
- package/dist/config/config.module.js +2 -1
- package/dist/config/config.module.js.map +1 -1
- package/dist/config/custom-field/custom-field-types.d.ts +7 -3
- package/dist/config/default-config.js +2 -0
- package/dist/config/default-config.js.map +1 -1
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.js +1 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/system/error-handler-strategy.d.ts +75 -0
- package/dist/config/system/error-handler-strategy.js +3 -0
- package/dist/config/system/error-handler-strategy.js.map +1 -0
- package/dist/config/vendure-config.d.ts +10 -0
- package/dist/entity/custom-entity-fields.d.ts +2 -0
- package/dist/entity/custom-entity-fields.js +4 -1
- package/dist/entity/custom-entity-fields.js.map +1 -1
- package/dist/entity/product-variant/product-variant-price.entity.d.ts +4 -1
- package/dist/entity/product-variant/product-variant-price.entity.js +5 -0
- package/dist/entity/product-variant/product-variant-price.entity.js.map +1 -1
- package/dist/entity/refund/refund.entity.d.ts +12 -0
- package/dist/entity/refund/refund.entity.js.map +1 -1
- package/dist/entity/register-custom-entity-fields.js +43 -55
- package/dist/entity/register-custom-entity-fields.js.map +1 -1
- package/dist/i18n/messages/de.json +3 -3
- package/dist/i18n/messages/en.json +2 -0
- package/dist/job-queue/job-queue.service.d.ts +5 -0
- package/dist/job-queue/job-queue.service.js +22 -0
- package/dist/job-queue/job-queue.service.js.map +1 -1
- package/dist/job-queue/polling-job-queue-strategy.d.ts +34 -1
- package/dist/job-queue/polling-job-queue-strategy.js +54 -24
- package/dist/job-queue/polling-job-queue-strategy.js.map +1 -1
- package/dist/plugin/default-job-queue-plugin/default-job-queue-plugin.d.ts +12 -0
- package/dist/plugin/default-job-queue-plugin/default-job-queue-plugin.js +2 -1
- package/dist/plugin/default-job-queue-plugin/default-job-queue-plugin.js.map +1 -1
- package/dist/plugin/default-search-plugin/indexer/indexer.controller.d.ts +4 -3
- package/dist/plugin/default-search-plugin/indexer/indexer.controller.js +12 -3
- package/dist/plugin/default-search-plugin/indexer/indexer.controller.js.map +1 -1
- package/dist/plugin/default-search-plugin/indexer/search-index.service.js +2 -2
- package/dist/plugin/default-search-plugin/indexer/search-index.service.js.map +1 -1
- package/dist/plugin/default-search-plugin/search-strategy/mysql-search-strategy.js +7 -6
- package/dist/plugin/default-search-plugin/search-strategy/mysql-search-strategy.js.map +1 -1
- package/dist/plugin/default-search-plugin/search-strategy/postgres-search-strategy.js +5 -7
- package/dist/plugin/default-search-plugin/search-strategy/postgres-search-strategy.js.map +1 -1
- package/dist/plugin/default-search-plugin/search-strategy/sqlite-search-strategy.js +9 -7
- package/dist/plugin/default-search-plugin/search-strategy/sqlite-search-strategy.js.map +1 -1
- package/dist/service/helpers/order-modifier/order-modifier.d.ts +9 -4
- package/dist/service/helpers/order-modifier/order-modifier.js +118 -34
- package/dist/service/helpers/order-modifier/order-modifier.js.map +1 -1
- package/dist/service/helpers/translatable-saver/translatable-saver.js +1 -0
- package/dist/service/helpers/translatable-saver/translatable-saver.js.map +1 -1
- package/dist/service/services/collection.service.js +3 -0
- package/dist/service/services/collection.service.js.map +1 -1
- package/dist/service/services/history.service.d.ts +7 -0
- package/dist/service/services/history.service.js.map +1 -1
- package/dist/service/services/order.service.d.ts +12 -8
- package/dist/service/services/order.service.js +58 -67
- package/dist/service/services/order.service.js.map +1 -1
- package/dist/service/services/payment.service.d.ts +8 -2
- package/dist/service/services/payment.service.js +54 -25
- package/dist/service/services/payment.service.js.map +1 -1
- package/dist/service/services/product-variant.service.js +9 -3
- package/dist/service/services/product-variant.service.js.map +1 -1
- package/package.json +3 -3
|
@@ -6,8 +6,20 @@ import { RefundLine } from '../order-line-reference/refund-line.entity';
|
|
|
6
6
|
import { Payment } from '../payment/payment.entity';
|
|
7
7
|
export declare class Refund extends VendureEntity {
|
|
8
8
|
constructor(input?: DeepPartial<Refund>);
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated Since v2.2, the `items` field will not be used by default. Instead, the `total` field
|
|
11
|
+
* alone will be used to determine the refund amount.
|
|
12
|
+
*/
|
|
9
13
|
items: number;
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated Since v2.2, the `shipping` field will not be used by default. Instead, the `total` field
|
|
16
|
+
* alone will be used to determine the refund amount.
|
|
17
|
+
*/
|
|
10
18
|
shipping: number;
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated Since v2.2, the `adjustment` field will not be used by default. Instead, the `total` field
|
|
21
|
+
* alone will be used to determine the refund amount.
|
|
22
|
+
*/
|
|
11
23
|
adjustment: number;
|
|
12
24
|
total: number;
|
|
13
25
|
method: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refund.entity.js","sourceRoot":"","sources":["../../../src/entity/refund/refund.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qCAA6F;AAI7F,qDAAoD;AACpD,gEAAkD;AAClD,wDAA2C;AAC3C,mFAAwE;AACxE,8DAAoD;AAG7C,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,2BAAa;IACrC,YAAY,KAA2B;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"refund.entity.js","sourceRoot":"","sources":["../../../src/entity/refund/refund.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qCAA6F;AAI7F,qDAAoD;AACpD,gEAAkD;AAClD,wDAA2C;AAC3C,mFAAwE;AACxE,8DAAoD;AAG7C,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,2BAAa;IACrC,YAAY,KAA2B;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;CA2CJ,CAAA;AArCG;IAAC,IAAA,uBAAK,GAAE;;qCAAe;AAMvB;IAAC,IAAA,uBAAK,GAAE;;wCAAkB;AAM1B;IAAC,IAAA,uBAAK,GAAE;;0CAAoB;AAE5B;IAAC,IAAA,uBAAK,GAAE;;qCAAe;AAEvB;IAAC,IAAA,gBAAM,GAAE;;sCAAgB;AAEzB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sCAAgB;AAE3C;IAAC,IAAA,gBAAM,EAAC,SAAS,CAAC;;qCAAoB;AAEtC;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAAuB;AAElD;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,+BAAU,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;IAClD,IAAA,mBAAS,GAAE;;qCACQ;AAEpB;IAAC,IAAA,eAAK,GAAE;IACP,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,wBAAO,CAAC;IAC1B,IAAA,oBAAU,GAAE;8BACJ,wBAAO;uCAAC;AAEjB;IAAC,IAAA,8BAAQ,GAAE;;yCACG;AAEd;IAAC,IAAA,gBAAM,EAAC,aAAa,CAAC;;wCAA2B;AA7CxC,MAAM;IADlB,IAAA,gBAAM,GAAE;;GACI,MAAM,CA8ClB;AA9CY,wBAAM"}
|
|
@@ -5,7 +5,6 @@ const shared_utils_1 = require("@vendure/common/lib/shared-utils");
|
|
|
5
5
|
const typeorm_1 = require("typeorm");
|
|
6
6
|
const DateUtils_1 = require("typeorm/util/DateUtils");
|
|
7
7
|
const vendure_logger_1 = require("../config/logger/vendure-logger");
|
|
8
|
-
const custom_entity_fields_1 = require("./custom-entity-fields");
|
|
9
8
|
/**
|
|
10
9
|
* The maximum length of the "length" argument of a MySQL varchar column.
|
|
11
10
|
*/
|
|
@@ -197,60 +196,49 @@ function assertLocaleFieldsNotSpecified(config, entityName) {
|
|
|
197
196
|
* stage of the app lifecycle, before the AppModule is initialized.
|
|
198
197
|
*/
|
|
199
198
|
function registerCustomEntityFields(config) {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
assertLocaleFieldsNotSpecified(config, 'GlobalSettings');
|
|
244
|
-
registerCustomFieldsForEntity(config, 'Region', custom_entity_fields_1.CustomRegionFields);
|
|
245
|
-
registerCustomFieldsForEntity(config, 'Region', custom_entity_fields_1.CustomRegionFieldsTranslation, true);
|
|
246
|
-
registerCustomFieldsForEntity(config, 'Seller', custom_entity_fields_1.CustomSellerFields);
|
|
247
|
-
assertLocaleFieldsNotSpecified(config, 'Seller');
|
|
248
|
-
registerCustomFieldsForEntity(config, 'ShippingMethod', custom_entity_fields_1.CustomShippingMethodFields);
|
|
249
|
-
registerCustomFieldsForEntity(config, 'ShippingMethod', custom_entity_fields_1.CustomShippingMethodFieldsTranslation, true);
|
|
250
|
-
registerCustomFieldsForEntity(config, 'StockLocation', custom_entity_fields_1.CustomStockLocationFields);
|
|
251
|
-
assertLocaleFieldsNotSpecified(config, 'StockLocation');
|
|
252
|
-
registerCustomFieldsForEntity(config, 'Zone', custom_entity_fields_1.CustomZoneFields);
|
|
253
|
-
assertLocaleFieldsNotSpecified(config, 'Zone');
|
|
199
|
+
var _a;
|
|
200
|
+
// In order to determine the classes used for the custom field embedded types, we need
|
|
201
|
+
// to introspect the metadata args storage.
|
|
202
|
+
const metadataArgsStorage = (0, typeorm_1.getMetadataArgsStorage)();
|
|
203
|
+
for (const [entityName, customFieldsConfig] of Object.entries((_a = config.customFields) !== null && _a !== void 0 ? _a : {})) {
|
|
204
|
+
if (customFieldsConfig && customFieldsConfig.length) {
|
|
205
|
+
const customFieldsMetadata = getCustomFieldsMetadata(entityName);
|
|
206
|
+
const customFieldsClass = customFieldsMetadata.type();
|
|
207
|
+
if (customFieldsClass && typeof customFieldsClass !== 'string') {
|
|
208
|
+
registerCustomFieldsForEntity(config, entityName, customFieldsClass);
|
|
209
|
+
}
|
|
210
|
+
const translationsMetadata = metadataArgsStorage
|
|
211
|
+
.filterRelations(customFieldsMetadata.target)
|
|
212
|
+
.find(m => m.propertyName === 'translations');
|
|
213
|
+
if (translationsMetadata) {
|
|
214
|
+
// This entity is translatable, which means that we should
|
|
215
|
+
// also register any localized custom fields on the related
|
|
216
|
+
// EntityTranslation entity.
|
|
217
|
+
const translationType = translationsMetadata.type();
|
|
218
|
+
const customFieldsTranslationsMetadata = getCustomFieldsMetadata(translationType);
|
|
219
|
+
const customFieldsTranslationClass = customFieldsTranslationsMetadata.type();
|
|
220
|
+
if (customFieldsTranslationClass && typeof customFieldsTranslationClass !== 'string') {
|
|
221
|
+
registerCustomFieldsForEntity(config, entityName, customFieldsTranslationClass, true);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
assertLocaleFieldsNotSpecified(config, entityName);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
function getCustomFieldsMetadata(entity) {
|
|
230
|
+
const entityName = typeof entity === 'string' ? entity : entity.name;
|
|
231
|
+
const metadataArgs = metadataArgsStorage.embeddeds.find(item => {
|
|
232
|
+
if (item.propertyName === 'customFields') {
|
|
233
|
+
const targetName = typeof item.target === 'string' ? item.target : item.target.name;
|
|
234
|
+
return targetName === entityName;
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
if (!metadataArgs) {
|
|
238
|
+
throw new Error(`Could not find embedded CustomFields property on entity "${entityName}"`);
|
|
239
|
+
}
|
|
240
|
+
return metadataArgs;
|
|
241
|
+
}
|
|
254
242
|
}
|
|
255
243
|
exports.registerCustomEntityFields = registerCustomEntityFields;
|
|
256
244
|
//# sourceMappingURL=register-custom-entity-fields.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-custom-entity-fields.js","sourceRoot":"","sources":["../../src/entity/register-custom-entity-fields.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"register-custom-entity-fields.js","sourceRoot":"","sources":["../../src/entity/register-custom-entity-fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -73,10 +73,10 @@
|
|
|
73
73
|
"ORDER_LIMIT_ERROR": "Der Artikel konnte nicht hinzugefügt werden. Eine Bestellung kann maximal { maxItems } Artikel enthalten",
|
|
74
74
|
"ORDER_MODIFICATION_ERROR": "Der Inhalt der Bestellung kann nur im Status \"AddingItems\" geändert werden",
|
|
75
75
|
"ORDER_PAYMENT_STATE_ERROR": "Eine Zahlung kann nur im Status \"ArrangingPayment\" hinzugefügt werden",
|
|
76
|
-
"ORDER_STATE_TRANSITION_ERROR": "Der Status der Bestellung
|
|
76
|
+
"ORDER_STATE_TRANSITION_ERROR": "Der Status der Bestellung kann nicht von \"{ fromState }\" zu \"{ toState }\" geändert werden",
|
|
77
77
|
"PASSWORD_ALREADY_SET_ERROR": "Ein Passwort wurde während der Registrierung bereits festgelegt",
|
|
78
|
-
"PASSWORD_RESET_TOKEN_EXPIRED_ERROR": "Das Token zum
|
|
79
|
-
"PASSWORD_RESET_TOKEN_INVALID_ERROR": "Das Token zum
|
|
78
|
+
"PASSWORD_RESET_TOKEN_EXPIRED_ERROR": "Das Token zum Zurücksetzen des Passwortes ist leider abgelaufen",
|
|
79
|
+
"PASSWORD_RESET_TOKEN_INVALID_ERROR": "Das Token zum Zurücksetzen des Passwortes ist leider falsch",
|
|
80
80
|
"PAYMENT_DECLINED_ERROR": "Die Zahlung wurde abgelehnt",
|
|
81
81
|
"PAYMENT_FAILED_ERROR": "Zahlung fehlgeschlagen",
|
|
82
82
|
"PAYMENT_ORDER_MISMATCH_ERROR": "Die Zahlung und OrderLines gehören nicht zueinander",
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
"promotion-channels-can-only-be-changed-from-default-channel": "Promotions channels may only be changed from the Default Channel",
|
|
51
51
|
"stockonhand-cannot-be-negative": "stockOnHand cannot be a negative value",
|
|
52
52
|
"superadmin-must-have-superadmin-role": "Cannot remove the SuperAdmin role from the sole SuperAdmin",
|
|
53
|
+
"target-customer-not-assigned-to-order-channels": "The target Customer is not assigned to the same Channels as the Order. Missing channels IDs: { missingChannelIds }",
|
|
53
54
|
"unauthorized": "The credentials did not match. Please check and try again"
|
|
54
55
|
},
|
|
55
56
|
"errorResult": {
|
|
@@ -94,6 +95,7 @@
|
|
|
94
95
|
"PAYMENT_STATE_TRANSITION_ERROR": "Cannot transition Payment from \"{ fromState }\" to \"{ toState }\"",
|
|
95
96
|
"PRODUCT_OPTION_IN_USE_ERROR": "Cannot remove ProductOptionGroup \"{ optionGroupCode }\" as it is used by {productVariantCount, plural, one {1 ProductVariant} other {# ProductVariants}}. Use the `force` argument to remove it anyway",
|
|
96
97
|
"QUANTITY_TOO_GREAT_ERROR": "The specified quantity is greater than the available OrderItems",
|
|
98
|
+
"REFUND_AMOUNT_ERROR": "The amount specified exceeds the refundable amount for this payment",
|
|
97
99
|
"REFUND_ORDER_STATE_ERROR": "Cannot refund an Order in the \"{ orderState }\" state",
|
|
98
100
|
"SETTLE_PAYMENT_ERROR": "Settling the payment failed",
|
|
99
101
|
"VERIFICATION_TOKEN_EXPIRED_ERROR": "Verification token has expired. Use refreshCustomerVerification to send a new token.",
|
|
@@ -114,5 +114,10 @@ export declare class JobQueueService implements OnModuleDestroy {
|
|
|
114
114
|
* registered JobQueue.
|
|
115
115
|
*/
|
|
116
116
|
getJobQueues(): GraphQlJobQueue[];
|
|
117
|
+
/**
|
|
118
|
+
* We wrap the process function in order to catch any errors thrown and pass them to
|
|
119
|
+
* any configured ErrorHandlerStrategies.
|
|
120
|
+
*/
|
|
121
|
+
private createWrappedProcessFn;
|
|
117
122
|
private shouldStartQueue;
|
|
118
123
|
}
|
|
@@ -73,6 +73,8 @@ let JobQueueService = class JobQueueService {
|
|
|
73
73
|
if (this.configService.jobQueueOptions.prefix) {
|
|
74
74
|
options = Object.assign(Object.assign({}, options), { name: `${this.configService.jobQueueOptions.prefix}${options.name}` });
|
|
75
75
|
}
|
|
76
|
+
const wrappedProcessFn = this.createWrappedProcessFn(options.process);
|
|
77
|
+
options = Object.assign(Object.assign({}, options), { process: wrappedProcessFn });
|
|
76
78
|
const queue = new job_queue_1.JobQueue(options, this.jobQueueStrategy, this.jobBufferService);
|
|
77
79
|
if (this.hasStarted && this.shouldStartQueue(queue.name)) {
|
|
78
80
|
await queue.start();
|
|
@@ -158,6 +160,26 @@ let JobQueueService = class JobQueueService {
|
|
|
158
160
|
running: queue.started,
|
|
159
161
|
}));
|
|
160
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* We wrap the process function in order to catch any errors thrown and pass them to
|
|
165
|
+
* any configured ErrorHandlerStrategies.
|
|
166
|
+
*/
|
|
167
|
+
createWrappedProcessFn(processFn) {
|
|
168
|
+
const { errorHandlers } = this.configService.systemOptions;
|
|
169
|
+
return async (job) => {
|
|
170
|
+
try {
|
|
171
|
+
return await processFn(job);
|
|
172
|
+
}
|
|
173
|
+
catch (e) {
|
|
174
|
+
for (const handler of errorHandlers) {
|
|
175
|
+
if (e instanceof Error) {
|
|
176
|
+
void handler.handleWorkerError(e, { job });
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
throw e;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
}
|
|
161
183
|
shouldStartQueue(queueName) {
|
|
162
184
|
if (this.configService.jobQueueOptions.activeQueues.length > 0) {
|
|
163
185
|
if (!this.configService.jobQueueOptions.activeQueues.includes(queueName)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-queue.service.js","sourceRoot":"","sources":["../../src/job-queue/job-queue.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"job-queue.service.js","sourceRoot":"","sources":["../../src/job-queue/job-queue.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ID } from '@vendure/common/lib/shared-types';
|
|
2
2
|
import { InjectableJobQueueStrategy } from './injectable-job-queue-strategy';
|
|
3
3
|
import { Job } from './job';
|
|
4
|
+
import { QueueNameProcessStorage } from './queue-name-process-storage';
|
|
4
5
|
import { JobData } from './types';
|
|
5
6
|
/**
|
|
6
7
|
* @description
|
|
@@ -41,6 +42,36 @@ export interface PollingJobQueueStrategyConfig {
|
|
|
41
42
|
* @default () => 1000
|
|
42
43
|
*/
|
|
43
44
|
backoffStrategy?: BackoffStrategy;
|
|
45
|
+
/**
|
|
46
|
+
* @description
|
|
47
|
+
* The timeout in ms which the queue will use when attempting a graceful shutdown.
|
|
48
|
+
* That means, when the server is shut down but a job is running, the job queue will
|
|
49
|
+
* wait for the job to complete before allowing the server to shut down. If the job
|
|
50
|
+
* does not complete within this timeout window, the job will be forced to stop
|
|
51
|
+
* and the server will shut down anyway.
|
|
52
|
+
*
|
|
53
|
+
* @since 2.2.0
|
|
54
|
+
* @default 20_000
|
|
55
|
+
*/
|
|
56
|
+
gracefulShutdownTimeout?: number;
|
|
57
|
+
}
|
|
58
|
+
declare class ActiveQueue<Data extends JobData<Data> = object> {
|
|
59
|
+
private readonly queueName;
|
|
60
|
+
private readonly process;
|
|
61
|
+
private readonly jobQueueStrategy;
|
|
62
|
+
private timer;
|
|
63
|
+
private running;
|
|
64
|
+
private activeJobs;
|
|
65
|
+
private errorNotifier$;
|
|
66
|
+
private queueStopped$;
|
|
67
|
+
private subscription;
|
|
68
|
+
private readonly pollInterval;
|
|
69
|
+
constructor(queueName: string, process: (job: Job<Data>) => Promise<any>, jobQueueStrategy: PollingJobQueueStrategy);
|
|
70
|
+
start(): void;
|
|
71
|
+
stop(stopActiveQueueTimeout?: number): Promise<void>;
|
|
72
|
+
private awaitRunningJobsOrTimeout;
|
|
73
|
+
private onFailOrComplete;
|
|
74
|
+
private removeJobFromActive;
|
|
44
75
|
}
|
|
45
76
|
/**
|
|
46
77
|
* @description
|
|
@@ -57,7 +88,8 @@ export declare abstract class PollingJobQueueStrategy extends InjectableJobQueue
|
|
|
57
88
|
pollInterval: number | ((queueName: string) => number);
|
|
58
89
|
setRetries: (queueName: string, job: Job) => number;
|
|
59
90
|
backOffStrategy?: BackoffStrategy;
|
|
60
|
-
|
|
91
|
+
gracefulShutdownTimeout: number;
|
|
92
|
+
protected activeQueues: QueueNameProcessStorage<ActiveQueue<any>>;
|
|
61
93
|
constructor(config?: PollingJobQueueStrategyConfig);
|
|
62
94
|
constructor(concurrency?: number, pollInterval?: number);
|
|
63
95
|
start<Data extends JobData<Data> = object>(queueName: string, process: (job: Job<Data>) => Promise<any>): Promise<void>;
|
|
@@ -81,3 +113,4 @@ export declare abstract class PollingJobQueueStrategy extends InjectableJobQueue
|
|
|
81
113
|
*/
|
|
82
114
|
abstract findOne(id: ID): Promise<Job | undefined>;
|
|
83
115
|
}
|
|
116
|
+
export {};
|
|
@@ -19,10 +19,6 @@ class ActiveQueue {
|
|
|
19
19
|
this.activeJobs = [];
|
|
20
20
|
this.errorNotifier$ = new rxjs_1.Subject();
|
|
21
21
|
this.queueStopped$ = new rxjs_1.Subject();
|
|
22
|
-
this.subscription = this.errorNotifier$.pipe((0, operators_1.throttleTime)(3000)).subscribe(([message, stack]) => {
|
|
23
|
-
vendure_logger_1.Logger.error(message);
|
|
24
|
-
vendure_logger_1.Logger.debug(stack);
|
|
25
|
-
});
|
|
26
22
|
this.pollInterval =
|
|
27
23
|
typeof this.jobQueueStrategy.pollInterval === 'function'
|
|
28
24
|
? this.jobQueueStrategy.pollInterval(queueName)
|
|
@@ -30,6 +26,10 @@ class ActiveQueue {
|
|
|
30
26
|
}
|
|
31
27
|
start() {
|
|
32
28
|
vendure_logger_1.Logger.debug(`Starting JobQueue "${this.queueName}"`);
|
|
29
|
+
this.subscription = this.errorNotifier$.pipe((0, operators_1.throttleTime)(3000)).subscribe(([message, stack]) => {
|
|
30
|
+
vendure_logger_1.Logger.error(message);
|
|
31
|
+
vendure_logger_1.Logger.debug(stack);
|
|
32
|
+
});
|
|
33
33
|
this.running = true;
|
|
34
34
|
const runNextJobs = async () => {
|
|
35
35
|
try {
|
|
@@ -41,11 +41,15 @@ class ActiveQueue {
|
|
|
41
41
|
await this.jobQueueStrategy.update(nextJob);
|
|
42
42
|
const onProgress = (job) => this.jobQueueStrategy.update(job);
|
|
43
43
|
nextJob.on('progress', onProgress);
|
|
44
|
-
const
|
|
44
|
+
const cancellationSub = (0, rxjs_1.interval)(this.pollInterval * 5)
|
|
45
|
+
.pipe(
|
|
45
46
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
46
|
-
(0, operators_1.switchMap)(() => this.jobQueueStrategy.findOne(nextJob.id)), (0, operators_1.filter)(job => (job === null || job === void 0 ? void 0 : job.state) === generated_types_1.JobState.CANCELLED), (0, operators_1.take)(1))
|
|
47
|
+
(0, operators_1.switchMap)(() => this.jobQueueStrategy.findOne(nextJob.id)), (0, operators_1.filter)(job => (job === null || job === void 0 ? void 0 : job.state) === generated_types_1.JobState.CANCELLED), (0, operators_1.take)(1))
|
|
48
|
+
.subscribe(() => {
|
|
49
|
+
nextJob.cancel();
|
|
50
|
+
});
|
|
47
51
|
const stopSignal$ = this.queueStopped$.pipe((0, operators_1.take)(1));
|
|
48
|
-
(0, rxjs_1.race)((0, rxjs_1.from)(this.process(nextJob)),
|
|
52
|
+
(0, rxjs_1.race)((0, rxjs_1.from)(this.process(nextJob)), stopSignal$)
|
|
49
53
|
.toPromise()
|
|
50
54
|
.then(result => {
|
|
51
55
|
if (result === STOP_SIGNAL) {
|
|
@@ -61,10 +65,11 @@ class ActiveQueue {
|
|
|
61
65
|
nextJob.fail(err);
|
|
62
66
|
})
|
|
63
67
|
.finally(() => {
|
|
64
|
-
if (!this.running && nextJob.state !==
|
|
65
|
-
|
|
66
|
-
}
|
|
68
|
+
// if (!this.running && nextJob.state !== JobState.PENDING) {
|
|
69
|
+
// return;
|
|
70
|
+
// }
|
|
67
71
|
nextJob.off('progress', onProgress);
|
|
72
|
+
cancellationSub.unsubscribe();
|
|
68
73
|
return this.onFailOrComplete(nextJob);
|
|
69
74
|
})
|
|
70
75
|
.catch((err) => {
|
|
@@ -85,24 +90,45 @@ class ActiveQueue {
|
|
|
85
90
|
};
|
|
86
91
|
void runNextJobs();
|
|
87
92
|
}
|
|
88
|
-
stop() {
|
|
93
|
+
async stop(stopActiveQueueTimeout = 20000) {
|
|
89
94
|
this.running = false;
|
|
90
|
-
this.queueStopped$.next(STOP_SIGNAL);
|
|
91
95
|
clearTimeout(this.timer);
|
|
96
|
+
await this.awaitRunningJobsOrTimeout(stopActiveQueueTimeout);
|
|
97
|
+
vendure_logger_1.Logger.info(`Stopped queue: ${this.queueName}`);
|
|
98
|
+
this.subscription.unsubscribe();
|
|
99
|
+
// Allow any job status changes to be persisted
|
|
100
|
+
// before we permit the application shutdown to continue.
|
|
101
|
+
// Otherwise, the DB connection will close before our
|
|
102
|
+
// changes are persisted.
|
|
103
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
104
|
+
}
|
|
105
|
+
awaitRunningJobsOrTimeout(stopActiveQueueTimeout = 20000) {
|
|
92
106
|
const start = +new Date();
|
|
93
|
-
|
|
94
|
-
const maxTimeout = 2000;
|
|
95
|
-
let pollTimer;
|
|
107
|
+
let timeout;
|
|
96
108
|
return new Promise(resolve => {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
109
|
+
let lastStatusUpdate = +new Date();
|
|
110
|
+
const pollActiveJobs = () => {
|
|
111
|
+
const now = +new Date();
|
|
112
|
+
const timedOut = stopActiveQueueTimeout === undefined ? false : now - start > stopActiveQueueTimeout;
|
|
113
|
+
if (this.activeJobs.length === 0) {
|
|
114
|
+
clearTimeout(timeout);
|
|
101
115
|
resolve();
|
|
116
|
+
return;
|
|
102
117
|
}
|
|
103
|
-
|
|
104
|
-
|
|
118
|
+
if (timedOut) {
|
|
119
|
+
vendure_logger_1.Logger.warn(`Timed out (${stopActiveQueueTimeout}ms) waiting for ${this.activeJobs.length} active jobs in queue "${this.queueName}" to complete. Forcing stop...`);
|
|
120
|
+
this.queueStopped$.next(STOP_SIGNAL);
|
|
121
|
+
clearTimeout(timeout);
|
|
122
|
+
resolve();
|
|
123
|
+
return;
|
|
105
124
|
}
|
|
125
|
+
if (this.activeJobs.length > 0) {
|
|
126
|
+
if (now - lastStatusUpdate > 2000) {
|
|
127
|
+
vendure_logger_1.Logger.info(`Stopping queue: ${this.queueName} - waiting for ${this.activeJobs.length} active jobs to complete...`);
|
|
128
|
+
lastStatusUpdate = now;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
timeout = setTimeout(pollActiveJobs, 200);
|
|
106
132
|
};
|
|
107
133
|
void pollActiveJobs();
|
|
108
134
|
});
|
|
@@ -113,7 +139,9 @@ class ActiveQueue {
|
|
|
113
139
|
}
|
|
114
140
|
removeJobFromActive(job) {
|
|
115
141
|
const index = this.activeJobs.indexOf(job);
|
|
116
|
-
|
|
142
|
+
if (index !== -1) {
|
|
143
|
+
this.activeJobs.splice(index, 1);
|
|
144
|
+
}
|
|
117
145
|
}
|
|
118
146
|
}
|
|
119
147
|
/**
|
|
@@ -128,7 +156,7 @@ class ActiveQueue {
|
|
|
128
156
|
*/
|
|
129
157
|
class PollingJobQueueStrategy extends injectable_job_queue_strategy_1.InjectableJobQueueStrategy {
|
|
130
158
|
constructor(concurrencyOrConfig, maybePollInterval) {
|
|
131
|
-
var _a, _b, _c, _d;
|
|
159
|
+
var _a, _b, _c, _d, _e;
|
|
132
160
|
super();
|
|
133
161
|
this.activeQueues = new queue_name_process_storage_1.QueueNameProcessStorage();
|
|
134
162
|
if (concurrencyOrConfig && (0, shared_utils_1.isObject)(concurrencyOrConfig)) {
|
|
@@ -136,11 +164,13 @@ class PollingJobQueueStrategy extends injectable_job_queue_strategy_1.Injectable
|
|
|
136
164
|
this.pollInterval = (_b = concurrencyOrConfig.pollInterval) !== null && _b !== void 0 ? _b : 200;
|
|
137
165
|
this.backOffStrategy = (_c = concurrencyOrConfig.backoffStrategy) !== null && _c !== void 0 ? _c : (() => 1000);
|
|
138
166
|
this.setRetries = (_d = concurrencyOrConfig.setRetries) !== null && _d !== void 0 ? _d : ((_, job) => job.retries);
|
|
167
|
+
this.gracefulShutdownTimeout = (_e = concurrencyOrConfig.gracefulShutdownTimeout) !== null && _e !== void 0 ? _e : 20000;
|
|
139
168
|
}
|
|
140
169
|
else {
|
|
141
170
|
this.concurrency = concurrencyOrConfig !== null && concurrencyOrConfig !== void 0 ? concurrencyOrConfig : 1;
|
|
142
171
|
this.pollInterval = maybePollInterval !== null && maybePollInterval !== void 0 ? maybePollInterval : 200;
|
|
143
172
|
this.setRetries = (_, job) => job.retries;
|
|
173
|
+
this.gracefulShutdownTimeout = 20000;
|
|
144
174
|
}
|
|
145
175
|
}
|
|
146
176
|
async start(queueName, process) {
|
|
@@ -160,7 +190,7 @@ class PollingJobQueueStrategy extends injectable_job_queue_strategy_1.Injectable
|
|
|
160
190
|
if (!active) {
|
|
161
191
|
return;
|
|
162
192
|
}
|
|
163
|
-
await active.stop();
|
|
193
|
+
await active.stop(this.gracefulShutdownTimeout);
|
|
164
194
|
}
|
|
165
195
|
async cancelJob(jobId) {
|
|
166
196
|
const job = await this.findOne(jobId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polling-job-queue-strategy.js","sourceRoot":"","sources":["../../src/job-queue/polling-job-queue-strategy.ts"],"names":[],"mappings":";;;AAAA,yEAA+D;AAE/D,mEAA4D;AAC5D,+
|
|
1
|
+
{"version":3,"file":"polling-job-queue-strategy.js","sourceRoot":"","sources":["../../src/job-queue/polling-job-queue-strategy.ts"],"names":[],"mappings":";;;AAAA,yEAA+D;AAE/D,mEAA4D;AAC5D,+BAA6E;AAC7E,8CAAuE;AAEvE,oEAAyD;AAEzD,mFAA6E;AAC7E,+BAA4B;AAC5B,6EAAuE;AAyDvE,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1C,MAAM,WAAW;IAUb,YACqB,SAAiB,EACjB,OAAyC,EACzC,gBAAyC;QAFzC,cAAS,GAAT,SAAS,CAAQ;QACjB,YAAO,GAAP,OAAO,CAAkC;QACzC,qBAAgB,GAAhB,gBAAgB,CAAyB;QAXtD,YAAO,GAAG,KAAK,CAAC;QAChB,eAAU,GAAqB,EAAE,CAAC;QAElC,mBAAc,GAAG,IAAI,cAAO,EAAoB,CAAC;QACjD,kBAAa,GAAG,IAAI,cAAO,EAAsB,CAAC;QAStD,IAAI,CAAC,YAAY;YACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,KAAK,UAAU;gBACpD,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;IACjD,CAAC;IAED,KAAK;QACD,uBAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE;YAC5F,uBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtB,uBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;YAC3B,IAAI;gBACA,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAChD,KAAK,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE;oBACvE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACjE,IAAI,OAAO,EAAE;wBACT,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC9B,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBAC5C,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACnE,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;wBACnC,MAAM,eAAe,GAAG,IAAA,eAAQ,EAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;6BAClD,IAAI;wBACD,oEAAoE;wBACpE,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAG,CAAC,CAAC,EAC3D,IAAA,kBAAM,EAAC,GAAG,CAAC,EAAE,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,MAAK,0BAAQ,CAAC,SAAS,CAAC,EAChD,IAAA,gBAAI,EAAC,CAAC,CAAC,CACV;6BACA,SAAS,CAAC,GAAG,EAAE;4BACZ,OAAO,CAAC,MAAM,EAAE,CAAC;wBACrB,CAAC,CAAC,CAAC;wBACP,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAA,gBAAI,EAAC,CAAC,CAAC,CAAC,CAAC;wBAErD,IAAA,WAAI,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC;6BACzC,SAAS,EAAE;6BACX,IAAI,CACD,MAAM,CAAC,EAAE;4BACL,IAAI,MAAM,KAAK,WAAW,EAAE;gCACxB,OAAO,CAAC,KAAK,EAAE,CAAC;6BACnB;iCAAM,IAAI,MAAM,YAAY,SAAG,IAAI,MAAM,CAAC,KAAK,KAAK,0BAAQ,CAAC,SAAS,EAAE;gCACrE,OAAO,CAAC,MAAM,EAAE,CAAC;6BACpB;iCAAM;gCACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;6BAC5B;wBACL,CAAC,EACD,GAAG,CAAC,EAAE;4BACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACtB,CAAC,CACJ;6BACA,OAAO,CAAC,GAAG,EAAE;4BACV,6DAA6D;4BAC7D,cAAc;4BACd,IAAI;4BACJ,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;4BACpC,eAAe,CAAC,WAAW,EAAE,CAAC;4BAC9B,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;wBAC1C,CAAC,CAAC;6BACD,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;4BAChB,uBAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;qBACV;iBACJ;aACJ;YAAC,OAAO,CAAM,EAAE;gBACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;oBACrB,cACI,IAAI,CAAC,SACT,8DAA8D,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;oBACzF,CAAC,CAAC,KAAK;iBACV,CAAC,CAAC;aACN;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aAC3D;QACL,CAAC,CAAC;QAEF,KAAK,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,sBAAsB,GAAG,KAAM;QACtC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,IAAI,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;QAC7D,uBAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAChC,+CAA+C;QAC/C,yDAAyD;QACzD,qDAAqD;QACrD,yBAAyB;QACzB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEO,yBAAyB,CAAC,sBAAsB,GAAG,KAAM;QAC7D,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,OAAsC,CAAC;QAC3C,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,IAAI,gBAAgB,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACnC,MAAM,cAAc,GAAG,GAAG,EAAE;gBACxB,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;gBACxB,MAAM,QAAQ,GACV,sBAAsB,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,GAAG,sBAAsB,CAAC;gBAExF,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC9B,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,OAAO,EAAE,CAAC;oBACV,OAAO;iBACV;gBAED,IAAI,QAAQ,EAAE;oBACV,uBAAM,CAAC,IAAI,CACP,cAAc,sBAAsB,mBAAmB,IAAI,CAAC,UAAU,CAAC,MAAM,0BAA0B,IAAI,CAAC,SAAS,gCAAgC,CACxJ,CAAC;oBACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACrC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,OAAO,EAAE,CAAC;oBACV,OAAO;iBACV;gBAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC5B,IAAI,GAAG,GAAG,gBAAgB,GAAG,IAAI,EAAE;wBAC/B,uBAAM,CAAC,IAAI,CACP,mBAAmB,IAAI,CAAC,SAAS,kBAAkB,IAAI,CAAC,UAAU,CAAC,MAAM,6BAA6B,CACzG,CAAC;wBACF,gBAAgB,GAAG,GAAG,CAAC;qBAC1B;iBACJ;gBAED,OAAO,GAAG,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAC9C,CAAC,CAAC;YACF,KAAK,cAAc,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,GAAc;QACzC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAEO,mBAAmB,CAAC,GAAc;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACpC;IACL,CAAC;CACJ;AAED;;;;;;;;;GASG;AACH,MAAsB,uBAAwB,SAAQ,0DAA0B;IAW5E,YAAY,mBAA4D,EAAE,iBAA0B;;QAChG,KAAK,EAAE,CAAC;QALF,iBAAY,GAAG,IAAI,oDAAuB,EAAoB,CAAC;QAOrE,IAAI,mBAAmB,IAAI,IAAA,uBAAQ,EAAC,mBAAmB,CAAC,EAAE;YACtD,IAAI,CAAC,WAAW,GAAG,MAAA,mBAAmB,CAAC,WAAW,mCAAI,CAAC,CAAC;YACxD,IAAI,CAAC,YAAY,GAAG,MAAA,mBAAmB,CAAC,YAAY,mCAAI,GAAG,CAAC;YAC5D,IAAI,CAAC,eAAe,GAAG,MAAA,mBAAmB,CAAC,eAAe,mCAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3E,IAAI,CAAC,UAAU,GAAG,MAAA,mBAAmB,CAAC,UAAU,mCAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9E,IAAI,CAAC,uBAAuB,GAAG,MAAA,mBAAmB,CAAC,uBAAuB,mCAAI,KAAM,CAAC;SACxF;aAAM;YACH,IAAI,CAAC,WAAW,GAAG,mBAAmB,aAAnB,mBAAmB,cAAnB,mBAAmB,GAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,YAAY,GAAG,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,GAAG,CAAC;YAC7C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;YAC1C,IAAI,CAAC,uBAAuB,GAAG,KAAM,CAAC;SACzC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CACP,SAAiB,EACjB,OAAyC;QAEzC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACrC,OAAO;SACV;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;YAC3C,OAAO;SACV;QACD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAO,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,IAAI,CACN,SAAiB,EACjB,OAAyC;QAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QACD,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAS;QACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,GAAG,EAAE;YACL,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,GAAG,CAAC;SACd;IACL,CAAC;CAqBJ;AAnFD,0DAmFC"}
|
|
@@ -67,6 +67,18 @@ export interface DefaultJobQueueOptions {
|
|
|
67
67
|
* @since 1.3.0
|
|
68
68
|
*/
|
|
69
69
|
useDatabaseForBuffer?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* @description
|
|
72
|
+
* The timeout in ms which the queue will use when attempting a graceful shutdown.
|
|
73
|
+
* That means when the server is shut down but a job is running, the job queue will
|
|
74
|
+
* wait for the job to complete before allowing the server to shut down. If the job
|
|
75
|
+
* does not complete within this timeout window, the job will be forced to stop
|
|
76
|
+
* and the server will shut down anyway.
|
|
77
|
+
*
|
|
78
|
+
* @since 2.2.0
|
|
79
|
+
* @default 20_000
|
|
80
|
+
*/
|
|
81
|
+
gracefulShutdownTimeout?: number;
|
|
70
82
|
}
|
|
71
83
|
/**
|
|
72
84
|
* @description
|
|
@@ -120,12 +120,13 @@ DefaultJobQueuePlugin = DefaultJobQueuePlugin_1 = __decorate([
|
|
|
120
120
|
: [job_record_entity_1.JobRecord],
|
|
121
121
|
configuration: config => {
|
|
122
122
|
var _a;
|
|
123
|
-
const { pollInterval, concurrency, backoffStrategy, setRetries } = (_a = DefaultJobQueuePlugin_1.options) !== null && _a !== void 0 ? _a : {};
|
|
123
|
+
const { pollInterval, concurrency, backoffStrategy, setRetries, gracefulShutdownTimeout } = (_a = DefaultJobQueuePlugin_1.options) !== null && _a !== void 0 ? _a : {};
|
|
124
124
|
config.jobQueueOptions.jobQueueStrategy = new sql_job_queue_strategy_1.SqlJobQueueStrategy({
|
|
125
125
|
concurrency,
|
|
126
126
|
pollInterval,
|
|
127
127
|
backoffStrategy,
|
|
128
128
|
setRetries,
|
|
129
|
+
gracefulShutdownTimeout,
|
|
129
130
|
});
|
|
130
131
|
if (DefaultJobQueuePlugin_1.options.useDatabaseForBuffer === true) {
|
|
131
132
|
config.jobQueueOptions.jobBufferStorageStrategy = new sql_job_buffer_storage_strategy_1.SqlJobBufferStorageStrategy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-job-queue-plugin.js","sourceRoot":"","sources":["../../../src/plugin/default-job-queue-plugin/default-job-queue-plugin.ts"],"names":[],"mappings":";;;;;;;;;;AAIA,kEAA6D;AAC7D,sDAAkD;AAElD,yEAA6D;AAC7D,2DAAgD;AAChD,uFAAgF;AAChF,qEAA+D;
|
|
1
|
+
{"version":3,"file":"default-job-queue-plugin.js","sourceRoot":"","sources":["../../../src/plugin/default-job-queue-plugin/default-job-queue-plugin.ts"],"names":[],"mappings":";;;;;;;;;;AAIA,kEAA6D;AAC7D,sDAAkD;AAElD,yEAA6D;AAC7D,2DAAgD;AAChD,uFAAgF;AAChF,qEAA+D;AAkF/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFG;AAwBI,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAI9B,MAAM,CAAC,IAAI,CAAC,OAA+B;QACvC,uBAAqB,CAAC,OAAO,GAAG,OAAO,CAAC;QACxC,OAAO,uBAAqB,CAAC;IACjC,CAAC;;AAND,gBAAgB;AACT,6BAAO,GAA2B,EAAE,CAAC;AAFnC,qBAAqB;IAvBjC,IAAA,8BAAa,EAAC;QACX,OAAO,EAAE,CAAC,yCAAkB,CAAC;QAC7B,QAAQ,EAAE,GAAG,EAAE,CACX,uBAAqB,CAAC,OAAO,CAAC,oBAAoB,KAAK,IAAI;YACvD,CAAC,CAAC,CAAC,6BAAS,EAAE,0CAAe,CAAC;YAC9B,CAAC,CAAC,CAAC,6BAAS,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC,EAAE;;YACpB,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,uBAAuB,EAAE,GACrF,MAAA,uBAAqB,CAAC,OAAO,mCAAI,EAAE,CAAC;YACxC,MAAM,CAAC,eAAe,CAAC,gBAAgB,GAAG,IAAI,4CAAmB,CAAC;gBAC9D,WAAW;gBACX,YAAY;gBACZ,eAAe;gBACf,UAAU;gBACV,uBAAuB;aAC1B,CAAC,CAAC;YACH,IAAI,uBAAqB,CAAC,OAAO,CAAC,oBAAoB,KAAK,IAAI,EAAE;gBAC7D,MAAM,CAAC,eAAe,CAAC,wBAAwB,GAAG,IAAI,6DAA2B,EAAE,CAAC;aACvF;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,aAAa,EAAE,QAAQ;KAC1B,CAAC;GACW,qBAAqB,CAQjC;AARY,sDAAqB"}
|
|
@@ -2,9 +2,10 @@ import { Observable } from 'rxjs';
|
|
|
2
2
|
import { RequestContextCacheService } from '../../../cache/request-context-cache.service';
|
|
3
3
|
import { ConfigService } from '../../../config/config.service';
|
|
4
4
|
import { TransactionalConnection } from '../../../connection/transactional-connection';
|
|
5
|
+
import { Job } from '../../../job-queue/index';
|
|
5
6
|
import { ProductPriceApplicator } from '../../../service/helpers/product-price-applicator/product-price-applicator';
|
|
6
7
|
import { ProductVariantService } from '../../../service/services/product-variant.service';
|
|
7
|
-
import { DefaultSearchPluginInitOptions, ProductChannelMessageData,
|
|
8
|
+
import { DefaultSearchPluginInitOptions, ProductChannelMessageData, ReindexMessageResponse, UpdateAssetMessageData, UpdateIndexQueueJobData, UpdateProductMessageData, UpdateVariantMessageData, UpdateVariantsByIdJobData, VariantChannelMessageData } from '../types';
|
|
8
9
|
export declare const BATCH_SIZE = 1000;
|
|
9
10
|
export declare const productRelations: string[];
|
|
10
11
|
export declare const variantRelations: string[];
|
|
@@ -18,8 +19,8 @@ export declare class IndexerController {
|
|
|
18
19
|
private options;
|
|
19
20
|
private queue;
|
|
20
21
|
constructor(connection: TransactionalConnection, productPriceApplicator: ProductPriceApplicator, configService: ConfigService, requestContextCache: RequestContextCacheService, productVariantService: ProductVariantService, options: DefaultSearchPluginInitOptions);
|
|
21
|
-
reindex(
|
|
22
|
-
updateVariantsById(
|
|
22
|
+
reindex(job: Job<UpdateIndexQueueJobData>): Observable<ReindexMessageResponse>;
|
|
23
|
+
updateVariantsById(job: Job<UpdateVariantsByIdJobData>): Observable<ReindexMessageResponse>;
|
|
23
24
|
updateProduct(data: UpdateProductMessageData): Promise<boolean>;
|
|
24
25
|
updateVariants(data: UpdateVariantMessageData): Promise<boolean>;
|
|
25
26
|
deleteProduct(data: UpdateProductMessageData): Promise<boolean>;
|