@aepstore-dev/contracts 1.67.0 → 1.68.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/gen/activity.js +1 -1
- package/gen/activity.ts +270 -270
- package/gen/auth.js +1 -1
- package/gen/auth.ts +323 -323
- package/gen/mail.js +1 -1
- package/gen/mail.ts +121 -121
- package/gen/payments.js +1 -1
- package/gen/payments.ts +1048 -1048
- package/gen/products.d.ts +2 -4
- package/gen/products.ts +2 -4
- package/gen/taxonomy.js +1 -1
- package/gen/taxonomy.ts +185 -185
- package/gen/upload.js +1 -1
- package/gen/upload.ts +287 -287
- package/gen/users.js +1 -1
- package/gen/users.ts +1026 -1026
- package/package.json +1 -1
- package/proto/products.proto +4 -4
package/gen/upload.ts
CHANGED
|
@@ -1,287 +1,287 @@
|
|
|
1
|
-
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
2
|
-
// versions:
|
|
3
|
-
// protoc-gen-ts_proto v2.10.1
|
|
4
|
-
// protoc v7.35.
|
|
5
|
-
// source: upload.proto
|
|
6
|
-
|
|
7
|
-
/* eslint-disable */
|
|
8
|
-
import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
|
|
9
|
-
import { Observable } from "rxjs";
|
|
10
|
-
|
|
11
|
-
export const protobufPackage = "upload.v1";
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Determines the object key prefix (and future ACL/privacy policy).
|
|
15
|
-
* ATTACHMENT = paid product deliverable (private; presigned GET only after purchase).
|
|
16
|
-
* MEDIA / AVATAR / BANNER = preview assets.
|
|
17
|
-
*/
|
|
18
|
-
export enum UploadKind {
|
|
19
|
-
UPLOAD_KIND_UNSPECIFIED = 0,
|
|
20
|
-
UPLOAD_KIND_ATTACHMENT = 1,
|
|
21
|
-
UPLOAD_KIND_MEDIA = 2,
|
|
22
|
-
UPLOAD_KIND_AVATAR = 3,
|
|
23
|
-
UPLOAD_KIND_BANNER = 4,
|
|
24
|
-
/** UPLOAD_KIND_ICON - taxonomy program/app brand icons → public/icons/ */
|
|
25
|
-
UPLOAD_KIND_ICON = 5,
|
|
26
|
-
UNRECOGNIZED = -1,
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export interface ListObjectsRequest {
|
|
30
|
-
prefix: string;
|
|
31
|
-
/** empty for the first page */
|
|
32
|
-
continuationToken: string;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export interface StoredObject {
|
|
36
|
-
key: string;
|
|
37
|
-
/** ISO 8601 */
|
|
38
|
-
lastModified: string;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export interface ListObjectsResponse {
|
|
42
|
-
objects: StoredObject[];
|
|
43
|
-
/** empty when there are no more pages */
|
|
44
|
-
nextContinuationToken: string;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export interface Ok {
|
|
48
|
-
ok: boolean;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export interface CreateMultipartUploadRequest {
|
|
52
|
-
fileName: string;
|
|
53
|
-
mimeType: string;
|
|
54
|
-
fileSize: number;
|
|
55
|
-
kind: UploadKind;
|
|
56
|
-
/** user initiating, for key namespacing + audit */
|
|
57
|
-
ownerId: string;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export interface CreateMultipartUploadResponse {
|
|
61
|
-
/** S3 multipart UploadId */
|
|
62
|
-
uploadId: string;
|
|
63
|
-
/** object key this service generated */
|
|
64
|
-
fileKey: string;
|
|
65
|
-
/** recommended part size (bytes) the client should slice with */
|
|
66
|
-
partSize: number;
|
|
67
|
-
/** number of parts for file_size at part_size */
|
|
68
|
-
partCount: number;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export interface SignPartRequest {
|
|
72
|
-
fileKey: string;
|
|
73
|
-
uploadId: string;
|
|
74
|
-
/** 1-based */
|
|
75
|
-
partNumber: number;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export interface SignPartResponse {
|
|
79
|
-
/** presigned PUT URL for this single part */
|
|
80
|
-
url: string;
|
|
81
|
-
expiresIn: number;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export interface CompletedPart {
|
|
85
|
-
partNumber: number;
|
|
86
|
-
/** ETag the client received in the S3 PUT response header for this part */
|
|
87
|
-
etag: string;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export interface CompleteMultipartUploadRequest {
|
|
91
|
-
fileKey: string;
|
|
92
|
-
uploadId: string;
|
|
93
|
-
parts: CompletedPart[];
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
export interface CompleteMultipartUploadResponse {
|
|
97
|
-
fileKey: string;
|
|
98
|
-
/** final object location (internal reference) */
|
|
99
|
-
location: string;
|
|
100
|
-
fileSize: number;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export interface AbortMultipartUploadRequest {
|
|
104
|
-
fileKey: string;
|
|
105
|
-
uploadId: string;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export interface CreateUploadUrlRequest {
|
|
109
|
-
fileName: string;
|
|
110
|
-
mimeType: string;
|
|
111
|
-
kind: UploadKind;
|
|
112
|
-
ownerId: string;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export interface CreateUploadUrlResponse {
|
|
116
|
-
/** presigned PUT URL (client PUTs the whole file) */
|
|
117
|
-
url: string;
|
|
118
|
-
fileKey: string;
|
|
119
|
-
expiresIn: number;
|
|
120
|
-
/** final object URL (only meaningful for public kinds) */
|
|
121
|
-
publicUrl: string;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
export interface SignedUrlRequest {
|
|
125
|
-
fileKey: string;
|
|
126
|
-
/** optional, default 3600 */
|
|
127
|
-
expiresIn: number;
|
|
128
|
-
/** optional: forces Content-Disposition attachment filename */
|
|
129
|
-
downloadFileName: string;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
export interface SignedUrlResponse {
|
|
133
|
-
signedUrl: string;
|
|
134
|
-
expiresIn: number;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
export interface HeadObjectRequest {
|
|
138
|
-
fileKey: string;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
export interface HeadObjectResponse {
|
|
142
|
-
/** false only when the object is definitively absent (404) */
|
|
143
|
-
exists: boolean;
|
|
144
|
-
/** bytes (0 when absent) */
|
|
145
|
-
size: number;
|
|
146
|
-
contentType: string;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
export interface DeleteObjectRequest {
|
|
150
|
-
fileKey: string;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
export const UPLOAD_V1_PACKAGE_NAME = "upload.v1";
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Thin signing service. File bytes NEVER pass through this service — clients
|
|
157
|
-
* upload/download directly to/from S3 (Yandex Object Storage) using presigned
|
|
158
|
-
* URLs this service mints. Memory/bandwidth flat regardless of file size.
|
|
159
|
-
*
|
|
160
|
-
* Large files (product deliverables, up to ~1GB) use the multipart flow:
|
|
161
|
-
* CreateMultipartUpload → (SignPart × N, client PUTs each part to S3) →
|
|
162
|
-
* CompleteMultipartUpload (or AbortMultipartUpload on failure)
|
|
163
|
-
*
|
|
164
|
-
* Small files (preview images, avatars) use the single-PUT flow: CreateUploadUrl.
|
|
165
|
-
*
|
|
166
|
-
* Downloads are gated elsewhere (products-service verifies purchase, then calls
|
|
167
|
-
* GenerateSignedUrl). This service does not know about purchases.
|
|
168
|
-
*/
|
|
169
|
-
|
|
170
|
-
export interface UploadServiceClient {
|
|
171
|
-
createMultipartUpload(request: CreateMultipartUploadRequest): Observable<CreateMultipartUploadResponse>;
|
|
172
|
-
|
|
173
|
-
signPart(request: SignPartRequest): Observable<SignPartResponse>;
|
|
174
|
-
|
|
175
|
-
completeMultipartUpload(request: CompleteMultipartUploadRequest): Observable<CompleteMultipartUploadResponse>;
|
|
176
|
-
|
|
177
|
-
abortMultipartUpload(request: AbortMultipartUploadRequest): Observable<Ok>;
|
|
178
|
-
|
|
179
|
-
createUploadUrl(request: CreateUploadUrlRequest): Observable<CreateUploadUrlResponse>;
|
|
180
|
-
|
|
181
|
-
generateSignedUrl(request: SignedUrlRequest): Observable<SignedUrlResponse>;
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* Verify an object actually exists (and read its size/type). Used by
|
|
185
|
-
* products-service to confirm a client-echoed fileKey points at a real
|
|
186
|
-
* uploaded object before persisting attachment metadata.
|
|
187
|
-
*/
|
|
188
|
-
|
|
189
|
-
headObject(request: HeadObjectRequest): Observable<HeadObjectResponse>;
|
|
190
|
-
|
|
191
|
-
deleteObject(request: DeleteObjectRequest): Observable<Ok>;
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* List objects under a prefix (paginated) — for GC/reconciliation jobs
|
|
195
|
-
* (e.g. tasks-service sweeping orphaned uploads). Not for user traffic.
|
|
196
|
-
*/
|
|
197
|
-
|
|
198
|
-
listObjects(request: ListObjectsRequest): Observable<ListObjectsResponse>;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Thin signing service. File bytes NEVER pass through this service — clients
|
|
203
|
-
* upload/download directly to/from S3 (Yandex Object Storage) using presigned
|
|
204
|
-
* URLs this service mints. Memory/bandwidth flat regardless of file size.
|
|
205
|
-
*
|
|
206
|
-
* Large files (product deliverables, up to ~1GB) use the multipart flow:
|
|
207
|
-
* CreateMultipartUpload → (SignPart × N, client PUTs each part to S3) →
|
|
208
|
-
* CompleteMultipartUpload (or AbortMultipartUpload on failure)
|
|
209
|
-
*
|
|
210
|
-
* Small files (preview images, avatars) use the single-PUT flow: CreateUploadUrl.
|
|
211
|
-
*
|
|
212
|
-
* Downloads are gated elsewhere (products-service verifies purchase, then calls
|
|
213
|
-
* GenerateSignedUrl). This service does not know about purchases.
|
|
214
|
-
*/
|
|
215
|
-
|
|
216
|
-
export interface UploadServiceController {
|
|
217
|
-
createMultipartUpload(
|
|
218
|
-
request: CreateMultipartUploadRequest,
|
|
219
|
-
): Promise<CreateMultipartUploadResponse> | Observable<CreateMultipartUploadResponse> | CreateMultipartUploadResponse;
|
|
220
|
-
|
|
221
|
-
signPart(request: SignPartRequest): Promise<SignPartResponse> | Observable<SignPartResponse> | SignPartResponse;
|
|
222
|
-
|
|
223
|
-
completeMultipartUpload(
|
|
224
|
-
request: CompleteMultipartUploadRequest,
|
|
225
|
-
):
|
|
226
|
-
| Promise<CompleteMultipartUploadResponse>
|
|
227
|
-
| Observable<CompleteMultipartUploadResponse>
|
|
228
|
-
| CompleteMultipartUploadResponse;
|
|
229
|
-
|
|
230
|
-
abortMultipartUpload(request: AbortMultipartUploadRequest): Promise<Ok> | Observable<Ok> | Ok;
|
|
231
|
-
|
|
232
|
-
createUploadUrl(
|
|
233
|
-
request: CreateUploadUrlRequest,
|
|
234
|
-
): Promise<CreateUploadUrlResponse> | Observable<CreateUploadUrlResponse> | CreateUploadUrlResponse;
|
|
235
|
-
|
|
236
|
-
generateSignedUrl(
|
|
237
|
-
request: SignedUrlRequest,
|
|
238
|
-
): Promise<SignedUrlResponse> | Observable<SignedUrlResponse> | SignedUrlResponse;
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* Verify an object actually exists (and read its size/type). Used by
|
|
242
|
-
* products-service to confirm a client-echoed fileKey points at a real
|
|
243
|
-
* uploaded object before persisting attachment metadata.
|
|
244
|
-
*/
|
|
245
|
-
|
|
246
|
-
headObject(
|
|
247
|
-
request: HeadObjectRequest,
|
|
248
|
-
): Promise<HeadObjectResponse> | Observable<HeadObjectResponse> | HeadObjectResponse;
|
|
249
|
-
|
|
250
|
-
deleteObject(request: DeleteObjectRequest): Promise<Ok> | Observable<Ok> | Ok;
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* List objects under a prefix (paginated) — for GC/reconciliation jobs
|
|
254
|
-
* (e.g. tasks-service sweeping orphaned uploads). Not for user traffic.
|
|
255
|
-
*/
|
|
256
|
-
|
|
257
|
-
listObjects(
|
|
258
|
-
request: ListObjectsRequest,
|
|
259
|
-
): Promise<ListObjectsResponse> | Observable<ListObjectsResponse> | ListObjectsResponse;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
export function UploadServiceControllerMethods() {
|
|
263
|
-
return function (constructor: Function) {
|
|
264
|
-
const grpcMethods: string[] = [
|
|
265
|
-
"createMultipartUpload",
|
|
266
|
-
"signPart",
|
|
267
|
-
"completeMultipartUpload",
|
|
268
|
-
"abortMultipartUpload",
|
|
269
|
-
"createUploadUrl",
|
|
270
|
-
"generateSignedUrl",
|
|
271
|
-
"headObject",
|
|
272
|
-
"deleteObject",
|
|
273
|
-
"listObjects",
|
|
274
|
-
];
|
|
275
|
-
for (const method of grpcMethods) {
|
|
276
|
-
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|
|
277
|
-
GrpcMethod("UploadService", method)(constructor.prototype[method], method, descriptor);
|
|
278
|
-
}
|
|
279
|
-
const grpcStreamMethods: string[] = [];
|
|
280
|
-
for (const method of grpcStreamMethods) {
|
|
281
|
-
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|
|
282
|
-
GrpcStreamMethod("UploadService", method)(constructor.prototype[method], method, descriptor);
|
|
283
|
-
}
|
|
284
|
-
};
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
export const UPLOAD_SERVICE_NAME = "UploadService";
|
|
1
|
+
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
2
|
+
// versions:
|
|
3
|
+
// protoc-gen-ts_proto v2.10.1
|
|
4
|
+
// protoc v7.35.0
|
|
5
|
+
// source: upload.proto
|
|
6
|
+
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
|
|
9
|
+
import { Observable } from "rxjs";
|
|
10
|
+
|
|
11
|
+
export const protobufPackage = "upload.v1";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Determines the object key prefix (and future ACL/privacy policy).
|
|
15
|
+
* ATTACHMENT = paid product deliverable (private; presigned GET only after purchase).
|
|
16
|
+
* MEDIA / AVATAR / BANNER = preview assets.
|
|
17
|
+
*/
|
|
18
|
+
export enum UploadKind {
|
|
19
|
+
UPLOAD_KIND_UNSPECIFIED = 0,
|
|
20
|
+
UPLOAD_KIND_ATTACHMENT = 1,
|
|
21
|
+
UPLOAD_KIND_MEDIA = 2,
|
|
22
|
+
UPLOAD_KIND_AVATAR = 3,
|
|
23
|
+
UPLOAD_KIND_BANNER = 4,
|
|
24
|
+
/** UPLOAD_KIND_ICON - taxonomy program/app brand icons → public/icons/ */
|
|
25
|
+
UPLOAD_KIND_ICON = 5,
|
|
26
|
+
UNRECOGNIZED = -1,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface ListObjectsRequest {
|
|
30
|
+
prefix: string;
|
|
31
|
+
/** empty for the first page */
|
|
32
|
+
continuationToken: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface StoredObject {
|
|
36
|
+
key: string;
|
|
37
|
+
/** ISO 8601 */
|
|
38
|
+
lastModified: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface ListObjectsResponse {
|
|
42
|
+
objects: StoredObject[];
|
|
43
|
+
/** empty when there are no more pages */
|
|
44
|
+
nextContinuationToken: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface Ok {
|
|
48
|
+
ok: boolean;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface CreateMultipartUploadRequest {
|
|
52
|
+
fileName: string;
|
|
53
|
+
mimeType: string;
|
|
54
|
+
fileSize: number;
|
|
55
|
+
kind: UploadKind;
|
|
56
|
+
/** user initiating, for key namespacing + audit */
|
|
57
|
+
ownerId: string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface CreateMultipartUploadResponse {
|
|
61
|
+
/** S3 multipart UploadId */
|
|
62
|
+
uploadId: string;
|
|
63
|
+
/** object key this service generated */
|
|
64
|
+
fileKey: string;
|
|
65
|
+
/** recommended part size (bytes) the client should slice with */
|
|
66
|
+
partSize: number;
|
|
67
|
+
/** number of parts for file_size at part_size */
|
|
68
|
+
partCount: number;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface SignPartRequest {
|
|
72
|
+
fileKey: string;
|
|
73
|
+
uploadId: string;
|
|
74
|
+
/** 1-based */
|
|
75
|
+
partNumber: number;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface SignPartResponse {
|
|
79
|
+
/** presigned PUT URL for this single part */
|
|
80
|
+
url: string;
|
|
81
|
+
expiresIn: number;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface CompletedPart {
|
|
85
|
+
partNumber: number;
|
|
86
|
+
/** ETag the client received in the S3 PUT response header for this part */
|
|
87
|
+
etag: string;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface CompleteMultipartUploadRequest {
|
|
91
|
+
fileKey: string;
|
|
92
|
+
uploadId: string;
|
|
93
|
+
parts: CompletedPart[];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface CompleteMultipartUploadResponse {
|
|
97
|
+
fileKey: string;
|
|
98
|
+
/** final object location (internal reference) */
|
|
99
|
+
location: string;
|
|
100
|
+
fileSize: number;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface AbortMultipartUploadRequest {
|
|
104
|
+
fileKey: string;
|
|
105
|
+
uploadId: string;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export interface CreateUploadUrlRequest {
|
|
109
|
+
fileName: string;
|
|
110
|
+
mimeType: string;
|
|
111
|
+
kind: UploadKind;
|
|
112
|
+
ownerId: string;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export interface CreateUploadUrlResponse {
|
|
116
|
+
/** presigned PUT URL (client PUTs the whole file) */
|
|
117
|
+
url: string;
|
|
118
|
+
fileKey: string;
|
|
119
|
+
expiresIn: number;
|
|
120
|
+
/** final object URL (only meaningful for public kinds) */
|
|
121
|
+
publicUrl: string;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export interface SignedUrlRequest {
|
|
125
|
+
fileKey: string;
|
|
126
|
+
/** optional, default 3600 */
|
|
127
|
+
expiresIn: number;
|
|
128
|
+
/** optional: forces Content-Disposition attachment filename */
|
|
129
|
+
downloadFileName: string;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export interface SignedUrlResponse {
|
|
133
|
+
signedUrl: string;
|
|
134
|
+
expiresIn: number;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export interface HeadObjectRequest {
|
|
138
|
+
fileKey: string;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export interface HeadObjectResponse {
|
|
142
|
+
/** false only when the object is definitively absent (404) */
|
|
143
|
+
exists: boolean;
|
|
144
|
+
/** bytes (0 when absent) */
|
|
145
|
+
size: number;
|
|
146
|
+
contentType: string;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export interface DeleteObjectRequest {
|
|
150
|
+
fileKey: string;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export const UPLOAD_V1_PACKAGE_NAME = "upload.v1";
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Thin signing service. File bytes NEVER pass through this service — clients
|
|
157
|
+
* upload/download directly to/from S3 (Yandex Object Storage) using presigned
|
|
158
|
+
* URLs this service mints. Memory/bandwidth flat regardless of file size.
|
|
159
|
+
*
|
|
160
|
+
* Large files (product deliverables, up to ~1GB) use the multipart flow:
|
|
161
|
+
* CreateMultipartUpload → (SignPart × N, client PUTs each part to S3) →
|
|
162
|
+
* CompleteMultipartUpload (or AbortMultipartUpload on failure)
|
|
163
|
+
*
|
|
164
|
+
* Small files (preview images, avatars) use the single-PUT flow: CreateUploadUrl.
|
|
165
|
+
*
|
|
166
|
+
* Downloads are gated elsewhere (products-service verifies purchase, then calls
|
|
167
|
+
* GenerateSignedUrl). This service does not know about purchases.
|
|
168
|
+
*/
|
|
169
|
+
|
|
170
|
+
export interface UploadServiceClient {
|
|
171
|
+
createMultipartUpload(request: CreateMultipartUploadRequest): Observable<CreateMultipartUploadResponse>;
|
|
172
|
+
|
|
173
|
+
signPart(request: SignPartRequest): Observable<SignPartResponse>;
|
|
174
|
+
|
|
175
|
+
completeMultipartUpload(request: CompleteMultipartUploadRequest): Observable<CompleteMultipartUploadResponse>;
|
|
176
|
+
|
|
177
|
+
abortMultipartUpload(request: AbortMultipartUploadRequest): Observable<Ok>;
|
|
178
|
+
|
|
179
|
+
createUploadUrl(request: CreateUploadUrlRequest): Observable<CreateUploadUrlResponse>;
|
|
180
|
+
|
|
181
|
+
generateSignedUrl(request: SignedUrlRequest): Observable<SignedUrlResponse>;
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Verify an object actually exists (and read its size/type). Used by
|
|
185
|
+
* products-service to confirm a client-echoed fileKey points at a real
|
|
186
|
+
* uploaded object before persisting attachment metadata.
|
|
187
|
+
*/
|
|
188
|
+
|
|
189
|
+
headObject(request: HeadObjectRequest): Observable<HeadObjectResponse>;
|
|
190
|
+
|
|
191
|
+
deleteObject(request: DeleteObjectRequest): Observable<Ok>;
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* List objects under a prefix (paginated) — for GC/reconciliation jobs
|
|
195
|
+
* (e.g. tasks-service sweeping orphaned uploads). Not for user traffic.
|
|
196
|
+
*/
|
|
197
|
+
|
|
198
|
+
listObjects(request: ListObjectsRequest): Observable<ListObjectsResponse>;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Thin signing service. File bytes NEVER pass through this service — clients
|
|
203
|
+
* upload/download directly to/from S3 (Yandex Object Storage) using presigned
|
|
204
|
+
* URLs this service mints. Memory/bandwidth flat regardless of file size.
|
|
205
|
+
*
|
|
206
|
+
* Large files (product deliverables, up to ~1GB) use the multipart flow:
|
|
207
|
+
* CreateMultipartUpload → (SignPart × N, client PUTs each part to S3) →
|
|
208
|
+
* CompleteMultipartUpload (or AbortMultipartUpload on failure)
|
|
209
|
+
*
|
|
210
|
+
* Small files (preview images, avatars) use the single-PUT flow: CreateUploadUrl.
|
|
211
|
+
*
|
|
212
|
+
* Downloads are gated elsewhere (products-service verifies purchase, then calls
|
|
213
|
+
* GenerateSignedUrl). This service does not know about purchases.
|
|
214
|
+
*/
|
|
215
|
+
|
|
216
|
+
export interface UploadServiceController {
|
|
217
|
+
createMultipartUpload(
|
|
218
|
+
request: CreateMultipartUploadRequest,
|
|
219
|
+
): Promise<CreateMultipartUploadResponse> | Observable<CreateMultipartUploadResponse> | CreateMultipartUploadResponse;
|
|
220
|
+
|
|
221
|
+
signPart(request: SignPartRequest): Promise<SignPartResponse> | Observable<SignPartResponse> | SignPartResponse;
|
|
222
|
+
|
|
223
|
+
completeMultipartUpload(
|
|
224
|
+
request: CompleteMultipartUploadRequest,
|
|
225
|
+
):
|
|
226
|
+
| Promise<CompleteMultipartUploadResponse>
|
|
227
|
+
| Observable<CompleteMultipartUploadResponse>
|
|
228
|
+
| CompleteMultipartUploadResponse;
|
|
229
|
+
|
|
230
|
+
abortMultipartUpload(request: AbortMultipartUploadRequest): Promise<Ok> | Observable<Ok> | Ok;
|
|
231
|
+
|
|
232
|
+
createUploadUrl(
|
|
233
|
+
request: CreateUploadUrlRequest,
|
|
234
|
+
): Promise<CreateUploadUrlResponse> | Observable<CreateUploadUrlResponse> | CreateUploadUrlResponse;
|
|
235
|
+
|
|
236
|
+
generateSignedUrl(
|
|
237
|
+
request: SignedUrlRequest,
|
|
238
|
+
): Promise<SignedUrlResponse> | Observable<SignedUrlResponse> | SignedUrlResponse;
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Verify an object actually exists (and read its size/type). Used by
|
|
242
|
+
* products-service to confirm a client-echoed fileKey points at a real
|
|
243
|
+
* uploaded object before persisting attachment metadata.
|
|
244
|
+
*/
|
|
245
|
+
|
|
246
|
+
headObject(
|
|
247
|
+
request: HeadObjectRequest,
|
|
248
|
+
): Promise<HeadObjectResponse> | Observable<HeadObjectResponse> | HeadObjectResponse;
|
|
249
|
+
|
|
250
|
+
deleteObject(request: DeleteObjectRequest): Promise<Ok> | Observable<Ok> | Ok;
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* List objects under a prefix (paginated) — for GC/reconciliation jobs
|
|
254
|
+
* (e.g. tasks-service sweeping orphaned uploads). Not for user traffic.
|
|
255
|
+
*/
|
|
256
|
+
|
|
257
|
+
listObjects(
|
|
258
|
+
request: ListObjectsRequest,
|
|
259
|
+
): Promise<ListObjectsResponse> | Observable<ListObjectsResponse> | ListObjectsResponse;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export function UploadServiceControllerMethods() {
|
|
263
|
+
return function (constructor: Function) {
|
|
264
|
+
const grpcMethods: string[] = [
|
|
265
|
+
"createMultipartUpload",
|
|
266
|
+
"signPart",
|
|
267
|
+
"completeMultipartUpload",
|
|
268
|
+
"abortMultipartUpload",
|
|
269
|
+
"createUploadUrl",
|
|
270
|
+
"generateSignedUrl",
|
|
271
|
+
"headObject",
|
|
272
|
+
"deleteObject",
|
|
273
|
+
"listObjects",
|
|
274
|
+
];
|
|
275
|
+
for (const method of grpcMethods) {
|
|
276
|
+
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|
|
277
|
+
GrpcMethod("UploadService", method)(constructor.prototype[method], method, descriptor);
|
|
278
|
+
}
|
|
279
|
+
const grpcStreamMethods: string[] = [];
|
|
280
|
+
for (const method of grpcStreamMethods) {
|
|
281
|
+
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|
|
282
|
+
GrpcStreamMethod("UploadService", method)(constructor.prototype[method], method, descriptor);
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
export const UPLOAD_SERVICE_NAME = "UploadService";
|
package/gen/users.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
3
3
|
// versions:
|
|
4
4
|
// protoc-gen-ts_proto v2.10.1
|
|
5
|
-
// protoc v7.35.
|
|
5
|
+
// protoc v7.35.0
|
|
6
6
|
// source: users.proto
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.USERS_SERVICE_NAME = exports.USERS_V1_PACKAGE_NAME = exports.PremiumPeriod = exports.UserFieldsType = exports.protobufPackage = void 0;
|