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,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AlwaysAuth = void 0;
4
+ const UserRoleManager_1 = require("../UserRoleManager");
5
+ async function AlwaysAuth(ctx, next) {
6
+ if (ctx.app.config.cnpmcore.alwaysAuth) {
7
+ // ignore login request: `PUT /-/user/org.couchdb.user::username`
8
+ const isLoginRequest = ctx.method === 'PUT' && ctx.path.startsWith('/-/user/org.couchdb.user:');
9
+ if (!isLoginRequest) {
10
+ const userRoleManager = await ctx.getEggObject(UserRoleManager_1.UserRoleManager);
11
+ await userRoleManager.requiredAuthorizedUser(ctx, 'read');
12
+ }
13
+ }
14
+ await next();
15
+ }
16
+ exports.AlwaysAuth = AlwaysAuth;
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWx3YXlzQXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9wb3J0L21pZGRsZXdhcmUvQWx3YXlzQXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx3REFBcUQ7QUFFOUMsS0FBSyxVQUFVLFVBQVUsQ0FBQyxHQUFlLEVBQUUsSUFBVTtJQUMxRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUU7UUFDdEMsaUVBQWlFO1FBQ2pFLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEtBQUssS0FBSyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixNQUFNLGVBQWUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxZQUFZLENBQUMsaUNBQWUsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sZUFBZSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUMzRDtLQUNGO0lBQ0QsTUFBTSxJQUFJLEVBQUUsQ0FBQztBQUNmLENBQUM7QUFWRCxnQ0FVQyJ9
@@ -0,0 +1,2 @@
1
+ import { EggContext, Next } from '@eggjs/tegg';
2
+ export declare function ErrorHandler(ctx: EggContext, next: Next): Promise<void>;
@@ -1,22 +1,44 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.errorHandler = void 0;
3
+ exports.ErrorHandler = void 0;
4
4
  const DEFAULT_SERVER_ERROR_STATUS = 500;
