@package-broker/core 0.17.4 → 0.19.7

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 (346) hide show
  1. package/dist/cache/index.d.ts +0 -1
  2. package/dist/cache/index.d.ts.map +1 -1
  3. package/dist/cache/index.js +0 -1
  4. package/dist/cache/index.js.map +1 -1
  5. package/dist/cache/memory-driver.d.ts +1 -1
  6. package/dist/cache/memory-driver.d.ts.map +1 -1
  7. package/dist/cache/memory-driver.js +4 -2
  8. package/dist/cache/memory-driver.js.map +1 -1
  9. package/dist/db/create-database.d.ts +8 -0
  10. package/dist/db/create-database.d.ts.map +1 -0
  11. package/dist/db/create-database.js +13 -0
  12. package/dist/db/create-database.js.map +1 -0
  13. package/dist/db/index.d.ts +0 -1
  14. package/dist/db/index.d.ts.map +1 -1
  15. package/dist/db/index.js +0 -1
  16. package/dist/db/index.js.map +1 -1
  17. package/dist/db/schema.d.ts +557 -0
  18. package/dist/db/schema.d.ts.map +1 -1
  19. package/dist/db/schema.js +72 -2
  20. package/dist/db/schema.js.map +1 -1
  21. package/dist/factory.d.ts.map +1 -1
  22. package/dist/factory.js +22 -2
  23. package/dist/factory.js.map +1 -1
  24. package/dist/index.d.ts +2 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +2 -2
  27. package/dist/index.js.map +1 -1
  28. package/dist/jobs/processor.d.ts.map +1 -1
  29. package/dist/jobs/processor.js +16 -6
  30. package/dist/jobs/processor.js.map +1 -1
  31. package/dist/kernel/container.d.ts +12 -0
  32. package/dist/kernel/container.d.ts.map +1 -0
  33. package/dist/kernel/container.js +43 -0
  34. package/dist/kernel/container.js.map +1 -0
  35. package/dist/kernel/events.d.ts +17 -0
  36. package/dist/kernel/events.d.ts.map +1 -0
  37. package/dist/kernel/events.js +54 -0
  38. package/dist/kernel/events.js.map +1 -0
  39. package/dist/kernel/hooks.d.ts +14 -0
  40. package/dist/kernel/hooks.d.ts.map +1 -0
  41. package/dist/kernel/hooks.js +31 -0
  42. package/dist/kernel/hooks.js.map +1 -0
  43. package/dist/kernel/index.d.ts +5 -0
  44. package/dist/kernel/index.d.ts.map +1 -0
  45. package/dist/kernel/index.js +5 -0
  46. package/dist/kernel/index.js.map +1 -0
  47. package/dist/kernel/plugin.d.ts +21 -0
  48. package/dist/kernel/plugin.d.ts.map +1 -0
  49. package/dist/kernel/plugin.js +30 -0
  50. package/dist/kernel/plugin.js.map +1 -0
  51. package/dist/middleware/auth.d.ts +2 -0
  52. package/dist/middleware/auth.d.ts.map +1 -1
  53. package/dist/middleware/auth.js +20 -5
  54. package/dist/middleware/auth.js.map +1 -1
  55. package/dist/modules/admin/admin.handlers.d.ts +1 -1
  56. package/dist/modules/admin/admin.handlers.d.ts.map +1 -1
  57. package/dist/modules/artifacts/artifacts.handlers.d.ts +1 -1
  58. package/dist/modules/artifacts/artifacts.handlers.d.ts.map +1 -1
  59. package/dist/modules/auth/auth.handlers.js +1 -1
  60. package/dist/modules/auth/auth.handlers.js.map +1 -1
  61. package/dist/modules/composer/index.d.ts.map +1 -1
  62. package/dist/modules/composer/index.js +5 -0
  63. package/dist/modules/composer/index.js.map +1 -1
  64. package/dist/modules/composer/tenant-composer.d.ts +32 -0
  65. package/dist/modules/composer/tenant-composer.d.ts.map +1 -0
  66. package/dist/modules/composer/tenant-composer.js +198 -0
  67. package/dist/modules/composer/tenant-composer.js.map +1 -0
  68. package/dist/modules/import/import.handlers.d.ts +4 -0
  69. package/dist/modules/import/import.handlers.d.ts.map +1 -0
  70. package/dist/modules/import/import.handlers.js +16 -0
  71. package/dist/modules/import/import.handlers.js.map +1 -0
  72. package/dist/{routes/api/openapi/settings.d.ts → modules/import/import.routes.d.ts} +20 -35
  73. package/dist/modules/import/import.routes.d.ts.map +1 -0
  74. package/dist/modules/import/import.routes.js +63 -0
  75. package/dist/modules/import/import.routes.js.map +1 -0
  76. package/dist/modules/import/index.d.ts +8 -0
  77. package/dist/modules/import/index.d.ts.map +1 -0
  78. package/dist/modules/import/index.js +8 -0
  79. package/dist/modules/import/index.js.map +1 -0
  80. package/dist/modules/organizations/index.d.ts +8 -0
  81. package/dist/modules/organizations/index.d.ts.map +1 -0
  82. package/dist/modules/organizations/index.js +22 -0
  83. package/dist/modules/organizations/index.js.map +1 -0
  84. package/dist/modules/organizations/organizations.handlers.d.ts +24 -0
  85. package/dist/modules/organizations/organizations.handlers.d.ts.map +1 -0
  86. package/dist/modules/organizations/organizations.handlers.js +278 -0
  87. package/dist/modules/organizations/organizations.handlers.js.map +1 -0
  88. package/dist/modules/organizations/organizations.routes.d.ts +596 -0
  89. package/dist/modules/organizations/organizations.routes.d.ts.map +1 -0
  90. package/dist/modules/organizations/organizations.routes.js +263 -0
  91. package/dist/modules/organizations/organizations.routes.js.map +1 -0
  92. package/dist/modules/packages/packages.handlers.d.ts +1 -1
  93. package/dist/modules/packages/packages.handlers.d.ts.map +1 -1
  94. package/dist/modules/packages/packages.handlers.js +3 -69
  95. package/dist/modules/packages/packages.handlers.js.map +1 -1
  96. package/dist/modules/repositories/repositories.handlers.d.ts +1 -1
  97. package/dist/modules/repositories/repositories.handlers.d.ts.map +1 -1
  98. package/dist/modules/repositories/repositories.handlers.js +74 -3
  99. package/dist/modules/repositories/repositories.handlers.js.map +1 -1
  100. package/dist/modules/repositories/repositories.routes.d.ts +12 -0
  101. package/dist/modules/repositories/repositories.routes.d.ts.map +1 -1
  102. package/dist/modules/system/index.d.ts.map +1 -1
  103. package/dist/modules/system/index.js +2 -1
  104. package/dist/modules/system/index.js.map +1 -1
  105. package/dist/modules/system/system.handlers.d.ts +11 -1
  106. package/dist/modules/system/system.handlers.d.ts.map +1 -1
  107. package/dist/modules/system/system.handlers.js +31 -1
  108. package/dist/modules/system/system.handlers.js.map +1 -1
  109. package/dist/modules/system/system.routes.d.ts +34 -4
  110. package/dist/modules/system/system.routes.d.ts.map +1 -1
  111. package/dist/modules/system/system.routes.js +21 -1
  112. package/dist/modules/system/system.routes.js.map +1 -1
  113. package/dist/modules/tenants/index.d.ts +8 -0
  114. package/dist/modules/tenants/index.d.ts.map +1 -0
  115. package/dist/modules/tenants/index.js +21 -0
  116. package/dist/modules/tenants/index.js.map +1 -0
  117. package/dist/modules/tenants/tenants.handlers.d.ts +24 -0
  118. package/dist/modules/tenants/tenants.handlers.d.ts.map +1 -0
  119. package/dist/modules/tenants/tenants.handlers.js +268 -0
  120. package/dist/modules/tenants/tenants.handlers.js.map +1 -0
  121. package/dist/modules/tenants/tenants.routes.d.ts +486 -0
  122. package/dist/modules/tenants/tenants.routes.d.ts.map +1 -0
  123. package/dist/modules/tenants/tenants.routes.js +227 -0
  124. package/dist/modules/tenants/tenants.routes.js.map +1 -0
  125. package/dist/modules/tokens/tokens.handlers.d.ts +1 -1
  126. package/dist/modules/tokens/tokens.handlers.d.ts.map +1 -1
  127. package/dist/modules/users/users.handlers.d.ts +1 -1
  128. package/dist/modules/users/users.handlers.d.ts.map +1 -1
  129. package/dist/modules/users/users.handlers.js +1 -1
  130. package/dist/modules/users/users.handlers.js.map +1 -1
  131. package/dist/plugins/security-advisories/advisory-db.d.ts +85 -0
  132. package/dist/plugins/security-advisories/advisory-db.d.ts.map +1 -0
  133. package/dist/plugins/security-advisories/advisory-db.js +161 -0
  134. package/dist/plugins/security-advisories/advisory-db.js.map +1 -0
  135. package/dist/plugins/security-advisories/advisory-service.d.ts +44 -0
  136. package/dist/plugins/security-advisories/advisory-service.d.ts.map +1 -0
  137. package/dist/plugins/security-advisories/advisory-service.js +122 -0
  138. package/dist/plugins/security-advisories/advisory-service.js.map +1 -0
  139. package/dist/plugins/security-advisories/advisory.handlers.d.ts +13 -0
  140. package/dist/plugins/security-advisories/advisory.handlers.d.ts.map +1 -0
  141. package/dist/plugins/security-advisories/advisory.handlers.js +87 -0
  142. package/dist/plugins/security-advisories/advisory.handlers.js.map +1 -0
  143. package/dist/plugins/security-advisories/advisory.module.d.ts +4 -0
  144. package/dist/plugins/security-advisories/advisory.module.d.ts.map +1 -0
  145. package/dist/plugins/security-advisories/advisory.module.js +13 -0
  146. package/dist/plugins/security-advisories/advisory.module.js.map +1 -0
  147. package/dist/plugins/security-advisories/advisory.routes.d.ts +73 -0
  148. package/dist/plugins/security-advisories/advisory.routes.d.ts.map +1 -0
  149. package/dist/plugins/security-advisories/advisory.routes.js +76 -0
  150. package/dist/plugins/security-advisories/advisory.routes.js.map +1 -0
  151. package/dist/plugins/security-advisories/index.d.ts +31 -0
  152. package/dist/plugins/security-advisories/index.d.ts.map +1 -0
  153. package/dist/plugins/security-advisories/index.js +100 -0
  154. package/dist/plugins/security-advisories/index.js.map +1 -0
  155. package/dist/ports.d.ts +39 -21
  156. package/dist/ports.d.ts.map +1 -1
  157. package/dist/queue/consumer.d.ts +0 -8
  158. package/dist/queue/consumer.d.ts.map +1 -1
  159. package/dist/queue/consumer.js +2 -23
  160. package/dist/queue/consumer.js.map +1 -1
  161. package/dist/queue/index.d.ts +2 -0
  162. package/dist/queue/index.d.ts.map +1 -1
  163. package/dist/queue/index.js +2 -0
  164. package/dist/queue/index.js.map +1 -1
  165. package/dist/queue/memory-driver.d.ts +3 -2
  166. package/dist/queue/memory-driver.d.ts.map +1 -1
  167. package/dist/queue/memory-driver.js.map +1 -1
  168. package/dist/routes/composer.d.ts +7 -1
  169. package/dist/routes/composer.d.ts.map +1 -1
  170. package/dist/routes/composer.js +172 -70
  171. package/dist/routes/composer.js.map +1 -1
  172. package/dist/routes/dist.d.ts.map +1 -1
  173. package/dist/routes/dist.js +26 -80
  174. package/dist/routes/dist.js.map +1 -1
  175. package/dist/routes/index.d.ts +0 -1
  176. package/dist/routes/index.d.ts.map +1 -1
  177. package/dist/routes/index.js +0 -1
  178. package/dist/routes/index.js.map +1 -1
  179. package/dist/routes/package-revalidation.d.ts +38 -0
  180. package/dist/routes/package-revalidation.d.ts.map +1 -0
  181. package/dist/routes/package-revalidation.js +66 -0
  182. package/dist/routes/package-revalidation.js.map +1 -0
  183. package/dist/services/GitHubOrgImporter.d.ts +21 -0
  184. package/dist/services/GitHubOrgImporter.d.ts.map +1 -0
  185. package/dist/services/GitHubOrgImporter.js +51 -0
  186. package/dist/services/GitHubOrgImporter.js.map +1 -0
  187. package/dist/services/TokenScopeService.d.ts +15 -0
  188. package/dist/services/TokenScopeService.d.ts.map +1 -0
  189. package/dist/services/TokenScopeService.js +42 -0
  190. package/dist/services/TokenScopeService.js.map +1 -0
  191. package/dist/storage/index.d.ts +0 -1
  192. package/dist/storage/index.d.ts.map +1 -1
  193. package/dist/storage/index.js +0 -1
  194. package/dist/storage/index.js.map +1 -1
  195. package/dist/sync/repository-sync.d.ts.map +1 -1
  196. package/dist/sync/repository-sync.js +35 -23
  197. package/dist/sync/repository-sync.js.map +1 -1
  198. package/dist/sync/strategies/git-ssh.d.ts +17 -0
  199. package/dist/sync/strategies/git-ssh.d.ts.map +1 -0
  200. package/dist/sync/strategies/git-ssh.js +325 -0
  201. package/dist/sync/strategies/git-ssh.js.map +1 -0
  202. package/dist/{routes/api/types.d.ts → types/openapi.d.ts} +3 -4
  203. package/dist/types/openapi.d.ts.map +1 -0
  204. package/dist/{routes/api/types.js → types/openapi.js} +1 -1
  205. package/dist/types/openapi.js.map +1 -0
  206. package/dist/utils/background.d.ts +7 -0
  207. package/dist/utils/background.d.ts.map +1 -0
  208. package/dist/utils/background.js +11 -0
  209. package/dist/utils/background.js.map +1 -0
  210. package/dist/utils/environment.d.ts +15 -0
  211. package/dist/utils/environment.d.ts.map +1 -0
  212. package/dist/utils/environment.js +38 -0
  213. package/dist/utils/environment.js.map +1 -0
  214. package/dist/utils/index.d.ts +1 -0
  215. package/dist/utils/index.d.ts.map +1 -1
  216. package/dist/utils/index.js +1 -0
  217. package/dist/utils/index.js.map +1 -1
  218. package/dist/utils/package-filter.d.ts +7 -0
  219. package/dist/utils/package-filter.d.ts.map +1 -0
  220. package/dist/utils/package-filter.js +23 -0
  221. package/dist/utils/package-filter.js.map +1 -0
  222. package/dist/utils/package-validator.d.ts +3 -3
  223. package/dist/utils/package-validator.d.ts.map +1 -1
  224. package/dist/utils/package-validator.js +4 -37
  225. package/dist/utils/package-validator.js.map +1 -1
  226. package/dist/utils/upstream-fetch.d.ts +18 -0
  227. package/dist/utils/upstream-fetch.d.ts.map +1 -1
  228. package/dist/utils/upstream-fetch.js +76 -5
  229. package/dist/utils/upstream-fetch.js.map +1 -1
  230. package/dist/utils/zip-utils.d.ts +13 -0
  231. package/dist/utils/zip-utils.d.ts.map +1 -0
  232. package/dist/utils/zip-utils.js +66 -0
  233. package/dist/utils/zip-utils.js.map +1 -0
  234. package/dist/vcs/bitbucket-provider.d.ts +19 -0
  235. package/dist/vcs/bitbucket-provider.d.ts.map +1 -0
  236. package/dist/vcs/bitbucket-provider.js +249 -0
  237. package/dist/vcs/bitbucket-provider.js.map +1 -0
  238. package/dist/vcs/github-provider.d.ts +16 -0
  239. package/dist/vcs/github-provider.d.ts.map +1 -0
  240. package/dist/vcs/github-provider.js +117 -0
  241. package/dist/vcs/github-provider.js.map +1 -0
  242. package/dist/vcs/gitlab-provider.d.ts +17 -0
  243. package/dist/vcs/gitlab-provider.d.ts.map +1 -0
  244. package/dist/vcs/gitlab-provider.js +216 -0
  245. package/dist/vcs/gitlab-provider.js.map +1 -0
  246. package/dist/vcs/index.d.ts +10 -0
  247. package/dist/vcs/index.d.ts.map +1 -0
  248. package/dist/vcs/index.js +24 -0
  249. package/dist/vcs/index.js.map +1 -0
  250. package/dist/vcs/registry.d.ts +32 -0
  251. package/dist/vcs/registry.d.ts.map +1 -0
  252. package/dist/vcs/registry.js +47 -0
  253. package/dist/vcs/registry.js.map +1 -0
  254. package/dist/workflows/package-storage.d.ts.map +1 -1
  255. package/dist/workflows/package-storage.js +3 -3
  256. package/dist/workflows/package-storage.js.map +1 -1
  257. package/package.json +11 -8
  258. package/dist/cache/kv-driver.d.ts +0 -16
  259. package/dist/cache/kv-driver.d.ts.map +0 -1
  260. package/dist/cache/kv-driver.js +0 -23
  261. package/dist/cache/kv-driver.js.map +0 -1
  262. package/dist/db/d1-driver.d.ts +0 -3
  263. package/dist/db/d1-driver.d.ts.map +0 -1
  264. package/dist/db/d1-driver.js +0 -7
  265. package/dist/db/d1-driver.js.map +0 -1
  266. package/dist/routes/api/artifacts.d.ts +0 -27
  267. package/dist/routes/api/artifacts.d.ts.map +0 -1
  268. package/dist/routes/api/artifacts.js +0 -57
  269. package/dist/routes/api/artifacts.js.map +0 -1
  270. package/dist/routes/api/auth.d.ts +0 -52
  271. package/dist/routes/api/auth.d.ts.map +0 -1
  272. package/dist/routes/api/auth.js +0 -277
  273. package/dist/routes/api/auth.js.map +0 -1
  274. package/dist/routes/api/index.d.ts +0 -10
  275. package/dist/routes/api/index.d.ts.map +0 -1
  276. package/dist/routes/api/index.js +0 -11
  277. package/dist/routes/api/index.js.map +0 -1
  278. package/dist/routes/api/openapi/artifacts.d.ts +0 -80
  279. package/dist/routes/api/openapi/artifacts.d.ts.map +0 -1
  280. package/dist/routes/api/openapi/artifacts.js +0 -73
  281. package/dist/routes/api/openapi/artifacts.js.map +0 -1
  282. package/dist/routes/api/openapi/auth.d.ts +0 -187
  283. package/dist/routes/api/openapi/auth.d.ts.map +0 -1
  284. package/dist/routes/api/openapi/auth.js +0 -135
  285. package/dist/routes/api/openapi/auth.js.map +0 -1
  286. package/dist/routes/api/openapi/health.d.ts +0 -23
  287. package/dist/routes/api/openapi/health.d.ts.map +0 -1
  288. package/dist/routes/api/openapi/health.js +0 -25
  289. package/dist/routes/api/openapi/health.js.map +0 -1
  290. package/dist/routes/api/openapi/index.d.ts +0 -10
  291. package/dist/routes/api/openapi/index.d.ts.map +0 -1
  292. package/dist/routes/api/openapi/index.js +0 -16
  293. package/dist/routes/api/openapi/index.js.map +0 -1
  294. package/dist/routes/api/openapi/packages.d.ts +0 -172
  295. package/dist/routes/api/openapi/packages.d.ts.map +0 -1
  296. package/dist/routes/api/openapi/packages.js +0 -126
  297. package/dist/routes/api/openapi/packages.js.map +0 -1
  298. package/dist/routes/api/openapi/repositories.d.ts +0 -451
  299. package/dist/routes/api/openapi/repositories.d.ts.map +0 -1
  300. package/dist/routes/api/openapi/repositories.js +0 -238
  301. package/dist/routes/api/openapi/repositories.js.map +0 -1
  302. package/dist/routes/api/openapi/settings.d.ts.map +0 -1
  303. package/dist/routes/api/openapi/settings.js +0 -72
  304. package/dist/routes/api/openapi/settings.js.map +0 -1
  305. package/dist/routes/api/openapi/stats.d.ts +0 -59
  306. package/dist/routes/api/openapi/stats.d.ts.map +0 -1
  307. package/dist/routes/api/openapi/stats.js +0 -53
  308. package/dist/routes/api/openapi/stats.js.map +0 -1
  309. package/dist/routes/api/openapi/tokens.d.ts +0 -202
  310. package/dist/routes/api/openapi/tokens.d.ts.map +0 -1
  311. package/dist/routes/api/openapi/tokens.js +0 -132
  312. package/dist/routes/api/openapi/tokens.js.map +0 -1
  313. package/dist/routes/api/openapi/users.d.ts +0 -190
  314. package/dist/routes/api/openapi/users.d.ts.map +0 -1
  315. package/dist/routes/api/openapi/users.js +0 -126
  316. package/dist/routes/api/openapi/users.js.map +0 -1
  317. package/dist/routes/api/packages.d.ts +0 -50
  318. package/dist/routes/api/packages.d.ts.map +0 -1
  319. package/dist/routes/api/packages.js +0 -708
  320. package/dist/routes/api/packages.js.map +0 -1
  321. package/dist/routes/api/repositories.d.ts +0 -58
  322. package/dist/routes/api/repositories.d.ts.map +0 -1
  323. package/dist/routes/api/repositories.js +0 -321
  324. package/dist/routes/api/repositories.js.map +0 -1
  325. package/dist/routes/api/settings.d.ts +0 -29
  326. package/dist/routes/api/settings.d.ts.map +0 -1
  327. package/dist/routes/api/settings.js +0 -81
  328. package/dist/routes/api/settings.js.map +0 -1
  329. package/dist/routes/api/stats.d.ts +0 -21
  330. package/dist/routes/api/stats.d.ts.map +0 -1
  331. package/dist/routes/api/stats.js +0 -51
  332. package/dist/routes/api/stats.js.map +0 -1
  333. package/dist/routes/api/tokens.d.ts +0 -40
  334. package/dist/routes/api/tokens.d.ts.map +0 -1
  335. package/dist/routes/api/tokens.js +0 -187
  336. package/dist/routes/api/tokens.js.map +0 -1
  337. package/dist/routes/api/types.d.ts.map +0 -1
  338. package/dist/routes/api/types.js.map +0 -1
  339. package/dist/routes/api/users.d.ts +0 -6
  340. package/dist/routes/api/users.d.ts.map +0 -1
  341. package/dist/routes/api/users.js +0 -115
  342. package/dist/routes/api/users.js.map +0 -1
  343. package/dist/storage/r2-driver.d.ts +0 -16
  344. package/dist/storage/r2-driver.d.ts.map +0 -1
  345. package/dist/storage/r2-driver.js +0 -28
  346. package/dist/storage/r2-driver.js.map +0 -1
