cnpmcore 1.11.6 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/History.md +18 -0
  2. package/dist/app/core/entity/Task.d.ts +5 -0
  3. package/dist/app/core/entity/Task.js +11 -1
  4. package/dist/app/core/service/TaskService.js +17 -12
  5. package/dist/app/port/schedule/ChangesStreamWorker.d.ts +6 -0
  6. package/dist/app/port/schedule/ChangesStreamWorker.js +41 -0
  7. package/dist/app/port/schedule/CheckRecentlyUpdatedPackages.d.ts +7 -0
  8. package/dist/app/port/schedule/CheckRecentlyUpdatedPackages.js +83 -0
  9. package/dist/app/port/schedule/CleanTempDir.d.ts +5 -0
  10. package/dist/app/port/schedule/CleanTempDir.js +63 -0
  11. package/dist/app/port/schedule/CreateSyncBinaryTask.d.ts +5 -0
  12. package/dist/app/port/schedule/CreateSyncBinaryTask.js +45 -0
  13. package/dist/app/port/schedule/CreateTriggerHookWorker.d.ts +7 -0
  14. package/dist/app/port/schedule/CreateTriggerHookWorker.js +66 -0
  15. package/dist/app/port/schedule/SavePackageVersionDownloadCounter.d.ts +4 -0
  16. package/dist/app/port/schedule/SavePackageVersionDownloadCounter.js +29 -0
  17. package/dist/app/port/schedule/SyncBinaryWorker.d.ts +6 -0
  18. package/dist/app/port/schedule/SyncBinaryWorker.js +44 -0
  19. package/dist/app/port/schedule/SyncPackageWorker.d.ts +6 -0
  20. package/dist/app/port/schedule/SyncPackageWorker.js +62 -0
  21. package/dist/app/port/schedule/TaskTimeoutHandler.d.ts +6 -0
  22. package/dist/app/port/schedule/TaskTimeoutHandler.js +40 -0
  23. package/dist/app/port/schedule/TriggerHookWorker.d.ts +7 -0
  24. package/dist/app/port/schedule/TriggerHookWorker.js +64 -0
  25. package/dist/app/port/schedule/UpdateTotalData.d.ts +9 -0
  26. package/dist/app/port/schedule/UpdateTotalData.js +122 -0
  27. package/dist/app/repository/TaskRepository.d.ts +2 -1
  28. package/dist/app/repository/TaskRepository.js +14 -1
  29. package/dist/app/repository/util/ModelConvertor.d.ts +1 -0
  30. package/dist/app/repository/util/ModelConvertor.js +19 -1
  31. package/dist/config/plugin.js +5 -1
  32. package/package.json +3 -7
  33. package/dist/app/schedule/ChangesStreamWorker.d.ts +0 -8
  34. package/dist/app/schedule/ChangesStreamWorker.js +0 -27
  35. package/dist/app/schedule/CheckRecentlyUpdatedPackages.d.ts +0 -8
  36. package/dist/app/schedule/CheckRecentlyUpdatedPackages.js +0 -66
  37. package/dist/app/schedule/CleanTempDir.d.ts +0 -8
  38. package/dist/app/schedule/CleanTempDir.js +0 -48
  39. package/dist/app/schedule/CreateSyncBinaryTask.d.ts +0 -8
  40. package/dist/app/schedule/CreateSyncBinaryTask.js +0 -34
  41. package/dist/app/schedule/CreateTriggerHookWorker.d.ts +0 -8
  42. package/dist/app/schedule/CreateTriggerHookWorker.js +0 -51
  43. package/dist/app/schedule/SavePackageVersionDownloadCounter.d.ts +0 -8
  44. package/dist/app/schedule/SavePackageVersionDownloadCounter.js +0 -21
  45. package/dist/app/schedule/SyncBinaryWorker.d.ts +0 -8
  46. package/dist/app/schedule/SyncBinaryWorker.js +0 -30
  47. package/dist/app/schedule/SyncPackageWorker.d.ts +0 -8
  48. package/dist/app/schedule/SyncPackageWorker.js +0 -48
  49. package/dist/app/schedule/TaskTimeoutHandler.d.ts +0 -9
  50. package/dist/app/schedule/TaskTimeoutHandler.js +0 -27
  51. package/dist/app/schedule/TriggerHookWorker.d.ts +0 -8
  52. package/dist/app/schedule/TriggerHookWorker.js +0 -49
  53. package/dist/app/schedule/UpdateTotalData.d.ts +0 -9
  54. package/dist/app/schedule/UpdateTotalData.js +0 -103