5
- async function errorHandler(ctx, next) {
5
+ async function ErrorHandler(ctx, next) {
6
+ var _a;
6
7
  try {
7
8
  await next();
8
9
  }
9
10
  catch (err) {
11
+ if (err.name === 'PackageNotFoundError' && err.redirectToSourceRegistry) {
12
+ ctx.redirect(`${err.redirectToSourceRegistry}${ctx.url}`);
13
+ return;
14
+ }
10
15
  // http status, default is DEFAULT_SERVER_ERROR_STATUS
11
16
  ctx.status = err.status || DEFAULT_SERVER_ERROR_STATUS;
12
17
  if (ctx.status >= DEFAULT_SERVER_ERROR_STATUS) {
13
18
  ctx.logger.error(err);
14
19
  }
20
+ let message = err.message;
21
+ // convert ctx.tValidate error
22
+ if (err.name === 'UnprocessableEntityError' && err.currentSchema && ((_a = err.errors[0]) === null || _a === void 0 ? void 0 : _a.message)) {
23
+ // {
24
+ // instancePath: '/password',
25
+ // schemaPath: '#/properties/password/minLength',
26
+ // keyword: 'minLength',
27
+ // message: 'must NOT have fewer than 8 characters'
28
+ // }
29
+ const item = err.errors[0];
30
+ if (item.instancePath) {
31
+ message = `${item.instancePath.substring(1)}: ${item.message}`;
32
+ }
33
+ else {
34
+ message = item.message;
35
+ }
36
+ }
15
37
  // error body format https://github.com/npm/npm-registry-fetch/blob/main/errors.js#L45
16
38
  ctx.body = {
17
- error: err.code ? `[${err.code}] ${err.message}` : err.message,
39
+ error: err.code ? `[${String(err.code).toUpperCase()}] ${message}` : message,
18
40
  };
19
41
  }
20
42
  }
21
- exports.errorHandler = errorHandler;
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL3BvcnQvbWlkZGxld2FyZS9FcnJvckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsTUFBTSwyQkFBMkIsR0FBRyxHQUFHLENBQUM7QUFFakMsS0FBSyxVQUFVLFlBQVksQ0FBQyxHQUFlLEVBQUUsSUFBVTtJQUM1RCxJQUFJO1FBQ0YsTUFBTSxJQUFJLEVBQUUsQ0FBQztLQUNkO0lBQUMsT0FBTyxHQUFRLEVBQUU7UUFDakIsc0RBQXNEO1FBQ3RELEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSwyQkFBMkIsQ0FBQztRQUN2RCxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksMkJBQTJCLEVBQUU7WUFDN0MsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkI7UUFDRCxzRkFBc0Y7UUFDdEYsR0FBRyxDQUFDLElBQUksR0FBRztZQUNULEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTztTQUMvRCxDQUFDO0tBQ0g7QUFDSCxDQUFDO0FBZEQsb0NBY0MifQ==
43
+ exports.ErrorHandler = ErrorHandler;
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL3BvcnQvbWlkZGxld2FyZS9FcnJvckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsTUFBTSwyQkFBMkIsR0FBRyxHQUFHLENBQUM7QUFFakMsS0FBSyxVQUFVLFlBQVksQ0FBQyxHQUFlLEVBQUUsSUFBVTs7SUFDNUQsSUFBSTtRQUNGLE1BQU0sSUFBSSxFQUFFLENBQUM7S0FDZDtJQUFDLE9BQU8sR0FBUSxFQUFFO1FBQ2pCLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxzQkFBc0IsSUFBSSxHQUFHLENBQUMsd0JBQXdCLEVBQUU7WUFDdkUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyx3QkFBd0IsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMxRCxPQUFPO1NBQ1I7UUFFRCxzREFBc0Q7UUFDdEQsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLDJCQUEyQixDQUFDO1FBQ3ZELElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSwyQkFBMkIsRUFBRTtZQUM3QyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QjtRQUNELElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDMUIsOEJBQThCO1FBQzlCLElBQUksR0FBRyxDQUFDLElBQUksS0FBSywwQkFBMEIsSUFBSSxHQUFHLENBQUMsYUFBYSxLQUFJLE1BQUEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsMENBQUUsT0FBTyxDQUFBLEVBQUU7WUFDMUYsSUFBSTtZQUNKLCtCQUErQjtZQUMvQixtREFBbUQ7WUFDbkQsMEJBQTBCO1lBQzFCLHFEQUFxRDtZQUNyRCxJQUFJO1lBQ0osTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3JCLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNoRTtpQkFBTTtnQkFDTCxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUN4QjtTQUNGO1FBQ0Qsc0ZBQXNGO1FBQ3RGLEdBQUcsQ0FBQyxJQUFJLEdBQUc7WUFDVCxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPO1NBQzdFLENBQUM7S0FDSDtBQUNILENBQUM7QUFuQ0Qsb0NBbUNDIn0=
@@ -0,0 +1,2 @@
1
+ import { EggContext, Next } from '@eggjs/tegg';
2
+ export declare function Tracing(ctx: EggContext, next: Next): Promise<void>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Tracing = void 0;
4
+ async function Tracing(ctx, next) {
5
+ // headers: {
6
+ // 'user-agent': 'npm/8.1.2 node/v16.13.1 darwin arm64 workspaces/false',
7
+ // 'npm-command': 'adduser',
8
+ // 'content-type': 'application/json',
9
+ // accept: '*/*',
10
+ // 'content-length': '124',
11
+ // 'accept-encoding': 'gzip,deflate',
12
+ // host: 'localhost:7001',
13
+ // connection: 'keep-alive'
14
+ // }
15
+ ctx.set('request-id', ctx.tracer.traceId);
16
+ if (ctx.method !== 'HEAD') {
17
+ ctx.logger.info('[Tracing] auth: %s, npm-command: %s, referer: %s, user-agent: %j', ctx.get('authorization') ? 1 : 0, ctx.get('npm-command') || '-', ctx.get('referer') || '-', ctx.get('user-agent'));
18
+ }
19
+ await next();
20
+ }
21
+ exports.Tracing = Tracing;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhY2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9wb3J0L21pZGRsZXdhcmUvVHJhY2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFTyxLQUFLLFVBQVUsT0FBTyxDQUFDLEdBQWUsRUFBRSxJQUFVO0lBQ3ZELGFBQWE7SUFDYiwyRUFBMkU7SUFDM0UsOEJBQThCO0lBQzlCLHdDQUF3QztJQUN4QyxtQkFBbUI7SUFDbkIsNkJBQTZCO0lBQzdCLHVDQUF1QztJQUN2Qyw0QkFBNEI7SUFDNUIsNkJBQTZCO0lBQzdCLElBQUk7SUFDSixHQUFHLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUU7UUFDekIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQ2hGLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNoQyxHQUFHLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsRUFDN0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQ3pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztLQUMxQjtJQUNELE1BQU0sSUFBSSxFQUFFLENBQUM7QUFDZixDQUFDO0FBcEJELDBCQW9CQyJ9
@@ -0,0 +1,2 @@
1
+ export declare abstract class MiddlewareController {
2
+ }
@@ -0,0 +1,22 @@
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.MiddlewareController = void 0;
10
+ const tegg_1 = require("@eggjs/tegg");
11
+ const AlwaysAuth_1 = require("./AlwaysAuth");
12
+ const ErrorHandler_1 = require("./ErrorHandler");
13
+ const Tracing_1 = require("./Tracing");
14
+ let MiddlewareController = class MiddlewareController {
15
+ };
16
+ MiddlewareController = __decorate([
17
+ (0, tegg_1.Middleware)(AlwaysAuth_1.AlwaysAuth),
18
+ (0, tegg_1.Middleware)(Tracing_1.Tracing),
19
+ (0, tegg_1.Middleware)(ErrorHandler_1.ErrorHandler)
20
+ ], MiddlewareController);
21
+ exports.MiddlewareController = MiddlewareController;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hcHAvcG9ydC9taWRkbGV3YXJlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHNDQUF5QztBQUN6Qyw2Q0FBMEM7QUFDMUMsaURBQThDO0FBQzlDLHVDQUFvQztBQUtwQyxJQUFzQixvQkFBb0IsR0FBMUMsTUFBc0Isb0JBQW9CO0NBQUcsQ0FBQTtBQUF2QixvQkFBb0I7SUFIekMsSUFBQSxpQkFBVSxFQUFDLHVCQUFVLENBQUM7SUFDdEIsSUFBQSxpQkFBVSxFQUFDLGlCQUFPLENBQUM7SUFDbkIsSUFBQSxpQkFBVSxFQUFDLDJCQUFZLENBQUM7R0FDSCxvQkFBb0IsQ0FBRztBQUF2QixvREFBb0IifQ==
@@ -0,0 +1,29 @@
1
+ import { Static } from '@sinclair/typebox';
2
+ export declare const Name: import("@sinclair/typebox").TString;
3
+ export declare const Tag: import("@sinclair/typebox").TString;
4
+ export declare const Version: import("@sinclair/typebox").TString;
5
+ export declare const Description: import("@sinclair/typebox").TString;
6
+ export declare const TagRule: import("@sinclair/typebox").TObject<{
7
+ tag: import("@sinclair/typebox").TString;
8
+ }>;
9
+ export declare const VersionRule: import("@sinclair/typebox").TObject<{
10
+ version: import("@sinclair/typebox").TString;
11
+ }>;
12
+ export declare const TagWithVersionRule: import("@sinclair/typebox").TObject<{
13
+ tag: import("@sinclair/typebox").TString;
14
+ version: import("@sinclair/typebox").TString;
15
+ }>;
16
+ export declare const SyncPackageTaskRule: import("@sinclair/typebox").TObject<{
17
+ fullname: import("@sinclair/typebox").TString;
18
+ tips: import("@sinclair/typebox").TString;
19
+ skipDependencies: import("@sinclair/typebox").TBoolean;
20
+ syncDownloadData: import("@sinclair/typebox").TBoolean;
21
+ force: import("@sinclair/typebox").TBoolean;
22
+ }>;
23
+ export declare type SyncPackageTaskType = Static<typeof SyncPackageTaskRule>;
24
+ export declare const BlockPackageRule: import("@sinclair/typebox").TObject<{
25
+ fullname: import("@sinclair/typebox").TString;
26
+ reason: import("@sinclair/typebox").TString;
27
+ }>;
28
+ export declare type BlockPackageType = Static<typeof BlockPackageRule>;
29
+ export declare function patchAjv(ajv: any): void;
@@ -0,0 +1,71 @@
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
+ exports.patchAjv = exports.BlockPackageRule = exports.SyncPackageTaskRule = exports.TagWithVersionRule = exports.VersionRule = exports.TagRule = exports.Description = exports.Version = exports.Tag = exports.Name = void 0;
7
+ const typebox_1 = require("@sinclair/typebox");
8
+ const semver_1 = __importDefault(require("semver"));
9
+ exports.Name = typebox_1.Type.String({
10
+ transform: ['trim'],
11
+ });
12
+ exports.Tag = typebox_1.Type.String({
13
+ format: 'semver-tag',
14
+ transform: ['trim'],
15
+ minLength: 1,
16
+ maxLength: 214,
17
+ });
18
+ // min: 0.0.0
19
+ exports.Version = typebox_1.Type.String({
20
+ format: 'semver-version',
21
+ transform: ['trim'],
22
+ minLength: 5,
23
+ maxLength: 256,
24
+ });
25
+ exports.Description = typebox_1.Type.String({ maxLength: 10240, transform: ['trim'] });
26
+ exports.TagRule = typebox_1.Type.Object({
27
+ tag: exports.Tag,
28
+ });
29
+ exports.VersionRule = typebox_1.Type.Object({
30
+ version: exports.Version,
31
+ });
32
+ exports.TagWithVersionRule = typebox_1.Type.Object({
33
+ tag: exports.Tag,
34
+ version: exports.Version,
35
+ });
36
+ exports.SyncPackageTaskRule = typebox_1.Type.Object({
37
+ fullname: exports.Name,
38
+ tips: typebox_1.Type.String({
39
+ transform: ['trim'],
40
+ maxLength: 1024,
41
+ }),
42
+ skipDependencies: typebox_1.Type.Boolean(),
43
+ syncDownloadData: typebox_1.Type.Boolean(),
44
+ // force sync immediately, only allow by admin
45
+ force: typebox_1.Type.Boolean(),
46
+ });
47
+ exports.BlockPackageRule = typebox_1.Type.Object({
48
+ fullname: exports.Name,
49
+ reason: typebox_1.Type.String({
50
+ transform: ['trim'],
51
+ maxLength: 10240,
52
+ }),
53
+ });
54
+ // https://github.com/xiekw2010/egg-typebox-validate#%E5%A6%82%E4%BD%95%E5%86%99%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A0%A1%E9%AA%8C%E8%A7%84%E5%88%99
55
+ // add custom validate to ajv
56
+ function patchAjv(ajv) {
57
+ ajv.addFormat('semver-version', {
58
+ type: 'string',
59
+ validate: (version) => {
60
+ return !!semver_1.default.valid(version);
61
+ },
62
+ });
63
+ ajv.addFormat('semver-tag', {
64
+ type: 'string',
65
+ validate: (tag) => {
66
+ return !semver_1.default.validRange(tag);
67
+ },
68
+ });
69
+ }
70
+ exports.patchAjv = patchAjv;
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FwcC9wb3J0L3R5cGVib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsK0NBQWlEO0FBQ2pELG9EQUE0QjtBQUVmLFFBQUEsSUFBSSxHQUFHLGNBQUksQ0FBQyxNQUFNLENBQUM7SUFDOUIsU0FBUyxFQUFFLENBQUUsTUFBTSxDQUFFO0NBQ3RCLENBQUMsQ0FBQztBQUVVLFFBQUEsR0FBRyxHQUFHLGNBQUksQ0FBQyxNQUFNLENBQUM7SUFDN0IsTUFBTSxFQUFFLFlBQVk7SUFDcEIsU0FBUyxFQUFFLENBQUUsTUFBTSxDQUFFO0lBQ3JCLFNBQVMsRUFBRSxDQUFDO0lBQ1osU0FBUyxFQUFFLEdBQUc7Q0FDZixDQUFDLENBQUM7QUFDSCxhQUFhO0FBQ0EsUUFBQSxPQUFPLEdBQUcsY0FBSSxDQUFDLE1BQU0sQ0FBQztJQUNqQyxNQUFNLEVBQUUsZ0JBQWdCO0lBQ3hCLFNBQVMsRUFBRSxDQUFFLE1BQU0sQ0FBRTtJQUNyQixTQUFTLEVBQUUsQ0FBQztJQUNaLFNBQVMsRUFBRSxHQUFHO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsUUFBQSxXQUFXLEdBQUcsY0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUUsTUFBTSxDQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRXZFLFFBQUEsT0FBTyxHQUFHLGNBQUksQ0FBQyxNQUFNLENBQUM7SUFDakMsR0FBRyxFQUFFLFdBQUc7Q0FDVCxDQUFDLENBQUM7QUFDVSxRQUFBLFdBQVcsR0FBRyxjQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JDLE9BQU8sRUFBRSxlQUFPO0NBQ2pCLENBQUMsQ0FBQztBQUNVLFFBQUEsa0JBQWtCLEdBQUcsY0FBSSxDQUFDLE1BQU0sQ0FBQztJQUM1QyxHQUFHLEVBQUUsV0FBRztJQUNSLE9BQU8sRUFBRSxlQUFPO0NBQ2pCLENBQUMsQ0FBQztBQUVVLFFBQUEsbUJBQW1CLEdBQUcsY0FBSSxDQUFDLE1BQU0sQ0FBQztJQUM3QyxRQUFRLEVBQUUsWUFBSTtJQUNkLElBQUksRUFBRSxjQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2hCLFNBQVMsRUFBRSxDQUFFLE1BQU0sQ0FBRTtRQUNyQixTQUFTLEVBQUUsSUFBSTtLQUNoQixDQUFDO0lBQ0YsZ0JBQWdCLEVBQUUsY0FBSSxDQUFDLE9BQU8sRUFBRTtJQUNoQyxnQkFBZ0IsRUFBRSxjQUFJLENBQUMsT0FBTyxFQUFFO0lBQ2hDLDhDQUE4QztJQUM5QyxLQUFLLEVBQUUsY0FBSSxDQUFDLE9BQU8sRUFBRTtDQUN0QixDQUFDLENBQUM7QUFHVSxRQUFBLGdCQUFnQixHQUFHLGNBQUksQ0FBQyxNQUFNLENBQUM7SUFDMUMsUUFBUSxFQUFFLFlBQUk7SUFDZCxNQUFNLEVBQUUsY0FBSSxDQUFDLE1BQU0sQ0FBQztRQUNsQixTQUFTLEVBQUUsQ0FBRSxNQUFNLENBQUU7UUFDckIsU0FBUyxFQUFFLEtBQUs7S0FDakIsQ0FBQztDQUNILENBQUMsQ0FBQztBQUdILCtJQUErSTtBQUMvSSw2QkFBNkI7QUFDN0IsU0FBZ0IsUUFBUSxDQUFDLEdBQVE7SUFDL0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRTtRQUM5QixJQUFJLEVBQUUsUUFBUTtRQUNkLFFBQVEsRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFO1lBQzVCLE9BQU8sQ0FBQyxDQUFDLGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7S0FDRixDQUFDLENBQUM7SUFDSCxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRTtRQUMxQixJQUFJLEVBQUUsUUFBUTtRQUNkLFFBQVEsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxnQkFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWJELDRCQWFDIn0=
@@ -0,0 +1,4 @@
1
+ import { EggLogger } from 'egg';
2
+ export declare abstract class AbstractRepository {
3
+ protected logger: EggLogger;
4
+ }
@@ -0,0 +1,17 @@
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.AbstractRepository = void 0;
10
+ const tegg_1 = require("@eggjs/tegg");
11
+ class AbstractRepository {
12
+ }
13
+ __decorate([
14
+ (0, tegg_1.Inject)()
15
+ ], AbstractRepository.prototype, "logger", void 0);
16
+ exports.AbstractRepository = AbstractRepository;
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RSZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXBwL3JlcG9zaXRvcnkvQWJzdHJhY3RSZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHNDQUVxQjtBQUtyQixNQUFzQixrQkFBa0I7Q0FHdkM7QUFEQztJQURDLElBQUEsYUFBTSxHQUFFO2tEQUNtQjtBQUY5QixnREFHQyJ9
@@ -0,0 +1,7 @@
1
+ import { Binary as BinaryEntity } from '../core/entity/Binary';
2
+ import { AbstractRepository } from './AbstractRepository';
3
+ export declare class BinaryRepository extends AbstractRepository {
4
+ saveBinary(binary: BinaryEntity): Promise<void>;
5
+ findBinary(category: string, parent: string, name: string): Promise<BinaryEntity | null>;
6
+ listBinaries(category: string, parent: string): Promise<BinaryEntity[]>;
7
+ }
@@ -0,0 +1,45 @@
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.BinaryRepository = void 0;
10
+ const tegg_1 = require("@eggjs/tegg");
11
+ const ModelConvertor_1 = require("./util/ModelConvertor");
12
+ const Binary_1 = require("./model/Binary");
13
+ const Binary_2 = require("../core/entity/Binary");
14
+ const AbstractRepository_1 = require("./AbstractRepository");
15
+ let BinaryRepository = class BinaryRepository extends AbstractRepository_1.AbstractRepository {
16
+ async saveBinary(binary) {
17
+ if (binary.id) {
18
+ const model = await Binary_1.Binary.findOne({ id: binary.id });
19
+ if (!model)
20
+ return;
21
+ await ModelConvertor_1.ModelConvertor.saveEntityToModel(binary, model);
22
+ }
23
+ else {
24
+ const model = await ModelConvertor_1.ModelConvertor.convertEntityToModel(binary, Binary_1.Binary);
25
+ this.logger.info('[BinaryRepository:saveBinary:new] id: %s, binaryId: %s', model.id, model.binaryId);
26
+ }
27
+ }
28
+ async findBinary(category, parent, name) {
29
+ const model = await Binary_1.Binary.findOne({ category, parent, name });
30
+ if (model)
31
+ return ModelConvertor_1.ModelConvertor.convertModelToEntity(model, Binary_2.Binary);
32
+ return null;
33
+ }
34
+ async listBinaries(category, parent) {
35
+ const models = await Binary_1.Binary.find({ category, parent });
36
+ return models.map(model => ModelConvertor_1.ModelConvertor.convertModelToEntity(model, Binary_2.Binary));
37
+ }
38
+ };
39
+ BinaryRepository = __decorate([
40
+ (0, tegg_1.ContextProto)({
41
+ accessLevel: tegg_1.AccessLevel.PUBLIC,
42
+ })
43
+ ], BinaryRepository);
44
+ exports.BinaryRepository = BinaryRepository;
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5UmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FwcC9yZXBvc2l0b3J5L0JpbmFyeVJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsc0NBQXdEO0FBQ3hELDBEQUF1RDtBQUN2RCwyQ0FBdUQ7QUFDdkQsa0RBQStEO0FBQy9ELDZEQUEwRDtBQUsxRCxJQUFhLGdCQUFnQixHQUE3QixNQUFhLGdCQUFpQixTQUFRLHVDQUFrQjtJQUN0RCxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQW9CO1FBQ25DLElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUNiLE1BQU0sS0FBSyxHQUFHLE1BQU0sZUFBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPO1lBQ25CLE1BQU0sK0JBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdkQ7YUFBTTtZQUNMLE1BQU0sS0FBSyxHQUFHLE1BQU0sK0JBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsZUFBVyxDQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0RBQXdELEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEc7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFnQixFQUFFLE1BQWMsRUFBRSxJQUFZO1FBQzdELE1BQU0sS0FBSyxHQUFHLE1BQU0sZUFBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRSxJQUFJLEtBQUs7WUFBRSxPQUFPLCtCQUFjLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLGVBQVksQ0FBQyxDQUFDO1FBQzNFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxNQUFjO1FBQ2pELE1BQU0sTUFBTSxHQUFHLE1BQU0sZUFBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzVELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLCtCQUFjLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLGVBQVksQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztDQUNGLENBQUE7QUF0QlksZ0JBQWdCO0lBSDVCLElBQUEsbUJBQVksRUFBQztRQUNaLFdBQVcsRUFBRSxrQkFBVyxDQUFDLE1BQU07S0FDaEMsQ0FBQztHQUNXLGdCQUFnQixDQXNCNUI7QUF0QlksNENBQWdCIn0=
@@ -0,0 +1,8 @@
1
+ import { Change as ChangeModel } from './model/Change';
2
+ import { Change as ChangeEntity } from '../core/entity/Change';
3
+ import { AbstractRepository } from './AbstractRepository';
4
+ export declare class ChangeRepository extends AbstractRepository {
5
+ addChange(change: ChangeEntity): Promise<void>;
6
+ query(since: number, limit: number): Promise<import("leoric").Collection<ChangeModel>>;
7
+ getLastChange(): Promise<ChangeModel | null>;
8
+ }
@@ -0,0 +1,31 @@
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.ChangeRepository = void 0;
10
+ const tegg_1 = require("@eggjs/tegg");
11
+ const ModelConvertor_1 = require("./util/ModelConvertor");
12
+ const Change_1 = require("./model/Change");
13
+ const AbstractRepository_1 = require("./AbstractRepository");
14
+ let ChangeRepository = class ChangeRepository extends AbstractRepository_1.AbstractRepository {
15
+ async addChange(change) {
16
+ await ModelConvertor_1.ModelConvertor.convertEntityToModel(change, Change_1.Change);
17
+ }
18
+ async query(since, limit) {
19
+ return await Change_1.Change.find({ id: { $gt: since } }).order('id', 'desc').limit(limit);
20
+ }
21
+ async getLastChange() {
22
+ return await Change_1.Change.findOne().order('id', 'desc').limit(1);
23
+ }
24
+ };
25
+ ChangeRepository = __decorate([
26
+ (0, tegg_1.ContextProto)({
27
+ accessLevel: tegg_1.AccessLevel.PUBLIC,
28
+ })
29
+ ], ChangeRepository);
30
+ exports.ChangeRepository = ChangeRepository;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhbmdlUmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FwcC9yZXBvc2l0b3J5L0NoYW5nZVJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsc0NBQXdEO0FBQ3hELDBEQUF1RDtBQUN2RCwyQ0FBdUQ7QUFFdkQsNkRBQTBEO0FBSzFELElBQWEsZ0JBQWdCLEdBQTdCLE1BQWEsZ0JBQWlCLFNBQVEsdUNBQWtCO0lBQ3RELEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBb0I7UUFDbEMsTUFBTSwrQkFBYyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxlQUFXLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFhLEVBQUUsS0FBYTtRQUN0QyxPQUFPLE1BQU0sZUFBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhO1FBQ2pCLE9BQU8sTUFBTSxlQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNGLENBQUE7QUFaWSxnQkFBZ0I7SUFINUIsSUFBQSxtQkFBWSxFQUFDO1FBQ1osV0FBVyxFQUFFLGtCQUFXLENBQUMsTUFBTTtLQUNoQyxDQUFDO0dBQ1csZ0JBQWdCLENBWTVCO0FBWlksNENBQWdCIn0=
@@ -0,0 +1,15 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { Dist } from '../core/entity/Dist';
4
+ export declare class DistRepository {
5
+ private packageRepository;
6
+ private readonly nfsAdapter;
7
+ findPackageVersionManifest(packageId: string, version: string): Promise<any>;
8
+ findPackageAbbreviatedManifest(packageId: string, version: string): Promise<any>;
9
+ readDistBytesToJSON(dist: Dist): Promise<any>;
10
+ readDistBytesToString(dist: Dist): Promise<string>;
11
+ readDistBytes(dist: Dist): Promise<Uint8Array | undefined>;
12
+ saveDist(dist: Dist, buf: Buffer | Uint8Array | string): Promise<void>;
13
+ destroyDist(dist: Dist): Promise<void>;
14
+ downloadDist(dist: Dist): Promise<string | import("stream").Readable | undefined>;
15
+ }
@@ -0,0 +1,69 @@
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.DistRepository = void 0;
10
+ const tegg_1 = require("@eggjs/tegg");
11
+ let DistRepository = class DistRepository {
12
+ async findPackageVersionManifest(packageId, version) {
13
+ const packageVersion = await this.packageRepository.findPackageVersion(packageId, version);
14
+ if (packageVersion) {
15
+ const [packageVersionJson, readme] = await Promise.all([
16
+ this.readDistBytesToJSON(packageVersion.manifestDist),
17
+ this.readDistBytesToString(packageVersion.readmeDist),
18
+ ]);
19
+ packageVersionJson.readme = readme;
20
+ return packageVersionJson;
21
+ }
22
+ }
23
+ async findPackageAbbreviatedManifest(packageId, version) {
24
+ const packageVersion = await this.packageRepository.findPackageVersion(packageId, version);
25
+ if (packageVersion) {
26
+ return await this.readDistBytesToJSON(packageVersion.abbreviatedDist);
27
+ }
28
+ }
29
+ async readDistBytesToJSON(dist) {
30
+ const str = await this.readDistBytesToString(dist);
31
+ if (str) {
32
+ return JSON.parse(str);
33
+ }
34
+ }
35
+ async readDistBytesToString(dist) {
36
+ const bytes = await this.readDistBytes(dist);
37
+ if (!bytes)
38
+ return '';
39
+ return Buffer.from(bytes).toString('utf8');
40
+ }
41
+ async readDistBytes(dist) {
42
+ return await this.nfsAdapter.getBytes(dist.path);
43
+ }
44
+ async saveDist(dist, buf) {
45
+ if (typeof buf === 'string') {
46
+ return await this.nfsAdapter.uploadFile(dist.path, buf);
47
+ }
48
+ return await this.nfsAdapter.uploadBytes(dist.path, buf);
49
+ }
50
+ async destroyDist(dist) {
51
+ return await this.nfsAdapter.remove(dist.path);
52
+ }
53
+ async downloadDist(dist) {
54
+ return await this.nfsAdapter.getDownloadUrlOrStream(dist.path);
55
+ }
56
+ };
57
+ __decorate([
58
+ (0, tegg_1.Inject)()
59
+ ], DistRepository.prototype, "packageRepository", void 0);
60
+ __decorate([
61
+ (0, tegg_1.Inject)()
62
+ ], DistRepository.prototype, "nfsAdapter", void 0);
63
+ DistRepository = __decorate([
64
+ (0, tegg_1.ContextProto)({
65
+ accessLevel: tegg_1.AccessLevel.PUBLIC,
66
+ })
67
+ ], DistRepository);
68
+ exports.DistRepository = DistRepository;
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzdFJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcHAvcmVwb3NpdG9yeS9EaXN0UmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxzQ0FBZ0U7QUFRaEUsSUFBYSxjQUFjLEdBQTNCLE1BQWEsY0FBYztJQU96QixLQUFLLENBQUMsMEJBQTBCLENBQUMsU0FBaUIsRUFBRSxPQUFlO1FBQ2pFLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMzRixJQUFJLGNBQWMsRUFBRTtZQUNsQixNQUFNLENBQUUsa0JBQWtCLEVBQUUsTUFBTSxDQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQztnQkFDckQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7YUFDdEQsQ0FBQyxDQUFDO1lBQ0gsa0JBQWtCLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUNuQyxPQUFPLGtCQUFrQixDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxTQUFpQixFQUFFLE9BQWU7UUFDckUsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNGLElBQUksY0FBYyxFQUFFO1lBQ2xCLE9BQU8sTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3ZFO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFVO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksR0FBRyxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFVO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBVTtRQUM1QixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLElBQVUsRUFBRSxHQUFpQztRQUMxRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUMzQixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN6RDtRQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQVU7UUFDMUIsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFVO1FBQzNCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBQ0YsQ0FBQTtBQXZEQztJQURDLElBQUEsYUFBTSxHQUFFO3lEQUNvQztBQUc3QztJQURDLElBQUEsYUFBTSxHQUFFO2tEQUMrQjtBQUw3QixjQUFjO0lBSDFCLElBQUEsbUJBQVksRUFBQztRQUNaLFdBQVcsRUFBRSxrQkFBVyxDQUFDLE1BQU07S0FDaEMsQ0FBQztHQUNXLGNBQWMsQ0F5RDFCO0FBekRZLHdDQUFjIn0=
@@ -0,0 +1,39 @@
1
+ import { Package as PackageEntity } from '../core/entity/Package';
2
+ import { PackageVersion as PackageVersionEntity } from '../core/entity/PackageVersion';
3
+ import { PackageVersionManifest as PackageVersionManifestEntity } from '../core/entity/PackageVersionManifest';
4
+ import { PackageVersionManifest as PackageVersionManifestModel } from './model/PackageVersionManifest';
5
+ import { PackageTag as PackageTagEntity } from '../core/entity/PackageTag';
6
+ import { User as UserEntity } from '../core/entity/User';
7
+ import { AbstractRepository } from './AbstractRepository';
8
+ export declare class PackageRepository extends AbstractRepository {
9
+ findPackage(scope: string, name: string): Promise<PackageEntity | null>;
10
+ findPackageId(scope: string, name: string): Promise<string | null>;
11
+ savePackage(pkgEntity: PackageEntity): Promise<void>;
12
+ savePackageDist(pkgEntity: PackageEntity, isFullManifests: boolean): Promise<void>;
13
+ removePackageDist(pkgEntity: PackageEntity, isFullManifests: boolean): Promise<void>;
14
+ savePackageMaintainer(packageId: string, userId: string): Promise<undefined | true>;
15
+ listPackageMaintainers(packageId: string): Promise<UserEntity[]>;
16
+ replacePackageMaintainers(packageId: string, userIds: string[]): Promise<void>;
17
+ removePackageMaintainer(packageId: string, userId: string): Promise<boolean>;
18
+ listPackagesByUserId(userId: string): Promise<PackageEntity[]>;
19
+ createPackageVersion(pkgVersionEntity: PackageVersionEntity): Promise<void>;
20
+ savePackageVersion(pkgVersionEntity: PackageVersionEntity): Promise<void>;
21
+ findPackageVersion(packageId: string, version: string): Promise<PackageVersionEntity | null>;
22
+ listPackageVersions(packageId: string): Promise<PackageVersionEntity[]>;
23
+ listPackageVersionNames(packageId: string): Promise<string[]>;
24
+ removePackageVersions(packageId: string): Promise<void>;
25
+ removePackageVersion(pkgVersion: PackageVersionEntity): Promise<void>;
26
+ savePackageVersionManifest(manifestEntity: PackageVersionManifestEntity): Promise<void>;
27
+ findPackageVersionManifest(packageVersionId: string): Promise<PackageVersionManifestModel | null>;
28
+ queryTotal(): Promise<{
29
+ packageCount: number;
30
+ packageVersionCount: number;
31
+ lastPackage: string;
32
+ lastPackageVersion: string;
33
+ }>;
34
+ private fillPackageVersionEntitiyData;
35
+ findPackageTag(packageId: string, tag: string): Promise<PackageTagEntity | null>;
36
+ savePackageTag(packageTagEntity: PackageTagEntity): Promise<void>;
37
+ removePackageTag(packageTagEntity: PackageTagEntity): Promise<void>;
38
+ listPackageTags(packageId: string): Promise<PackageTagEntity[]>;
39
+ }