cnpmcore 0.0.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/History.md +7 -0
  2. package/LICENSE +1 -1
  3. package/README.md +13 -4
  4. package/dist/app/common/AbstractService.d.ts +5 -0
  5. package/dist/app/{port/type/BaseController.js → common/AbstractService.js} +11 -9
  6. package/dist/app/common/FileUtil.d.ts +15 -0
  7. package/dist/app/common/FileUtil.js +77 -0
  8. package/dist/app/common/PackageUtil.d.ts +9 -0
  9. package/dist/app/common/PackageUtil.js +38 -16
  10. package/dist/app/common/SyncUtil.d.ts +2 -0
  11. package/dist/app/common/SyncUtil.js +17 -0
  12. package/dist/app/common/UserUtil.d.ts +5 -0
  13. package/dist/app/common/UserUtil.js +72 -0
  14. package/dist/app/common/adapter/BugVersionStore.d.ts +7 -0
  15. package/dist/app/common/adapter/BugVersionStore.js +28 -0
  16. package/dist/app/common/adapter/CacheAdapter.d.ts +13 -0
  17. package/dist/app/common/adapter/CacheAdapter.js +78 -0
  18. package/dist/app/common/adapter/NFSAdapter.d.ts +16 -0
  19. package/dist/app/common/adapter/NFSAdapter.js +62 -22
  20. package/dist/app/common/adapter/NPMRegistry.d.ts +78 -0
  21. package/dist/app/common/adapter/NPMRegistry.js +98 -0
  22. package/dist/app/common/adapter/QueueAdapter.d.ts +7 -0
  23. package/dist/app/common/adapter/QueueAdapter.js +37 -0
  24. package/dist/app/common/adapter/binary/AbstractBinary.d.ts +33 -0
  25. package/dist/app/common/adapter/binary/AbstractBinary.js +76 -0
  26. package/dist/app/common/adapter/binary/ApiBinary.d.ts +8 -0
  27. package/dist/app/common/adapter/binary/ApiBinary.js +31 -0
  28. package/dist/app/common/adapter/binary/BucketBinary.d.ts +5 -0
  29. package/dist/app/common/adapter/binary/BucketBinary.js +77 -0
  30. package/dist/app/common/adapter/binary/CypressBinary.d.ts +5 -0
  31. package/dist/app/common/adapter/binary/CypressBinary.js +63 -0
  32. package/dist/app/common/adapter/binary/ElectronBinary.d.ts +5 -0
  33. package/dist/app/common/adapter/binary/ElectronBinary.js +44 -0
  34. package/dist/app/common/adapter/binary/GithubBinary.d.ts +7 -0
  35. package/dist/app/common/adapter/binary/GithubBinary.js +93 -0
  36. package/dist/app/common/adapter/binary/ImageminBinary.d.ts +5 -0
  37. package/dist/app/common/adapter/binary/ImageminBinary.js +96 -0
  38. package/dist/app/common/adapter/binary/NodeBinary.d.ts +4 -0
  39. package/dist/app/common/adapter/binary/NodeBinary.js +41 -0
  40. package/dist/app/common/adapter/binary/NodePreGypBinary.d.ts +5 -0
  41. package/dist/app/common/adapter/binary/NodePreGypBinary.js +136 -0
  42. package/dist/app/common/adapter/binary/NwjsBinary.d.ts +6 -0
  43. package/dist/app/common/adapter/binary/NwjsBinary.js +47 -0
  44. package/dist/app/common/adapter/binary/PlaywrightBinary.d.ts +5 -0
  45. package/dist/app/common/adapter/binary/PlaywrightBinary.js +214 -0
  46. package/dist/app/common/adapter/binary/PuppeteerBinary.d.ts +6 -0
  47. package/dist/app/common/adapter/binary/PuppeteerBinary.js +125 -0
  48. package/dist/app/common/adapter/binary/SqlcipherBinary.d.ts +5 -0
  49. package/dist/app/common/adapter/binary/SqlcipherBinary.js +78 -0
  50. package/dist/app/common/aop/AsyncTimer.d.ts +9 -0
  51. package/dist/app/common/aop/AsyncTimer.js +36 -0
  52. package/dist/app/common/constants.d.ts +2 -0
  53. package/dist/app/common/constants.js +6 -0
  54. package/dist/app/common/dayjs.d.ts +2 -0
  55. package/dist/app/common/dayjs.js +10 -0
  56. package/dist/app/common/enum/Task.d.ts +12 -0
  57. package/dist/app/common/enum/Task.js +18 -0
  58. package/dist/app/common/enum/User.d.ts +5 -0
  59. package/dist/app/common/enum/User.js +10 -0
  60. package/dist/app/common/typing.d.ts +28 -0
  61. package/dist/app/common/typing.js +3 -0
  62. package/dist/app/core/entity/Binary.d.ts +28 -0
  63. package/dist/app/core/entity/Binary.js +29 -0
  64. package/dist/app/core/entity/BugVersion.d.ts +14 -0
  65. package/dist/app/core/entity/BugVersion.js +43 -0
  66. package/dist/app/core/entity/Change.d.ts +17 -0
  67. package/dist/app/core/entity/Change.js +20 -0
  68. package/dist/app/core/entity/Dist.d.ts +21 -0
  69. package/dist/app/core/entity/Dist.js +1 -2
  70. package/dist/app/core/entity/Entity.d.ts +11 -0
  71. package/dist/app/core/entity/Entity.js +3 -3
  72. package/dist/app/core/entity/Package.d.ts +45 -0
  73. package/dist/app/core/entity/Package.js +33 -25
  74. package/dist/app/core/entity/PackageTag.d.ts +17 -0
  75. package/dist/app/core/entity/PackageVersion.d.ts +26 -0
  76. package/dist/app/core/entity/PackageVersionBlock.d.ts +17 -0
  77. package/dist/app/core/entity/PackageVersionBlock.js +20 -0
  78. package/dist/app/core/entity/PackageVersionManifest.d.ts +17 -0
  79. package/dist/app/core/entity/PackageVersionManifest.js +20 -0
  80. package/dist/app/core/entity/Task.d.ts +43 -0
  81. package/dist/app/core/entity/Task.js +94 -0
  82. package/dist/app/core/entity/Token.d.ts +24 -0
  83. package/dist/app/core/entity/Token.js +23 -0
  84. package/dist/app/core/entity/User.d.ts +25 -0
  85. package/dist/app/core/entity/User.js +24 -0
  86. package/dist/app/core/event/BugVersionFixHandler.d.ts +6 -0
  87. package/dist/app/core/event/BugVersionFixHandler.js +42 -0
  88. package/dist/app/core/event/CacheCleaner.d.ts +38 -0
  89. package/dist/app/core/event/CacheCleaner.js +119 -0
  90. package/dist/app/core/event/ChangesStream.d.ts +32 -0
  91. package/dist/app/core/event/ChangesStream.js +106 -0
  92. package/dist/app/core/event/StoreManifest.d.ts +11 -0
  93. package/dist/app/core/event/StoreManifest.js +54 -0
  94. package/dist/app/core/event/index.d.ts +27 -0
  95. package/dist/app/core/event/index.js +11 -3
  96. package/dist/app/core/service/BinarySyncerService.d.ts +23 -0
  97. package/dist/app/core/service/BinarySyncerService.js +281 -0
  98. package/dist/app/core/service/BugVersionService.d.ts +11 -0
  99. package/dist/app/core/service/BugVersionService.js +86 -0
  100. package/dist/app/core/service/CacheService.d.ts +33 -0
  101. package/dist/app/core/service/CacheService.js +75 -0
  102. package/dist/app/core/service/ChangesStreamService.d.ts +11 -0
  103. package/dist/app/core/service/ChangesStreamService.js +186 -0
  104. package/dist/app/core/service/PackageManagerService.d.ts +83 -0
  105. package/dist/app/core/service/PackageManagerService.js +675 -78
  106. package/dist/app/core/service/PackageSyncerService.d.ts +24 -0
  107. package/dist/app/core/service/PackageSyncerService.js +667 -0
  108. package/dist/app/core/service/TaskService.d.ts +22 -0
  109. package/dist/app/core/service/TaskService.js +142 -0
  110. package/dist/app/core/service/UserService.d.ts +36 -0
  111. package/dist/app/core/service/UserService.js +120 -0
  112. package/dist/app/core/util/EntityUtil.d.ts +8 -0
  113. package/dist/app/core/util/EntityUtil.js +3 -3
  114. package/dist/app/infra/NFSClientAdapter.d.ts +18 -0
  115. package/dist/app/infra/NFSClientAdapter.js +74 -0
  116. package/dist/app/infra/package.json +6 -0
  117. package/dist/app/port/UserRoleManager.d.ts +24 -0
  118. package/dist/app/port/UserRoleManager.js +146 -0
  119. package/dist/app/port/controller/AbstractController.d.ts +32 -0
  120. package/dist/app/port/controller/AbstractController.js +112 -0
  121. package/dist/app/port/controller/BinarySyncController.d.ts +36 -0
  122. package/dist/app/port/controller/BinarySyncController.js +123 -0
  123. package/dist/app/port/controller/ChangesStreamController.d.ts +13 -0
  124. package/dist/app/port/controller/ChangesStreamController.js +53 -0
  125. package/dist/app/port/controller/DownloadController.d.ts +18 -0
  126. package/dist/app/port/controller/DownloadController.js +134 -0
  127. package/dist/app/port/controller/HomeController.d.ts +37 -0
  128. package/dist/app/port/controller/HomeController.js +72 -0
  129. package/dist/app/port/controller/PackageBlockController.d.ts +24 -0
  130. package/dist/app/port/controller/PackageBlockController.js +108 -0
  131. package/dist/app/port/controller/PackageSyncController.d.ts +35 -0
  132. package/dist/app/port/controller/PackageSyncController.js +205 -0
  133. package/dist/app/port/controller/PackageTagController.d.ts +12 -0
  134. package/dist/app/port/controller/PackageTagController.js +88 -0
  135. package/dist/app/port/controller/TokenController.d.ts +38 -0
  136. package/dist/app/port/controller/TokenController.js +125 -0
  137. package/dist/app/port/controller/UserController.d.ts +39 -0
  138. package/dist/app/port/controller/UserController.js +223 -0
  139. package/dist/app/port/controller/package/DownloadPackageVersionTar.d.ts +9 -0
  140. package/dist/app/port/controller/package/DownloadPackageVersionTar.js +82 -0
  141. package/dist/app/port/controller/package/RemovePackageVersionController.d.ts +8 -0
  142. package/dist/app/port/controller/package/RemovePackageVersionController.js +56 -0
  143. package/dist/app/port/controller/package/SavePackageVersionController.d.ts +48 -0
  144. package/dist/app/port/controller/package/SavePackageVersionController.js +221 -0
  145. package/dist/app/port/controller/package/ShowPackageController.d.ts +8 -0
  146. package/dist/app/port/controller/package/ShowPackageController.js +99 -0
  147. package/dist/app/port/controller/package/ShowPackageVersionController.d.ts +6 -0
  148. package/dist/app/port/controller/package/ShowPackageVersionController.js +55 -0
  149. package/dist/app/port/controller/package/UpdatePackageController.d.ts +17 -0
  150. package/dist/app/port/controller/package/UpdatePackageController.js +68 -0
  151. package/dist/app/port/middleware/AlwaysAuth.d.ts +2 -0
  152. package/dist/app/port/middleware/AlwaysAuth.js +17 -0
  153. package/dist/app/port/middleware/ErrorHandler.d.ts +2 -0
  154. package/dist/app/port/middleware/ErrorHandler.js +27 -5
  155. package/dist/app/port/middleware/Tracing.d.ts +2 -0
  156. package/dist/app/port/middleware/Tracing.js +22 -0
  157. package/dist/app/port/middleware/index.d.ts +2 -0
  158. package/dist/app/port/middleware/index.js +22 -0
  159. package/dist/app/port/typebox.d.ts +29 -0
  160. package/dist/app/port/typebox.js +71 -0
  161. package/dist/app/repository/AbstractRepository.d.ts +4 -0
  162. package/dist/app/repository/AbstractRepository.js +17 -0
  163. package/dist/app/repository/BinaryRepository.d.ts +7 -0
  164. package/dist/app/repository/BinaryRepository.js +45 -0
  165. package/dist/app/repository/ChangeRepository.d.ts +8 -0
  166. package/dist/app/repository/ChangeRepository.js +31 -0
  167. package/dist/app/repository/DistRepository.d.ts +15 -0
  168. package/dist/app/repository/DistRepository.js +69 -0
  169. package/dist/app/repository/PackageRepository.d.ts +39 -0
  170. package/dist/app/repository/PackageRepository.js +223 -36
  171. package/dist/app/repository/PackageVersionBlockRepository.d.ts +10 -0
  172. package/dist/app/repository/PackageVersionBlockRepository.js +51 -0
  173. package/dist/app/repository/PackageVersionDownloadRepository.d.ts +7 -0
  174. package/dist/app/repository/PackageVersionDownloadRepository.js +77 -0
  175. package/dist/app/repository/TaskRepository.d.ts +10 -0
  176. package/dist/app/repository/TaskRepository.js +82 -0
  177. package/dist/app/repository/UserRepository.d.ts +15 -0
  178. package/dist/app/repository/UserRepository.js +81 -0
  179. package/dist/app/repository/model/Binary.d.ts +13 -0
  180. package/dist/app/repository/model/Binary.js +53 -0
  181. package/dist/app/repository/model/Change.d.ts +10 -0
  182. package/dist/app/repository/model/Change.js +44 -0
  183. package/dist/app/repository/model/Dist.d.ts +12 -0
  184. package/dist/app/repository/model/Dist.js +10 -13
  185. package/dist/app/repository/model/HistoryTask.d.ts +18 -0
  186. package/dist/app/repository/model/HistoryTask.js +65 -0
  187. package/dist/app/repository/model/Maintainer.d.ts +8 -0
  188. package/dist/app/repository/model/Maintainer.js +36 -0
  189. package/dist/app/repository/model/Package.d.ts +13 -0
  190. package/dist/app/repository/model/Package.js +18 -9
  191. package/dist/app/repository/model/PackageDep.d.ts +11 -0
  192. package/dist/app/repository/model/PackageDep.js +9 -9
  193. package/dist/app/repository/model/PackageTag.d.ts +10 -0
  194. package/dist/app/repository/model/PackageTag.js +9 -9
  195. package/dist/app/repository/model/PackageVersion.d.ts +14 -0
  196. package/dist/app/repository/model/PackageVersion.js +9 -9
  197. package/dist/app/repository/model/PackageVersionBlock.d.ts +10 -0
  198. package/dist/app/repository/model/PackageVersionBlock.js +44 -0
  199. package/dist/app/repository/model/PackageVersionDownload.d.ts +40 -0
  200. package/dist/app/repository/model/PackageVersionDownload.js +132 -0
  201. package/dist/app/repository/model/PackageVersionManifest.d.ts +10 -0
  202. package/dist/app/repository/model/PackageVersionManifest.js +46 -0
  203. package/dist/app/repository/model/Task.d.ts +18 -0
  204. package/dist/app/repository/model/Task.js +65 -0
  205. package/dist/app/repository/model/Token.d.ts +13 -0
  206. package/dist/app/repository/model/Token.js +55 -0
  207. package/dist/app/repository/model/User.d.ts +14 -0
  208. package/dist/app/repository/model/User.js +56 -0
  209. package/dist/app/repository/util/EntityProperty.d.ts +1 -0
  210. package/dist/app/repository/util/ModelConvertor.d.ts +7 -0
  211. package/dist/app/repository/util/ModelConvertor.js +35 -2
  212. package/dist/app/repository/util/ModelConvertorUtil.d.ts +8 -0
  213. package/dist/app/schedule/ChangesStreamWorker.d.ts +8 -0
  214. package/dist/app/schedule/ChangesStreamWorker.js +27 -0
  215. package/dist/app/schedule/CheckRecentlyUpdatedPackages.d.ts +8 -0
  216. package/dist/app/schedule/CheckRecentlyUpdatedPackages.js +66 -0
  217. package/dist/app/schedule/CleanTempDir.d.ts +8 -0
  218. package/dist/app/schedule/CleanTempDir.js +48 -0
  219. package/dist/app/schedule/CreateSyncBinaryTask.d.ts +8 -0
  220. package/dist/app/schedule/CreateSyncBinaryTask.js +34 -0
  221. package/dist/app/schedule/SavePackageVersionDownloadCounter.d.ts +8 -0
  222. package/dist/app/schedule/SavePackageVersionDownloadCounter.js +21 -0
  223. package/dist/app/schedule/SyncBinaryWorker.d.ts +8 -0
  224. package/dist/app/schedule/SyncBinaryWorker.js +30 -0
  225. package/dist/app/schedule/SyncPackageWorker.d.ts +8 -0
  226. package/dist/app/schedule/SyncPackageWorker.js +44 -0
  227. package/dist/app/schedule/TaskTimeoutHandler.d.ts +9 -0
  228. package/dist/app/schedule/TaskTimeoutHandler.js +27 -0
  229. package/dist/app/schedule/UpdateTotalData.d.ts +9 -0
  230. package/dist/app/schedule/UpdateTotalData.js +103 -0
  231. package/dist/app.d.ts +11 -0
  232. package/dist/app.js +22 -0
  233. package/dist/config/binaries.d.ts +38 -0
  234. package/dist/config/binaries.js +810 -0
  235. package/dist/config/config.default.d.ts +3 -0
  236. package/dist/config/config.default.js +128 -9
  237. package/dist/config/config.unittest.d.ts +3 -0
  238. package/dist/config/config.unittest.js +18 -0
  239. package/dist/config/plugin.d.ts +3 -0
  240. package/dist/config/plugin.js +19 -3
  241. package/package.json +57 -21
  242. package/dist/app/common/adapter/NFSClientAdapter.js +0 -43
  243. package/dist/app/port/controller/PackageController.js +0 -273
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ var __importDefault = (this && this.__importDefault) || function (mod) {
32
+ return (mod && mod.__esModule) ? mod : { "default": mod };
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.BinarySyncerService = void 0;
36
+ const promises_1 = require("fs/promises");
37
+ const tegg_1 = require("@eggjs/tegg");
38
+ const promises_2 = __importDefault(require("fs/promises"));
39
+ const binaries_1 = __importStar(require("../../../config/binaries"));
40
+ const Task_1 = require("../../common/enum/Task");
41
+ const FileUtil_1 = require("../../common/FileUtil");
42
+ const Task_2 = require("../entity/Task");
43
+ const Binary_1 = require("../entity/Binary");
44
+ const ApiBinary_1 = require("../../common/adapter/binary/ApiBinary");
45
+ const AbstractService_1 = require("../../common/AbstractService");
46
+ const NodeBinary_1 = require("../../common/adapter/binary/NodeBinary");
47
+ const NwjsBinary_1 = require("../../common/adapter/binary/NwjsBinary");
48
+ const BucketBinary_1 = require("../../common/adapter/binary/BucketBinary");
49
+ const CypressBinary_1 = require("../../common/adapter/binary/CypressBinary");
50
+ const SqlcipherBinary_1 = require("../../common/adapter/binary/SqlcipherBinary");
51
+ const PuppeteerBinary_1 = require("../../common/adapter/binary/PuppeteerBinary");
52
+ const GithubBinary_1 = require("../../common/adapter/binary/GithubBinary");
53
+ const ElectronBinary_1 = require("../../common/adapter/binary/ElectronBinary");
54
+ const NodePreGypBinary_1 = require("../../common/adapter/binary/NodePreGypBinary");
55
+ const ImageminBinary_1 = require("../../common/adapter/binary/ImageminBinary");
56
+ const PlaywrightBinary_1 = require("../../common/adapter/binary/PlaywrightBinary");
57
+ const BinaryClasses = {
58
+ [binaries_1.SyncerClass.NodeBinary]: NodeBinary_1.NodeBinary,
59
+ [binaries_1.SyncerClass.NwjsBinary]: NwjsBinary_1.NwjsBinary,
60
+ [binaries_1.SyncerClass.BucketBinary]: BucketBinary_1.BucketBinary,
61
+ [binaries_1.SyncerClass.CypressBinary]: CypressBinary_1.CypressBinary,
62
+ [binaries_1.SyncerClass.SqlcipherBinary]: SqlcipherBinary_1.SqlcipherBinary,
63
+ [binaries_1.SyncerClass.PuppeteerBinary]: PuppeteerBinary_1.PuppeteerBinary,
64
+ [binaries_1.SyncerClass.GithubBinary]: GithubBinary_1.GithubBinary,
65
+ [binaries_1.SyncerClass.ElectronBinary]: ElectronBinary_1.ElectronBinary,
66
+ [binaries_1.SyncerClass.NodePreGypBinary]: NodePreGypBinary_1.NodePreGypBinary,
67
+ [binaries_1.SyncerClass.ImageminBinary]: ImageminBinary_1.ImageminBinary,
68
+ [binaries_1.SyncerClass.PlaywrightBinary]: PlaywrightBinary_1.PlaywrightBinary,
69
+ };
70
+ function isoNow() {
71
+ return new Date().toISOString();
72
+ }
73
+ let BinarySyncerService = class BinarySyncerService extends AbstractService_1.AbstractService {
74
+ async findBinary(binaryName, parent, name) {
75
+ return await this.binaryRepository.findBinary(binaryName, parent, name);
76
+ }
77
+ async listDirBinaries(binary) {
78
+ return await this.binaryRepository.listBinaries(binary.category, `${binary.parent}${binary.name}`);
79
+ }
80
+ async listRootBinaries(binaryName) {
81
+ return await this.binaryRepository.listBinaries(binaryName, '/');
82
+ }
83
+ async downloadBinary(binary) {
84
+ return await this.nfsAdapter.getDownloadUrlOrStream(binary.storePath);
85
+ }
86
+ async createTask(binaryName, lastData) {
87
+ return await this.taskService.createTask(Task_2.Task.createSyncBinary(binaryName, lastData), false);
88
+ }
89
+ async findTask(taskId) {
90
+ return await this.taskService.findTask(taskId);
91
+ }
92
+ async findTaskLog(task) {
93
+ return await this.taskService.findTaskLog(task);
94
+ }
95
+ async findExecuteTask() {
96
+ return await this.taskService.findExecuteTask(Task_1.TaskType.SyncBinary);
97
+ }
98
+ async executeTask(task) {
99
+ const binaryName = task.targetName;
100
+ const binaryInstance = this.createBinaryInstance(binaryName);
101
+ const logUrl = `${this.config.cnpmcore.registry}/-/binary/${binaryName}/syncs/${task.taskId}/log`;
102
+ let logs = [];
103
+ logs.push(`[${isoNow()}] 🚧🚧🚧🚧🚧 Start sync binary "${binaryName}" 🚧🚧🚧🚧🚧`);
104
+ if (!binaryInstance) {
105
+ task.error = 'unknow binaryName';
106
+ logs.push(`[${isoNow()}] ❌ Synced "${binaryName}" fail, ${task.error}, log: ${logUrl}`);
107
+ logs.push(`[${isoNow()}] ❌❌❌❌❌ "${binaryName}" ❌❌❌❌❌`);
108
+ this.logger.error('[BinarySyncerService.executeTask:fail] taskId: %s, targetName: %s, %s', task.taskId, task.targetName, task.error);
109
+ await this.taskService.finishTask(task, Task_1.TaskState.Fail, logs.join('\n'));
110
+ return;
111
+ }
112
+ await this.taskService.appendTaskLog(task, logs.join('\n'));
113
+ logs = [];
114
+ this.logger.info('[BinarySyncerService.executeTask:start] taskId: %s, targetName: %s, log: %s', task.taskId, task.targetName, logUrl);
115
+ try {
116
+ await this.syncDir(binaryInstance, task, '/');
117
+ logs.push(`[${isoNow()}] 🟢 log: ${logUrl}`);
118
+ logs.push(`[${isoNow()}] 🟢🟢🟢🟢🟢 "${binaryName}" 🟢🟢🟢🟢🟢`);
119
+ await this.taskService.finishTask(task, Task_1.TaskState.Success, logs.join('\n'));
120
+ this.logger.info('[BinarySyncerService.executeTask:success] taskId: %s, targetName: %s, log: %s', task.taskId, task.targetName, logUrl);
121
+ }
122
+ catch (err) {
123
+ task.error = err.message;
124
+ logs.push(`[${isoNow()}] ❌ Synced "${binaryName}" fail, ${task.error}, log: ${logUrl}`);
125
+ logs.push(`[${isoNow()}] ❌❌❌❌❌ "${binaryName}" ❌❌❌❌❌`);
126
+ this.logger.error('[BinarySyncerService.executeTask:fail] taskId: %s, targetName: %s, %s', task.taskId, task.targetName, task.error);
127
+ this.logger.error(err);
128
+ await this.taskService.finishTask(task, Task_1.TaskState.Fail, logs.join('\n'));
129
+ }
130
+ }
131
+ async syncDir(binaryInstance, task, dir, parentIndex = '') {
132
+ const binaryName = task.targetName;
133
+ const result = await binaryInstance.fetch(dir, task.data);
134
+ let hasDownloadError = false;
135
+ let hasItems = false;
136
+ if (result && result.items.length > 0) {
137
+ hasItems = true;
138
+ let logs = [];
139
+ const newItems = await this.diff(binaryName, dir, result.items);
140
+ logs.push(`[${isoNow()}][${dir}] 🚧 Syncing diff: ${result.items.length} => ${newItems.length}, Binary class: ${binaryInstance.constructor.name}`);
141
+ for (const [index, { item, reason }] of newItems.entries()) {
142
+ if (item.isDir) {
143
+ logs.push(`[${isoNow()}][${dir}] 🚧 [${parentIndex}${index}] Start sync dir ${JSON.stringify(item)}, reason: ${reason}`);
144
+ await this.taskService.appendTaskLog(task, logs.join('\n'));
145
+ logs = [];
146
+ const [hasError, hasSubItems] = await this.syncDir(binaryInstance, task, `${dir}${item.name}`, `${parentIndex}${index}.`);
147
+ if (hasError) {
148
+ hasDownloadError = true;
149
+ }
150
+ else {
151
+ // if any file download error, let dir sync again next time
152
+ // if empty dir, don't save it
153
+ if (hasSubItems) {
154
+ await this.saveBinaryItem(item);
155
+ }
156
+ }
157
+ }
158
+ else {
159
+ // download to nfs
160
+ logs.push(`[${isoNow()}][${dir}] 🚧 [${parentIndex}${index}] Downloading ${JSON.stringify(item)}, reason: ${reason}`);
161
+ await this.taskService.appendTaskLog(task, logs.join('\n'));
162
+ logs = [];
163
+ let localFile = '';
164
+ try {
165
+ const { tmpfile, headers, timing } = await (0, FileUtil_1.downloadToTempfile)(this.httpclient, this.config.dataDir, item.sourceUrl, item.ignoreDownloadStatuses);
166
+ logs.push(`[${isoNow()}][${dir}] 🟢 [${parentIndex}${index}] HTTP content-length: ${headers['content-length']}, timing: ${JSON.stringify(timing)}, ${item.sourceUrl} => ${tmpfile}`);
167
+ localFile = tmpfile;
168
+ const binary = await this.saveBinaryItem(item, tmpfile);
169
+ logs.push(`[${isoNow()}][${dir}] 🟢 [${parentIndex}${index}] Synced file success, binaryId: ${binary.binaryId}`);
170
+ await this.taskService.appendTaskLog(task, logs.join('\n'));
171
+ logs = [];
172
+ }
173
+ catch (err) {
174
+ if (err.name === 'DownloadNotFoundError') {
175
+ this.logger.warn('Not found %s, skip it', item.sourceUrl);
176
+ logs.push(`[${isoNow()}][${dir}] 🧪️ [${parentIndex}${index}] Download ${item.sourceUrl} not found, skip it`);
177
+ }
178
+ else {
179
+ this.logger.error('Download binary %s %s', item.sourceUrl, err);
180
+ hasDownloadError = true;
181
+ logs.push(`[${isoNow()}][${dir}] ❌ [${parentIndex}${index}] Download ${item.sourceUrl} error: ${err}`);
182
+ }
183
+ await this.taskService.appendTaskLog(task, logs.join('\n'));
184
+ logs = [];
185
+ }
186
+ finally {
187
+ if (localFile) {
188
+ await (0, promises_1.rm)(localFile, { force: true });
189
+ }
190
+ }
191
+ }
192
+ }
193
+ if (hasDownloadError) {
194
+ logs.push(`[${isoNow()}][${dir}] ❌ Synced dir fail`);
195
+ }
196
+ else {
197
+ logs.push(`[${isoNow()}][${dir}] 🟢 Synced dir success`);
198
+ }
199
+ await this.taskService.appendTaskLog(task, logs.join('\n'));
200
+ }
201
+ return [hasDownloadError, hasItems];
202
+ }
203
+ async diff(binaryName, dir, fetchItems) {
204
+ const existsItems = await this.binaryRepository.listBinaries(binaryName, dir);
205
+ const existsMap = new Map();
206
+ for (const item of existsItems) {
207
+ existsMap.set(item.name, item);
208
+ }
209
+ const diffItems = [];
210
+ for (const item of fetchItems) {
211
+ const existsItem = existsMap.get(item.name);
212
+ if (!existsItem) {
213
+ diffItems.push({
214
+ item: Binary_1.Binary.create({
215
+ category: binaryName,
216
+ parent: dir,
217
+ name: item.name,
218
+ isDir: item.isDir,
219
+ size: 0,
220
+ date: item.date,
221
+ sourceUrl: item.url,
222
+ ignoreDownloadStatuses: item.ignoreDownloadStatuses,
223
+ }),
224
+ reason: 'new item',
225
+ });
226
+ }
227
+ else if (existsItem.date !== item.date) {
228
+ diffItems.push({
229
+ item: existsItem,
230
+ reason: `date diff, local: ${JSON.stringify(existsItem.date)}, remote: ${JSON.stringify(item.date)}`,
231
+ });
232
+ existsItem.sourceUrl = item.url;
233
+ existsItem.ignoreDownloadStatuses = item.ignoreDownloadStatuses;
234
+ existsItem.date = item.date;
235
+ }
236
+ }
237
+ return diffItems;
238
+ }
239
+ async saveBinaryItem(binary, tmpfile) {
240
+ if (tmpfile) {
241
+ const stat = await promises_2.default.stat(tmpfile);
242
+ binary.size = stat.size;
243
+ await this.nfsAdapter.uploadFile(binary.storePath, tmpfile);
244
+ this.logger.info('[BinarySyncerService.saveBinaryItem:uploadFile] binaryId: %s, size: %d, %s => %s', binary.binaryId, stat.size, tmpfile, binary.storePath);
245
+ }
246
+ await this.binaryRepository.saveBinary(binary);
247
+ return binary;
248
+ }
249
+ createBinaryInstance(binaryName) {
250
+ const config = this.config.cnpmcore;
251
+ if (config.sourceRegistryIsCNpm) {
252
+ const binaryConfig = binaries_1.default[binaryName];
253
+ const syncBinaryFromAPISource = config.syncBinaryFromAPISource || `${config.sourceRegistry}/-/binary`;
254
+ return new ApiBinary_1.ApiBinary(this.httpclient, this.logger, binaryConfig, syncBinaryFromAPISource);
255
+ }
256
+ for (const binaryConfig of Object.values(binaries_1.default)) {
257
+ if (binaryConfig.category === binaryName) {
258
+ return new BinaryClasses[binaryConfig.syncer](this.httpclient, this.logger, binaryConfig);
259
+ }
260
+ }
261
+ }
262
+ };
263
+ __decorate([
264
+ (0, tegg_1.Inject)()
265
+ ], BinarySyncerService.prototype, "binaryRepository", void 0);
266
+ __decorate([
267
+ (0, tegg_1.Inject)()
268
+ ], BinarySyncerService.prototype, "taskService", void 0);
269
+ __decorate([
270
+ (0, tegg_1.Inject)()
271
+ ], BinarySyncerService.prototype, "httpclient", void 0);
272
+ __decorate([
273
+ (0, tegg_1.Inject)()
274
+ ], BinarySyncerService.prototype, "nfsAdapter", void 0);
275
+ BinarySyncerService = __decorate([
276
+ (0, tegg_1.ContextProto)({
277
+ accessLevel: tegg_1.AccessLevel.PUBLIC,
278
+ })
279
+ ], BinarySyncerService);
280
+ exports.BinarySyncerService = BinarySyncerService;
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5U3luY2VyU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9jb3JlL3NlcnZpY2UvQmluYXJ5U3luY2VyU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBDQUFpQztBQUNqQyxzQ0FJcUI7QUFJckIsMkRBQTZCO0FBQzdCLHFFQUFpRTtBQUVqRSxpREFBNkQ7QUFDN0Qsb0RBQTJEO0FBRTNELHlDQUFzQztBQUN0Qyw2Q0FBMEM7QUFHMUMscUVBQWtFO0FBQ2xFLGtFQUErRDtBQUMvRCx1RUFBb0U7QUFDcEUsdUVBQW9FO0FBQ3BFLDJFQUF3RTtBQUN4RSw2RUFBMEU7QUFDMUUsaUZBQThFO0FBQzlFLGlGQUE4RTtBQUM5RSwyRUFBd0U7QUFDeEUsK0VBQTRFO0FBQzVFLG1GQUFnRjtBQUNoRiwrRUFBNEU7QUFDNUUsbUZBQWdGO0FBRWhGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLENBQUMsc0JBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSx1QkFBVTtJQUNwQyxDQUFDLHNCQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsdUJBQVU7SUFDcEMsQ0FBQyxzQkFBVyxDQUFDLFlBQVksQ0FBQyxFQUFFLDJCQUFZO0lBQ3hDLENBQUMsc0JBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSw2QkFBYTtJQUMxQyxDQUFDLHNCQUFXLENBQUMsZUFBZSxDQUFDLEVBQUUsaUNBQWU7SUFDOUMsQ0FBQyxzQkFBVyxDQUFDLGVBQWUsQ0FBQyxFQUFFLGlDQUFlO0lBQzlDLENBQUMsc0JBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSwyQkFBWTtJQUN4QyxDQUFDLHNCQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsK0JBQWM7SUFDNUMsQ0FBQyxzQkFBVyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsbUNBQWdCO0lBQ2hELENBQUMsc0JBQVcsQ0FBQyxjQUFjLENBQUMs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
@@ -0,0 +1,11 @@
1
+ import { BugVersion } from '../entity/BugVersion';
2
+ export declare class BugVersionService {
3
+ private readonly packageRepository;
4
+ private readonly distRepository;
5
+ private readonly logger;
6
+ private readonly cacheService;
7
+ cleanBugVersionPackageCaches(bugVersion: BugVersion): Promise<void>;
8
+ fixPackageBugVersions(bugVersion: BugVersion, fullname: string, manifests: Record<string, any>): Promise<void>;
9
+ fixPackageBugVersion(bugVersion: BugVersion, fullname: string, manifest: any): Promise<any>;
10
+ private fixPackageBugVersionWithAllVersions;
11
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BugVersionService = void 0;
13
+ const tegg_1 = require("@eggjs/tegg");
14
+ const p_map_1 = __importDefault(require("p-map"));
15
+ const PackageUtil_1 = require("../../common/PackageUtil");
16
+ let BugVersionService = class BugVersionService {
17
+ async cleanBugVersionPackageCaches(bugVersion) {
18
+ const fullnames = bugVersion.listAllPackagesHasBugs();
19
+ await (0, p_map_1.default)(fullnames, async (fullname) => {
20
+ await this.cacheService.removeCache(fullname);
21
+ }, {
22
+ concurrency: 50,
23
+ stopOnError: false,
24
+ });
25
+ }
26
+ async fixPackageBugVersions(bugVersion, fullname, manifests) {
27
+ // If package all version unpublished(like pinyin-tool), versions is undefined
28
+ if (!manifests)
29
+ return;
30
+ for (const manifest of Object.values(manifests)) {
31
+ this.fixPackageBugVersionWithAllVersions(fullname, bugVersion, manifest, manifests);
32
+ }
33
+ }
34
+ async fixPackageBugVersion(bugVersion, fullname, manifest) {
35
+ const advice = bugVersion.fixVersion(fullname, manifest.version);
36
+ if (!advice) {
37
+ return manifest;
38
+ }
39
+ const [scope, name] = (0, PackageUtil_1.getScopeAndName)(fullname);
40
+ const pkg = await this.packageRepository.findPackage(scope, name);
41
+ if (!pkg) {
42
+ return manifest;
43
+ }
44
+ const packageVersion = await this.packageRepository.findPackageVersion(pkg.packageId, advice.version);
45
+ if (!packageVersion) {
46
+ return manifest;
47
+ }
48
+ const fixedManifest = await this.distRepository.findPackageVersionManifest(packageVersion.packageId, advice.version);
49
+ if (!fixedManifest) {
50
+ return manifest;
51
+ }
52
+ return bugVersion.fixManifest(manifest, fixedManifest);
53
+ }
54
+ fixPackageBugVersionWithAllVersions(fullname, bugVersion, manifest, manifests) {
55
+ const advice = bugVersion.fixVersion(fullname, manifest.version);
56
+ if (!advice) {
57
+ return;
58
+ }
59
+ const fixedManifest = manifests[advice.version];
60
+ if (!fixedManifest) {
61
+ this.logger.warn('[BugVersionService] not found pkg for %s@%s manifest', fullname, advice.version);
62
+ return;
63
+ }
64
+ const newManifest = bugVersion.fixManifest(manifest, fixedManifest);
65
+ manifests[manifest.version] = newManifest;
66
+ }
67
+ };
68
+ __decorate([
69
+ (0, tegg_1.Inject)()
70
+ ], BugVersionService.prototype, "packageRepository", void 0);
71
+ __decorate([
72
+ (0, tegg_1.Inject)()
73
+ ], BugVersionService.prototype, "distRepository", void 0);
74
+ __decorate([
75
+ (0, tegg_1.Inject)()
76
+ ], BugVersionService.prototype, "logger", void 0);
77
+ __decorate([
78
+ (0, tegg_1.Inject)()
79
+ ], BugVersionService.prototype, "cacheService", void 0);
80
+ BugVersionService = __decorate([
81
+ (0, tegg_1.ContextProto)({
82
+ accessLevel: tegg_1.AccessLevel.PUBLIC,
83
+ })
84
+ ], BugVersionService);
85
+ exports.BugVersionService = BugVersionService;
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVnVmVyc2lvblNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hcHAvY29yZS9zZXJ2aWNlL0J1Z1ZlcnNpb25TZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHNDQUFnRTtBQUVoRSxrREFBeUI7QUFJekIsMERBQTJEO0FBTTNELElBQWEsaUJBQWlCLEdBQTlCLE1BQWEsaUJBQWlCO0lBYTVCLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxVQUFzQjtRQUN2RCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN0RCxNQUFNLElBQUEsZUFBSSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsUUFBUSxFQUFDLEVBQUU7WUFDckMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxDQUFDLEVBQUU7WUFDRCxXQUFXLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQUMsVUFBc0IsRUFBRSxRQUFnQixFQUFFLFNBQThCO1FBQ2xHLDhFQUE4RTtRQUM5RSxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFDdkIsS0FBSyxNQUFNLFFBQVEsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNyRjtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsVUFBc0IsRUFBRSxRQUFnQixFQUFFLFFBQWE7UUFDaEYsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUNELE1BQU0sQ0FBRSxLQUFLLEVBQUUsSUFBSSxDQUFFLEdBQUcsSUFBQSw2QkFBZSxFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO1FBQ0QsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUNELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNySCxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO1FBQ0QsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sbUNBQW1DLENBQUMsUUFBZ0IsRUFBRSxVQUFzQixFQUFFLFFBQWEsRUFBRSxTQUE4QjtRQUNqSSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU87U0FDUjtRQUNELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzREFBc0QsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25HLE9BQU87U0FDUjtRQUNELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsV0FBVyxDQUFDO0lBQzVDLENBQUM7Q0FDRixDQUFBO0FBL0RDO0lBREMsSUFBQSxhQUFNLEdBQUU7NERBQzZDO0FBR3REO0lBREMsSUFBQSxhQUFNLEdBQUU7eURBQ3VDO0FBR2hEO0lBREMsSUFBQSxhQUFNLEdBQUU7aURBQzBCO0FBR25DO0lBREMsSUFBQSxhQUFNLEdBQUU7dURBQ21DO0FBWGpDLGlCQUFpQjtJQUg3QixJQUFBLG1CQUFZLEVBQUM7UUFDWixXQUFXLEVBQUUsa0JBQVcsQ0FBQyxNQUFNO0tBQ2hDLENBQUM7R0FDVyxpQkFBaUIsQ0FpRTdCO0FBakVZLDhDQUFpQiJ9
@@ -0,0 +1,33 @@
1
+ /// <reference types="node" />
2
+ import { AbstractService } from '../../common/AbstractService';
3
+ declare type TotalData = {
4
+ packageCount: number;
5
+ packageVersionCount: number;
6
+ lastPackage: string;
7
+ lastPackageVersion: string;
8
+ download: {
9
+ today: number;
10
+ yesterday: number;
11
+ samedayLastweek: number;
12
+ thisweek: number;
13
+ thismonth: number;
14
+ thisyear: number;
15
+ lastweek: number;
16
+ lastmonth: number;
17
+ lastyear: number;
18
+ };
19
+ changesStream: object;
20
+ lastChangeId: number | bigint;
21
+ cacheTime: string;
22
+ };
23
+ export declare class CacheService extends AbstractService {
24
+ private cacheAdapter;
25
+ getPackageEtag(fullname: string, isFullManifests: boolean): Promise<string | null>;
26
+ getPackageManifests(fullname: string, isFullManifests: boolean): Promise<Buffer>;
27
+ savePackageEtagAndManifests(fullname: string, isFullManifests: boolean, etag: string, manifests: Buffer): Promise<void>;
28
+ getTotalData(): Promise<TotalData>;
29
+ saveTotalData(totalData: TotalData): Promise<void>;
30
+ removeCache(fullname: string): Promise<void>;
31
+ private cacheKey;
32
+ }
33
+ export {};
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CacheService = void 0;
10
+ const tegg_1 = require("@eggjs/tegg");
11
+ const AbstractService_1 = require("../../common/AbstractService");
12
+ const TOTAL_DATA_KEY = '__TOTAL_DATA__';
13
+ let CacheService = class CacheService extends AbstractService_1.AbstractService {
14
+ async getPackageEtag(fullname, isFullManifests) {
15
+ const key = this.cacheKey(fullname, isFullManifests, 'etag');
16
+ return await this.cacheAdapter.get(key);
17
+ }
18
+ async getPackageManifests(fullname, isFullManifests) {
19
+ const key = this.cacheKey(fullname, isFullManifests, 'manifests');
20
+ return await this.cacheAdapter.getBytes(key);
21
+ }
22
+ async savePackageEtagAndManifests(fullname, isFullManifests, etag, manifests) {
23
+ await Promise.all([
24
+ await this.cacheAdapter.set(this.cacheKey(fullname, isFullManifests, 'etag'), etag),
25
+ await this.cacheAdapter.setBytes(this.cacheKey(fullname, isFullManifests, 'manifests'), manifests),
26
+ ]);
27
+ }
28
+ async getTotalData() {
29
+ const value = await this.cacheAdapter.get(TOTAL_DATA_KEY);
30
+ const totalData = value ? JSON.parse(value) : {
31
+ packageCount: 0,
32
+ packageVersionCount: 0,
33
+ lastPackage: '',
34
+ lastPackageVersion: '',
35
+ download: {
36
+ today: 0,
37
+ thisweek: 0,
38
+ thismonth: 0,
39
+ thisyear: 0,
40
+ lastday: 0,
41
+ lastweek: 0,
42
+ lastmonth: 0,
43
+ lastyear: 0,
44
+ },
45
+ changesStream: {},
46
+ lastChangeId: 0,
47
+ cacheTime: '',
48
+ };
49
+ return totalData;
50
+ }
51
+ async saveTotalData(totalData) {
52
+ return await this.cacheAdapter.set(TOTAL_DATA_KEY, JSON.stringify(totalData));
53
+ }
54
+ async removeCache(fullname) {
55
+ await Promise.all([
56
+ await this.cacheAdapter.delete(this.cacheKey(fullname, true, 'etag')),
57
+ await this.cacheAdapter.delete(this.cacheKey(fullname, true, 'manifests')),
58
+ await this.cacheAdapter.delete(this.cacheKey(fullname, false, 'etag')),
59
+ await this.cacheAdapter.delete(this.cacheKey(fullname, false, 'manifests')),
60
+ ]);
61
+ }
62
+ cacheKey(fullname, isFullManifests, attribute) {
63
+ return `${fullname}|${isFullManifests ? 'full' : 'abbr'}:${attribute}`;
64
+ }
65
+ };
66
+ __decorate([
67
+ (0, tegg_1.Inject)()
68
+ ], CacheService.prototype, "cacheAdapter", void 0);
69
+ CacheService = __decorate([
70
+ (0, tegg_1.ContextProto)({
71
+ accessLevel: tegg_1.AccessLevel.PUBLIC,
72
+ })
73
+ ], CacheService);
74
+ exports.CacheService = CacheService;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGVTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL2NvcmUvc2VydmljZS9DYWNoZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsc0NBSXFCO0FBRXJCLGtFQUErRDtBQXdCL0QsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7QUFLeEMsSUFBYSxZQUFZLEdBQXpCLE1BQWEsWUFBYSxTQUFRLGlDQUFlO0lBSXhDLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBZ0IsRUFBRSxlQUF3QjtRQUNwRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0QsT0FBTyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxLQUFLLENBQUMsbUJBQW1CLENBQUMsUUFBZ0IsRUFBRSxlQUF3QjtRQUN6RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbEUsT0FBTyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTSxLQUFLLENBQUMsMkJBQTJCLENBQUMsUUFBZ0IsRUFBRSxlQUF3QixFQUFFLElBQVksRUFBRSxTQUFpQjtRQUNsSCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDaEIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDO1lBQ25GLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVB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
@@ -0,0 +1,11 @@
1
+ import { AbstractService } from '../../common/AbstractService';
2
+ import { Task } from '../entity/Task';
3
+ export declare class ChangesStreamService extends AbstractService {
4
+ private readonly taskRepository;
5
+ private readonly httpclient;
6
+ private readonly packageSyncerService;
7
+ private readonly taskService;
8
+ findExecuteTask(): Promise<Task | null>;
9
+ executeTask(task: Task): Promise<void>;
10
+ private handleChanges;
11
+ }