cnpmcore 4.28.4 → 4.29.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 (47) hide show
  1. package/dist/app/common/CryptoUtil.js +7 -9
  2. package/dist/app/common/constants.d.ts +1 -0
  3. package/dist/app/common/constants.js +2 -1
  4. package/dist/app/core/entity/Org.d.ts +18 -0
  5. package/dist/app/core/entity/Org.js +16 -0
  6. package/dist/app/core/entity/OrgMember.d.ts +18 -0
  7. package/dist/app/core/entity/OrgMember.js +16 -0
  8. package/dist/app/core/entity/Team.d.ts +20 -0
  9. package/dist/app/core/entity/Team.js +17 -0
  10. package/dist/app/core/entity/TeamMember.d.ts +16 -0
  11. package/dist/app/core/entity/TeamMember.js +15 -0
  12. package/dist/app/core/entity/TeamPackage.d.ts +16 -0
  13. package/dist/app/core/entity/TeamPackage.js +15 -0
  14. package/dist/app/core/service/OrgService.d.ts +20 -0
  15. package/dist/app/core/service/OrgService.js +131 -0
  16. package/dist/app/core/service/TeamService.d.ts +16 -0
  17. package/dist/app/core/service/TeamService.js +110 -0
  18. package/dist/app/port/UserRoleManager.d.ts +2 -0
  19. package/dist/app/port/UserRoleManager.js +26 -1
  20. package/dist/app/port/controller/OrgController.d.ts +34 -0
  21. package/dist/app/port/controller/OrgController.js +217 -0
  22. package/dist/app/port/controller/PackageVersionFileController.js +3 -1
  23. package/dist/app/port/controller/TeamController.d.ts +48 -0
  24. package/dist/app/port/controller/TeamController.js +326 -0
  25. package/dist/app/port/controller/package/DownloadPackageVersionTar.js +3 -1
  26. package/dist/app/port/controller/package/ShowPackageController.d.ts +1 -0
  27. package/dist/app/port/controller/package/ShowPackageController.js +15 -5
  28. package/dist/app/port/controller/package/ShowPackageVersionController.js +2 -1
  29. package/dist/app/repository/OrgRepository.d.ts +23 -0
  30. package/dist/app/repository/OrgRepository.js +115 -0
  31. package/dist/app/repository/PackageRepository.d.ts +1 -0
  32. package/dist/app/repository/PackageRepository.js +7 -1
  33. package/dist/app/repository/TeamRepository.d.ts +33 -0
  34. package/dist/app/repository/TeamRepository.js +177 -0
  35. package/dist/app/repository/UserRepository.d.ts +1 -0
  36. package/dist/app/repository/UserRepository.js +7 -1
  37. package/dist/app/repository/model/Org.d.ts +9 -0
  38. package/dist/app/repository/model/Org.js +45 -0
  39. package/dist/app/repository/model/OrgMember.d.ts +10 -0
  40. package/dist/app/repository/model/OrgMember.js +49 -0
  41. package/dist/app/repository/model/Team.d.ts +10 -0
  42. package/dist/app/repository/model/Team.js +49 -0
  43. package/dist/app/repository/model/TeamMember.d.ts +9 -0
  44. package/dist/app/repository/model/TeamMember.js +45 -0
  45. package/dist/app/repository/model/TeamPackage.d.ts +9 -0
  46. package/dist/app/repository/model/TeamPackage.js +45 -0
  47. package/package.json +1 -1