@@ -0,0 +1,117 @@
1
+ /*
2
+ * PACKAGE.broker
3
+ * Copyright (C) 2025 Łukasz Bajsarowicz
4
+ * Licensed under AGPL-3.0
5
+ */
6
+ import { syncGitHubRepository } from '../sync/github-sync';
7
+ import { COMPOSER_USER_AGENT } from '@package-broker/shared';
8
+ import pRetry from 'p-retry';
9
+ const GITHUB_URL_PATTERN = /github\.com[:/]([^/]+)\/([^/.]+)/;
10
+ export class GitHubProvider {
11
+ name = 'github';
12
+ async discoverPackages(org, token, filter) {
13
+ const url = `https://composer.pkg.github.com/${encodeURIComponent(org)}/packages.json`;
14
+ const response = await pRetry(() => fetch(url, {
15
+ headers: {
16
+ Authorization: `Bearer ${token}`,
17
+ Accept: 'application/json',
18
+ 'User-Agent': COMPOSER_USER_AGENT,
19
+ },
20
+ }), { retries: 3 });
21
+ if (!response.ok) {
22
+ return [];
23
+ }
24
+ const data = (await response.json());
25
+ const packages = [];
26
+ for (const [name, versions] of Object.entries(data.packages || {})) {
27
+ if (filter && !name.toLowerCase().includes(filter.toLowerCase())) {
28
+ continue;
29
+ }
30
+ packages.push({ name, versions: Object.keys(versions), source: 'github_packages' });
31
+ }
32
+ return packages;
33
+ }
34
+ async fetchPackageMetadata(repoUrl, token) {
35
+ const match = repoUrl.match(GITHUB_URL_PATTERN);
36
+ if (!match)
37
+ return null;
38
+ const [, owner, repo] = match;
39
+ const headers = {
40
+ Accept: 'application/vnd.github.raw+json',
41
+ 'User-Agent': 'PackageBroker/1.0',
42
+ 'X-GitHub-Api-Version': '2022-11-28',
43
+ };
44
+ if (token) {
45
+ headers['Authorization'] = `Bearer ${token}`;
46
+ }
47
+ const response = await pRetry(() => fetch(`https://api.github.com/repos/${owner}/${repo}/contents/composer.json`, {
48
+ headers,
49
+ }), { retries: 2 });
50
+ if (!response.ok)
51
+ return null;
52
+ const composerJson = (await response.json());
53
+ if (!composerJson.name)
54
+ return null;
55
+ return {
56
+ name: composerJson.name,
57
+ description: composerJson.description,
58
+ versions: {},
59
+ };
60
+ }
61
+ async verifyCredentials(url, credentialType, credentials) {
62
+ if (credentialType !== 'github_token' && credentialType !== 'none') {
63
+ return false;
64
+ }
65
+ const parsed = this.parseCredentials(credentials);
66
+ const token = parsed.token || '';
67
+ const headers = {
68
+ Accept: 'application/vnd.github+json',
69
+ 'User-Agent': 'PackageBroker/1.0',
70
+ 'X-GitHub-Api-Version': '2022-11-28',
71
+ };
72
+ if (token) {
73
+ headers['Authorization'] = `Bearer ${token}`;
74
+ }
75
+ try {
76
+ const match = url.match(GITHUB_URL_PATTERN);
77
+ const apiUrl = match
78
+ ? `https://api.github.com/repos/${match[1]}/${match[2]}`
79
+ : 'https://api.github.com/user';
80
+ const response = await fetch(apiUrl, { headers });
81
+ return response.ok;
82
+ }
83
+ catch {
84
+ return false;
85
+ }
86
+ }
87
+ /**
88
+ * Sync a GitHub repository using the existing strategy-based sync.
89
+ * This bridges the VcsProviderPort interface with the current sync implementation.
90
+ */
91
+ async syncRepository(url, credentials, credentialType, composerJsonPath) {
92
+ const match = url.match(GITHUB_URL_PATTERN);
93
+ if (!match) {
94
+ return { success: false, packages: [], error: 'invalid_github_url' };
95
+ }
96
+ const [, owner, repo] = match;
97
+ const token = credentialType === 'none' ? null : credentials.token || credentials.password || '';
98
+ return syncGitHubRepository({
99
+ owner,
100
+ repo: repo.replace('.git', ''),
101
+ token,
102
+ composerJsonPath,
103
+ });
104
+ }
105
+ matchesUrl(url) {
106
+ return GITHUB_URL_PATTERN.test(url);
107
+ }
108
+ parseCredentials(credentials) {
109
+ try {
110
+ return JSON.parse(credentials);
111
+ }
112
+ catch {
113
+ return { token: credentials };
114
+ }
115
+ }
116
+ }
117
+ //# sourceMappingURL=github-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-provider.js","sourceRoot":"","sources":["../../src/vcs/github-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { VcsProviderPort, DiscoveredPackage, PackageMetadata } from '../ports';
2
+ import type { SyncResult } from '../sync/types';
3
+ export declare class GitLabProvider implements VcsProviderPort {
4
+ readonly name = "gitlab";
5
+ discoverPackages(org: string, token: string, filter?: string): Promise<DiscoveredPackage[]>;
6
+ fetchPackageMetadata(repoUrl: string, token: string): Promise<PackageMetadata | null>;
7
+ verifyCredentials(url: string, credentialType: string, credentials: string): Promise<boolean>;
8
+ /**
9
+ * Sync a GitLab repository by fetching composer.json from the repo and tags for versions.
10
+ */
11
+ syncRepository(url: string, credentials: Record<string, string>, credentialType: string, composerJsonPath?: string): Promise<SyncResult>;
12
+ matchesUrl(url: string): boolean;
13
+ private parseUrl;
14
+ private buildHeaders;
15
+ private parseCredentials;
16
+ }
17
+ //# sourceMappingURL=gitlab-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitlab-provider.d.ts","sourceRoot":"","sources":["../../src/vcs/gitlab-provider.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACpF,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,eAAe,CAAC;AAuBjE,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,YAAY;IAEnB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAmD3F,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IA8CrF,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBnG;;OAEG;IACG,cAAc,CAClB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,cAAc,EAAE,MAAM,EACtB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,UAAU,CAAC;IAmItB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,gBAAgB;CAOzB"}
@@ -0,0 +1,216 @@
1
+ /*
2
+ * PACKAGE.broker
3
+ * Copyright (C) 2025 Łukasz Bajsarowicz
4
+ * Licensed under AGPL-3.0
5
+ */
6
+ import { COMPOSER_USER_AGENT } from '@package-broker/shared';
7
+ import pRetry from 'p-retry';
8
+ import { getLogger } from '../utils/logger';
9
+ import semver from 'semver';
10
+ // Only match gitlab.com — self-hosted instances are not supported to prevent SSRF.
11
+ // Self-hosted GitLab support would require an explicit allowlist.
12
+ const GITLAB_URL_PATTERN = /gitlab\.com[:/]([^/]+(?:\/[^/]+)*)\/([^/.]+)/;
13
+ export class GitLabProvider {
14
+ name = 'gitlab';
15
+ async discoverPackages(org, token, filter) {
16
+ const logger = getLogger();
17
+ const packages = [];
18
+ // GitLab Groups have a Composer package registry
19
+ const url = `https://gitlab.com/api/v4/groups/${encodeURIComponent(org)}/packages?package_type=composer&per_page=100`;
20
+ try {
21
+ const response = await pRetry(() => fetch(url, {
22
+ headers: this.buildHeaders(token),
23
+ }), { retries: 3 });
24
+ if (!response.ok) {
25
+ logger.warn('GitLab package discovery failed', { org, status: response.status });
26
+ return [];
27
+ }
28
+ const data = (await response.json());
29
+ // Group versions by package name
30
+ const packageMap = new Map();
31
+ for (const pkg of data) {
32
+ if (filter && !pkg.name.toLowerCase().includes(filter.toLowerCase())) {
33
+ continue;
34
+ }
35
+ const versions = packageMap.get(pkg.name) || [];
36
+ versions.push(pkg.version);
37
+ packageMap.set(pkg.name, versions);
38
+ }
39
+ for (const [name, versions] of packageMap) {
40
+ packages.push({ name, versions, source: 'gitlab_packages' });
41
+ }
42
+ }
43
+ catch (err) {
44
+ logger.error('GitLab package discovery error', { org }, err instanceof Error ? err : new Error(String(err)));
45
+ }
46
+ return packages;
47
+ }
48
+ async fetchPackageMetadata(repoUrl, token) {
49
+ const { host, projectPath } = this.parseUrl(repoUrl);
50
+ if (!projectPath)
51
+ return null;
52
+ const apiBase = `https://${host}/api/v4`;
53
+ const encodedPath = encodeURIComponent(projectPath);
54
+ const headers = this.buildHeaders(token);
55
+ try {
56
+ // Fetch project to get default branch (don't assume 'main')
57
+ const projectResponse = await pRetry(() => fetch(`${apiBase}/projects/${encodedPath}`, { headers }), { retries: 2 });
58
+ const defaultBranch = projectResponse.ok
59
+ ? (await projectResponse.json()).default_branch || 'main'
60
+ : 'main';
61
+ const response = await pRetry(() => fetch(`${apiBase}/projects/${encodedPath}/repository/files/composer.json/raw?ref=${encodeURIComponent(defaultBranch)}`, {
62
+ headers,
63
+ }), { retries: 2 });
64
+ if (!response.ok)
65
+ return null;
66
+ const composerJson = (await response.json());
67
+ if (!composerJson.name)
68
+ return null;
69
+ return {
70
+ name: composerJson.name,
71
+ description: composerJson.description,
72
+ versions: {},
73
+ };
74
+ }
75
+ catch {
76
+ return null;
77
+ }
78
+ }
79
+ async verifyCredentials(url, credentialType, credentials) {
80
+ if (credentialType !== 'gitlab_token' && credentialType !== 'none') {
81
+ return false;
82
+ }
83
+ const parsed = this.parseCredentials(credentials);
84
+ const token = parsed.token || '';
85
+ const { host } = this.parseUrl(url);
86
+ try {
87
+ const response = await fetch(`https://${host}/api/v4/user`, {
88
+ headers: this.buildHeaders(token),
89
+ });
90
+ return response.ok;
91
+ }
92
+ catch {
93
+ return false;
94
+ }
95
+ }
96
+ /**
97
+ * Sync a GitLab repository by fetching composer.json from the repo and tags for versions.
98
+ */
99
+ async syncRepository(url, credentials, credentialType, composerJsonPath) {
100
+ const logger = getLogger();
101
+ const { host, projectPath } = this.parseUrl(url);
102
+ if (!projectPath) {
103
+ return { success: false, packages: [], error: 'invalid_gitlab_url' };
104
+ }
105
+ const token = credentialType === 'none' ? '' : credentials.token || '';
106
+ const apiBase = `https://${host}/api/v4`;
107
+ const encodedPath = encodeURIComponent(projectPath);
108
+ const headers = this.buildHeaders(token);
109
+ try {
110
+ // Get project info for default branch
111
+ const projectResponse = await pRetry(() => fetch(`${apiBase}/projects/${encodedPath}`, { headers }), { retries: 2 });
112
+ if (!projectResponse.ok) {
113
+ if (projectResponse.status === 401 || projectResponse.status === 403) {
114
+ return { success: false, packages: [], error: 'auth_failed' };
115
+ }
116
+ if (projectResponse.status === 404) {
117
+ return { success: false, packages: [], error: 'repo_not_found' };
118
+ }
119
+ return { success: false, packages: [], error: `gitlab_api_${projectResponse.status}` };
120
+ }
121
+ const project = (await projectResponse.json());
122
+ const defaultBranch = project.default_branch || 'main';
123
+ // Fetch composer.json from default branch
124
+ const composerPath = composerJsonPath || 'composer.json';
125
+ const composerResponse = await pRetry(() => fetch(`${apiBase}/projects/${encodedPath}/repository/files/${encodeURIComponent(composerPath)}/raw?ref=${encodeURIComponent(defaultBranch)}`, { headers }), { retries: 2 });
126
+ if (!composerResponse.ok) {
127
+ return { success: false, packages: [], error: 'no_composer_json_found' };
128
+ }
129
+ const composerJson = (await composerResponse.json());
130
+ if (!composerJson.name) {
131
+ return { success: false, packages: [], error: 'no_valid_composer_json' };
132
+ }
133
+ // Fetch tags for version discovery
134
+ const tagsResponse = await pRetry(() => fetch(`${apiBase}/projects/${encodedPath}/repository/tags?per_page=100`, { headers }), { retries: 2 });
135
+ const tags = tagsResponse.ok ? (await tagsResponse.json()) : [];
136
+ // Build packages from tags
137
+ const packages = [];
138
+ // Dev branch package
139
+ packages.push({
140
+ name: composerJson.name,
141
+ version: `dev-${defaultBranch}`,
142
+ description: composerJson.description,
143
+ license: composerJson.license,
144
+ type: composerJson.type,
145
+ homepage: composerJson.homepage || project.web_url,
146
+ require: composerJson.require,
147
+ 'require-dev': composerJson['require-dev'],
148
+ dist: {
149
+ type: 'zip',
150
+ url: `${apiBase}/projects/${encodedPath}/repository/archive.zip?sha=${encodeURIComponent(defaultBranch)}`,
151
+ reference: defaultBranch,
152
+ },
153
+ });
154
+ // Tagged version packages
155
+ for (const tag of tags) {
156
+ const version = semver.clean(tag.name) || tag.name;
157
+ if (!semver.valid(version))
158
+ continue;
159
+ packages.push({
160
+ name: composerJson.name,
161
+ version,
162
+ description: composerJson.description,
163
+ license: composerJson.license,
164
+ type: composerJson.type,
165
+ homepage: composerJson.homepage || project.web_url,
166
+ require: composerJson.require,
167
+ 'require-dev': composerJson['require-dev'],
168
+ dist: {
169
+ type: 'zip',
170
+ url: `${apiBase}/projects/${encodedPath}/repository/archive.zip?sha=${encodeURIComponent(tag.name)}`,
171
+ reference: tag.commit.id,
172
+ },
173
+ });
174
+ }
175
+ logger.info('GitLab sync completed', {
176
+ project: projectPath,
177
+ packageCount: packages.length,
178
+ tagCount: tags.length,
179
+ });
180
+ return { success: true, packages, strategy: 'gitlab_api' };
181
+ }
182
+ catch (err) {
183
+ logger.error('GitLab sync error', { project: projectPath }, err instanceof Error ? err : new Error(String(err)));
184
+ return { success: false, packages: [], error: 'network_error' };
185
+ }
186
+ }
187
+ matchesUrl(url) {
188
+ return GITLAB_URL_PATTERN.test(url);
189
+ }
190
+ parseUrl(url) {
191
+ const gitlabMatch = url.match(GITLAB_URL_PATTERN);
192
+ if (gitlabMatch) {
193
+ return { host: 'gitlab.com', projectPath: `${gitlabMatch[1]}/${gitlabMatch[2]}` };
194
+ }
195
+ return { host: 'gitlab.com', projectPath: null };
196
+ }
197
+ buildHeaders(token) {
198
+ const headers = {
199
+ Accept: 'application/json',
200
+ 'User-Agent': COMPOSER_USER_AGENT,
201
+ };
202
+ if (token) {
203
+ headers['PRIVATE-TOKEN'] = token;
204
+ }
205
+ return headers;
206
+ }
207
+ parseCredentials(credentials) {
208
+ try {
209
+ return JSON.parse(credentials);
210
+ }
211
+ catch {
212
+ return { token: credentials };
213
+ }
214
+ }
215
+ }
216
+ //# sourceMappingURL=gitlab-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitlab-provider.js","sourceRoot":"","sources":["../../src/vcs/gitlab-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export { GitHubProvider } from './github-provider';
2
+ export { GitLabProvider } from './gitlab-provider';
3
+ export { BitbucketProvider } from './bitbucket-provider';
4
+ export { VcsProviderRegistry, getVcsProviderRegistry, resetVcsProviderRegistry, type SyncableVcsProvider, } from './registry';
5
+ /**
6
+ * Initialize the VCS provider registry with all built-in providers.
7
+ * Call this once during application startup.
8
+ */
9
+ export declare function registerBuiltinVcsProviders(): void;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vcs/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,mBAAmB,GACzB,MAAM,YAAY,CAAC;AAOpB;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAKlD"}
@@ -0,0 +1,24 @@
1
+ /*
2
+ * PACKAGE.broker
3
+ * Copyright (C) 2025 Łukasz Bajsarowicz
4
+ * Licensed under AGPL-3.0
5
+ */
6
+ export { GitHubProvider } from './github-provider';
7
+ export { GitLabProvider } from './gitlab-provider';
8
+ export { BitbucketProvider } from './bitbucket-provider';
9
+ export { VcsProviderRegistry, getVcsProviderRegistry, resetVcsProviderRegistry, } from './registry';
10
+ import { getVcsProviderRegistry } from './registry';
11
+ import { GitHubProvider } from './github-provider';
12
+ import { GitLabProvider } from './gitlab-provider';
13
+ import { BitbucketProvider } from './bitbucket-provider';
14
+ /**
15
+ * Initialize the VCS provider registry with all built-in providers.
16
+ * Call this once during application startup.
17
+ */
18
+ export function registerBuiltinVcsProviders() {
19
+ const registry = getVcsProviderRegistry();
20
+ registry.register(new GitHubProvider());
21
+ registry.register(new GitLabProvider());
22
+ registry.register(new BitbucketProvider());
23
+ }
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vcs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,GAEzB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { SyncResult } from '../sync/types';
2
+ /**
3
+ * Extended VCS provider interface that adds sync and URL-matching capabilities
4
+ * beyond the base VcsProviderPort.
5
+ */
6
+ export interface SyncableVcsProvider {
7
+ readonly name: string;
8
+ matchesUrl(url: string): boolean;
9
+ verifyCredentials(url: string, credentialType: string, credentials: string): Promise<boolean>;
10
+ syncRepository(url: string, credentials: Record<string, string>, credentialType: string, composerJsonPath?: string): Promise<SyncResult>;
11
+ }
12
+ /**
13
+ * Registry for VCS providers. Resolves the correct provider based on repository URL.
14
+ */
15
+ export declare class VcsProviderRegistry {
16
+ private readonly providers;
17
+ register(provider: SyncableVcsProvider): void;
18
+ /**
19
+ * Find a provider that can handle the given URL.
20
+ */
21
+ resolve(url: string): SyncableVcsProvider | null;
22
+ /**
23
+ * Get all registered provider names.
24
+ */
25
+ getProviderNames(): string[];
26
+ }
27
+ export declare function getVcsProviderRegistry(): VcsProviderRegistry;
28
+ /**
29
+ * Reset the registry (for testing).
30
+ */
31
+ export declare function resetVcsProviderRegistry(): void;
32
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/vcs/registry.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9F,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,cAAc,EAAE,MAAM,EACtB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,UAAU,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IAEvD,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAQ7C;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAIhD;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE;CAG7B;AAOD,wBAAgB,sBAAsB,IAAI,mBAAmB,CAK5D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
@@ -0,0 +1,47 @@
1
+ /*
2
+ * PACKAGE.broker
3
+ * Copyright (C) 2025 Łukasz Bajsarowicz
4
+ * Licensed under AGPL-3.0
5
+ */
6
+ /**
7
+ * Registry for VCS providers. Resolves the correct provider based on repository URL.
8
+ */
9
+ export class VcsProviderRegistry {
10
+ providers = [];
11
+ register(provider) {
12
+ // Avoid duplicate registration
13
+ if (this.providers.some((p) => p.name === provider.name)) {
14
+ return;
15
+ }
16
+ this.providers.push(provider);
17
+ }
18
+ /**
19
+ * Find a provider that can handle the given URL.
20
+ */
21
+ resolve(url) {
22
+ return this.providers.find((p) => p.matchesUrl(url)) || null;
23
+ }
24
+ /**
25
+ * Get all registered provider names.
26
+ */
27
+ getProviderNames() {
28
+ return this.providers.map((p) => p.name);
29
+ }
30
+ }
31
+ /**
32
+ * Singleton registry instance used across the application.
33
+ */
34
+ let registryInstance = null;
35
+ export function getVcsProviderRegistry() {
36
+ if (!registryInstance) {
37
+ registryInstance = new VcsProviderRegistry();
38
+ }
39
+ return registryInstance;
40
+ }
41
+ /**
42
+ * Reset the registry (for testing).
43
+ */
44
+ export function resetVcsProviderRegistry() {
45
+ registryInstance = null;
46
+ }
47
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/vcs/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACb,SAAS,GAA0B,EAAE,CAAC;IAEvD,QAAQ,CAAC,QAA6B;QACpC,+BAA+B;QAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF;AAED;;GAEG;AACH,IAAI,gBAAgB,GAA+B,IAAI,CAAC;AAExD,MAAM,UAAU,sBAAsB;IACpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"package-storage.d.ts","sourceRoot":"","sources":["../../src/workflows/package-storage.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOrF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,UAAU,CAAC;IACf,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,WAAW,EAAE,GAAG,CAAC;IACjB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,sBAAuB,SAAQ,kBAAkB,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;IAC/F,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,YAAY;;;;IA2ExE;;;OAGG;YACW,gBAAgB;CA4D/B"}
1
+ {"version":3,"file":"package-storage.d.ts","sourceRoot":"","sources":["../../src/workflows/package-storage.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQrF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,UAAU,CAAC;IACf,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,WAAW,EAAE,GAAG,CAAC;IACjB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,sBAAuB,SAAQ,kBAAkB,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;IAC/F,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,YAAY;;;;IA2ExE;;;OAGG;YACW,gBAAgB;CA4D/B"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  // Package Storage Workflow - Durable background processing for D1 storage
7
7
  import { WorkflowEntrypoint } from 'cloudflare:workers';
8
- import { createD1Database } from '../db';
8
+ import { createDatabase } from '../db/create-database';
9
9
  import { repositories } from '../db/schema';
10
10
  import { eq } from 'drizzle-orm';
11
11
  import { encryptCredentials } from '../utils/encryption';
@@ -37,7 +37,7 @@ export class PackageStorageWorkflow extends WorkflowEntrypoint {
37
37
  },
38
38
  timeout: '30 seconds',
39
39
  }, async () => {
40
- const db = createD1Database(this.env.DB);
40
+ const db = createDatabase(this.env.DB);
41
41
  await this.ensureRepository(db, repoId);
42
42
  logger.debug('Repository ensured', { repoId });
43
43
  });
