@balena/pinejs 15.3.0-build-web-resource-4-5e7c73362ec7eb074a460c81e6ed423ba9e616c3-2 → 15.3.0-build-web-resource-4-1a4e9cdc7b71eb12d3229b6cdc9f17d0bdb6faba-1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,12 @@
1
1
  - commits:
2
+ - subject: Add delete multiple for resources with WebResources
3
+ hash: 1a4e9cdc7b71eb12d3229b6cdc9f17d0bdb6faba
4
+ body: ""
5
+ footer:
6
+ Change-type: minor
7
+ change-type: minor
8
+ author: Otávio Jacobi
9
+ nested: []
2
10
  - subject: Removes ACL based webresource permissions
3
11
  hash: 5e7c73362ec7eb074a460c81e6ed423ba9e616c3
4
12
  body: ""
@@ -28,7 +36,7 @@
28
36
  nested: []
29
37
  version: 15.3.0
30
38
  title: ""
31
- date: 2023-08-05T23:49:11.016Z
39
+ date: 2023-08-06T19:57:22.104Z
32
40
  - commits:
33
41
  - subject: Return a response even when the request resolves to an HTTP error
34
42
  hash: d1d68a068778a617d7b14b12a2657fb44511ee52
package/CHANGELOG.md CHANGED
@@ -5,8 +5,9 @@ automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
5
5
  This project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
7
  # v15.3.0
8
- ## (2023-08-05)
8
+ ## (2023-08-06)
9
9
 
10
+ * Add delete multiple for resources with WebResources [Otávio Jacobi]
10
11
  * Removes ACL based webresource permissions [Otávio Jacobi]
11
12
  * Adds WebResource type [Otávio Jacobi]
12
13
  * Integrate beta version of sbvr-types supporting WebResource Update to @balena/open-multer-s3, better large files test [Ramiro González Maciel]