@@ -0,0 +1,326 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { Context, HTTPBody, HTTPContext, HTTPController, HTTPMethod, HTTPMethodEnum, HTTPParam, Inject } from 'egg';
14
+ import { NotFoundError, UnprocessableEntityError } from 'egg/errors';
15
+ import { getScopeAndName } from "../../common/PackageUtil.js";
16
+ import { AbstractController } from "./AbstractController.js";
17
+ let TeamController = class TeamController extends AbstractController {
18
+ isAllowScopeOrg(orgName) {
19
+ return this.config.cnpmcore.allowScopes.includes(`@${orgName}`);
20
+ }
21
+ // For allowScopes orgs, auto-ensure; for others, just look up
22
+ async findOrg(orgName) {
23
+ if (this.isAllowScopeOrg(orgName)) {
24
+ return await this.orgService.ensureOrgForScope(`@${orgName}`);
25
+ }
26
+ return await this.orgService.findOrgByName(orgName);
27
+ }
28
+ async requireOrgWriteAccess(ctx, orgName) {
29
+ const authorizedUser = await this.userRoleManager.requiredAuthorizedUser(ctx, 'setting');
30
+ if (this.isAllowScopeOrg(orgName)) {
31
+ // allowScopes org: any authenticated user can operate, auto-ensure org
32
+ const org = await this.orgService.ensureOrgForScope(`@${orgName}`);
33
+ return { org, authorizedUser };
34
+ }
35
+ // Non-allowScopes org: admin or org owner only
36
+ const org = await this.orgService.findOrgByName(orgName);
37
+ if (!org) {
38
+ throw new NotFoundError(`Org "${orgName}" not found`);
39
+ }
40
+ const isAdmin = await this.userRoleManager.isAdmin(ctx);
41
+ await this.orgService.requiredOrgOwnerOrAdmin(org.orgId, authorizedUser.userId, isAdmin);
42
+ return { org, authorizedUser };
43
+ }
44
+ async requireTeamWriteAccess(ctx, orgName, teamName) {
45
+ const { org, authorizedUser } = await this.requireOrgWriteAccess(ctx, orgName);
46
+ const team = await this.teamRepository.findTeam(org.orgId, teamName);
47
+ if (!team) {
48
+ throw new NotFoundError(`Team "${teamName}" not found`);
49
+ }
50
+ return { org, team, authorizedUser };
51
+ }
52
+ // --- Team CRUD ---
53
+ // npm team create @scope:team → PUT /-/org/:orgName/team
54
+ async createTeam(ctx, orgName, body) {
55
+ const { org } = await this.requireOrgWriteAccess(ctx, orgName);
56
+ if (!body.name) {
57
+ throw new UnprocessableEntityError('name is required');
58
+ }
59
+ await this.teamService.createTeam(org.orgId, body.name, body.description);
60
+ return { ok: true };
61
+ }
62
+ // npm team ls @scope → GET /-/org/:orgName/team
63
+ async listTeams(ctx, orgName) {
64
+ await this.userRoleManager.requiredAuthorizedUser(ctx, 'read');
65
+ const org = await this.findOrg(orgName);
66
+ if (!org) {
67
+ throw new NotFoundError(`Org "${orgName}" not found`);
68
+ }
69
+ const teams = await this.teamRepository.listTeamsByOrgId(org.orgId);
70
+ // npm CLI adds @ prefix itself, return "scope:teamname" format
71
+ return teams.map((t) => `${orgName}:${t.name}`);
72
+ }
73
+ // GET /-/team/:orgName/:teamName (npm compatible show)
74
+ async showTeam(ctx, orgName, teamName) {
75
+ await this.userRoleManager.requiredAuthorizedUser(ctx, 'read');
76
+ const org = await this.findOrg(orgName);
77
+ if (!org) {
78
+ throw new NotFoundError(`Org "${orgName}" not found`);
79
+ }
80
+ const team = await this.teamRepository.findTeam(org.orgId, teamName);
81
+ if (!team) {
82
+ throw new NotFoundError(`Team "${teamName}" not found`);
83
+ }
84
+ return {
85
+ name: team.name,
86
+ description: team.description,
87
+ created: team.createdAt,
88
+ };
89
+ }
90
+ // npm team destroy @scope:team → DELETE /-/team/:orgName/:teamName
91
+ async removeTeam(ctx, orgName, teamName) {
92
+ const { team } = await this.requireTeamWriteAccess(ctx, orgName, teamName);
93
+ await this.teamService.removeTeam(team.teamId);
94
+ return { ok: true };
95
+ }
96
+ // --- Team Members (npm uses "user") ---
97
+ // npm team ls @scope:team → GET /-/team/:orgName/:teamName/user
98
+ async listTeamMembers(ctx, orgName, teamName) {
99
+ await this.userRoleManager.requiredAuthorizedUser(ctx, 'read');
100
+ const org = await this.findOrg(orgName);
101
+ if (!org) {
102
+ throw new NotFoundError(`Org "${orgName}" not found`);
103
+ }
104
+ const team = await this.teamRepository.findTeam(org.orgId, teamName);
105
+ if (!team) {
106
+ throw new NotFoundError(`Team "${teamName}" not found`);
107
+ }
108
+ const members = await this.teamService.listMembers(team.teamId);
109
+ const users = await this.userRepository.findUsersByUserIds(members.map((m) => m.userId));
110
+ return users.map((u) => u.displayName);
111
+ }
112
+ // npm team add <user> @scope:team → PUT /-/team/:orgName/:teamName/user
113
+ async addTeamMember(ctx, orgName, teamName, body) {
114
+ const { team } = await this.requireTeamWriteAccess(ctx, orgName, teamName);
115
+ if (!body.user) {
116
+ throw new UnprocessableEntityError('user is required');
117
+ }
118
+ const targetUser = await this.userRepository.findUserByName(body.user);
119
+ if (!targetUser) {
120
+ throw new NotFoundError(`User "${body.user}" not found`);
121
+ }
122
+ await this.teamService.addMember(team.teamId, targetUser.userId);
123
+ return { ok: true };
124
+ }
125
+ // npm team rm <user> @scope:team → DELETE /-/team/:orgName/:teamName/user body:{user}
126
+ async removeTeamMember(ctx, orgName, teamName, body) {
127
+ const { team } = await this.requireTeamWriteAccess(ctx, orgName, teamName);
128
+ if (!body.user) {
129
+ throw new UnprocessableEntityError('user is required');
130
+ }
131
+ const targetUser = await this.userRepository.findUserByName(body.user);
132
+ if (!targetUser) {
133
+ throw new NotFoundError(`User "${body.user}" not found`);
134
+ }
135
+ await this.teamService.removeMember(team.teamId, targetUser.userId);
136
+ return { ok: true };
137
+ }
138
+ // --- Team Packages ---
139
+ // npm access ls-packages @scope:team → GET /-/team/:orgName/:teamName/package
140
+ async listTeamPackages(ctx, orgName, teamName) {
141
+ await this.userRoleManager.requiredAuthorizedUser(ctx, 'read');
142
+ const org = await this.findOrg(orgName);
143
+ if (!org) {
144
+ throw new NotFoundError(`Org "${orgName}" not found`);
145
+ }
146
+ const team = await this.teamRepository.findTeam(org.orgId, teamName);
147
+ if (!team) {
148
+ throw new NotFoundError(`Team "${teamName}" not found`);
149
+ }
150
+ const teamPackages = await this.teamService.listPackages(team.teamId);
151
+ const pkgs = await this.packageRepository.findPackagesByPackageIds(teamPackages.map((tp) => tp.packageId));
152
+ const result = {};
153
+ for (const pkg of pkgs) {
154
+ result[pkg.fullname] = 'read';
155
+ }
156
+ return result;
157
+ }
158
+ // npm access grant read-only @scope:team <pkg> → PUT /-/team/:orgName/:teamName/package
159
+ async grantPackageAccess(ctx, orgName, teamName, body) {
160
+ const { team } = await this.requireTeamWriteAccess(ctx, orgName, teamName);
161
+ if (!body.package) {
162
+ throw new UnprocessableEntityError('package is required');
163
+ }
164
+ const [scope, name] = getScopeAndName(body.package);
165
+ const pkg = await this.packageRepository.findPackage(scope, name);
166
+ if (!pkg) {
167
+ throw new NotFoundError(`Package "${body.package}" not found`);
168
+ }
169
+ await this.teamService.grantPackageAccess(team.teamId, pkg.packageId);
170
+ return { ok: true };
171
+ }
172
+ // npm access revoke @scope:team <pkg> → DELETE /-/team/:orgName/:teamName/package body:{package}
173
+ async revokePackageAccess(ctx, orgName, teamName, body) {
174
+ const { team } = await this.requireTeamWriteAccess(ctx, orgName, teamName);
175
+ if (!body.package) {
176
+ throw new UnprocessableEntityError('package is required');
177
+ }
178
+ const [scope, name] = getScopeAndName(body.package);
179
+ const pkg = await this.packageRepository.findPackage(scope, name);
180
+ if (!pkg) {
181
+ throw new NotFoundError(`Package "${body.package}" not found`);
182
+ }
183
+ await this.teamService.revokePackageAccess(team.teamId, pkg.packageId);
184
+ return { ok: true };
185
+ }
186
+ };
187
+ __decorate([
188
+ Inject(),
189
+ __metadata("design:type", Function)
190
+ ], TeamController.prototype, "orgService", void 0);
191
+ __decorate([
192
+ Inject(),
193
+ __metadata("design:type", Function)
194
+ ], TeamController.prototype, "teamService", void 0);
195
+ __decorate([
196
+ Inject(),
197
+ __metadata("design:type", Function)
198
+ ], TeamController.prototype, "teamRepository", void 0);
199
+ __decorate([
200
+ HTTPMethod({
201
+ path: '/-/org/:orgName/team',
202
+ method: HTTPMethodEnum.PUT,
203
+ }),
204
+ __param(0, HTTPContext()),
205
+ __param(1, HTTPParam()),
206
+ __param(2, HTTPBody()),
207
+ __metadata("design:type", Function),
208
+ __metadata("design:paramtypes", [Context, String, Object]),
209
+ __metadata("design:returntype", Promise)
210
+ ], TeamController.prototype, "createTeam", null);
211
+ __decorate([
212
+ HTTPMethod({
213
+ path: '/-/org/:orgName/team',
214
+ method: HTTPMethodEnum.GET,
215
+ }),
216
+ __param(0, HTTPContext()),
217
+ __param(1, HTTPParam()),
218
+ __metadata("design:type", Function),
219
+ __metadata("design:paramtypes", [Context, String]),
220
+ __metadata("design:returntype", Promise)
221
+ ], TeamController.prototype, "listTeams", null);
222
+ __decorate([
223
+ HTTPMethod({
224
+ path: '/-/team/:orgName/:teamName',
225
+ method: HTTPMethodEnum.GET,
226
+ }),
227
+ __param(0, HTTPContext()),
228
+ __param(1, HTTPParam()),
229
+ __param(2, HTTPParam()),
230
+ __metadata("design:type", Function),
231
+ __metadata("design:paramtypes", [Context, String, String]),
232
+ __metadata("design:returntype", Promise)
233
+ ], TeamController.prototype, "showTeam", null);
234
+ __decorate([
235
+ HTTPMethod({
236
+ path: '/-/team/:orgName/:teamName',
237
+ method: HTTPMethodEnum.DELETE,
238
+ }),
239
+ __param(0, HTTPContext()),
240
+ __param(1, HTTPParam()),
241
+ __param(2, HTTPParam()),
242
+ __metadata("design:type", Function),
243
+ __metadata("design:paramtypes", [Context, String, String]),
244
+ __metadata("design:returntype", Promise)
245
+ ], TeamController.prototype, "removeTeam", null);
246
+ __decorate([
247
+ HTTPMethod({
248
+ path: '/-/team/:orgName/:teamName/user',
249
+ method: HTTPMethodEnum.GET,
250
+ }),
251
+ __param(0, HTTPContext()),
252
+ __param(1, HTTPParam()),
253
+ __param(2, HTTPParam()),
254
+ __metadata("design:type", Function),
255
+ __metadata("design:paramtypes", [Context, String, String]),
256
+ __metadata("design:returntype", Promise)
257
+ ], TeamController.prototype, "listTeamMembers", null);
258
+ __decorate([
259
+ HTTPMethod({
260
+ path: '/-/team/:orgName/:teamName/user',
261
+ method: HTTPMethodEnum.PUT,
262
+ }),
263
+ __param(0, HTTPContext()),
264
+ __param(1, HTTPParam()),
265
+ __param(2, HTTPParam()),
266
+ __param(3, HTTPBody()),
267
+ __metadata("design:type", Function),
268
+ __metadata("design:paramtypes", [Context, String, String, Object]),
269
+ __metadata("design:returntype", Promise)
270
+ ], TeamController.prototype, "addTeamMember", null);
271
+ __decorate([
272
+ HTTPMethod({
273
+ path: '/-/team/:orgName/:teamName/user',
274
+ method: HTTPMethodEnum.DELETE,
275
+ }),
276
+ __param(0, HTTPContext()),
277
+ __param(1, HTTPParam()),
278
+ __param(2, HTTPParam()),
279
+ __param(3, HTTPBody()),
280
+ __metadata("design:type", Function),
281
+ __metadata("design:paramtypes", [Context, String, String, Object]),
282
+ __metadata("design:returntype", Promise)
283
+ ], TeamController.prototype, "removeTeamMember", null);
284
+ __decorate([
285
+ HTTPMethod({
286
+ path: '/-/team/:orgName/:teamName/package',
287
+ method: HTTPMethodEnum.GET,
288
+ }),
289
+ __param(0, HTTPContext()),
290
+ __param(1, HTTPParam()),
291
+ __param(2, HTTPParam()),
292
+ __metadata("design:type", Function),
293
+ __metadata("design:paramtypes", [Context, String, String]),
294
+ __metadata("design:returntype", Promise)
295
+ ], TeamController.prototype, "listTeamPackages", null);
296
+ __decorate([
297
+ HTTPMethod({
298
+ path: '/-/team/:orgName/:teamName/package',
299
+ method: HTTPMethodEnum.PUT,
300
+ }),
301
+ __param(0, HTTPContext()),
302
+ __param(1, HTTPParam()),
303
+ __param(2, HTTPParam()),
304
+ __param(3, HTTPBody()),
305
+ __metadata("design:type", Function),
306
+ __metadata("design:paramtypes", [Context, String, String, Object]),
307
+ __metadata("design:returntype", Promise)
308
+ ], TeamController.prototype, "grantPackageAccess", null);
309
+ __decorate([
310
+ HTTPMethod({
311
+ path: '/-/team/:orgName/:teamName/package',
312
+ method: HTTPMethodEnum.DELETE,
313
+ }),
314
+ __param(0, HTTPContext()),
315
+ __param(1, HTTPParam()),
316
+ __param(2, HTTPParam()),
317
+ __param(3, HTTPBody()),
318
+ __metadata("design:type", Function),
319
+ __metadata("design:paramtypes", [Context, String, String, Object]),
320
+ __metadata("design:returntype", Promise)
321
+ ], TeamController.prototype, "revokePackageAccess", null);
322
+ TeamController = __decorate([
323
+ HTTPController()
324
+ ], TeamController);
325
+ export { TeamController };
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVhbUNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hcHAvcG9ydC9jb250cm9sbGVyL1RlYW1Db250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3BILE9BQU8sRUFBRSxhQUFhLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSTlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3RELElBQU0sY0FBYyxHQUFwQixNQUFNLGNBQWUsU0FBUSxrQkFBa0I7SUFVNUMsZUFBZSxDQUFDLE9BQWU7UUFDckMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsOERBQThEO0lBQ3RELEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBZTtRQUNuQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8sS0FBSyxDQUFDLHFCQUFxQixDQUFDLEdBQVksRUFBRSxPQUFlO1FBQy9ELE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUs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
@@ -24,6 +24,8 @@ let DownloadPackageVersionTarController = class DownloadPackageVersionTarControl
24
24
  ctx.status = 204;
