@balena/pinejs 20.1.0-build-large-file-uploads-2-b83400458570d926f7a6abddeb7a149e89f52abe-2 → 20.1.0-build-large-file-uploads-2-10177bc0810e37a40b0f1d9ecf6705ffe0fe27e8-1
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/.pinejs-cache.json +1 -1
- package/.versionbot/CHANGELOG.yml +2 -2
- package/CHANGELOG.md +1 -1
- package/out/webresource-handler/multipartUpload.js +15 -16
- package/out/webresource-handler/multipartUpload.js.map +1 -1
- package/package.json +2 -2
- package/src/webresource-handler/multipartUpload.ts +23 -18
@@ -1,6 +1,6 @@
|
|
1
1
|
- commits:
|
2
2
|
- subject: Allow multipart uploads of large files
|
3
|
-
hash:
|
3
|
+
hash: 10177bc0810e37a40b0f1d9ecf6705ffe0fe27e8
|
4
4
|
body: ""
|
5
5
|
footer:
|
6
6
|
Change-type: minor
|
@@ -42,7 +42,7 @@
|
|
42
42
|
nested: []
|
43
43
|
version: 20.1.0
|
44
44
|
title: ""
|
45
|
-
date: 2025-02-
|
45
|
+
date: 2025-02-16T20:28:25.053Z
|
46
46
|
- commits:
|
47
47
|
- subject: Compile in as (= ANY($singleListBinding))
|
48
48
|
hash: bdb34d9df39e0d9d00db492cbb1ef6dfc61e8450
|
package/CHANGELOG.md
CHANGED
@@ -5,7 +5,7 @@ automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
|
|
5
5
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
6
6
|
|
7
7
|
# v20.1.0
|
8
|
-
## (2025-02-
|
8
|
+
## (2025-02-16)
|
9
9
|
|
10
10
|
* Allow multipart uploads of large files [Otavio Jacobi]
|
11
11
|
* Add webresource vocabulary [Otavio Jacobi]
|
@@ -4,6 +4,7 @@ import { api } from '../sbvr-api/sbvr-utils.js';
|
|
4
4
|
import { errors, sbvrUtils } from '../server-glue/module.js';
|
5
5
|
import { webResource as webResourceEnv } from '../config-loader/env.js';
|
6
6
|
import * as permissions from '../sbvr-api/permissions.js';
|
7
|
+
import { sqlNameToODataName } from '@balena/odata-to-abstract-sql';
|
7
8
|
const MB = 1024 * 1024;
|
8
9
|
export const isMultipartUploadAvailable = (webResourceHandler) => {
|
9
10
|
return (webResourceEnv.multipartUploadEnabled &&
|
@@ -136,14 +137,7 @@ const beginUpload = async ({ webResourceHandler, odataRequest, actorId, }) => {
|
|
136
137
|
});
|
137
138
|
};
|
138
139
|
const validateBeginUpload = async (request, applicationApi) => {
|
139
|
-
|
140
|
-
throw new errors.BadRequestError();
|
141
|
-
}
|
142
|
-
await applicationApi.request({
|
143
|
-
method: 'POST',
|
144
|
-
url: request.url.substring(1).replace('beginUpload', 'canAccess'),
|
145
|
-
body: { method: 'PATCH' },
|
146
|
-
});
|
140
|
+
await canAccess(request, applicationApi);
|
147
141
|
const fieldNames = Object.keys(request.values);
|
148
142
|
if (fieldNames.length !== 1) {
|
149
143
|
throw new errors.BadRequestError('You can only get upload url for one field at a time');
|
@@ -181,14 +175,7 @@ const parseBeginUploadPayload = (payload) => {
|
|
181
175
|
return { filename, content_type, size, chunk_size };
|
182
176
|
};
|
183
177
|
const validateCommitUpload = async (request, applicationApi) => {
|
184
|
-
|
185
|
-
throw new errors.BadRequestError();
|
186
|
-
}
|
187
|
-
await applicationApi.request({
|
188
|
-
method: 'POST',
|
189
|
-
url: request.url.substring(1).replace('commitUpload', 'canAccess'),
|
190
|
-
body: { method: 'PATCH' },
|
191
|
-
});
|
178
|
+
await canAccess(request, applicationApi);
|
192
179
|
const { uuid, providerCommitData } = request.values;
|
193
180
|
if (typeof uuid !== 'string') {
|
194
181
|
throw new errors.BadRequestError('Invalid uuid type');
|
@@ -256,4 +243,16 @@ const validateCancelPayload = async (request, applicationApi) => {
|
|
256
243
|
uploadId: multipartUpload.upload_id,
|
257
244
|
};
|
258
245
|
};
|
246
|
+
const canAccess = async (request, applicationApi) => {
|
247
|
+
if (request.odataQuery.key?.bind == null) {
|
248
|
+
throw new errors.BadRequestError();
|
249
|
+
}
|
250
|
+
const [_, resourceId] = request.odataBinds[request.odataQuery.key.bind];
|
251
|
+
const resourceName = sqlNameToODataName(sbvrUtils.resolveSynonym(request));
|
252
|
+
await applicationApi.request({
|
253
|
+
method: 'POST',
|
254
|
+
url: `${resourceName}(${resourceId})/canAccess`,
|
255
|
+
body: { method: 'PATCH' },
|
256
|
+
});
|
257
|
+
};
|
259
258
|
//# sourceMappingURL=multipartUpload.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"multipartUpload.js","sourceRoot":"","sources":["../../src/webresource-handler/multipartUpload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,WAAW,MAAM,4BAA4B,CAAC;
|
1
|
+
{"version":3,"file":"multipartUpload.js","sourceRoot":"","sources":["../../src/webresource-handler/multipartUpload.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@balena/pinejs",
|
3
|
-
"version": "20.1.0-build-large-file-uploads-2-
|
3
|
+
"version": "20.1.0-build-large-file-uploads-2-10177bc0810e37a40b0f1d9ecf6705ffe0fe27e8-1",
|
4
4
|
"main": "out/server-glue/module.js",
|
5
5
|
"type": "module",
|
6
6
|
"repository": "git@github.com:balena-io/pinejs.git",
|
@@ -148,6 +148,6 @@
|
|
148
148
|
"recursive": true
|
149
149
|
},
|
150
150
|
"versionist": {
|
151
|
-
"publishedAt": "2025-02-
|
151
|
+
"publishedAt": "2025-02-16T20:28:26.072Z"
|
152
152
|
}
|
153
153
|
}
|
@@ -13,6 +13,8 @@ import type { ODataRequest } from '../sbvr-api/uri-parser.js';
|
|
13
13
|
import { errors, sbvrUtils } from '../server-glue/module.js';
|
14
14
|
import { webResource as webResourceEnv } from '../config-loader/env.js';
|
15
15
|
import * as permissions from '../sbvr-api/permissions.js';
|
16
|
+
import type { BindKey } from '@balena/odata-parser';
|
17
|
+
import { sqlNameToODataName } from '@balena/odata-to-abstract-sql';
|
16
18
|
|
17
19
|
type BeginUploadDbCheck = BeginMultipartUploadPayload & WebResource;
|
18
20
|
|
@@ -211,15 +213,7 @@ const validateBeginUpload = async (
|
|
211
213
|
request: ODataRequest,
|
212
214
|
applicationApi: PinejsClient,
|
213
215
|
) => {
|
214
|
-
|
215
|
-
throw new errors.BadRequestError();
|
216
|
-
}
|
217
|
-
|
218
|
-
await applicationApi.request({
|
219
|
-
method: 'POST',
|
220
|
-
url: request.url.substring(1).replace('beginUpload', 'canAccess'),
|
221
|
-
body: { method: 'PATCH' },
|
222
|
-
});
|
216
|
+
await canAccess(request, applicationApi);
|
223
217
|
|
224
218
|
const fieldNames = Object.keys(request.values);
|
225
219
|
if (fieldNames.length !== 1) {
|
@@ -279,15 +273,7 @@ const validateCommitUpload = async (
|
|
279
273
|
request: ODataRequest,
|
280
274
|
applicationApi: PinejsClient,
|
281
275
|
) => {
|
282
|
-
|
283
|
-
throw new errors.BadRequestError();
|
284
|
-
}
|
285
|
-
|
286
|
-
await applicationApi.request({
|
287
|
-
method: 'POST',
|
288
|
-
url: request.url.substring(1).replace('commitUpload', 'canAccess'),
|
289
|
-
body: { method: 'PATCH' },
|
290
|
-
});
|
276
|
+
await canAccess(request, applicationApi);
|
291
277
|
|
292
278
|
const { uuid, providerCommitData } = request.values;
|
293
279
|
if (typeof uuid !== 'string') {
|
@@ -369,3 +355,22 @@ const validateCancelPayload = async (
|
|
369
355
|
uploadId: multipartUpload.upload_id,
|
370
356
|
};
|
371
357
|
};
|
358
|
+
|
359
|
+
const canAccess = async (
|
360
|
+
request: ODataRequest,
|
361
|
+
applicationApi: PinejsClient,
|
362
|
+
) => {
|
363
|
+
if (request.odataQuery.key?.bind == null) {
|
364
|
+
throw new errors.BadRequestError();
|
365
|
+
}
|
366
|
+
|
367
|
+
const [_, resourceId] =
|
368
|
+
request.odataBinds[request.odataQuery.key.bind as BindKey];
|
369
|
+
const resourceName = sqlNameToODataName(sbvrUtils.resolveSynonym(request));
|
370
|
+
|
371
|
+
await applicationApi.request({
|
372
|
+
method: 'POST',
|
373
|
+
url: `${resourceName}(${resourceId})/canAccess`,
|
374
|
+
body: { method: 'PATCH' },
|
375
|
+
});
|
376
|
+
};
|