cnpmcore 0.0.2 → 1.2.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 +19 -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 +76 -21
  242. package/dist/app/common/adapter/NFSClientAdapter.js +0 -43
  243. package/dist/app/port/controller/PackageController.js +0 -273
@@ -0,0 +1,134 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
9
+ return function (target, key) { decorator(target, key, paramIndex); }
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DownloadController = void 0;
16
+ const tegg_1 = require("@eggjs/tegg");
17
+ const egg_errors_1 = require("egg-errors");
18
+ const AbstractController_1 = require("./AbstractController");
19
+ const PackageUtil_1 = require("../../common/PackageUtil");
20
+ const dayjs_1 = __importDefault(require("../../common/dayjs"));
21
+ const DATE_FORMAT = 'YYYY-MM-DD';
22
+ let DownloadController = class DownloadController extends AbstractController_1.AbstractController {
23
+ async showPackageDownloads(fullname, range) {
24
+ const [startDate, endDate] = this.checkAndGetRange(range);
25
+ const [scope, name] = (0, PackageUtil_1.getScopeAndName)(fullname);
26
+ const pkg = await this.packageRepository.findPackage(scope, name);
27
+ if (!pkg)
28
+ throw new egg_errors_1.NotFoundError(`${fullname} not found`);
29
+ const entities = await this.packageVersionDownloadRepository.query(pkg.packageId, startDate.toDate(), endDate.toDate());
30
+ const days = {};
31
+ const versions = {};
32
+ for (const entity of entities) {
33
+ const yearMonth = String(entity.yearMonth);
34
+ const prefix = yearMonth.substring(0, 4) + '-' + yearMonth.substring(4, 6);
35
+ for (let i = 1; i <= 31; i++) {
36
+ const day = String(i).padStart(2, '0');
37
+ const field = `d${day}`;
38
+ const counter = entity[field];
39
+ if (!counter)
40
+ continue;
41
+ const date = `${prefix}-${day}`;
42
+ days[date] = (days[date] || 0) + counter;
43
+ if (entity.version === '*') {
44
+ // ignore sync data to versions
45
+ continue;
46
+ }
47
+ if (!versions[entity.version])
48
+ versions[entity.version] = [];
49
+ versions[entity.version].push({ day: date, downloads: counter });
50
+ }
51
+ }
52
+ const downloads = [];
53
+ for (const day of Object.keys(days).sort()) {
54
+ downloads.push({ day, downloads: days[day] });
55
+ }
56
+ return {
57
+ downloads,
58
+ versions,
59
+ };
60
+ }
61
+ async showTotalDownloads(scope, range) {
62
+ const [startDate, endDate] = this.checkAndGetRange(range);
63
+ const entities = await this.packageVersionDownloadRepository.query(scope, startDate.toDate(), endDate.toDate());
64
+ const days = {};
65
+ for (const entity of entities) {
66
+ const yearMonth = String(entity.yearMonth);
67
+ const prefix = yearMonth.substring(0, 4) + '-' + yearMonth.substring(4, 6);
68
+ for (let i = 1; i <= 31; i++) {
69
+ const day = String(i).padStart(2, '0');
70
+ const field = `d${day}`;
71
+ const counter = entity[field];
72
+ if (!counter)
73
+ continue;
74
+ const date = `${prefix}-${day}`;
75
+ days[date] = (days[date] || 0) + counter;
76
+ }
77
+ }
78
+ const downloads = [];
79
+ for (const day of Object.keys(days).sort()) {
80
+ downloads.push({ day, downloads: days[day] });
81
+ }
82
+ return {
83
+ downloads,
84
+ };
85
+ }
86
+ checkAndGetRange(range) {
87
+ const matchs = /^(\d{4}\-\d{2}\-\d{2}):(\d{4}\-\d{2}\-\d{2})$/.exec(range);
88
+ if (!matchs) {
89
+ throw new egg_errors_1.UnprocessableEntityError(`range(${range}) format invalid, must be "${DATE_FORMAT}:${DATE_FORMAT}" style`);
90
+ }
91
+ const start = matchs[1];
92
+ const end = matchs[2];
93
+ let startDate = (0, dayjs_1.default)(start, DATE_FORMAT, true);
94
+ let endDate = (0, dayjs_1.default)(end, DATE_FORMAT, true);
95
+ if (!startDate.isValid() || !endDate.isValid()) {
96
+ throw new egg_errors_1.UnprocessableEntityError(`range(${range}) format invalid, must be "${DATE_FORMAT}:${DATE_FORMAT}" style`);
97
+ }
98
+ if (endDate.isBefore(startDate)) {
99
+ const tmp = startDate;
100
+ startDate = endDate;
101
+ endDate = tmp;
102
+ }
103
+ // max range for one year
104
+ const maxDate = startDate.add(1, 'year');
105
+ if (endDate.isAfter(maxDate)) {
106
+ throw new egg_errors_1.UnprocessableEntityError(`range(${range}) beyond the processable range, max up to "${maxDate.format(DATE_FORMAT)}"`);
107
+ }
108
+ return [startDate, endDate];
109
+ }
110
+ };
111
+ __decorate([
112
+ (0, tegg_1.Inject)()
113
+ ], DownloadController.prototype, "packageVersionDownloadRepository", void 0);
114
+ __decorate([
115
+ (0, tegg_1.HTTPMethod)({
116
+ path: `/downloads/range/:range/:fullname(${PackageUtil_1.FULLNAME_REG_STRING})`,
117
+ method: tegg_1.HTTPMethodEnum.GET,
118
+ }),
119
+ __param(0, (0, tegg_1.HTTPParam)()),
120
+ __param(1, (0, tegg_1.HTTPParam)())
121
+ ], DownloadController.prototype, "showPackageDownloads", null);
122
+ __decorate([
123
+ (0, tegg_1.HTTPMethod)({
124
+ path: '/downloads/:scope/:range',
125
+ method: tegg_1.HTTPMethodEnum.GET,
126
+ }),
127
+ __param(0, (0, tegg_1.HTTPParam)()),
128
+ __param(1, (0, tegg_1.HTTPParam)())
129
+ ], DownloadController.prototype, "showTotalDownloads", null);
130
+ DownloadController = __decorate([
131
+ (0, tegg_1.HTTPController)()
132
+ ], DownloadController);
133
+ exports.DownloadController = DownloadController;
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG93bmxvYWRDb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL3BvcnQvY29udHJvbGxlci9Eb3dubG9hZENvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0NBTXFCO0FBQ3JCLDJDQUFxRTtBQUNyRSw2REFBMEQ7QUFDMUQsMERBQWdGO0FBQ2hGLCtEQUF1QztBQUd2QyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFHakMsSUFBYSxrQkFBa0IsR0FBL0IsTUFBYSxrQkFBbUIsU0FBUSx1Q0FBa0I7SUFReEQsS0FBSyxDQUFDLG9CQUFvQixDQUFjLFFBQWdCLEVBQWUsS0FBYTtRQUNsRixNQUFNLENBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxNQUFNLENBQUUsS0FBSyxFQUFFLElBQUksQ0FBRSxHQUFHLElBQUEsNkJBQWUsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxHQUFHO1lBQUUsTUFBTSxJQUFJLDBCQUFhLENBQUMsR0FBRyxRQUFRLFlBQVksQ0FBQyxDQUFDO1FBQzNELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN4SCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLEtBQUssTUFBTSxNQUFNLElBQUksUUFBUSxFQUFFO1lBQzdCLE1BQU0s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
@@ -0,0 +1,37 @@
1
+ import { EggContext } from '@eggjs/tegg';
2
+ import { AbstractController } from './AbstractController';
3
+ export declare class HomeController extends AbstractController {
4
+ private readonly cacheService;
5
+ showTotal(): Promise<{
6
+ last_package: string;
7
+ last_package_version: string;
8
+ doc_count: number;
9
+ doc_version_count: number;
10
+ download: {
11
+ today: number;
12
+ yesterday: number;
13
+ samedayLastweek: number;
14
+ thisweek: number;
15
+ thismonth: number;
16
+ thisyear: number;
17
+ lastweek: number;
18
+ lastmonth: number;
19
+ lastyear: number;
20
+ };
21
+ update_seq: number | bigint;
22
+ sync_model: any;
23
+ sync_changes_steam: object;
24
+ sync_binary: any;
25
+ instance_start_time: Date;
26
+ node_version: string;
27
+ app_version: any;
28
+ engine: any;
29
+ source_registry: any;
30
+ changes_stream_registry: any;
31
+ cache_time: string;
32
+ }>;
33
+ ping(ctx: EggContext): Promise<{
34
+ pong: boolean;
35
+ use: number;
36
+ }>;
37
+ }
@@ -0,0 +1,72 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
9
+ return function (target, key) { decorator(target, key, paramIndex); }
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.HomeController = void 0;
13
+ const perf_hooks_1 = require("perf_hooks");
14
+ const tegg_1 = require("@eggjs/tegg");
15
+ const AbstractController_1 = require("./AbstractController");
16
+ const startTime = new Date();
17
+ let HomeController = class HomeController extends AbstractController_1.AbstractController {
18
+ async showTotal() {
19
+ const totalData = await this.cacheService.getTotalData();
20
+ const data = {
21
+ last_package: totalData.lastPackage,
22
+ last_package_version: totalData.lastPackageVersion,
23
+ doc_count: totalData.packageCount,
24
+ doc_version_count: totalData.packageVersionCount,
25
+ download: totalData.download,
26
+ update_seq: totalData.lastChangeId,
27
+ sync_model: this.config.cnpmcore.syncMode,
28
+ sync_changes_steam: totalData.changesStream,
29
+ sync_binary: this.config.cnpmcore.enableSyncBinary,
30
+ instance_start_time: startTime,
31
+ node_version: process.version,
32
+ app_version: this.config.pkg.version,
33
+ engine: this.config.orm.client,
34
+ source_registry: this.config.cnpmcore.sourceRegistry,
35
+ changes_stream_registry: this.config.cnpmcore.changesStreamRegistry,
36
+ cache_time: totalData.cacheTime,
37
+ };
38
+ return data;
39
+ }
40
+ // https://github.com/npm/cli/blob/latest/lib/utils/ping.js#L5
41
+ // https://registry.npmjs.org/-/ping?write=true
42
+ async ping(ctx) {
43
+ return {
44
+ pong: true,
45
+ use: perf_hooks_1.performance.now() - ctx.performanceStarttime,
46
+ };
47
+ }
48
+ };
49
+ __decorate([
50
+ (0, tegg_1.Inject)()
51
+ ], HomeController.prototype, "cacheService", void 0);
52
+ __decorate([
53
+ (0, tegg_1.HTTPMethod)({
54
+ // GET /
55
+ // https://github.com/cnpm/cnpmjs.org/blob/master/docs/registry-api.md#schema
56
+ path: '/',
57
+ method: tegg_1.HTTPMethodEnum.GET,
58
+ })
59
+ ], HomeController.prototype, "showTotal", null);
60
+ __decorate([
61
+ (0, tegg_1.HTTPMethod)({
62
+ // GET /-/ping
63
+ path: '/-/ping',
64
+ method: tegg_1.HTTPMethodEnum.GET,
65
+ }),
66
+ __param(0, (0, tegg_1.Context)())
67
+ ], HomeController.prototype, "ping", null);
68
+ HomeController = __decorate([
69
+ (0, tegg_1.HTTPController)()
70
+ ], HomeController);
71
+ exports.HomeController = HomeController;
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSG9tZUNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hcHAvcG9ydC9jb250cm9sbGVyL0hvbWVDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QztBQUN6QyxzQ0FPcUI7QUFDckIsNkRBQTBEO0FBRzFELE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7QUFHN0IsSUFBYSxjQUFjLEdBQTNCLE1BQWEsY0FBZSxTQUFRLHVDQUFrQjtJQVVwRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6RCxNQUFNLElBQUksR0FBRztZQUNYLFlBQVksRUFBRSxTQUFTLENBQUMsV0FBVztZQUNuQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsa0JBQWtCO1lBQ2xELFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWTtZQUNqQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsbUJBQW1CO1lBQ2hELFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUTtZQUM1QixVQUFVLEVBQUUsU0FBUyxDQUFDLFlBQVk7WUFDbEMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFDekMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLGFBQWE7WUFDM0MsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtZQUNsRCxtQkFBbUIsRUFBRSxTQUFTO1lBQzlCLFlBQVksRUFBRSxPQUFPLENBQUMsT0FBTztZQUM3QixXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTztZQUNwQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTTtZQUM5QixlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYztZQUNwRCx1QkFBdUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUI7WUFDbkUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxTQUFTO1NBQ2hDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsK0NBQStDO0lBTS9DLEtBQUssQ0FBQyxJQUFJLENBQVksR0FBZTtRQUNuQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUk7WUFDVixHQUFHLEVBQUUsd0JBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsb0JBQXFCO1NBQ25ELENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQTtBQTVDQztJQURDLElBQUEsYUFBTSxHQUFFO29EQUNtQztBQVE1QztJQU5DLElBQUEsaUJBQVUsRUFBQztRQUNWLFFBQVE7UUFDUiw2RUFBNkU7UUFDN0UsSUFBSSxFQUFFLEdBQUc7UUFDVCxNQUFNLEVBQUUscUJBQWMsQ0FBQyxHQUFHO0tBQzNCLENBQUM7K0NBc0JEO0FBU0Q7SUFMQyxJQUFBLGlCQUFVLEVBQUM7UUFDVixjQUFjO1FBQ2QsSUFBSSxFQUFFLFNBQVM7UUFDZixNQUFNLEVBQUUscUJBQWMsQ0FBQyxHQUFHO0tBQzNCLENBQUM7SUFDVSxXQUFBLElBQUEsY0FBTyxHQUFFLENBQUE7MENBS3BCO0FBN0NVLGNBQWM7SUFEMUIsSUFBQSxxQkFBYyxHQUFFO0dBQ0osY0FBYyxDQThDMUI7QUE5Q1ksd0NBQWMifQ==
@@ -0,0 +1,24 @@
1
+ import { EggContext } from '@eggjs/tegg';
2
+ import { AbstractController } from './AbstractController';
3
+ import { BlockPackageType } from '../typebox';
4
+ export declare class PackageBlockController extends AbstractController {
5
+ private packageManagerService;
6
+ private packageVersionBlockRepository;
7
+ blockPackage(ctx: EggContext, fullname: string, data: BlockPackageType): Promise<{
8
+ ok: boolean;
9
+ id: string;
10
+ package_id: string;
11
+ }>;
12
+ unblockPackage(ctx: EggContext, fullname: string): Promise<{
13
+ ok: boolean;
14
+ }>;
15
+ listPackageBlocks(fullname: string): Promise<{
16
+ data: {
17
+ id: string;
18
+ version: string;
19
+ reason: string;
20
+ created: Date;
21
+ modified: Date;
22
+ }[];
23
+ }>;
24
+ }
@@ -0,0 +1,108 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
9
+ return function (target, key) { decorator(target, key, paramIndex); }
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PackageBlockController = void 0;
13
+ const tegg_1 = require("@eggjs/tegg");
14
+ const egg_errors_1 = require("egg-errors");
15
+ const AbstractController_1 = require("./AbstractController");
16
+ const PackageUtil_1 = require("../../common/PackageUtil");
17
+ const typebox_1 = require("../typebox");
18
+ let PackageBlockController = class PackageBlockController extends AbstractController_1.AbstractController {
19
+ async blockPackage(ctx, fullname, data) {
20
+ const isAdmin = await this.userRoleManager.isAdmin(ctx);
21
+ if (!isAdmin) {
22
+ throw new egg_errors_1.ForbiddenError('Not allow to block package');
23
+ }
24
+ const params = { fullname, reason: data.reason };
25
+ ctx.tValidate(typebox_1.BlockPackageRule, params);
26
+ const packageEntity = await this.getPackageEntityByFullname(params.fullname);
27
+ if (packageEntity.isPrivate) {
28
+ throw new egg_errors_1.ForbiddenError(`Can\'t block private package "${params.fullname}"`);
29
+ }
30
+ const authorized = await this.userRoleManager.getAuthorizedUserAndToken(ctx);
31
+ const block = await this.packageManagerService.blockPackage(packageEntity, `${params.reason} (operator: ${authorized === null || authorized === void 0 ? void 0 : authorized.user.name}/${authorized === null || authorized === void 0 ? void 0 : authorized.user.userId})`);
32
+ ctx.logger.info('[PackageBlockController.blockPackage:success] fullname: %s, packageId: %s, packageVersionBlockId: %s', fullname, packageEntity.packageId, block.packageVersionBlockId);
33
+ ctx.status = 201;
34
+ return {
35
+ ok: true,
36
+ id: block.packageVersionBlockId,
37
+ package_id: packageEntity.packageId,
38
+ };
39
+ }
40
+ async unblockPackage(ctx, fullname) {
41
+ const isAdmin = await this.userRoleManager.isAdmin(ctx);
42
+ if (!isAdmin) {
43
+ throw new egg_errors_1.ForbiddenError('Not allow to unblock package');
44
+ }
45
+ const packageEntity = await this.getPackageEntityByFullname(fullname);
46
+ if (packageEntity.isPrivate) {
47
+ throw new egg_errors_1.ForbiddenError(`Can\'t unblock private package "${fullname}"`);
48
+ }
49
+ await this.packageManagerService.unblockPackage(packageEntity);
50
+ ctx.logger.info('[PackageBlockController.unblockPackage:success] fullname: %s, packageId: %s', fullname, packageEntity.packageId);
51
+ return {
52
+ ok: true,
53
+ };
54
+ }
55
+ async listPackageBlocks(fullname) {
56
+ const packageEntity = await this.getPackageEntityByFullname(fullname);
57
+ const blocks = await this.packageVersionBlockRepository.listPackageVersionBlocks(packageEntity.packageId);
58
+ return {
59
+ data: blocks.map(block => {
60
+ return {
61
+ id: block.packageVersionBlockId,
62
+ version: block.version,
63
+ reason: block.reason,
64
+ created: block.createdAt,
65
+ modified: block.updatedAt,
66
+ };
67
+ }),
68
+ };
69
+ }
70
+ };
71
+ __decorate([
72
+ (0, tegg_1.Inject)()
73
+ ], PackageBlockController.prototype, "packageManagerService", void 0);
74
+ __decorate([
75
+ (0, tegg_1.Inject)()
76
+ ], PackageBlockController.prototype, "packageVersionBlockRepository", void 0);
77
+ __decorate([
78
+ (0, tegg_1.HTTPMethod)({
79
+ // PUT /-/package/:fullname/blocks
80
+ path: `/-/package/:fullname(${PackageUtil_1.FULLNAME_REG_STRING})/blocks`,
81
+ method: tegg_1.HTTPMethodEnum.PUT,
82
+ }),
83
+ __param(0, (0, tegg_1.Context)()),
84
+ __param(1, (0, tegg_1.HTTPParam)()),
85
+ __param(2, (0, tegg_1.HTTPBody)())
86
+ ], PackageBlockController.prototype, "blockPackage", null);
87
+ __decorate([
88
+ (0, tegg_1.HTTPMethod)({
89
+ // DELETE /-/package/:fullname/blocks
90
+ path: `/-/package/:fullname(${PackageUtil_1.FULLNAME_REG_STRING})/blocks`,
91
+ method: tegg_1.HTTPMethodEnum.DELETE,
92
+ }),
93
+ __param(0, (0, tegg_1.Context)()),
94
+ __param(1, (0, tegg_1.HTTPParam)())
95
+ ], PackageBlockController.prototype, "unblockPackage", null);
96
+ __decorate([
97
+ (0, tegg_1.HTTPMethod)({
98
+ // GET /-/package/:fullname/blocks
99
+ path: `/-/package/:fullname(${PackageUtil_1.FULLNAME_REG_STRING})/blocks`,
100
+ method: tegg_1.HTTPMethodEnum.GET,
101
+ }),
102
+ __param(0, (0, tegg_1.HTTPParam)())
103
+ ], PackageBlockController.prototype, "listPackageBlocks", null);
104
+ PackageBlockController = __decorate([
105
+ (0, tegg_1.HTTPController)()
106
+ ], PackageBlockController);
107
+ exports.PackageBlockController = PackageBlockController;
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZUJsb2NrQ29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9wb3J0L2NvbnRyb2xsZXIvUGFja2FnZUJsb2NrQ29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxzQ0FTcUI7QUFDckIsMkNBQTRDO0FBQzVDLDZEQUEwRDtBQUMxRCwwREFBK0Q7QUFHL0Qsd0NBQWdFO0FBR2hFLElBQWEsc0JBQXNCLEdBQW5DLE1BQWEsc0JBQXVCLFNBQVEsdUNBQWtCO0lBVzVELEtBQUssQ0FBQyxZQUFZLENBQVksR0FBZSxFQUFlLFFBQWdCLEVBQWMsSUFBc0I7UUFDOUcsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLDJCQUFjLENBQUMsNEJBQTRCLENBQUMsQ0FBQztTQUN4RDtRQUNELE1BQU0sTUFBTSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakQsR0FBRyxDQUFDLFNBQVMsQ0FBQywwQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4QyxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0UsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFO1lBQzNCLE1BQU0sSUFBSSwyQkFBYyxDQUFDLGlDQUFpQyxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztTQUMvRTtRQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3RSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZ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
@@ -0,0 +1,35 @@
1
+ /// <reference types="node" />
2
+ import { EggContext } from '@eggjs/tegg';
3
+ import { AbstractController } from './AbstractController';
4
+ import { TaskState } from '../../common/enum/Task';
5
+ import { SyncPackageTaskType } from '../typebox';
6
+ export declare class PackageSyncController extends AbstractController {
7
+ private packageSyncerService;
8
+ private _executeTaskAsync;
9
+ createSyncTask(ctx: EggContext, fullname: string, data: SyncPackageTaskType): Promise<{
10
+ ok: boolean;
11
+ id: string;
12
+ type: import("../../common/enum/Task").TaskType;
13
+ state: TaskState;
14
+ }>;
15
+ showSyncTask(fullname: string, taskId: string): Promise<{
16
+ ok: boolean;
17
+ id: string;
18
+ type: import("../../common/enum/Task").TaskType;
19
+ state: TaskState;
20
+ logUrl: string | undefined;
21
+ error: string | undefined;
22
+ }>;
23
+ showSyncTaskLog(ctx: EggContext, fullname: string, taskId: string): Promise<import("stream").Readable | undefined>;
24
+ deprecatedCreateSyncTask(ctx: EggContext, fullname: string, nodeps: string): Promise<{
25
+ ok: boolean;
26
+ logId: string;
27
+ }>;
28
+ deprecatedShowSyncTask(fullname: string, taskId: string): Promise<{
29
+ ok: boolean;
30
+ syncDone: boolean;
31
+ log: string;
32
+ logUrl: string | undefined;
33
+ error: string | undefined;
34
+ }>;
35
+ }
@@ -0,0 +1,205 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
9
+ return function (target, key) { decorator(target, key, paramIndex); }
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PackageSyncController = void 0;
13
+ const tegg_1 = require("@eggjs/tegg");
14
+ const egg_errors_1 = require("egg-errors");
15
+ const AbstractController_1 = require("./AbstractController");
16
+ const PackageUtil_1 = require("../../common/PackageUtil");
17
+ const Task_1 = require("../../common/enum/Task");
18
+ const typebox_1 = require("../typebox");
19
+ let PackageSyncController = class PackageSyncController extends AbstractController_1.AbstractController {
20
+ async _executeTaskAsync(task) {
21
+ const startTime = Date.now();
22
+ this.logger.info('[PackageSyncController: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
+ let result = 'success';
24
+ try {
25
+ await this.packageSyncerService.executeTask(task);
26
+ }
27
+ catch (err) {
28
+ result = 'error';
29
+ this.logger.error(err);
30
+ }
31
+ finally {
32
+ const use = Date.now() - startTime;
33
+ this.logger.info('[PackageSyncController:executeTask:%s] taskId: %s, targetName: %s, use %sms', result, task.taskId, task.targetName, use);
34
+ }
35
+ }
36
+ async createSyncTask(ctx, fullname, data) {
37
+ if (!this.enableSyncAll) {
38
+ throw new egg_errors_1.ForbiddenError('Not allow to sync package');
39
+ }
40
+ const tips = data.tips || `Sync cause by "${ctx.href}", parent traceId: ${ctx.tracer.traceId}`;
41
+ const params = {
42
+ fullname,
43
+ tips,
44
+ skipDependencies: !!data.skipDependencies,
45
+ syncDownloadData: !!data.syncDownloadData,
46
+ force: !!data.force,
47
+ };
48
+ ctx.tValidate(typebox_1.SyncPackageTaskRule, params);
49
+ const [scope, name] = (0, PackageUtil_1.getScopeAndName)(params.fullname);
50
+ const packageEntity = await this.packageRepository.findPackage(scope, name);
51
+ if (packageEntity === null || packageEntity === void 0 ? void 0 : packageEntity.isPrivate) {
52
+ throw new egg_errors_1.ForbiddenError(`Can\'t sync private package "${params.fullname}"`);
53
+ }
54
+ if (params.syncDownloadData && !this.packageSyncerService.allowSyncDownloadData) {
55
+ throw new egg_errors_1.ForbiddenError('Not allow to sync package download data');
56
+ }
57
+ const authorized = await this.userRoleManager.getAuthorizedUserAndToken(ctx);
58
+ const task = await this.packageSyncerService.createTask(params.fullname, {
59
+ authorIp: ctx.ip,
60
+ authorId: authorized === null || authorized === void 0 ? void 0 : authorized.user.userId,
61
+ tips: params.tips,
62
+ skipDependencies: params.skipDependencies,
63
+ syncDownloadData: params.syncDownloadData,
64
+ });
65
+ ctx.logger.info('[PackageSyncController.createSyncTask:success] taskId: %s, fullname: %s', task.taskId, fullname);
66
+ if (data.force) {
67
+ const isAdmin = await this.userRoleManager.isAdmin(ctx);
68
+ if (isAdmin) {
69
+ // execute task in background
70
+ this._executeTaskAsync(task);
71
+ ctx.logger.info('[PackageSyncController.createSyncTask:execute-immediately] taskId: %s', task.taskId);
72
+ }
73
+ }
74
+ ctx.status = 201;
75
+ return {
76
+ ok: true,
77
+ id: task.taskId,
78
+ type: task.type,
79
+ state: task.state,
80
+ };
81
+ }
82
+ // TODO: no-cache for CDN if task state is processing or timeout
83
+ async showSyncTask(fullname, taskId) {
84
+ const task = await this.packageSyncerService.findTask(taskId);
85
+ if (!task)
86
+ throw new egg_errors_1.NotFoundError(`Package "${fullname}" sync task "${taskId}" not found`);
87
+ let logUrl;
88
+ if (task.state !== Task_1.TaskState.Waiting) {
89
+ logUrl = `${this.config.cnpmcore.registry}/-/package/${fullname}/syncs/${taskId}/log`;
90
+ }
91
+ const error = task.error || undefined;
92
+ return {
93
+ ok: true,
94
+ id: task.taskId,
95
+ type: task.type,
96
+ state: task.state,
97
+ logUrl,
98
+ error,
99
+ };
100
+ }
101
+ // TODO: no-cache for CDN if task state is processing or timeout
102
+ async showSyncTaskLog(ctx, fullname, taskId) {
103
+ const task = await this.packageSyncerService.findTask(taskId);
104
+ if (!task)
105
+ throw new egg_errors_1.NotFoundError(`Package "${fullname}" sync task "${taskId}" not found`);
106
+ if (task.state === Task_1.TaskState.Waiting)
107
+ throw new egg_errors_1.NotFoundError(`Package "${fullname}" sync task "${taskId}" log not found`);
108
+ const logUrlOrStream = await this.packageSyncerService.findTaskLog(task);
109
+ if (!logUrlOrStream)
110
+ throw new egg_errors_1.NotFoundError(`Package "${fullname}" sync task "${taskId}" log not found`);
111
+ if (typeof logUrlOrStream === 'string') {
112
+ ctx.redirect(logUrlOrStream);
113
+ return;
114
+ }
115
+ ctx.type = 'log';
116
+ return logUrlOrStream;
117
+ }
118
+ // deprecate create sync task api for cnpmjs.org
119
+ // https://github.com/cnpm/cnpmjs.org/blob/master/controllers/sync.js
120
+ async deprecatedCreateSyncTask(ctx, fullname, nodeps) {
121
+ const options = {
122
+ fullname,
123
+ tips: `Sync cause by "${ctx.href}", parent traceId: ${ctx.tracer.traceId}`,
124
+ skipDependencies: nodeps === 'true',
125
+ syncDownloadData: false,
126
+ force: false,
127
+ };
128
+ const task = await this.createSyncTask(ctx, fullname, options);
129
+ return {
130
+ ok: true,
131
+ logId: task.id,
132
+ };
133
+ }
134
+ // https://github.com/cnpm/cnpmjs.org/blob/master/controllers/sync.js#L55
135
+ async deprecatedShowSyncTask(fullname, taskId) {
136
+ const task = await this.showSyncTask(fullname, taskId);
137
+ const syncDone = task.state !== Task_1.TaskState.Waiting && task.state !== Task_1.TaskState.Processing;
138
+ const stateMessage = syncDone ? '[done]' : '[processing]';
139
+ // https://github.com/cnpm/cnpm/blob/cadd3cd54c22b1a157810a43ab10febdb2410ca6/bin/cnpm-sync#L82
140
+ const log = `[${new Date().toISOString()}] ${stateMessage} Sync ${fullname} data: ${JSON.stringify(task)}`;
141
+ return {
142
+ ok: true,
143
+ syncDone,
144
+ log,
145
+ logUrl: task.logUrl,
146
+ error: task.error,
147
+ };
148
+ }
149
+ };
150
+ __decorate([
151
+ (0, tegg_1.Inject)()
152
+ ], PackageSyncController.prototype, "packageSyncerService", void 0);
153
+ __decorate([
154
+ (0, tegg_1.HTTPMethod)({
155
+ // PUT /-/package/:fullname/syncs
156
+ path: `/-/package/:fullname(${PackageUtil_1.FULLNAME_REG_STRING})/syncs`,
157
+ method: tegg_1.HTTPMethodEnum.PUT,
158
+ }),
159
+ __param(0, (0, tegg_1.Context)()),
160
+ __param(1, (0, tegg_1.HTTPParam)()),
161
+ __param(2, (0, tegg_1.HTTPBody)())
162
+ ], PackageSyncController.prototype, "createSyncTask", null);
163
+ __decorate([
164
+ (0, tegg_1.HTTPMethod)({
165
+ // GET /-/package/:fullname/syncs/:syncId
166
+ path: `/-/package/:fullname(${PackageUtil_1.FULLNAME_REG_STRING})/syncs/:taskId`,
167
+ method: tegg_1.HTTPMethodEnum.GET,
168
+ }),
169
+ __param(0, (0, tegg_1.HTTPParam)()),
170
+ __param(1, (0, tegg_1.HTTPParam)())
171
+ ], PackageSyncController.prototype, "showSyncTask", null);
172
+ __decorate([
173
+ (0, tegg_1.HTTPMethod)({
174
+ // GET /-/package/:fullname/syncs/:syncId/log
175
+ path: `/-/package/:fullname(${PackageUtil_1.FULLNAME_REG_STRING})/syncs/:taskId/log`,
176
+ method: tegg_1.HTTPMethodEnum.GET,
177
+ }),
178
+ __param(0, (0, tegg_1.Context)()),
179
+ __param(1, (0, tegg_1.HTTPParam)()),
180
+ __param(2, (0, tegg_1.HTTPParam)())
181
+ ], PackageSyncController.prototype, "showSyncTaskLog", null);
182
+ __decorate([
183
+ (0, tegg_1.HTTPMethod)({
184
+ // PUT /:fullname/sync
185
+ path: `/:fullname(${PackageUtil_1.FULLNAME_REG_STRING})/sync`,
186
+ method: tegg_1.HTTPMethodEnum.PUT,
187
+ }),
188
+ __param(0, (0, tegg_1.Context)()),
189
+ __param(1, (0, tegg_1.HTTPParam)()),
190
+ __param(2, (0, tegg_1.HTTPQuery)())
191
+ ], PackageSyncController.prototype, "deprecatedCreateSyncTask", null);
192
+ __decorate([
193
+ (0, tegg_1.HTTPMethod)({
194
+ // GET /:fullname/sync/log/:taskId
195
+ path: `/:fullname(${PackageUtil_1.FULLNAME_REG_STRING})/sync/log/:taskId`,
196
+ method: tegg_1.HTTPMethodEnum.GET,
197
+ }),
198
+ __param(0, (0, tegg_1.HTTPParam)()),
199
+ __param(1, (0, tegg_1.HTTPParam)())
200
+ ], PackageSyncController.prototype, "deprecatedShowSyncTask", null);
201
+ PackageSyncController = __decorate([
202
+ (0, tegg_1.HTTPController)()
203
+ ], PackageSyncController);
204
+ exports.PackageSyncController = PackageSyncController;
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVN5bmNDb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL3BvcnQvY29udHJvbGxlci9QYWNrYWdlU3luY0NvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsc0NBVXFCO0FBQ3JCLDJDQUEyRDtBQUMzRCw2REFBMEQ7QUFDMUQsMERBQWdGO0FBR2hGLGlEQUFtRDtBQUNuRCx3Q0FBc0U7QUFHdEUsSUFBYSxxQkFBcUIsR0FBbEMsTUFBYSxxQkFBc0IsU0FBUSx1Q0FBa0I7SUFJbkQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQVU7UUFDeEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJIQUEySCxFQUMxSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQ3RFLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEMsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkQ7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE1BQU0sR0FBRyxPQUFPLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDeEI7Z0JBQVM7WUFDUixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDZFQUE2RSxFQUM1RixNQUFNLEVBQUUs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