25
25
  }
26
26
  async download(ctx, fullname, filenameWithVersion) {
27
+ const [scope, name] = getScopeAndName(fullname);
28
+ await this.userRoleManager.checkReadAccess(ctx, scope, name);
27
29
  // tgz file storeKey: `/packages/${this.fullname}/${version}/${filename}`
28
30
  const version = this.getAndCheckVersionFromFilename(ctx, fullname, filenameWithVersion);
29
31
  const storeKey = `/packages/${fullname}/${version}/${filenameWithVersion}.tgz`;
@@ -189,4 +191,4 @@ DownloadPackageVersionTarController = __decorate([
189
191
  HTTPController()
190
192
  ], DownloadPackageVersionTarController);
191
193
  export { DownloadPackageVersionTarController };
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG93bmxvYWRQYWNrYWdlVmVyc2lvblRhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2FwcC9wb3J0L2NvbnRyb2xsZXIvcGFja2FnZS9Eb3dubG9hZFBhY2thZ2VWZXJzaW9uVGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQztBQUMxRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFLdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHdkQsSUFBTSxtQ0FBbUMsR0FBekMsTUFBTSxtQ0FBb0MsU0FBUSxrQkFBa0I7SUFZekUsMENBQTBDO0lBTXBDLEFBQU4sS0FBSyxDQUFDLGtCQUFrQixDQUFnQixHQUFZO1FBQ2xELEdBQUcsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDNUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNwRCxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBT0ssQUFBTixLQUFLLENBQUMsUUFBUSxDQUFnQixHQUFZLEVBQWUsUUFBZ0IsRUFBZSxtQkFBMkI7UUFDakgseUVBQXlFO1FBQ3pFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFF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
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG93bmxvYWRQYWNrYWdlVmVyc2lvblRhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2FwcC9wb3J0L2NvbnRyb2xsZXIvcGFja2FnZS9Eb3dubG9hZFBhY2thZ2VWZXJzaW9uVGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQztBQUMxRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFLdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHdkQsSUFBTSxtQ0FBbUMsR0FBekMsTUFBTSxtQ0FBb0MsU0FBUSxrQkFBa0I7SUFZekUsMENBQTBDO0lBTXBDLEFBQU4sS0FBSyxDQUFDLGtCQUFrQixDQUFnQixHQUFZO1FBQ2xELEdBQUcsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDNUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNwRCxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBT0ssQUFBTixLQUFLLENBQUMsUUFBUSxDQUFnQixHQUFZLEVBQWUsUUFBZ0IsRUFBZSxtQkFBMkI7UUFDakgsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsTUFB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
@@ -5,6 +5,7 @@ export declare class ShowPackageController extends AbstractController {
5
5
  private cacheService;
6
6
  private proxyCacheService;
7
7
  private bugVersionService;
8
+ private setCacheHeaders;
8
9
  show(ctx: Context, fullname: string): Promise<Buffer<ArrayBufferLike> | undefined>;
9
10
  private getFullManifestsBytes;
10
11
  private getFullManifestsBytesWithJSONBuilder;
@@ -18,7 +18,17 @@ import { DIST_NAMES } from "../../../core/entity/Package.js";
18
18
  import { BugVersionService } from "../../../core/service/BugVersionService.js";
19
19
  import { AbstractController } from "../AbstractController.js";
20
20
  let ShowPackageController = class ShowPackageController extends AbstractController {
21
+ setCacheHeaders(ctx, isTeamBound) {
22
+ if (isTeamBound) {
23
+ ctx.set('cache-control', 'private, no-store');
24
+ }
25
+ else {
26
+ this.setCDNHeaders(ctx);
27
+ }
28
+ }
21
29
  async show(ctx, fullname) {
30
+ const [scope, name] = getScopeAndName(fullname);
31
+ const isTeamBound = await this.userRoleManager.checkReadAccess(ctx, scope, name);
22
32
  const isSync = isSyncWorkerRequest(ctx);
23
33
  const isFullManifests = ctx.accepts(['json', ABBREVIATED_META_TYPE]) !== ABBREVIATED_META_TYPE;
24
34
  // handle cache
@@ -32,7 +42,7 @@ let ShowPackageController = class ShowPackageController extends AbstractControll
32
42
  }
33
43
  if (requestEtag === cacheEtag) {
34
44
  // make sure CDN cache header set here
35
- this.setCDNHeaders(ctx);
45
+ this.setCacheHeaders(ctx, isTeamBound);
36
46
  // match etag, set status 304
37
47
  ctx.status = 304;
38
48
  return;
@@ -42,7 +52,7 @@ let ShowPackageController = class ShowPackageController extends AbstractControll
42
52
  if (cacheBytes && cacheBytes.length > 0) {
43
53
  ctx.set('etag', `W/${cacheEtag}`);
44
54
  ctx.type = 'json';
45
- this.setCDNHeaders(ctx);
55
+ this.setCacheHeaders(ctx, isTeamBound);
46
56
  return cacheBytes;
47
57
  }
48
58
  }
@@ -60,7 +70,7 @@ let ShowPackageController = class ShowPackageController extends AbstractControll
60
70
  throw this.createPackageNotFoundErrorWithRedirect(fullname, undefined, allowSync);
61
71
  }
62
72
  if (blockReason) {
63
- this.setCDNHeaders(ctx);
73
+ this.setCacheHeaders(ctx, isTeamBound);
64
74
  throw this.createPackageBlockError(blockReason, fullname);
65
75
  }
66
76
  // only set cache with normal request
@@ -75,7 +85,7 @@ let ShowPackageController = class ShowPackageController extends AbstractControll
75
85
  // should set weak etag avoid nginx remove it
76
86
  ctx.set('etag', `W/${etag}`);
77
87
  ctx.type = 'json';
78
- this.setCDNHeaders(ctx);
88
+ this.setCacheHeaders(ctx, isTeamBound);
79
89
  return cacheBytes;
80
90
  }
81
91
  async getFullManifestsBytes(ctx, fullname, isFullManifests, isSync) {
@@ -153,4 +163,4 @@ ShowPackageController = __decorate([
153
163
  HTTPController()
154
164
  ], ShowPackageController);
155
165
  export { ShowPackageController };
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hvd1BhY2thZ2VDb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXBwL3BvcnQvY29udHJvbGxlci9wYWNrYWdlL1Nob3dQYWNrYWdlQ29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTFHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBSS9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3ZELElBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXNCLFNBQVEsa0JBQWtCO0lBZ0JyRCxBQUFOLEtBQUssQ0FBQyxJQUFJLENBQWdCLEdBQVksRUFBZSxRQUFnQjtRQUNuRSxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDLENBQUMsS0FBSyxxQkFBcUIsQ0FBQztRQUUvRixlQUFlO1FBQ2Ysa0NBQWtDO1FBQ2xDLElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxj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
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hvd1BhY2thZ2VDb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXBwL3BvcnQvY29udHJvbGxlci9wYWNrYWdlL1Nob3dQYWNrYWdlQ29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTFHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBSS9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3ZELElBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXNCLFNBQVEsa0JBQWtCO0lBVW5ELGVBQWUsQ0FBQyxHQUFZLEVBQUUsV0FBb0I7UUFDeEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQVFLLEFBQU4sS0FBSyxDQUFDLElBQUksQ0FBZ0IsR0FBWSxFQUFlLFFBQWdCO1FBQ25FLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxD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
@@ -23,6 +23,7 @@ let ShowPackageVersionController = class ShowPackageVersionController extends Ab
23
23
  // https://github.com/npm/registry/blob/master/docs/responses/package-metadata.md#full-metadata-format
24
24
  ctx.tValidate(Spec, `${fullname}@${versionSpec}`);
25
25
  const [scope, name] = getScopeAndName(fullname);
26
+ await this.userRoleManager.checkReadAccess(ctx, scope, name);
26
27
  const isSync = isSyncWorkerRequest(ctx);
27
28
  const isFullManifests = ctx.accepts(['json', ABBREVIATED_META_TYPE]) !== ABBREVIATED_META_TYPE;
28
29
  const { blockReason, manifest, pkg } = await this.packageManagerService.showPackageVersionManifest(scope, name, versionSpec, isSync, isFullManifests);
@@ -72,4 +73,4 @@ ShowPackageVersionController = __decorate([
72
73
  HTTPController()
73
74
  ], ShowPackageVersionController);
74
75
  export { ShowPackageVersionController };
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hvd1BhY2thZ2VWZXJzaW9uQ29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2FwcC9wb3J0L2NvbnRyb2xsZXIvcGFja2FnZS9TaG93UGFja2FnZVZlcnNpb25Db250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUc3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHdkQsSUFBTSw0QkFBNEIsR0FBbEMsTUFBTSw0QkFBNkIsU0FBUSxrQkFBa0I7SUFXNUQsQUFBTixLQUFLLENBQUMsSUFBSSxDQUFnQixHQUFZLEVBQWUsUUFBZ0IsRUFBZSxXQUFtQjtRQUNyRyxzR0FBc0c7UUFDdEcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDLENBQUMsS0FBSyxxQkFBcUIsQ0FBQztRQUUvRixNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQywwQkFBMEIsQ0FDaEcsS0FBSyxFQUNMLElBQUksRUFDSixXQUFXLEVBQ1gsTUFBTSxFQUNOLGVBQWUsQ0FDaEIsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFekMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3JELE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztnQkFDaEYsT0FBTyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ2pHLENBQUM7WUFFRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxJQUFJLENBQUMsc0NBQXNDLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNwRixDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxhQUFhLENBQUMsR0FBRyxRQUFRLElBQUksV0FBVyxZQUFZLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGLENBQUE7QUEvQ1M7SUFEUCxNQUFNLEVBQUU7OzJFQUM0QztBQUU3QztJQURQLE1BQU0sRUFBRTs7dUVBQ29DO0FBT3ZDO0lBTEwsVUFBVSxDQUFDO1FBQ1YsOEJBQThCO1FBQzlCLElBQUksRUFBRSxjQUFjLG1CQUFtQixnQkFBZ0I7UUFDdkQsTUFBTSxFQUFFLGNBQWMsQ0FBQyxHQUFHO0tBQzNCLENBQUM7SUFDVSxXQUFBLFdBQVcsRUFBRSxDQUFBO0lBQWdCLFdBQUEsU0FBUyxFQUFFLENBQUE7SUFBb0IsV0FBQSxTQUFTLEVBQUUsQ0FBQTs7cUNBQXBELE9BQU87O3dEQXFDckM7QUFoRFUsNEJBQTRCO0lBRHhDLGNBQWMsRUFBRTtHQUNKLDRCQUE0QixDQWlEeEMifQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hvd1BhY2thZ2VWZXJzaW9uQ29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2FwcC9wb3J0L2NvbnRyb2xsZXIvcGFja2FnZS9TaG93UGFja2FnZVZlcnNpb25Db250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUc3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHdkQsSUFBTSw0QkFBNEIsR0FBbEMsTUFBTSw0QkFBNkIsU0FBUSxrQkFBa0I7SUFXNUQsQUFBTixLQUFLLENBQUMsSUFBSSxDQUFnQixHQUFZLEVBQWUsUUFBZ0IsRUFBZSxXQUFtQjtRQUNyRyxzR0FBc0c7UUFDdEcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0QsTUFBTSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLEtBQUsscUJBQXFCLENBQUM7UUFFL0YsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsMEJBQTBCLENBQ2hHLEtBQUssRUFDTCxJQUFJLEVBQ0osV0FBVyxFQUNYLE1BQU0sRUFDTixlQUFlLENBQ2hCLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXpDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNyRCxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7Z0JBQ2hGLE9BQU8sTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNqRyxDQUFDO1lBRUQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULE1BQU0sSUFBSSxDQUFDLHNDQUFzQyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDcEYsQ0FBQztZQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxNQUFNLElBQUksYUFBYSxDQUFDLEdBQUcsUUFBUSxJQUFJLFdBQVcsWUFBWSxDQUFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRixDQUFBO0FBaERTO0lBRFAsTUFBTSxFQUFFOzsyRUFDNEM7QUFFN0M7SUFEUCxNQUFNLEVBQUU7O3VFQUNvQztBQU92QztJQUxMLFVBQVUsQ0FBQztRQUNWLDhCQUE4QjtRQUM5QixJQUFJLEVBQUUsY0FBYyxtQkFBbUIsZ0JBQWdCO1FBQ3ZELE1BQU0sRUFBRSxjQUFjLENBQUMsR0FBRztLQUMzQixDQUFDO0lBQ1UsV0FBQSxXQUFXLEVBQUUsQ0FBQTtJQUFnQixXQUFBLFNBQVMsRUFBRSxDQUFBO0lBQW9CLFdBQUEsU0FBUyxFQUFFLENBQUE7O3FDQUFwRCxPQUFPOzt3REFzQ3JDO0FBakRVLDRCQUE0QjtJQUR4QyxjQUFjLEVBQUU7R0FDSiw0QkFBNEIsQ0FrRHhDIn0=
@@ -0,0 +1,23 @@
1
+ import { Org } from '../core/entity/Org.ts';
2
+ import { OrgMember } from '../core/entity/OrgMember.ts';
3
+ import { Team } from '../core/entity/Team.ts';
4
+ import { TeamMember } from '../core/entity/TeamMember.ts';
5
+ import { AbstractRepository } from './AbstractRepository.ts';
6
+ export declare class OrgRepository extends AbstractRepository {
7
+ private readonly Org;
8
+ private readonly OrgMember;
9
+ private readonly Team;
10
+ private readonly TeamMember;
11
+ private readonly TeamPackage;
12
+ findOrgByName(name: string): Promise<Org | null>;
13
+ findOrgByOrgId(orgId: string): Promise<Org | null>;
14
+ saveOrg(org: Org): Promise<void>;
15
+ removeOrg(orgId: string): Promise<void>;
16
+ findMember(orgId: string, userId: string): Promise<OrgMember | null>;
17
+ saveMember(member: OrgMember): Promise<void>;
18
+ removeMember(orgId: string, userId: string): Promise<void>;
19
+ listMembers(orgId: string): Promise<OrgMember[]>;
20
+ removeAllMembers(orgId: string): Promise<void>;
21
+ createOrgCascade(org: Org, developersTeam: Team, ownerMember: OrgMember, teamMember: TeamMember): Promise<void>;
22
+ removeOrgCascade(orgId: string): Promise<void>;
23
+ }