@@ -159,15 +159,8 @@ const deleteFiles = async (keysToDelete, webResourceHandler) => {
159
159
  const getCreateWebResourceHook = (webResourceHandler) => {
160
160
  return {
161
161
  'POSTRUN-ERROR': async ({ tx, request }) => {
162
- tx?.on('rollback', async () => {
163
- const fields = getWebResourceFields(request);
164
- if (fields.length === 0) {
165
- return;
166
- }
167
- const keysToDelete = fields
168
- .map((f) => request.values[f]?.href)
169
- .filter(isDefined);
170
- await deleteFiles(keysToDelete, webResourceHandler);
162
+ tx?.on('rollback', () => {
163
+ deleteRollbackPendingFields(request, webResourceHandler);
171
164
  });
172
165
  },
173
166
  };
@@ -176,6 +169,9 @@ const getReadWebResourceHook = (webResourceHandler) => {
176
169
  return {
177
170
  PRERESPOND: async ({ request, response }) => {
178
171
  const fields = getWebResourceFields(request, false);
172
+ if (fields.length === 0) {
173
+ return;
174
+ }
179
175
  if (typeof response.body === 'object' && response.body.d != null) {
180
176
  const transformedItems = await Promise.all(response.body.d.map(async (responseItem) => {
181
177
  for (const field of fields) {
@@ -192,11 +188,14 @@ const getReadWebResourceHook = (webResourceHandler) => {
192
188
  };
193
189
  const isDefined = (x) => x != null;
194
190
  const getWebResourcesHrefs = (webResources) => {
195
- const hrefs = Object.values(webResources ?? {})
191
+ const hrefs = (webResources ?? []).flatMap((resource) => Object.values(resource ?? {})
196
192
  .filter(isDefined)
197
- .map((resourceKey) => resourceKey.href);
193
+ .map((resourceKey) => normalizeHref(resourceKey.href)));
198
194
  return hrefs;
199
195
  };
196
+ const normalizeHref = (href) => {
197
+ return href.split('?')[0];
198
+ };
200
199
  const getRemoveWebResourceHook = (webResourceHandler) => {
201
200
  return {
202
201
  PRERUN: async (args) => {
@@ -210,24 +209,26 @@ const getRemoveWebResourceHook = (webResourceHandler) => {
210
209
  return;
211
210
  }
212
211
  if (request.method === 'PATCH' && request.odataQuery?.key == null) {
212
+ request.custom.$pineWebResourcesToDelete = fields.map((field) => request.values[field].href);
213
213
  throw new module_1.errors.BadRequestError('WebResources can only be updated when providing a resource key.');
214
214
  }
215
- const [id, rest] = await sbvrUtils.getAffectedIds(args);
216
- if (id == null) {
215
+ const ids = await sbvrUtils.getAffectedIds(args);
216
+ if (ids.length === 0) {
217
217
  return;
218
218
  }
219
- if (rest != null) {
220
- throw new module_1.errors.BadRequestError('Resources containing webresources can only be updated/deleted one at a time.');
221
- }
222
219
  const webResources = (await api.get({
223
220
  resource: request.resourceName,
224
221
  passthrough: {
225
222
  tx: args.tx,
226
223
  req: module_1.permissions.root,
227
224
  },
228
- id,
229
225
  options: {
230
226
  $select: fields,
227
+ $filter: {
228
+ id: {
229
+ $in: ids,
230
+ },
231
+ },
231
232
  },
232
233
  }));
233
234
  request.custom.$pineWebResourcesToDelete =
@@ -235,14 +236,35 @@ const getRemoveWebResourceHook = (webResourceHandler) => {
235
236
  },
236
237
  POSTRUN: ({ tx, request }) => {
237
238
  tx.on('end', () => {
238
- const keysToDelete = request.custom.$pineWebResourcesToDelete || [];
239
- deleteFiles(keysToDelete, webResourceHandler).catch((err) => {
240
- getLogger(request.vocabulary).error(`Failed to delete pending files`, err);
241
- });
239
+ deleteRequestPendingFiles(request, webResourceHandler);
240
+ });
241
+ },
242
+ 'POSTRUN-ERROR': ({ request, tx }) => {
243
+ tx?.on('end', () => {
244
+ deleteRequestPendingFiles(request, webResourceHandler);
245
+ });
246
+ tx?.on('rollback', () => {
247
+ deleteRollbackPendingFields(request, webResourceHandler);
242
248
  });
243
249
  },
244
250
  };
245
251
  };
252
+ const deleteRollbackPendingFields = async (request, webResourceHandler) => {
253
+ const fields = getWebResourceFields(request);
254
+ if (fields.length === 0) {
255
+ return;
256
+ }
257
+ const keysToDelete = fields
258
+ .map((f) => request.values[f]?.href)
259
+ .filter(isDefined);
260
+ await deleteFiles(keysToDelete, webResourceHandler);
261
+ };
262
+ const deleteRequestPendingFiles = (request, webResourceHandler) => {
263
+ const keysToDelete = request.custom.$pineWebResourcesToDelete || [];
264
+ deleteFiles(keysToDelete, webResourceHandler).catch((err) => {
265
+ getLogger(request.vocabulary).error(`Failed to delete pending files`, err);
266
+ });
267
+ };
246
268
  const getDefaultHandler = (vocab) => {
247
269
  let handler;
248
270
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"webresource-handler.js","sourceRoot":"","sources":["../../src/server-glue/webresource-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webresource-handler.js","sourceRoot":"","sources":["../../src/server-glue/webresource-handler.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,6 @@ export declare class S3Handler implements WebResourceHandler {
14
14
  private cachedGetSignedUrl;
15
15
  private s3SignUrl;
16
16
  private getS3URL;
17
+ private normalizeHref;
17
18
  private getKeyFromHref;
18
19
  }
@@ -16,6 +16,9 @@ class S3Handler {
16
16
  this.cachedGetSignedUrl = memoize(this.s3SignUrl, {
17
17
  maxAge: this.signedUrlCacheExpireTimeSeconds * 1000,
18
18
  });
19
+ this.normalizeHref = (href) => {
20
+ return href.split('?')[0];
21
+ };
19
22
  this.config = {
20
23
  region: (0, env_parsing_1.requiredVar)('S3_REGION'),
21
24
  credentials: {
@@ -84,7 +87,7 @@ class S3Handler {
84
87
  return `${this.config.endpoint}/${this.bucket}/${key}`;
85
88
  }
86
89
  getKeyFromHref(href) {
87
- const hrefWithoutParams = href.split('?')[0];
90
+ const hrefWithoutParams = this.normalizeHref(href);
88
91
  return hrefWithoutParams.substring(hrefWithoutParams.lastIndexOf('/') + 1);
89
92
  }
90
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"S3Handler.js","sourceRoot":"","sources":["../../../src/server-glue/webresource-handlers/S3Handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"S3Handler.js","sourceRoot":"","sources":["../../../src/server-glue/webresource-handlers/S3Handler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@balena/pinejs",
3
- "version": "15.3.0-build-web-resource-4-5e7c73362ec7eb074a460c81e6ed423ba9e616c3-2",
3
+ "version": "15.3.0-build-web-resource-4-1a4e9cdc7b71eb12d3229b6cdc9f17d0bdb6faba-1",
4
4
  "main": "out/server-glue/module",
5
5
  "repository": "git@github.com:balena-io/pinejs.git",
6
6
  "license": "Apache-2.0",
@@ -144,6 +144,6 @@
144
144
  "recursive": true
145
145
  },
146
146
  "versionist": {
147
- "publishedAt": "2023-08-05T23:49:12.117Z"
147
+ "publishedAt": "2023-08-06T19:57:22.990Z"
148
148
  }
149
149
  }
@@ -240,18 +240,8 @@ const deleteFiles = async (
240
240
  const getCreateWebResourceHook = (webResourceHandler: WebResourceHandler) => {
241
241
  return {
242
242
  'POSTRUN-ERROR': async ({ tx, request }) => {
243
- tx?.on('rollback', async () => {
244
- const fields = getWebResourceFields(request);
245
-
246
- if (fields.length === 0) {
247
- return;
248
- }
249
-
250
- const keysToDelete: string[] = fields
251
- .map((f) => request.values[f]?.href)
252
- .filter(isDefined);
253
-
254
- await deleteFiles(keysToDelete, webResourceHandler);
243
+ tx?.on('rollback', () => {
244
+ deleteRollbackPendingFields(request, webResourceHandler);
255
245
  });
256
246
  },
257
247
  } as sbvrUtils.Hooks;
@@ -259,8 +249,14 @@ const getCreateWebResourceHook = (webResourceHandler: WebResourceHandler) => {
259
249
 
260
250
  const getReadWebResourceHook = (webResourceHandler: WebResourceHandler) => {
261
251
  return {
252
+ // Before returning a web resource we might need to do some modifications on the payload (e.g. presigning)
262
253
  PRERESPOND: async ({ request, response }) => {
263
254
  const fields = getWebResourceFields(request, false);
255
+
256
+ if (fields.length === 0) {
257
+ return;
258
+ }
259
+
264
260
  if (typeof response.body === 'object' && response.body.d != null) {
265
261
  const transformedItems = await Promise.all(
266
262
  response.body.d.map(async (responseItem: any) => {
@@ -283,14 +279,20 @@ const getReadWebResourceHook = (webResourceHandler: WebResourceHandler) => {
283
279
  const isDefined = <T>(x: T | undefined | null): x is T => x != null;
284
280
 
285
281
  const getWebResourcesHrefs = (
286
- webResources?: WebResourcesDbResponse | null,
282
+ webResources?: WebResourcesDbResponse[] | null,
287
283
  ): string[] => {
288
- const hrefs = Object.values(webResources ?? {})
289
- .filter(isDefined)
290
- .map((resourceKey) => resourceKey.href);
284
+ const hrefs = (webResources ?? []).flatMap((resource) =>
285
+ Object.values(resource ?? {})
286
+ .filter(isDefined)
287
+ .map((resourceKey) => normalizeHref(resourceKey.href)),
288
+ );
291
289
  return hrefs;
292
290
  };
293
291
 
292
+ const normalizeHref = (href: string) => {
293
+ return href.split('?')[0];
294
+ };
295
+
294
296
  const getRemoveWebResourceHook = (
295
297
  webResourceHandler: WebResourceHandler,
296
298
  ): sbvrUtils.Hooks => {
@@ -311,53 +313,90 @@ const getRemoveWebResourceHook = (
311
313
  // This can only be validated here because we need to first ensure the
312
314
  // request is actually modifying a webresource before erroring out
313
315
  if (request.method === 'PATCH' && request.odataQuery?.key == null) {
316
+ // When we get here, files have already been uploaded. We need to mark them for deletion.
317
+ request.custom.$pineWebResourcesToDelete = fields.map(
318
+ (field) => request.values[field].href,
319
+ );
314
320
  throw new errors.BadRequestError(
315
321
  'WebResources can only be updated when providing a resource key.',
316
322
  );
317
323
  }
318
324
 
319
- const [id, rest] = await sbvrUtils.getAffectedIds(args);
320
- if (id == null) {
325
+ // This will only be > 1 in a DELETE. In PATCH requests, the request should have exited before
326
+ const ids = await sbvrUtils.getAffectedIds(args);
327
+ if (ids.length === 0) {
321
328
  return;
322
329
  }
323
330
 
324
- if (rest != null) {
325
- throw new errors.BadRequestError(
326
- 'Resources containing webresources can only be updated/deleted one at a time.',
327
- );
328
- }
329
-
330
331
  const webResources = (await api.get({
331
332
  resource: request.resourceName,
332
333
  passthrough: {
333
334
  tx: args.tx,
334
335
  req: permissions.root,
335
336
  },
336
- id,
337
337
  options: {
338
338
  $select: fields,
339
+ $filter: {
340
+ id: {
341
+ $in: ids,
342
+ },
343
+ },
339
344
  },
340
- })) as WebResourcesDbResponse | undefined | null;
345
+ })) as WebResourcesDbResponse[] | undefined | null;
341
346
 
347
+ // The modified webresources need to have its previous webresources deleted in case they were affected
342
348
  request.custom.$pineWebResourcesToDelete =
343
349
  getWebResourcesHrefs(webResources);
344
350
  },
345
351
  POSTRUN: ({ tx, request }) => {
352
+ // Successfully patched or deleted resources
346
353
  tx.on('end', () => {
347
- const keysToDelete: string[] =
348
- request.custom.$pineWebResourcesToDelete || [];
349
- // on purpose does not await for this promise to resolve
350
- deleteFiles(keysToDelete, webResourceHandler).catch((err) => {
351
- getLogger(request.vocabulary).error(
352
- `Failed to delete pending files`,
353
- err,
354
- );
355
- });
354
+ deleteRequestPendingFiles(request, webResourceHandler);
355
+ });
356
+ },
357
+ 'POSTRUN-ERROR': ({ request, tx }) => {
358
+ // Request failed before DB roundtrip (e.g. Trying to PATCH multiple with single webresource)
359
+ // Or by any API rule (e.g. allowlist)
360
+ tx?.on('end', () => {
361
+ deleteRequestPendingFiles(request, webResourceHandler);
362
+ });
363
+
364
+ // Request failed on DB roundtrip (e.g. DB constraint)
365
+ tx?.on('rollback', () => {
366
+ deleteRollbackPendingFields(request, webResourceHandler);
356
367
  });
357
368
  },
358
369
  };
359
370
  };
360
371
 
372
+ const deleteRollbackPendingFields = async (
373
+ request: uriParser.ODataRequest,
374
+ webResourceHandler: WebResourceHandler,
375
+ ) => {
376
+ const fields = getWebResourceFields(request);
377
+
378
+ if (fields.length === 0) {
379
+ return;
380
+ }
381
+
382
+ const keysToDelete: string[] = fields
383
+ .map((f) => request.values[f]?.href)
384
+ .filter(isDefined);
385
+
386
+ await deleteFiles(keysToDelete, webResourceHandler);
387
+ };
388
+
389
+ const deleteRequestPendingFiles = (
390
+ request: uriParser.ODataRequest,
391
+ webResourceHandler: WebResourceHandler,
392
+ ): void => {
393
+ const keysToDelete: string[] = request.custom.$pineWebResourcesToDelete || [];
394
+ // on purpose does not await for this promise to resolve
395
+ deleteFiles(keysToDelete, webResourceHandler).catch((err) => {
396
+ getLogger(request.vocabulary).error(`Failed to delete pending files`, err);
397
+ });
398
+ };
399
+
361
400
  export const getDefaultHandler = (vocab?: string): WebResourceHandler => {
362
401
  let handler: WebResourceHandler;
363
402
  try {
@@ -123,8 +123,12 @@ export class S3Handler implements WebResourceHandler {
123
123
  return `${this.config.endpoint}/${this.bucket}/${key}`;
124
124
  }
125
125
 
126
+ private normalizeHref = (href: string) => {
127
+ return href.split('?')[0];
128
+ };
129
+
126
130
  private getKeyFromHref(href: string): string {
127
- const hrefWithoutParams = href.split('?')[0];
131
+ const hrefWithoutParams = this.normalizeHref(href);
128
132
  return hrefWithoutParams.substring(hrefWithoutParams.lastIndexOf('/') + 1);
129
133
  }
130
134
  }