@@ -50,7 +50,7 @@ export class PackageStorageWorkflow extends WorkflowEntrypoint {
50
50
  },
51
51
  timeout: '10 minutes', // Package storage can take time for large packages
52
52
  }, async () => {
53
- const db = createD1Database(this.env.DB);
53
+ const db = createDatabase(this.env.DB);
54
54
  const { transformPackageDistUrls } = await import('../routes/composer');
55
55
  const { storedCount, errors } = await transformPackageDistUrls(packageData, repoId, proxyBaseUrl, db);
56
56
  logger.info('Stored package versions via workflow', {
@@ -1 +1 @@
1
- {"version":3,"file":"package-storage.js","sourceRoot":"","sources":["../../src/workflows/package-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-storage.js","sourceRoot":"","sources":["../../src/workflows/package-storage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@package-broker/core",
3
- "version": "0.17.4",
3
+ "version": "0.19.7",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -29,30 +29,30 @@
29
29
  "dependencies": {
30
30
  "@hono/zod-openapi": "^1.2.0",
31
31
  "@noble/hashes": "^2.0.1",
32
- "@package-broker/shared": "^0.13.0",
33
- "@types/nodemailer": "^7.0.4",
32
+ "@package-broker/shared": "^0.19.7",
33
+ "@types/nodemailer": "^8.0.1",
34
34
  "aws4fetch": "^1.0.20",
35
35
  "drizzle-orm": "^0.45.1",
36
36
  "fflate": "^0.8.2",
37
37
  "hono": "^4.12.7",
38
38
  "micromatch": "^4.0.8",
39
39
  "nanoid": "^5.1.6",
40
- "nodemailer": "^7.0.12",
40
+ "nodemailer": "^9.0.3",
41
41
  "otplib": "^12.0.1",
42
- "p-retry": "^7.1.1",
42
+ "p-retry": "^8.0.0",
43
43
  "qrcode": "^1.5.4",
44
44
  "semver": "^7.7.3",
45
45
  "zod": "^4.2.1"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@cloudflare/workers-types": "^4.20260108.0",
49
- "@eslint/js": "^9.18.0",
49
+ "@eslint/js": "^9.39.4",
50
50
  "@types/micromatch": "^4.0.10",
51
51
  "@types/qrcode": "^1.5.6",
52
52
  "@types/semver": "^7.7.1",
53
53
  "drizzle-kit": "^0.31.8",
54
- "eslint": "^9.18.0",
55
- "typescript": "^5.9.3",
54
+ "eslint": "^9.39.4",
55
+ "typescript": "^6.0.3",
56
56
  "typescript-eslint": "^8.20.0"
57
57
  },
58
58
  "repository": {
@@ -62,5 +62,8 @@
62
62
  },
63
63
  "publishConfig": {
64
64
  "access": "public"
65
+ },
66
+ "engines": {
67
+ "node": ">=22.0.0"
65
68
  }
66
69
  }
@@ -1,16 +0,0 @@
1
- import type { CachePort } from '../ports.js';
2
- /**
3
- * Cloudflare KV cache driver
4
- * Wraps KVNamespace to implement CachePort interface
5
- */
6
- export declare class KVCacheDriver implements CachePort {
7
- private kv;
8
- constructor(kv: KVNamespace);
9
- get(key: string): Promise<string | null>;
10
- getJson<T>(key: string): Promise<T | null>;
11
- put(key: string, value: string | ReadableStream | ArrayBuffer | FormData, options?: {
12
- expirationTtl?: number;
13
- }): Promise<void>;
14
- delete(key: string): Promise<void>;
15
- }
16
- //# sourceMappingURL=kv-driver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kv-driver.d.ts","sourceRoot":"","sources":["../../src/cache/kv-driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AACH,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,WAAW;IAE7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAI1C,GAAG,CACP,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,WAAW,GAAG,QAAQ,EACvD,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACnC,OAAO,CAAC,IAAI,CAAC;IAIV,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzC"}