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