@@ -1,66 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const egg_1 = require("egg");
4
- const cnpmcoreCore = 'cnpmcoreCore';
5
- // https://github.com/cnpm/cnpmcore/issues/9
6
- class CheckRecentlyUpdatedPackages extends egg_1.Subscription {
7
- static get schedule() {
8
- return {
9
- // every 5 mins
10
- interval: 60000 * 5,
11
- type: 'worker',
12
- };
13
- }
14
- async subscribe() {
15
- const { ctx, app } = this;
16
- if (app.config.cnpmcore.syncMode !== 'all' || !app.config.cnpmcore.enableCheckRecentlyUpdated)
17
- return;
18
- await ctx.beginModuleScope(async () => {
19
- const packageSyncerService = ctx.module[cnpmcoreCore].packageSyncerService;
20
- const pageSize = 36;
21
- const pageCount = app.config.env === 'unittest' ? 2 : 5;
22
- for (let pageIndex = 0; pageIndex < pageCount; pageIndex++) {
23
- const offset = pageSize * pageIndex;
24
- const pageUrl = `https://www.npmjs.com/browse/updated?offset=${offset}`;
25
- let html = '';
26
- try {
27
- const { status, data } = await ctx.httpclient.request(pageUrl, {
28
- followRedirect: true,
29
- timeout: 10000,
30
- });
31
- ctx.logger.info('[CheckRecentlyUpdatedPackages.subscribe][%s] request %s status: %s, data size: %s', pageIndex, pageUrl, status, data.length);
32
- if (status === 200) {
33
- html = data.toString();
34
- }
35
- }
36
- catch (err) {
37
- ctx.logger.info('[CheckRecentlyUpdatedPackages.subscribe:error][%s] request %s error: %s', pageIndex, pageUrl, err);
38
- ctx.logger.error(err);
39
- continue;
40
- }
41
- const matchs = /window\.__context__ = ([^<]+?)<\/script>/.exec(html);
42
- if (!matchs)
43
- continue;
44
- try {
45
- const data = JSON.parse(matchs[1]);
46
- const packages = data.context.packages || [];
47
- if (Array.isArray(packages)) {
48
- ctx.logger.info('[CheckRecentlyUpdatedPackages.subscribe][%s] parse %d packages on %s', pageIndex, packages.length, pageUrl);
49
- for (const pkg of packages) {
50
- const task = await packageSyncerService.createTask(pkg.name, {
51
- tips: `Sync cause by recently updated packages ${pageUrl}`,
52
- });
53
- ctx.logger.info('[CheckRecentlyUpdatedPackages.subscribe:createTask][%s] taskId: %s, targetName: %s', pageIndex, task.taskId, task.targetName);
54
- }
55
- }
56
- }
57
- catch (err) {
58
- ctx.logger.info('[CheckRecentlyUpdatedPackages.subscribe:error][%s] parse %s context json error: %s', pageIndex, pageUrl, err);
59
- ctx.logger.error(err);
60
- }
61
- }
62
- });
63
- }
64
- }
65
- exports.default = CheckRecentlyUpdatedPackages;
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hlY2tSZWNlbnRseVVwZGF0ZWRQYWNrYWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FwcC9zY2hlZHVsZS9DaGVja1JlY2VudGx5VXBkYXRlZFBhY2thZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBQW1DO0FBR25DLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztBQUVwQyw0Q0FBNEM7QUFDNUMsTUFBcUIsNEJBQTZCLFNBQVEsa0JBQVk7SUFDcEUsTUFBTSxLQUFLLFFBQVE7UUFDakIsT0FBTztZQUNMLGVBQWU7WUFDZixRQUFRLEVBQUUsS0FBSyxHQUFHLENBQUM7WUFDbkIsSUFBSSxFQUFFLFFBQVE7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTO1FBQ2IsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCO1lBQUUsT0FBTztRQUV0RyxNQUFNLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQyxNQUFNLG9CQUFvQixHQUF5QixHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1lBQ2pHLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNwQixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hELEtBQUssSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUU7Z0JBQzFELE1BQU0sTUFBTSxHQUFHLFFBQVEsR0FBRyxTQUFTLENBQUM7Z0JBQ3BDLE1BQU0sT0FBTyxHQUFHLCtDQUErQyxNQUFNLEVBQUUsQ0FBQztnQkFDeEUsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNkLElBQUk7b0JBQ0YsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTt3QkFDN0QsY0FBYyxFQUFFLElBQUk7d0JBQ3BCLE9BQU8sRUFBRSxLQUFLO3FCQUNmLENBQUMsQ0FBQztvQkFDSCxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtRkFBbUYsRUFDakcsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMzQyxJQUFJLE1BQU0sS0FBSyxHQUFHLEVBQUU7d0JBQ2xCLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQ3hCO2lCQUNGO2dCQUFDLE9BQU8sR0FBRyxFQUFFO29CQUNaLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHlFQUF5RSxFQUN2RixTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUMzQixHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDdEIsU0FBUztpQkFDVjtnQkFFRCxNQUFNLE1BQU0sR0FBRywwQ0FBMEMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxNQUFNO29CQUFFLFNBQVM7Z0JBRXRCLElBQUk7b0JBQ0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO29CQUM3QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7d0JBQzNCLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHNFQUFzRSxFQUNwRixTQUFTLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFDdkMsS0FBSyxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUU7NEJBQzFCLE1BQU0sSUFBSSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0NBQzNELElBQUksRUFBRSwyQ0FBMkMsT0FBTyxFQUFFOzZCQUMzRCxDQUFDLENBQUM7NEJBQ0gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0ZBQW9GLEVBQ2xHLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzt5QkFDNUM7cUJBQ0Y7aUJBQ0Y7Z0JBQUMsT0FBTyxHQUFHLEVBQUU7b0JBQ1osR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0ZBQW9GLEVBQ2xHLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQzNCLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN2QjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUEvREQsK0NBK0RDIn0=
@@ -1,8 +0,0 @@
1
- import { Subscription } from 'egg';
2
- export default class CleanTempDir extends Subscription {
3
- static get schedule(): {
4
- cron: string;
5
- type: string;
6
- };
7
- subscribe(): Promise<void>;
8
- }
@@ -1,48 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const egg_1 = require("egg");
7
- const promises_1 = require("fs/promises");
8
- const path_1 = __importDefault(require("path"));
9
- const dayjs_1 = __importDefault(require("../common/dayjs"));
10
- class CleanTempDir extends egg_1.Subscription {
11
- static get schedule() {
12
- return {
13
- cron: '0 2 * * *',
14
- type: 'worker',
15
- };
16
- }
17
- async subscribe() {
18
- const { ctx, app } = this;
19
- const downloadDir = path_1.default.join(app.config.dataDir, 'downloads');
20
- const oldDirs = [
21
- path_1.default.join(downloadDir, (0, dayjs_1.default)().subtract(1, 'day').format('YYYY/MM/DD')),
22
- path_1.default.join(downloadDir, (0, dayjs_1.default)().subtract(2, 'day').format('YYYY/MM/DD')),
23
- path_1.default.join(downloadDir, (0, dayjs_1.default)().subtract(3, 'day').format('YYYY/MM/DD')),
24
- path_1.default.join(downloadDir, (0, dayjs_1.default)().subtract(4, 'day').format('YYYY/MM/DD')),
25
- path_1.default.join(downloadDir, (0, dayjs_1.default)().subtract(1, 'month').format('YYYY/MM')),
26
- path_1.default.join(downloadDir, (0, dayjs_1.default)().subtract(2, 'month').format('YYYY/MM')),
27
- path_1.default.join(downloadDir, (0, dayjs_1.default)().subtract(1, 'year').format('YYYY')),
28
- ];
29
- for (const dir of oldDirs) {
30
- let exists = false;
31
- try {
32
- await (0, promises_1.access)(dir);
33
- exists = true;
34
- }
35
- catch (err) {
36
- // console.log(err);
37
- exists = false;
38
- }
39
- ctx.logger.info('[CleanTempDir.subscribe] dir "%s" exists: %s', dir, exists);
40
- if (exists) {
41
- await (0, promises_1.rm)(dir, { recursive: true, force: true });
42
- ctx.logger.info('[CleanTempDir.subscribe] remove dir "%s"', dir);
43
- }
44
- }
45
- }
46
- }
47
- exports.default = CleanTempDir;
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xlYW5UZW1wRGlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXBwL3NjaGVkdWxlL0NsZWFuVGVtcERpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUFtQztBQUNuQywwQ0FBeUM7QUFDekMsZ0RBQXdCO0FBQ3hCLDREQUFvQztBQUVwQyxNQUFxQixZQUFhLFNBQVEsa0JBQVk7SUFDcEQsTUFBTSxLQUFLLFFBQVE7UUFDakIsT0FBTztZQUNMLElBQUksRUFBRSxXQUFXO1lBQ2pCLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzFCLE1BQU0sV0FBVyxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDL0QsTUFBTSxPQUFPLEdBQUc7WUFDZCxjQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFBLGVBQUssR0FBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3ZFLGNBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUEsZUFBSyxHQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdkUsY0FBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBQSxlQUFLLEdBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN2RSxjQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFBLGVBQUssR0FBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3ZFLGNBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUEsZUFBSyxHQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEUsY0FBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBQSxlQUFLLEdBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0RSxjQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFBLGVBQUssR0FBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25FLENBQUM7UUFDRixLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRTtZQUN6QixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSTtnQkFDRixNQUFNLElBQUEsaUJBQU0sRUFBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEIsTUFBTSxHQUFHLElBQUksQ0FBQzthQUNmO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1osb0JBQW9CO2dCQUNwQixNQUFNLEdBQUcsS0FBSyxDQUFDO2FBQ2hCO1lBQ0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsOENBQThDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzdFLElBQUksTUFBTSxFQUFFO2dCQUNWLE1BQU0sSUFBQSxhQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDaEQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMENBQTBDLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDbEU7U0FDRjtJQUNILENBQUM7Q0FDRjtBQXBDRCwrQkFvQ0MifQ==
@@ -1,8 +0,0 @@
1
- import { Subscription } from 'egg';
2
- export default class CreateSyncBinaryTask extends Subscription {
3
- static get schedule(): {
4
- interval: number;
5
- type: string;
6
- };
7
- subscribe(): Promise<void>;
8
- }
@@ -1,34 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const egg_1 = require("egg");
7
- const binaries_1 = __importDefault(require("../../config/binaries"));
8
- const cnpmcoreCore = 'cnpmcoreCore';
9
- class CreateSyncBinaryTask extends egg_1.Subscription {
10
- static get schedule() {
11
- return {
12
- // every 5 mins
13
- interval: 60000 * 5,
14
- type: 'worker',
15
- };
16
- }
17
- async subscribe() {
18
- const { ctx, app } = this;
19
- if (!app.config.cnpmcore.enableSyncBinary)
20
- return;
21
- await ctx.beginModuleScope(async () => {
22
- const binarySyncerService = ctx.module[cnpmcoreCore].binarySyncerService;
23
- for (const binary of Object.values(binaries_1.default)) {
24
- if (app.config.env === 'unittest' && binary.category !== 'node')
25
- continue;
26
- if (binary.disable)
27
- continue;
28
- await binarySyncerService.createTask(binary.category);
29
- }
30
- });
31
- }
32
- }
33
- exports.default = CreateSyncBinaryTask;
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlYXRlU3luY0JpbmFyeVRhc2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcHAvc2NoZWR1bGUvQ3JlYXRlU3luY0JpbmFyeVRhc2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBbUM7QUFFbkMscUVBQTZDO0FBRTdDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztBQUVwQyxNQUFxQixvQkFBcUIsU0FBUSxrQkFBWTtJQUM1RCxNQUFNLEtBQUssUUFBUTtRQUNqQixPQUFPO1lBQ0wsZUFBZTtZQUNmLFFBQVEsRUFBRSxLQUFLLEdBQUcsQ0FBQztZQUNuQixJQUFJLEVBQUUsUUFBUTtTQUNmLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVM7UUFDYixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO1lBQUUsT0FBTztRQUVsRCxNQUFNLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQyxNQUFNLG1CQUFtQixHQUF3QixHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLG1CQUFtQixDQUFDO1lBQzlGLEtBQUssTUFBTSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBUSxDQUFDLEVBQUU7Z0JBQzVDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssTUFBTTtvQkFBRSxTQUFTO2dCQUMxRSxJQUFJLE1BQU0sQ0FBQyxPQUFPO29CQUFFLFNBQVM7Z0JBQzdCLE1BQU0sbUJBQW1CLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN2RDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBdEJELHVDQXNCQyJ9
@@ -1,8 +0,0 @@
1
- import { Subscription } from 'egg';
2
- export default class CreateTriggerHookWorker extends Subscription {
3
- static get schedule(): {
4
- interval: number;
5
- type: string;
6
- };
7
- subscribe(): Promise<void>;
8
- }
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const egg_1 = require("egg");
4
- const TaskService_1 = require("../core/service/TaskService");
5
- const Task_1 = require("../common/enum/Task");
6
- const CreateHookTriggerService_1 = require("../core/service/CreateHookTriggerService");
7
- let executingCount = 0;
8
- class CreateTriggerHookWorker extends egg_1.Subscription {
9
- static get schedule() {
10
- return {
11
- interval: 1000,
12
- type: 'all',
13
- };
14
- }
15
- async subscribe() {
16
- const { ctx, app } = this;
17
- if (!app.config.cnpmcore.hookEnable)
18
- return;
19
- if (executingCount >= app.config.cnpmcore.createTriggerHookWorkerMaxConcurrentTasks)
20
- return;
21
- await ctx.beginModuleScope(async () => {
22
- const createHookTriggerService = await ctx.getEggObject(CreateHookTriggerService_1.CreateHookTriggerService);
23
- const taskService = await ctx.getEggObject(TaskService_1.TaskService);
24
- executingCount++;
25
- try {
26
- let task = await taskService.findExecuteTask(Task_1.TaskType.CreateHook);
27
- while (task) {
28
- const startTime = Date.now();
29
- ctx.logger.info('[CreateTriggerHookWorker:subscribe:executeTask:start][%s] taskId: %s, targetName: %s, attempts: %s, params: %j, updatedAt: %s, delay %sms', executingCount, task.taskId, task.targetName, task.attempts, task.data, task.updatedAt, startTime - task.updatedAt.getTime());
30
- await createHookTriggerService.executeTask(task);
31
- const use = Date.now() - startTime;
32
- ctx.logger.info('[CreateTriggerHookWorker:subscribe:executeTask:success][%s] taskId: %s, targetName: %s, use %sms', executingCount, task.taskId, task.targetName, use);
33
- if (executingCount >= app.config.cnpmcore.createTriggerHookWorkerMaxConcurrentTasks) {
34
- ctx.logger.info('[CreateTriggerHookWorker:subscribe:executeTask] current sync task count %s, exceed max concurrent tasks %s', executingCount, app.config.cnpmcore.createTriggerHookWorkerMaxConcurrentTasks);
35
- break;
36
- }
37
- // try next task
38
- task = await taskService.findExecuteTask(Task_1.TaskType.CreateHook);
39
- }
40
- }
41
- catch (err) {
42
- ctx.logger.error('[TriggerHookWorker:subscribe:executeTask:error][%s] %s', executingCount, err);
43
- }
44
- finally {
45
- executingCount--;
46
- }
47
- });
48
- }
49
- }
50
- exports.default = CreateTriggerHookWorker;
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlYXRlVHJpZ2dlckhvb2tXb3JrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcHAvc2NoZWR1bGUvQ3JlYXRlVHJpZ2dlckhvb2tXb3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2QkFBbUM7QUFDbkMsNkRBQTBEO0FBQzFELDhDQUErQztBQUUvQyx1RkFBb0Y7QUFFcEYsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQXFCLHVCQUF3QixTQUFRLGtCQUFZO0lBQy9ELE1BQU0sS0FBSyxRQUFRO1FBQ2pCLE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxLQUFLO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUM1QyxJQUFJLGNBQWMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyx5Q0FBeUM7WUFBRSxPQUFPO1FBRTVGLE1BQU0sR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3BDLE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxHQUFHLENBQUMsWUFBWSxDQUFDLG1EQUF3QixDQUFDLENBQUM7WUFDbEYsTUFBTSxXQUFXLEdBQUcsTUFBTSxHQUFHLENBQUMsWUFBWSxDQUFDLHlCQUFXLENBQUMsQ0FBQztZQUN4RCxjQUFjLEVBQUUsQ0FBQztZQUNqQixJQUFJO2dCQUNGLElBQUksSUFBSSxHQUFHLE1BQU0sV0FBVyxDQUFDLGVBQWUsQ0FBQyxlQUFRLENBQUMsVUFBVSxDQUFtQixDQUFDO2dCQUNwRixPQUFPLElBQUksRUFBRTtvQkFDWCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQzdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJJQUEySSxFQUN6SixjQUFjLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUN0RixTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO29CQUN4QyxNQUFNLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDakQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztvQkFDbkMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0dBQWtHLEVBQ2hILGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3JELElBQUksY0FBYyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHlDQUF5QyxFQUFFO3dCQUNuRixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw0R0FBNEcsRUFDMUgsY0FBYyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7d0JBQ2pGLE1BQU07cUJBQ1A7b0JBQ0QsZ0JBQWdCO29CQUNoQixJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsZUFBZSxDQUFDLGVBQVEsQ0FBQyxVQUFVLENBQW1CLENBQUM7aUJBQ2pGO2FBQ0Y7WUFBQyxPQUFPLEdBQUcsRUFBRTtnQkFDWixHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx3REFBd0QsRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDakc7b0JBQVM7Z0JBQ1IsY0FBYyxFQUFFLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTNDRCwwQ0EyQ0MifQ==
@@ -1,8 +0,0 @@
1
- import { Subscription } from 'egg';
2
- export default class SavePackageVersionDownloadCounter extends Subscription {
3
- static get schedule(): {
4
- interval: number;
5
- type: string;
6
- };
7
- subscribe(): Promise<void>;
8
- }
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const egg_1 = require("egg");
4
- const cnpmcoreCore = 'cnpmcoreCore';
5
- class SavePackageVersionDownloadCounter extends egg_1.Subscription {
6
- static get schedule() {
7
- return {
8
- interval: 1000,
9
- type: 'all',
10
- };
11
- }
12
- async subscribe() {
13
- const { ctx } = this;
14
- await ctx.beginModuleScope(async () => {
15
- const packageManagerService = ctx.module[cnpmcoreCore].packageManagerService;
16
- await packageManagerService.savePackageVersionCounters();
17
- });
18
- }
19
- }
20
- exports.default = SavePackageVersionDownloadCounter;
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2F2ZVBhY2thZ2VWZXJzaW9uRG93bmxvYWRDb3VudGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXBwL3NjaGVkdWxlL1NhdmVQYWNrYWdlVmVyc2lvbkRvd25sb2FkQ291bnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDZCQUFtQztBQUVuQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7QUFFcEMsTUFBcUIsaUNBQWtDLFNBQVEsa0JBQVk7SUFDekUsTUFBTSxLQUFLLFFBQVE7UUFDakIsT0FBTztZQUNMLFFBQVEsRUFBRSxJQUFJO1lBQ2QsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTO1FBQ2IsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNyQixNQUFNLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQyxNQUFNLHFCQUFxQixHQUEwQixHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLHFCQUFxQixDQUFDO1lBQ3BHLE1BQU0scUJBQXFCLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWZELG9EQWVDIn0=
@@ -1,8 +0,0 @@
1
- import { Subscription } from 'egg';
2
- export default class SyncBinaryWorker extends Subscription {
3
- static get schedule(): {
4
- interval: number;
5
- type: string;
6
- };
7
- subscribe(): Promise<void>;
8
- }
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const egg_1 = require("egg");
4
- const cnpmcoreCore = 'cnpmcoreCore';
5
- class SyncBinaryWorker extends egg_1.Subscription {
6
- static get schedule() {
7
- return {
8
- interval: 10000,
9
- type: 'all',
10
- };
11
- }
12
- async subscribe() {
13
- const { ctx, app } = this;
14
- if (!app.config.cnpmcore.enableSyncBinary)
15
- return;
16
- await ctx.beginModuleScope(async () => {
17
- const binarySyncerService = ctx.module[cnpmcoreCore].binarySyncerService;
18
- const task = await binarySyncerService.findExecuteTask();
19
- if (!task)
20
- return;
21
- const startTime = Date.now();
22
- ctx.logger.info('[SyncBinaryWorker:executeTask:start] taskId: %s, targetName: %s, attempts: %s, params: %j, updatedAt: %s, delay %sms', task.taskId, task.targetName, task.attempts, task.data, task.updatedAt, startTime - task.updatedAt.getTime());
23
- await binarySyncerService.executeTask(task);
24
- const use = Date.now() - startTime;
25
- ctx.logger.info('[SyncBinaryWorker:executeTask:success] taskId: %s, targetName: %s, use %sms', task.taskId, task.targetName, use);
26
- });
27
- }
28
- }
29
- exports.default = SyncBinaryWorker;
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3luY0JpbmFyeVdvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FwcC9zY2hlZHVsZS9TeW5jQmluYXJ5V29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBQW1DO0FBR25DLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztBQUVwQyxNQUFxQixnQkFBaUIsU0FBUSxrQkFBWTtJQUN4RCxNQUFNLEtBQUssUUFBUTtRQUNqQixPQUFPO1lBQ0wsUUFBUSxFQUFFLEtBQUs7WUFDZixJQUFJLEVBQUUsS0FBSztTQUNaLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVM7UUFDYixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO1lBQUUsT0FBTztRQUVsRCxNQUFNLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQyxNQUFNLG1CQUFtQixHQUF3QixHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLG1CQUFtQixDQUFDO1lBQzlGLE1BQU0sSUFBSSxHQUFHLE1BQU0sbUJBQW1CLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLElBQUk7Z0JBQUUsT0FBTztZQUVsQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDN0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0hBQXNILEVBQ3BJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFDdEUsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN4QyxNQUFNLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO1lBQ25DLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDZFQUE2RSxFQUMzRixJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUEzQkQsbUNBMkJDIn0=
@@ -1,8 +0,0 @@
1
- import { Subscription } from 'egg';
2
- export default class SyncPackageWorker extends Subscription {
3
- static get schedule(): {
4
- interval: number;
5
- type: string;
6
- };
7
- subscribe(): Promise<void>;
8
- }
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const egg_1 = require("egg");
4
- const cnpmcoreCore = 'cnpmcoreCore';
5
- let executingCount = 0;
6
- class SyncPackageWorker extends egg_1.Subscription {
7
- static get schedule() {
8
- return {
9
- interval: 1000,
10
- type: 'all',
11
- };
12
- }
13
- async subscribe() {
14
- const { ctx, app } = this;
15
- if (app.config.cnpmcore.syncMode !== 'all')
16
- return;
17
- if (executingCount >= app.config.cnpmcore.syncPackageWorkerMaxConcurrentTasks)
18
- return;
19
- await ctx.beginModuleScope(async () => {
20
- const packageSyncerService = ctx.module[cnpmcoreCore].packageSyncerService;
21
- executingCount++;
22
- try {
23
- let task = await packageSyncerService.findExecuteTask();
24
- while (task) {
25
- const startTime = Date.now();
26
- ctx.logger.info('[SyncPackageWorker:subscribe:executeTask:start][%s] taskId: %s, targetName: %s, attempts: %s, params: %j, updatedAt: %s, delay %sms', executingCount, task.taskId, task.targetName, task.attempts, task.data, task.updatedAt, startTime - task.updatedAt.getTime());
27
- await packageSyncerService.executeTask(task);
28
- const use = Date.now() - startTime;
29
- ctx.logger.info('[SyncPackageWorker:subscribe:executeTask:success][%s] taskId: %s, targetName: %s, use %sms', executingCount, task.taskId, task.targetName, use);
30
- if (executingCount >= app.config.cnpmcore.syncPackageWorkerMaxConcurrentTasks) {
31
- ctx.logger.info('[SyncPackageWorker:subscribe:executeTask] current sync task count %s, exceed max concurrent tasks %s', executingCount, app.config.cnpmcore.syncPackageWorkerMaxConcurrentTasks);
32
- break;
33
- }
34
- // try next task
35
- task = await packageSyncerService.findExecuteTask();
36
- }
37
- }
38
- catch (err) {
39
- ctx.logger.error('[SyncPackageWorker:subscribe:executeTask:error][%s] %s', executingCount, err);
40
- }
41
- finally {
42
- executingCount--;
43
- }
44
- });
45
- }
46
- }
47
- exports.default = SyncPackageWorker;
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3luY1BhY2thZ2VXb3JrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcHAvc2NoZWR1bGUvU3luY1BhY2thZ2VXb3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2QkFBbUM7QUFHbkMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO0FBRXBDLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztBQUN2QixNQUFxQixpQkFBa0IsU0FBUSxrQkFBWTtJQUN6RCxNQUFNLEtBQUssUUFBUTtRQUNqQixPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUk7WUFDZCxJQUFJLEVBQUUsS0FBSztTQUNaLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVM7UUFDYixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxLQUFLO1lBQUUsT0FBTztRQUNuRCxJQUFJLGNBQWMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxtQ0FBbUM7WUFBRSxPQUFPO1FBRXRGLE1BQU0sR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3BDLE1BQU0sb0JBQW9CLEdBQXlCLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsb0JBQW9CLENBQUM7WUFDakcsY0FBYyxFQUFFLENBQUM7WUFDakIsSUFBSTtnQkFDRixJQUFJLElBQUksR0FBRyxNQUFNLG9CQUFvQixDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN4RCxPQUFPLElBQUksRUFBRTtvQkFDWCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQzdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFJQUFxSSxFQUNuSixjQUFjLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUN0RixTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO29CQUN4QyxNQUFNLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDN0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztvQkFDbkMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNEZBQTRGLEVBQzFHLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3JELElBQUksY0FBYyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLG1DQUFtQyxFQUFFO3dCQUM3RSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzR0FBc0csRUFDcEgsY0FBYyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7d0JBQzNFLE1BQU07cUJBQ1A7b0JBQ0QsZ0JBQWdCO29CQUNoQixJQUFJLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztpQkFDckQ7YUFDRjtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNqRztvQkFBUztnQkFDUixjQUFjLEVBQUUsQ0FBQzthQUNsQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBMUNELG9DQTBDQyJ9
@@ -1,9 +0,0 @@
1
- import { Subscription } from 'egg';
2
- export default class TaskTimeoutHandler extends Subscription {
3
- static get schedule(): {
4
- immediate: boolean;
5
- interval: number;
6
- type: string;
7
- };
8
- subscribe(): Promise<void>;
9
- }
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const egg_1 = require("egg");
4
- const CacheAdapter_1 = require("../common/adapter/CacheAdapter");
5
- const cnpmcoreCore = 'cnpmcoreCore';
6
- class TaskTimeoutHandler extends egg_1.Subscription {
7
- static get schedule() {
8
- return {
9
- immediate: process.env.NODE_ENV !== 'test',
10
- interval: 60000,
11
- type: 'worker',
12
- };
13
- }
14
- async subscribe() {
15
- const { ctx } = this;
16
- await ctx.beginModuleScope(async () => {
17
- const taskService = ctx.module[cnpmcoreCore].taskService;
18
- const cache = await ctx.getEggObject(CacheAdapter_1.CacheAdapter);
19
- await cache.usingLock('TaskTimeoutHandler', 60, async () => {
20
- const result = await taskService.retryExecuteTimeoutTasks();
21
- ctx.logger.info('[TaskTimeoutHandler:subscribe] retry execute timeout tasks: %j', result);
22
- });
23
- });
24
- }
25
- }
26
- exports.default = TaskTimeoutHandler;
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFza1RpbWVvdXRIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXBwL3NjaGVkdWxlL1Rhc2tUaW1lb3V0SGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZCQUFtQztBQUVuQyxpRUFBOEQ7QUFFOUQsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO0FBRXBDLE1BQXFCLGtCQUFtQixTQUFRLGtCQUFZO0lBQzFELE1BQU0sS0FBSyxRQUFRO1FBQ2pCLE9BQU87WUFDTCxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssTUFBTTtZQUMxQyxRQUFRLEVBQUUsS0FBSztZQUNmLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDckIsTUFBTSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDcEMsTUFBTSxXQUFXLEdBQWdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDO1lBQ3RFLE1BQU0sS0FBSyxHQUFpQixNQUFNLEdBQUcsQ0FBQyxZQUFZLENBQUMsMkJBQVksQ0FBQyxDQUFDO1lBRWpFLE1BQU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pELE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQzVELEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdFQUFnRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVGLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFyQkQscUNBcUJDIn0=
@@ -1,8 +0,0 @@
1
- import { Subscription } from 'egg';
2
- export default class TriggerHookWorker extends Subscription {
3
- static get schedule(): {
4
- interval: number;
5
- type: string;
6
- };
7
- subscribe(): Promise<void>;
8
- }
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const egg_1 = require("egg");
4
- const HookTriggerService_1 = require("../core/service/HookTriggerService");
5
- const TaskService_1 = require("../core/service/TaskService");
6
- const Task_1 = require("../common/enum/Task");
7
- let executingCount = 0;
8
- class TriggerHookWorker extends egg_1.Subscription {
9
- static get schedule() {
10
- return {
11
- interval: 1000,
12
- type: 'all',
13
- };
14
- }
15
- async subscribe() {
16
- const { ctx, app } = this;
17
- if (executingCount >= app.config.cnpmcore.triggerHookWorkerMaxConcurrentTasks)
18
- return;
19
- await ctx.beginModuleScope(async () => {
20
- const hookTriggerService = await ctx.getEggObject(HookTriggerService_1.HookTriggerService);
21
- const taskService = await ctx.getEggObject(TaskService_1.TaskService);
22
- executingCount++;
23
- try {
24
- let task = await taskService.findExecuteTask(Task_1.TaskType.TriggerHook);
25
- while (task) {
26
- const startTime = Date.now();
27
- ctx.logger.info('[TriggerHookWorker:subscribe:executeTask:start][%s] taskId: %s, targetName: %s, attempts: %s, params: %j, updatedAt: %s, delay %sms', executingCount, task.taskId, task.targetName, task.attempts, task.data, task.updatedAt, startTime - task.updatedAt.getTime());
28
- await hookTriggerService.executeTask(task);
29
- const use = Date.now() - startTime;
30
- ctx.logger.info('[TriggerHookWorker:subscribe:executeTask:success][%s] taskId: %s, targetName: %s, use %sms', executingCount, task.taskId, task.targetName, use);
31
- if (executingCount >= app.config.cnpmcore.triggerHookWorkerMaxConcurrentTasks) {
32
- ctx.logger.info('[TriggerHookWorker:subscribe:executeTask] current sync task count %s, exceed max concurrent tasks %s', executingCount, app.config.cnpmcore.triggerHookWorkerMaxConcurrentTasks);
33
- break;
34
- }
35
- // try next task
36
- task = await taskService.findExecuteTask(Task_1.TaskType.TriggerHook);
37
- }
38
- }
39
- catch (err) {
40
- ctx.logger.error('[TriggerHookWorker:subscribe:executeTask:error][%s] %s', executingCount, err);
41
- }
42
- finally {
43
- executingCount--;
44
- }
45
- });
46
- }
47
- }
48
- exports.default = TriggerHookWorker;
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJpZ2dlckhvb2tXb3JrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcHAvc2NoZWR1bGUvVHJpZ2dlckhvb2tXb3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2QkFBbUM7QUFDbkMsMkVBQXdFO0FBQ3hFLDZEQUEwRDtBQUMxRCw4Q0FBK0M7QUFHL0MsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQXFCLGlCQUFrQixTQUFRLGtCQUFZO0lBQ3pELE1BQU0sS0FBSyxRQUFRO1FBQ2pCLE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxLQUFLO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksY0FBYyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLG1DQUFtQztZQUFFLE9BQU87UUFFdEYsTUFBTSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDcEMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLEdBQUcsQ0FBQyxZQUFZLENBQUMsdUNBQWtCLENBQUMsQ0FBQztZQUN0RSxNQUFNLFdBQVcsR0FBRyxNQUFNLEdBQUcsQ0FBQyxZQUFZLENBQUMseUJBQVcsQ0FBQyxDQUFDO1lBQ3hELGNBQWMsRUFBRSxDQUFDO1lBQ2pCLElBQUk7Z0JBQ0YsSUFBSSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsZUFBZSxDQUFDLGVBQVEsQ0FBQyxXQUFXLENBQW9CLENBQUM7Z0JBQ3RGLE9BQU8sSUFBSSxFQUFFO29CQUNYLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDN0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUlBQXFJLEVBQ25KLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQ3RGLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7b0JBQ3hDLE1BQU0sa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMzQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO29CQUNuQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw0RkFBNEYsRUFDMUcsY0FBYyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDckQsSUFBSSxjQUFjLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsbUNBQW1DLEVBQUU7d0JBQzdFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHNHQUFzRyxFQUNwSCxjQUFjLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsbUNBQW1DLENBQUMsQ0FBQzt3QkFDM0UsTUFBTTtxQkFDUDtvQkFDRCxnQkFBZ0I7b0JBQ2hCLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxlQUFlLENBQUMsZUFBUSxDQUFDLFdBQVcsQ0FBb0IsQ0FBQztpQkFDbkY7YUFDRjtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNqRztvQkFBUztnQkFDUixjQUFjLEVBQUUsQ0FBQzthQUNsQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBMUNELG9DQTBDQyJ9
@@ -1,9 +0,0 @@
1
- import { Subscription } from 'egg';
2
- export default class UpdateTotalData extends Subscription {
3
- static get schedule(): {
4
- immediate: boolean;
5
- interval: number;
6
- type: string;
7
- };
8
- subscribe(): Promise<void>;
9
- }
@@ -1,103 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const egg_1 = require("egg");
7
- const Task_1 = require("../common/enum/Task");
8
- const dayjs_1 = __importDefault(require("../common/dayjs"));
9
- const cnpmcoreRepository = 'cnpmcoreRepository';
10
- const cnpmcoreCore = 'cnpmcoreCore';
11
- class UpdateTotalData extends egg_1.Subscription {
12
- static get schedule() {
13
- return {
14
- // immediate = false on unittest env
15
- immediate: process.env.NODE_ENV !== 'test',
16
- interval: 60000,
17
- type: 'worker',
18
- };
19
- }
20
- async subscribe() {
21
- const { ctx } = this;
22
- await ctx.beginModuleScope(async () => {
23
- const packageVersionDownloadRepository = ctx.module[cnpmcoreRepository].packageVersionDownloadRepository;
24
- const packageRepository = ctx.module[cnpmcoreRepository].packageRepository;
25
- const taskRepository = ctx.module[cnpmcoreRepository].taskRepository;
26
- const changeRepository = ctx.module[cnpmcoreRepository].changeRepository;
27
- const cacheService = ctx.module[cnpmcoreCore].cacheService;
28
- const changesStreamTask = await taskRepository.findTaskByTargetName('GLOBAL_WORKER', Task_1.TaskType.ChangesStream);
29
- const packageTotal = await packageRepository.queryTotal();
30
- const download = {
31
- today: 0,
32
- yesterday: 0,
33
- samedayLastweek: 0,
34
- thisweek: 0,
35
- thismonth: 0,
36
- thisyear: 0,
37
- lastweek: 0,
38
- lastmonth: 0,
39
- lastyear: 0,
40
- };
41
- const today = (0, dayjs_1.default)();
42
- const lastYearStartDay = today.subtract(1, 'year').startOf('year');
43
- const rows = await packageVersionDownloadRepository.query('total', lastYearStartDay.toDate(), today.toDate());
44
- if (rows.length > 0) {
45
- const todayInt = Number(today.format('YYYYMMDD'));
46
- const yesterdayInt = Number(today.subtract(1, 'day').format('YYYYMMDD'));
47
- const samedayLastweekInt = Number(today.subtract(1, 'week').startOf('week').format('YYYYMMDD'));
48
- const thisWeekStartDayInt = Number(today.startOf('week').format('YYYYMMDD'));
49
- const thisWeekEndDayInt = Number(today.endOf('week').format('YYYYMMDD'));
50
- const thisMonthStartDayInt = Number(today.startOf('month').format('YYYYMMDD'));
51
- const thisMonthEndDayInt = Number(today.endOf('month').format('YYYYMMDD'));
52
- const thisYearStartDayInt = Number(today.startOf('year').format('YYYYMMDD'));
53
- const thisYearEndDayInt = Number(today.endOf('year').format('YYYYMMDD'));
54
- const lastWeekStartDayInt = Number(today.subtract(1, 'week').startOf('week').format('YYYYMMDD'));
55
- const lastWeekEndDayInt = Number(today.subtract(1, 'week').endOf('week').format('YYYYMMDD'));
56
- const lastMonthStartDayInt = Number(today.subtract(1, 'month').startOf('month').format('YYYYMMDD'));
57
- const lastMonthEndDayInt = Number(today.subtract(1, 'month').endOf('month').format('YYYYMMDD'));
58
- const lastYearStartDayInt = Number(today.subtract(1, 'year').startOf('year').format('YYYYMMDD'));
59
- const lastYearEndDayInt = Number(today.subtract(1, 'year').endOf('year').format('YYYYMMDD'));
60
- for (const row of rows) {
61
- for (let i = 1; i <= 31; i++) {
62
- const day = String(i).padStart(2, '0');
63
- const field = `d${day}`;
64
- const counter = row[field];
65
- if (!counter)
66
- continue;
67
- const dayInt = row.yearMonth * 100 + i;
68
- if (dayInt === todayInt)
69
- download.today += counter;
70
- if (dayInt === yesterdayInt)
71
- download.yesterday += counter;
72
- if (dayInt === samedayLastweekInt)
73
- download.samedayLastweek += counter;
74
- if (dayInt >= thisWeekStartDayInt && dayInt <= thisWeekEndDayInt)
75
- download.thisweek += counter;
76
- if (dayInt >= thisMonthStartDayInt && dayInt <= thisMonthEndDayInt)
77
- download.thismonth += counter;
78
- if (dayInt >= thisYearStartDayInt && dayInt <= thisYearEndDayInt)
79
- download.thisyear += counter;
80
- if (dayInt >= lastWeekStartDayInt && dayInt <= lastWeekEndDayInt)
81
- download.lastweek += counter;
82
- if (dayInt >= lastMonthStartDayInt && dayInt <= lastMonthEndDayInt)
83
- download.lastmonth += counter;
84
- if (dayInt >= lastYearStartDayInt && dayInt <= lastYearEndDayInt)
85
- download.lastyear += counter;
86
- }
87
- }
88
- }
89
- const lastChange = await changeRepository.getLastChange();
90
- const totalData = {
91
- ...packageTotal,
92
- download,
93
- changesStream: changesStreamTask && changesStreamTask.data || {},
94
- lastChangeId: lastChange && lastChange.id || 0,
95
- cacheTime: new Date().toISOString(),
96
- };
97
- await cacheService.saveTotalData(totalData);
98
- ctx.logger.info('[UpdateTotalData.subscribe] total data: %j', totalData);
99
- });
100
- }
101
- }
102
- exports.default = UpdateTotalData;
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXBkYXRlVG90YWxEYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXBwL3NjaGVkdWxlL1VwZGF0ZVRvdGFsRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUFtQztBQU1uQyw4Q0FBK0M7QUFDL0MsNERBQW9DO0FBRXBDLE1BQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQUM7QUFDaEQsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO0FBRXBDLE1BQXFCLGVBQWdCLFNBQVEsa0JBQVk7SUFDdkQsTUFBTSxLQUFLLFFBQVE7UUFDakIsT0FBTztZQUNMLG9DQUFvQztZQUNwQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssTUFBTTtZQUMxQyxRQUFRLEVBQUUsS0FBSztZQUNmLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDckIsTUFBTSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDcEMsTUFBTSxnQ0FBZ0MsR0FDcEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDO1lBQ2xFLE1BQU0saUJBQWlCLEdBQXNCLEdBQUcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztZQUM5RixNQUFNLGNBQWMsR0FBbUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUNyRixNQUFNLGdCQUFnQixHQUFxQixHQUFHLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsZ0JBQWdCLENBQUM7WUFDM0YsTUFBTSxZQUFZLEdBQWlCLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxDQUFDO1lBRXpFLE1B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